From: Jean-Marc Pigeon (Delson) Date: Sat, 12 Jul 2025 00:33:22 +0000 (-0400) Subject: Adding procedure checkcredit, to check remote X-Git-Tag: tag-0.14~127 X-Git-Url: https://jmp-git.ovh.safe.ca/?a=commitdiff_plain;h=42127ddce92e5f890e047adeb67784c697a7d35b;p=jmp%2Fmailleur Adding procedure checkcredit, to check remote --- diff --git a/Makefile b/Makefile index 8193573..87b31a6 100644 --- a/Makefile +++ b/Makefile @@ -194,6 +194,7 @@ newtest : deltest @ cp -a \ sql \ $(TESTDIR)/usr/share/$(APPNAME)/ + @ $(MAKE) -s -C sql prepdb deltest : @ rm -fr $(TESTDIR) diff --git a/data-feed/feed05.tst b/data-feed/feed05.tst index 58fdaa6..f77302d 100644 --- a/data-feed/feed05.tst +++ b/data-feed/feed05.tst @@ -5,6 +5,8 @@ C:CONNECT R:220 mailleur.example.com, ESMTP (cleartext) mailleur... S:helo example.com R:250 mailleur.example.com, link (cleartext) ready, your IP/FQDN=[127.127.99.25/No.Reverse] -S:QUIT -R:221 2.0.0 Bye, closing connection... +S:MAIL FROM: +R:457-5.5.3 Your Credential need to be checked +R:457 5.5.3 Closing connection +R:Disconnected #------------------------------------------------------------------------- diff --git a/lib/lvleml.c b/lib/lvleml.c index 44c9085..2f5a0f0 100644 --- a/lib/lvleml.c +++ b/lib/lvleml.c @@ -111,6 +111,22 @@ return contact; */ /********************************************************/ /* */ +/* Procedure to check remote IP credit */ +/* */ +/********************************************************/ +static _Bool checkcredit(CONTYP *contact) + +{ +_Bool goodcredit; + +goodcredit=false; +return goodcredit; +} +/* +^L +*/ +/********************************************************/ +/* */ /* Procedure to get the domain code */ /* */ /********************************************************/ @@ -1306,10 +1322,23 @@ while (proceed==true) { mailfrom[strlen(mailfrom)-1]='\000'; (void) memmove(mailfrom,mailfrom+1,strlen(mailfrom)); break; - case 3 : //everything ok + case 3 : //check if contact authenticated + if (contact->authenticated==true) + phase++; //No need to check remote "credits + break; + case 4 : //check remote credit + if (checkcredit(contact)==false) { + (void) transmit(contact,true,"%d-5.5.3 Your Credential need to be checked", + NEWSITE); + (void) transmit(contact,true,"%d 5.5.3 Closing connection",NEWSITE); + phase=999; //bad credit not need to go further + } + break; + case 5 : //everything ok contact->mailfrom=strdup(mailfrom); (void) transmit(contact,true,"%d 2.1.3 %s.. sender ok", CMDOK,contact->mailfrom); + success=true; break; default : //SAFE guard proceed=false; @@ -2090,7 +2119,6 @@ while (proceed==true) { code=eml_getcode(line); switch (code) { case c_data : //Peer request to transfer email corps. - proceed=getdata(contact); break; case c_helo : //HELO SMTP protocol @@ -2110,7 +2138,7 @@ while (proceed==true) { proceed=false; break; case c_mail : //MAIL FROM: checking originator - (void) checkfrom(contact,line); + proceed=checkfrom(contact,line); break; case c_auth : //Auth request if (getauth(contact,line)==false) diff --git a/lib/unieml.h b/lib/unieml.h index d6729fd..c12a74b 100644 --- a/lib/unieml.h +++ b/lib/unieml.h @@ -22,6 +22,7 @@ #define SENDB64 334 //send a B64 sequence #define DATAOK 354 //Ready to accept EMAIL data #define ERRPROC 451 //local processing error +#define NEWSITE 457 //Site credential need to be checked #define NOANSWR 460 //no answer from remote #define BADPAR 501 //error in parameters #define CMDBAD 502 //command not implemented