]> SAFE projects GIT repository - jmp/mailleur/commitdiff
Adding procedure checkcredit, to check remote
authorJean-Marc Pigeon (Delson) <jmp@safe.ca>
Sat, 12 Jul 2025 00:33:22 +0000 (20:33 -0400)
committerJean-Marc Pigeon (Delson) <jmp@safe.ca>
Sat, 12 Jul 2025 00:33:22 +0000 (20:33 -0400)
Makefile
data-feed/feed05.tst
lib/lvleml.c
lib/unieml.h

index 8193573fbf245786139cf606f33acd23b469f001..87b31a6f198adec50910fe2e80c66e28a88ceb6c 100644 (file)
--- 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)
index 58fdaa602d1d6ec34c99d103c422f68e81ae0a47..f77302d77bc00aee4b58e2882621fee45dab6fe3 100644 (file)
@@ -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: <trouble@mailref1.example.com>
+R:457-5.5.3 Your Credential need to be checked
+R:457 5.5.3 Closing connection
+R:Disconnected
 #-------------------------------------------------------------------------
index 44c908518bb9c488fa1e67c7c1afae0c926e9696..2f5a0f0eac54c16eac08ef2082d3e32390bdf57c 100644 (file)
@@ -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)
index d6729fd0b854770a481d3837a7afc80dc5983ce8..c12a74bcac0038b9c85ec92952a293e233b51bf8 100644 (file)
@@ -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