From d61ba946904e26f5693dcc22e9dc0b5b91797dda Mon Sep 17 00:00:00 2001 From: "Jean-Marc Pigeon (Delson)" Date: Fri, 13 Jun 2025 09:11:54 -0400 Subject: [PATCH] Detecting NO REALY situation --- Makefile | 2 +- data-feed/feed11.tst | 5 ++++- lib/geseml.c | 31 +++++++++++++++++++++---------- lib/lvleml.c | 7 ++++--- lib/unieml.h | 1 + 5 files changed, 31 insertions(+), 15 deletions(-) diff --git a/Makefile b/Makefile index 458c405..a31216c 100644 --- a/Makefile +++ b/Makefile @@ -130,7 +130,7 @@ FEEDPAR = \ $(TESTIP) \ $(TESTPORT) \ ./$(DATATST)/feed0*.tst -ONEFEED=feed02.tst +ONEFEED=feed11.tst #to test with an external server extfeed : debug diff --git a/data-feed/feed11.tst b/data-feed/feed11.tst index a2bbe64..976421c 100644 --- a/data-feed/feed11.tst +++ b/data-feed/feed11.tst @@ -8,9 +8,12 @@ C:GOTLS R:250 Link now encryp... S:MAIL FROM: R:250 2.1.3 trouble@subdom1.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: +S:RCPT TO: R:250 2.6.4 Address accepted #------------------------------------------------------------------------- #-sending data diff --git a/lib/geseml.c b/lib/geseml.c index 57bdcc5..73d6d5d 100644 --- a/lib/geseml.c +++ b/lib/geseml.c @@ -497,17 +497,28 @@ if (list!=(TRATYP **)0) { ptr=list; while (*ptr!=(TRATYP *)0) { - if ((*ptr)->code=='C') { - if (eml_countqfile((*ptr)->sessid,-1)==0) { - char fname[200]; - - (void) rou_alert(0,"%s JMPDBG need to remove <%s>",OPEP,(*ptr)->sessid); - (void) snprintf(fname,sizeof(fname),"%s.%s",(*ptr)->sessid,EXTCNT); - (void) eml_deleteqfile((*ptr)->sessid); - (void) eml_deleteqfile(fname); - } + _Bool toadd; + + toadd=true; + switch ((*ptr)->code) { + case 'C' : //email completed + toadd=false; + if (eml_countqfile((*ptr)->sessid,-1)==0) { + char fname[200]; + + (void) rou_alert(0,"%s JMPDBG need to remove <%s>",OPEP,(*ptr)->sessid); + (void) eml_deleteqfile((*ptr)->sessid); + (void) snprintf(fname,sizeof(fname),"%s.%s",(*ptr)->sessid,EXTCNT); + (void) eml_deleteqfile(fname); + } + break; + case 'W' : //need to send a warning + (void) rou_alert(0,"%s JMPDBG need to do warning <%s>",OPEP,(*ptr)->sessid); + break; + default : + break; } - else + if (toadd==true) next=(TRATYP **)rou_addlist((void **)next,(void *)eml_duptra(*ptr)); ptr++; } diff --git a/lib/lvleml.c b/lib/lvleml.c index 8d552a1..a9be9b7 100644 --- a/lib/lvleml.c +++ b/lib/lvleml.c @@ -1182,15 +1182,16 @@ while (proceed==true) { resp=&((*dest)->resp); rspcode=tcp_smtp_command(&rmt,resp,"RCPT TO: <%s>",(*dest)->rcptto); switch (rspcode) { - case CMDOK : //originator accepted + case CMDOK : //originator accepted tobesend++; (*dest)->sendcode=rspcode; break; - case UKNUSER : //originator accepted + case UKNUSER : //recipient is unknown + case NORELAY : //email no relayed (*dest)->code='W'; //Need to send a Warning (*dest)->sendcode=rspcode; break; - default : //Not accepted recipient + default : //Not accepted recipient (void) rou_alert(0,"%s sessid=<%s>, unknwon code='%d'", OPEP,sessid,rspcode); (*dest)->code='C'; //completed (Temporary JMPDBG); diff --git a/lib/unieml.h b/lib/unieml.h index 071cbb1..2fe17f3 100644 --- a/lib/unieml.h +++ b/lib/unieml.h @@ -26,6 +26,7 @@ #define UKNUSER 551 //Unknown user #define MALABRT 552 //email data rejected #define NOTEML 553 //Not an email address +#define NORELAY 555 //remote do not relay email #define MISSMX 563 //NO MX found for recipient //defining extensions -- 2.47.3