#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
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;
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;
#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