From: Jean-Marc Pigeon (Delson) Date: Mon, 10 Mar 2025 18:03:35 +0000 (-0400) Subject: Defining emlrcvr (email receiver) X-Git-Tag: tag-0.6~4 X-Git-Url: https://jmp-git.ovh.safe.ca/?a=commitdiff_plain;h=76eff25e022c88e6ded9f64decd978a96dccfdee;p=jmp%2Fmailleur Defining emlrcvr (email receiver) --- diff --git a/app/Makefile b/app/Makefile index 4ac6bd5..dbaf891 100644 --- a/app/Makefile +++ b/app/Makefile @@ -21,12 +21,12 @@ clean : #Equivalences #-------------------------------------------------------------------- EXE= \ - emlrec \ + emlrcvr \ maild \ chkspf \ SRC= \ - emlrec.c \ + emlrcvr.c \ maild.c \ chkspf.c \ @@ -44,7 +44,7 @@ LIBS = $(LIBMAIL) \ #-------------------------------------------------------------------- #Dependances #-------------------------------------------------------------------- -emlrec : toremake emlrec.o +emlrcvr : toremake emlrcvr.o @ $(LD) $(LDFLAGS) -o ../bin/$@ $@.o $(LIBS) maild : toremake maild.o diff --git a/app/emlrec.c b/app/emlrcvr.c similarity index 88% rename from app/emlrec.c rename to app/emlrcvr.c index 87666ae..eeba601 100644 --- a/app/emlrec.c +++ b/app/emlrcvr.c @@ -1,7 +1,8 @@ // vim: smarttab tabstop=8 shiftwidth=2 expandtab /********************************************************/ /* */ -/* Main SMTP Daemon */ +/* Email Receiver */ +/* SMTP Daemon dedicated to receive Email. */ /* */ /********************************************************/ #include @@ -15,10 +16,11 @@ #include "unisig.h" #include "modrec.h" -#define RECNAME "emlrec" +#define RECNAME "emlrcvr" //port listening format is "IP:PORT NUMBER:num iteration" -#define PORTREC "192.168.0.1:25:1" +#define DFLTIP "127.168.0.1" //smtp test IP +#define SMTPORT "1025" //smtp test port /* */ @@ -62,7 +64,7 @@ while (proceed==true) { (void) sig_trapsignal(true,sig_alrm); break; case 2 : //doing main task - (void) rec_handlesmtp(); + (void) rec_handlesmtp(DFLTIP,SMTPORT,1); break; case 3 : //doing main tash (void) prc_cleantitle(); diff --git a/lib/modrec.c b/lib/modrec.c index 77503ee..52e1f03 100644 --- a/lib/modrec.c +++ b/lib/modrec.c @@ -172,6 +172,7 @@ _Bool proceed; phase=0; proceed=true; while (proceed==true) { + (void) rou_alert(0,"JMPDBG %s phase='%d'",OPEP,phase); switch (phase) { case 0 : //Opening logs (void) openlog(appname,LOG_NDELAY|LOG_PID,LOG_DAEMON); @@ -207,37 +208,31 @@ while (proceed==true) { /* Waiting and handling smtp request */ /* */ /********************************************************/ -PUBLIC void rec_handlesmtp() +PUBLIC void rec_handlesmtp(const char *ipnum,const char *port,int nbrbind) { #define OPEP "modrec.c:rec_handlesmtp" -#define LINE "---------------------------------" pid_t *childs; -int nbrbind; SOCPTR **bindings; int phase; _Bool proceed; childs=(pid_t)0; bindings=(SOCPTR **)0; -bindings=soc_mkbindinf(bindings,pro_smtps,"192.219.254.70","1465",3); -bindings=soc_mkbindinf(bindings,pro_smtp,"192.219.254.70","1025",3); -//bindings=soc_mkbindinf(bindings,pro_smtp,"192.219.254.70","1587",3); -nbrbind=rou_nbrlist((void **)bindings); phase=0; proceed=true; -if (nbrbind==0) { - (void) rou_alert(0,"No bindings definition found! (config?)"); - proceed=false; - } while (proceed==true) { switch (phase) { - case 0 : //looping forever email receiving processes - (void) rou_alert(0,LINE); + case 0 : //preparing iteration (void) prc_settitle("Emlrec Daemon"); - (void) rou_alert(0,"Starting Emlrec daemon"); + (void) rou_alert(0,"Starting Emlrec daemon for ip <%s>",ipnum); childs=(pid_t *)calloc(nbrbind,sizeof(pid_t)); + bindings=soc_mkbindinf((SOCPTR **)0,pro_smtp,ipnum,port,nbrbind); + if (bindings==(SOCPTR **)0) { + (void) rou_alert(0,"%s, No bindings definition found! (config?)",OPEP); + phase=999; + } break; case 1 : //Opening ALL channels for (int i=0;i",ipnum); (void) prc_killchilds(childs,nbrbind,10); break; default : //SAFE Guard - (void) rou_alert(0,"Stopping Emlrec daemon"); - (void) rou_alert(0,LINE); if (childs!=(pid_t *)0) (void) free(childs); + bindings=soc_freebindinf(bindings); proceed=false; break; } phase++; } -bindings=soc_freebindinf(bindings); -#undef LINE #undef OPEP } /* diff --git a/lib/modrec.h b/lib/modrec.h index 1c2e4bb..490fe9f 100644 --- a/lib/modrec.h +++ b/lib/modrec.h @@ -10,7 +10,7 @@ #include //procedure to receive email form outside -extern void rec_handlesmtp(); +extern void rec_handlesmtp(const char *ipnum,const char *port,int nbrbind); //homework to be done before starting/stoping module. extern int rec_modemodrec(_Bool mode);