From: Jean-Marc Pigeon (Delson) Date: Wed, 2 Jul 2025 11:57:35 +0000 (-0400) Subject: Better handling of receiver SMTPSPORTS env variable X-Git-Tag: tag-0.12~56 X-Git-Url: https://jmp-git.ovh.safe.ca/?a=commitdiff_plain;h=843f774a76fc99b5a93f27d447b40e67dd8b3841;p=jmp%2Fmailleur Better handling of receiver SMTPSPORTS env variable --- diff --git a/conf/mailleur.conf.dvl b/conf/mailleur.conf.dvl index ce5266a..b8b3a0d 100644 --- a/conf/mailleur.conf.dvl +++ b/conf/mailleur.conf.dvl @@ -43,3 +43,4 @@ DB_PORT=5432 #Dovecot storage directory DOV_MAILDIR="/var/spool/mailleur/mails" #------------------------------------------------ +SMTPPORTS="|127.127.10.25|1025|5,smtps|127.127.10.26|1465|3,smtp|127.127.10.26|1587|2" diff --git a/lib/modrec.c b/lib/modrec.c index 86767c0..4f2aec2 100644 --- a/lib/modrec.c +++ b/lib/modrec.c @@ -21,6 +21,42 @@ #include "lvleml.h" #include "modrec.h" +/* + +*/ +/********************************************************/ +/* */ +/* Procedure to returne the local argv */ +/* */ +/********************************************************/ +static char **getconfargv() + +{ +char **confargv; +char *data; +char *conf; + +confargv=(char **)0; +conf=(char *)0; +if ((conf=getenv("SMTPPORTS"))!=(char *)0) + conf=strdup(conf); +data=conf; +while (data!=(char *)0) { + char *ptr; + char *seg; + + if ((ptr=strchr(data,','))!=(char *)0) { + *ptr='\000'; + ptr++; + } + seg=strdup(data); + (void) rou_alert(0,"JMPDBG seg=<%s>",seg); + confargv=(char **)rou_addlist((void **)confargv,(void *)seg); + data=ptr; + } +conf=rou_freestr(conf); +return confargv; +} /* */ @@ -34,8 +70,8 @@ /* Possible argument format are: */ /* protocol:ipnum:port:iteration */ /* example: */ -/* :ipnum::: -> smtp:ipnum:25:1 */ -/* smtps:ipnum:465:2 */ +/* |ipnum||| -> smtp|ipnum|25|1 */ +/* smtps|ipnum|465|2 */ /* -> smtps protocol,port 465,2 iteration */ /* */ /********************************************************/ @@ -43,10 +79,19 @@ static int prepbinding(SOCPTR ***bindings,int argc,char *argv[]) { #define OPEP "moderec.c:prepbinding" +#define DFLTSET "smtp|0.0.0.0|25|2" #define DIP "0.0.0.0" #define DPORT "25" +char *locargv[2]; + +(void) memset(locargv,'\000',sizeof(locargv)); *bindings=(SOCPTR **)0; +if (argc==0) { + argc=1; + locargv[0]=DFLTSET; //very last default configuration + argv=locargv; + } for (int i=0;i",OPEP,i,argv[i]); + //JMPDBG + (void) rou_alert(0,"%s JMPDBG argv=<%s>",OPEP,argv[0]); if ((nbrbind=prepbinding(&bindings,argc,argv))==0) { (void) rou_alert(0,"%s, No listening IP found (config?)",OPEP); phase=999; @@ -419,8 +466,7 @@ while (proceed==true) { } phase++; } - -#undef DFLTSET +confargv=(char **)rou_freelist((void **)confargv,(genfree_t)rou_freestr); #undef RELAX #undef OPEP }