]> SAFE projects GIT repository - jmp/mailleur/commitdiff
connect_to_mx start to work
authorJean-Marc Pigeon (Delson) <jmp@safe.ca>
Sat, 7 Jun 2025 20:41:21 +0000 (16:41 -0400)
committerJean-Marc Pigeon (Delson) <jmp@safe.ca>
Sat, 7 Jun 2025 20:41:21 +0000 (16:41 -0400)
lib/lvleml.c
lib/unieml.h

index 62e4d187b28f0c955fcb98d9a29ee8668e296c17..f8362d8e375e551616be5f7f9efd679afa62aaba 100644 (file)
 #include       "lvleml.h"
 
 typedef struct  {
-    SOCPTR *socptr;
-    LOGPTR *logptr;
-    MXTYP **mxs;
+    SOCPTR *socptr;     //socket to remote pointer
+    LOGPTR *logptr;     //Log pointer
+    const char *domain; //Domain to be reached
+    MXTYP **mxs;        //MX list form domain
     }RMTTYP;
 /*
 ^L
@@ -696,7 +697,33 @@ phase=0;
 proceed=true;
 while (proceed==true) {
   switch (phase) {
-    case 0      :       //do ve have MX
+    case 0      :       //do we have MX
+      if (rmt->mxs==(MXTYP **)0) {
+        (void) log_fprintlog(rmt->logptr,false,"NO MX found for domain <%s>",
+                                              rmt->domain);
+        phase=999;
+        }
+      break;
+    case 1      :       //Trying to connect
+      MXTYP **mxs;
+      const char *srcip;
+
+      mxs=rmt->mxs;
+      srcip=(const char *)0;
+      while (*mxs!=(MXTYP *)0) {
+        rmt->socptr=soc_openfeedsock(pro_smtp,srcip,(*mxs)->mxname,EMLPORT);
+        if (rmt->socptr!=(SOCPTR *)0) {
+          char cmt[100];
+
+          (void) snprintf(cmt,sizeof(cmt),"Now Connected to MX <%s>",
+                                          (*mxs)->mxname);
+          (void) log_fprintlog(rmt->logptr,false,cmt);
+          break;
+          }
+        mxs++;
+        }
+      if (rmt->socptr==(SOCPTR *)0) 
+        phase=999;
       break;
     default     :       //SAFE Guard
       proceed=false;
@@ -728,6 +755,7 @@ _Bool proceed;
 isnow=time((time_t *)0);
 (void) memset(&rmt,'\000',sizeof(rmt));
 rmt.mxs=dns_getmx(domain);
+rmt.domain=domain;
 tosend=(TRATYP **)0;
 phase=0;
 proceed=true;
index 5a9d7020385cb6d0e4082c22ecad963830a63822..31890e47c13d933397f4c910f0c255ee31d6a90c 100644 (file)
@@ -32,6 +32,8 @@
 #define SENDER  "sender"        //application email sender
 #define SORTER  "sorter"        //application email sorter
 
+#define EMLPORT "25"            //Default SMTP email port
+
 //list of keyword
 typedef enum    {               //list of SMTP protocol keyword
                 c_data,         //DATA email contents transfer request