From 80d3ce6987d3d742138009761283362a4b83dd1b Mon Sep 17 00:00:00 2001 From: "Jean-Marc Pigeon (Delson)" Date: Wed, 21 May 2025 16:21:33 -0400 Subject: [PATCH] Workingout the header format --- app/feeder.c | 4 ++- data-feed/feed02.tst | 4 ++- data-feed/xxfeed.tst | 68 +++++++++++++++++++++++++++++++++++++++++++- lib/lvleml.c | 40 +++++++++++++++++++++----- 4 files changed, 106 insertions(+), 10 deletions(-) diff --git a/app/feeder.c b/app/feeder.c index a890f8f..b6dd848 100644 --- a/app/feeder.c +++ b/app/feeder.c @@ -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; diff --git a/data-feed/feed02.tst b/data-feed/feed02.tst index 39c56c4..4511058 100644 --- a/data-feed/feed02.tst +++ b/data-feed/feed02.tst @@ -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 +To: Maitre WEB FIRST Line SECOND Line diff --git a/data-feed/xxfeed.tst b/data-feed/xxfeed.tst index f9290fa..4511058 100644 --- a/data-feed/xxfeed.tst +++ b/data-feed/xxfeed.tst @@ -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: 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 +To: Maitre WEB 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: +R:250 2.1.3 webmaster@example.com.. sender ok +S:RCPT TO: +R:250 2.6.4 Address accepted +S:RCPT TO: +R:250 2.6.4 Address accepted +S:RCPT TO: +R:250 2.6.4 Address accepted +S:RCPT TO: +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: +R:250 2.1.3 noreply@example.com.. sender ok +S:RCPT TO: +R:250 2.6.4 Address accepted +S:RCPT TO: +R:250 2.6.4 Address accepted +S:RCPT TO: +R:250 2.6.4 Address accepted +S:RCPT TO: +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 diff --git a/lib/lvleml.c b/lib/lvleml.c index 1e3852a..ad53518 100644 --- a/lib/lvleml.c +++ b/lib/lvleml.c @@ -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 ."); 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; -- 2.47.3