]> SAFE projects GIT repository - jmp/mailleur/commitdiff
Relaying detection and ORGN command seems to be working
authorJean-Marc Pigeon (Delson) <jmp@safe.ca>
Wed, 16 Jul 2025 19:32:06 +0000 (15:32 -0400)
committerJean-Marc Pigeon (Delson) <jmp@safe.ca>
Wed, 16 Jul 2025 19:32:06 +0000 (15:32 -0400)
data-feed/feed05.tst
lib/lvleml.c
lib/subafn.c

index 35372c429d8b36a877d9a27fb8e30369fcb17481..7b9f4beafbce665f343aba70c7d39499ee5ebd88 100644 (file)
@@ -7,7 +7,7 @@ R:220 mailleur.example.com, ESMTP (cleartext) mailleur...
 S:helo example.com
 R:250 mailleur.example.com, link (cleartext) ready, your IP/FQDN=[91.199.160.44/painsmille.shop]
 S:MAIL FROM: <trouble@mailref1.example.com>
-R:457-4.5.7 Your Credential need to be checked
+R:457-4.5.7 Your Credential ( -1) need to be checked
 R:457 5.5.3 Closing connection
 R:Disconnected
 #-------------------------------------------------------------------------
index 746e9ede14f3e0908dfc582f1b3bb1582cec4617..b35ffd47c4bcb0e387020e32b72bafcc68631835 100644 (file)
@@ -1342,9 +1342,12 @@ return done;
 /*                                             */
 /************************************************/
 #ifdef  MODEDEBUG
+
 static _Bool set_orgn_rmtip(CONTYP *contact,char *rmtip)
 
 {
+#define OPEP    "lvleml.c:set_orgn_rmtip,"
+
 _Bool isok;
 AFNTYP *afn;
 
@@ -1357,12 +1360,28 @@ if ((afn=afn_getoneipnum(rmtip))!=(AFNTYP *)0) {
   contact->peerip=strdup(rmtip);
   contact->peername=rou_freestr(contact->peername);
   contact->peername=dns_get_reverse_addr(reverse);
+  switch (contact->privilege) {
+    case rel_authentic  :
+      break;
+    case rel_isrelay    :
+      //NO BREAK;
+    case rel_plain      :
+      if (afn_is_ip_relayable(contact->peerip,contact->relayok)==true)
+        contact->privilege=rel_isrelay;     //IP is relayable
+      break;
+    default             :
+      (void) rou_alert(0,"%s unexpeced privilege '%d' (Bug?)",
+                          OPEP,contact->privilege);
+      break;
+    }
   reverse=rou_freestr(reverse);
   afn=afn_freeipnum(afn);
   isok=true;
   }
 (void) signon(contact);
 return isok;
+
+#undef  OPEP
 }
 #endif
 /*
@@ -1418,9 +1437,10 @@ while (proceed==true) {
       switch (contact->privilege) {
         case rel_authentic      :       //User was authenticated
           break;
-        case rel_isrelay        :       //Remote IP is relay
-          break;
-        case rel_plain          :
+        case rel_plain          :       //remote IP is Bplain
+          //NO BREAK;
+        case rel_isrelay        :       //Remote IP way already relay
+          contact->privilege=rel_plain;
           if ((status=checkcredit(contact))!=CMDOK) {
             (void) transmit(contact,true,"%d 5.5.3 Closing connection",status);
             phase=999;      //bad credit not need to go further
index 4f5b8682b68f6cf9b2064672764236084c00963d..2837b5c0fde1cdff5d19d93169269714e521d07c 100644 (file)
@@ -317,8 +317,7 @@ afnnum=(AFNTYP *)0;
 phase=0;
 proceed=true;
 while (proceed==true) {
-  (void) fprintf(stderr,"%s JMPDBG DEBUGING phase='%d', oneipstr=<%s>\n",
-                        OPEP,phase,oneipstr);
+  //(void) fprintf(stderr,"%s JMPDBG phase='%d'\n",OPEP,phase);
   switch (phase) {
     case 0     :       /*lets say ip format ok */
       afnnum=(AFNTYP *)calloc(1,sizeof(AFNTYP));