]> SAFE projects GIT repository - jmp/mailleur/commitdiff
Workingout the header format
authorJean-Marc Pigeon (Delson) <jmp@safe.ca>
Wed, 21 May 2025 20:21:33 +0000 (16:21 -0400)
committerJean-Marc Pigeon (Delson) <jmp@safe.ca>
Wed, 21 May 2025 20:21:33 +0000 (16:21 -0400)
app/feeder.c
data-feed/feed02.tst
data-feed/xxfeed.tst
lib/lvleml.c

index a890f8f07f0e3bfe71490f3a70618a42f2884341..b6dd848918a9e4e4c031757fd6c54d4ac77ed67d 100644 (file)
@@ -158,12 +158,13 @@ empty=false;
 phase=0;
 proceed=true;
 while (proceed==true) {
+  (void) rou_alert(0,"%s phase='%d'",OPEP,phase);
   switch (phase) {
     case 0      :       //Transmit "DATA" to remote
       if (dooutgoing(fd->socptr,action)!=(strlen(action)+2))
         phase=999;      //Unable to send STARTTLS sequence 
       break;
-    case 1      :       //Get STARTTLS command status
+    case 1      :       //Get DATA command status
       if (tcp_getline(fd->socptr,WRESP,&line)<0)
         phase=999;      //Didn't get signon
       break;
@@ -172,6 +173,7 @@ while (proceed==true) {
         int code;
 
         code=0;
+        (void) rou_alert(0,"%s JMPDBG line=<%s>",OPEP,line);
         (void) sscanf(line,"%d",&code); 
         if (code!=DATAOK) 
           phase=999;
index 39c56c4a4f8738da9802cc3f1fa2076759ed2478..45110589ee621c37eea393f6ef57184110be4779 100644 (file)
@@ -1,6 +1,6 @@
 #very simple  test to feed SMTP server
 #====================================================
-T:Very Simple email sending
+T:Sending a very Simple Email
 R:220 mailleur.example.com ESMTP (cleartext) emlrcvr...
 C:ORGN 127.127.0.2
 R:220 mailleur.example.com ESMTP (cleartext) emlrcvr...
@@ -23,6 +23,8 @@ R:250 2.6.4 Address accepted
 #-sending data
 C:DATA
 Subject: Very Simple email contents
+From: Maitre Post <postmaster@example.com>
+To: Maitre WEB <webmaster@example.com>
 
 FIRST Line
 SECOND Line
index f9290fa0085dd49e379adcc1228cd20e55acf9cb..45110589ee621c37eea393f6ef57184110be4779 100644 (file)
@@ -1,9 +1,13 @@
 #very simple  test to feed SMTP server
 #====================================================
-T:Very Simple email sending
+T:Sending a very Simple Email
 R:220 mailleur.example.com ESMTP (cleartext) emlrcvr...
+C:ORGN 127.127.0.2
+R:220 mailleur.example.com ESMTP (cleartext) emlrcvr...
+#C:WAIT 100
 #====================================================
 S:HELO example.com
+#R:250-mailleur.example.com, link (cleartext) ready, your IP/FQDN=[127.127.0.2/feed2.example.com]
 R:250-mailleur.example.com, link (cleartext) ready,...
 S:MAIL FROM: <postmaster@example.com>
 R:250 2.1.3 postmaster@example.com.. sender ok
@@ -19,6 +23,8 @@ R:250 2.6.4 Address accepted
 #-sending data
 C:DATA
 Subject: Very Simple email contents
+From: Maitre Post <postmaster@example.com>
+To: Maitre WEB <webmaster@example.com>
 
 FIRST Line
 SECOND Line
@@ -29,3 +35,63 @@ LAST Line
 R:250 3.5.3 Message accepted for delivery
 S:QUIT
 R:221 2.0.0 Bye, closing connection...
+#-------------------------------------------------------------------------
+#prepare next test
+#waiting 1 sec
+C:WAIT 1
+#-restarting link
+C:RESTART
+R:220 mailleur.example.com ESMTP (cleartext) emlrcvr...
+S:MAIL FROM: <webmaster@example.com>
+R:250 2.1.3 webmaster@example.com.. sender ok
+S:RCPT TO: <dom1user1@subdom1.example.com>
+R:250 2.6.4 Address accepted
+S:RCPT TO: <dom1user2@subdom1.example.com>
+R:250 2.6.4 Address accepted
+S:RCPT TO: <dom2user1@subdom2.example.com>
+R:250 2.6.4 Address accepted
+S:RCPT TO: <dom2user2@subdom2.example.com>
+R:250 2.6.4 Address accepted
+#-------------------------------------------------------------------------
+#-sending data
+C:DATA
+Subject: Second email contents
+
+SECOND FIRST Line
+SECOND SECOND Line
+SECOND LAST Line
+
+.
+#-------------------------------------------------------------------------
+R:250 3.5.3 Message accepted for delivery
+S:QUIT
+#-------------------------------------------------------------------------
+#prepare next test
+#waiting 1 sec
+C:WAIT 1
+#-restarting link
+C:RESTART
+R:220 mailleur.example.com ESMTP (cleartext) emlrcvr...
+S:MAIL FROM: <noreply@example.com>
+R:250 2.1.3 noreply@example.com.. sender ok
+S:RCPT TO: <dom1user1@subdom1.example.com>
+R:250 2.6.4 Address accepted
+S:RCPT TO: <dom1user2@subdom1.example.com>
+R:250 2.6.4 Address accepted
+S:RCPT TO: <dom2user1@subdom2.example.com>
+R:250 2.6.4 Address accepted
+S:RCPT TO: <dom2user2@subdom2.example.com>
+R:250 2.6.4 Address accepted
+#-------------------------------------------------------------------------
+#-sending data
+C:DATA
+Subject: Third email contents
+
+THIRD FIRST Line
+THIRD SECOND Line
+THIRD LAST Line
+
+.
+#-------------------------------------------------------------------------
+R:250 3.5.3 Message accepted for delivery
+S:QUIT
index 1e3852a94ba108da50e47436dcb2c98c31b02d8b..ad53518a59f9330b59d2382d3ce2a6aeff554c18 100644 (file)
@@ -180,6 +180,28 @@ mode=soc_getstrmode(contact->socptr);
 */
 /********************************************************/
 /*                                                      */
+/*     Procedure to add received information to        */
+/*      the email contents.                             */
+/*                                                      */
+/********************************************************/
+static _Bool addreceived(CONTYP *contact,FILE *data)
+
+{
+_Bool status;
+
+status=true;
+(void) fprintf(data,"Received: from %s ([%s])\n",contact->peername,contact->peerip);
+(void) fprintf(data,"\t by %s ([%s]/%s-%s)\n",
+                    contact->locname,contact->locserv,
+                    appname,rou_getversion());
+(void) fprintf(data,"\t id <%s@%s>;\n",contact->cursesid,contact->locname);
+return status;
+}
+/*
+^L
+*/
+/********************************************************/
+/*                                                      */
 /*     Procedure to check if helo or ehlo paratmeter   */
 /*      is a correct one                                */
 /*                                                      */
@@ -300,22 +322,26 @@ got=0;
 phase=0;
 proceed=setdirectives(contact,"tmp");
 while (proceed==true) {
-  //(void) rou_alert(0,"JMPDBG %s phase='%d' empty='%d'",OPEP,phase,empty);
+  (void) rou_alert(0,"JMPDBG %s phase='%d' empty='%d'",OPEP,phase,empty);
   switch (phase) {
     case 0      :       //opening the queue email
       if ((queue=eml_createqfile(contact->cursesid,""))==(FILE *)0) 
         phase=999;      //trouble trouble
       break;
-    case 1      :       //Do we have a parameter
+    case 1      :       //sending go ahed to remote
+      if (addreceived(contact,queue)==false) 
+        phase=999;      //trouble trouble
+      break;
+    case 2      :       //sending go ahaed to remote
       (void) transmit(contact,"%d 3.5.0 %s",
                               DATAOK,"End data with <CR><LF>.<CR><LF>");
       break;
-    case 2      :       //get incoming line
+    case 3      :       //get incoming line
       got=tcp_getline(contact->socptr,WAITLINE,&line);
       if (got<0)        //data timeout
         phase=999;      //Trouble trouble
       break;
-    case 3      :       //just display line
+    case 4      :       //just display line
       if ((empty==false)||(strcmp(line,".")!=0)) {
         (void) fprintf(queue,"%s\n",line);
         phase=1;        //Wait for next line
@@ -325,15 +351,15 @@ while (proceed==true) {
         empty=true;
       line=rou_freestr(line);
       break;
-    case 4      :       //got all data
+    case 5      :       //got all data
       if (eml_closeqfile(queue)<0)
         phase=999;              //Trouble trouble
       break;
-    case 5      :       //renameing directive
+    case 6      :       //renameing directive
       if (eml_renameqfile(contact->cursesid,"tmp",EXTRANS)==false)
         phase=999;              //Trouble trouble
       break;
-    case 6      :       //everything fine
+    case 7      :       //everything fine
       (void) transmit(contact,"%d 3.5.3 %s",
                               CMDOK,"Message accepted for delivery");
       done=true;