#--------------------------------------------------------------------
#testing feed
FEEDPAR = \
- -d3 \
+ $(TESTIP) \
$(TESTPORT) \
$(TESTDIR)/$(DATATST)/feed*.tst \
-c ./conf/feeder.conf.dvl \
$(TESTIP) \
$(TESTPORT) \
- $(DATATST)/feed01.tst
+ $(DATATST)/feedxx.tst
# # -i 127.63.31.15
#direct test
tstfeed : debug
- @ bin/feeder $(FEEDPAR)
+ @ bin/feeder \
+ -c ./conf/feeder.conf.dvl \
+ $(FEEDPAR)
#using gdb
dbgfeed : debug
{
#define WTLS 5 /*wait 5 sec for TLS */
+
_Bool status;
char *got;
+char *action;
int phase;
_Bool proceed;
status=false;
got=(char *)0;
+action="starttls";
phase=0;
proceed=true;
while (proceed==true) {
switch (phase) {
case 0 : //Sending START TLS command
- if (dooutgoing(socptr,GOTLS)!=(strlen(GOTLS)+2))
+ if (dooutgoing(socptr,action)!=(strlen(action)+2))
phase=999; //Unable to send STARTTLS sequence
break;
case 1 : //Get STARTTLS command status
#Definition to validate mailleur daemon (emlrcvr) server
#The test serveur itself
127.127.10.25 mailleur.example.com mailleur
-#The MX
-127.127.0.1 mx1.example.com mx1
-127.127.0.2 mx2.example.com mx2
+#The example.com email feeder
+127.127.0.1 feed1.example.com feed1
+127.127.0.2 feed2.example.com feed2
#remote access
#127.168.0.1 no reverss address detection
127.168.10.1 foreign1.badserver.tld foreign1
T:Simple email sending
R:220 mailleur.example.com ESMTP (cleartext) emlrcvr...
S:ORGN 127.127.0.2
-R:250 2.9.9 New peer [127.127.0.2/mx2.example.com] set
+R:250 2.9.9 New peer [127.127.0.2/feed2.example.com] set
#====================================================
S:HELO example.com
-R:250-mailleur.example.com, link (cleartext) ready, your IP/FQDN=[127.127.0.2/mx2.example.com]
+R:250-mailleur.example.com, link (cleartext) ready, your IP/FQDN=[127.127.0.2/feed2.example.com]
S:MAIL FROM: <postmaster@example.com>
-R:Bigre
+R:250 2.1.3 postmaster@example.com.. sender ok
S:QUIT
R:221 2.0.0 Bye, closing connection...
phase=0;
proceed=true;
while (proceed==true) {
- //(void) rou_alert(0,"JMPDBG %s phase='%d' parm=<%s>",OPEP,phase,parameter);
+ (void) rou_alert(0,"JMPDBG %s phase='%d' parm=<%s>",OPEP,phase,parameter);
switch (phase) {
case 0 : //checking if we have a parameter
if ((parameter==(char *)0)||(strlen(parameter)==0))
phase=999; //no parameter
break;
- case 1 : //do we have space
- if ((parameter[0]!=' ')&&(parameter[0]!='\t'))
- phase=999; //parameter wrong format
- break;
- case 2 : //cleaning space character
- while ((parameter[0]==' ')||(parameter[0]=='\t'))
- parameter++;
- if (strlen(parameter)==0)
- phase=999; //no parameter?
- break;
- case 3 : //seems to be a good fqdn
+ case 1 : //seems to be a good fqdn
contact->fqdn=rou_freestr(contact->fqdn);
contact->fqdn=strdup(parameter);
done=true;
switch (phase) {
case 0 : //do we have an originator
if ((mailfrom==(char *)0)||(strlen(mailfrom)<3)) {
- (void) transmit(contact,"%d 5.5.0 %s %s originator not specified",
- BADPAR,MAILF,mailfrom);
+ (void) transmit(contact,"%d 5.5.0 <%s> originator not specified",
+ BADPAR,mailfrom);
phase=999; //no need to go further
}
break;
case 1 : //do we have already a from
if (contact->mailfrom!=(char *)0) {
- (void) transmit(contact,"%d 5.5.1 %s '%s' %s",
- BADPAR,MAILF,contact->mailfrom,
+ (void) transmit(contact,"%d 5.5.1 '%s' %s",
+ BADPAR,contact->mailfrom,
"was previously defined as originator"
);
phase=999; //no need to go further
break;
case 2 : //check from format
if ((mailfrom[0]!='<')||(mailfrom[strlen(mailfrom)-1]!='>')) {
- (void) transmit(contact,"%d 5.5.2 %s %s Format error",
- BADPAR,MAILF,mailfrom);
+ (void) transmit(contact,"%d 5.5.2 '%s' bad Format error",
+ BADPAR,mailfrom);
phase=999; //no need to go further
}
mailfrom[strlen(mailfrom)-1]='\000';
//this list order by key length
static VOCTYP vocsmtp[]={
- {c_helo,"HELO"},
{c_ehlo,"EHLO"},
+ {c_helo,"HELO"},
+ {c_mail,"MAIL FROM:"},
{c_noop,"NOOP"},
#ifdef MODEDEBUG
{c_orgn,"ORGN"},
#endif
{c_quit,"QUIT"},
+ {c_rcpt,"RCPT TO:"},
{c_rset,"RSET"},
- {c_mail,MAILF},
{c_starttls,"STARTTLS"},
{c_unknown,(const char *)0}
};
code=ptr->code;
par=keyword+strlen(ptr->key);
+ *keyword='\000'; //lets say no parameters
+ if ((*par=='\000')||((*par!=' ')&&(*par!='\t')))
+ break; //space missing -> argument missing
+ //removing unneeded space
+ while ((*par==' ')||(*par=='\t'))
+ par++;
(void) memmove(keyword,par,strlen(par)+1);
break;
}
//SMTP avail command
-#define MAILF "MAIL FROM:" //Mail from a sender
-#define GOTLS "STARTTLS" //Requesting crypted mode
+//#define MAILF "MAIL FROM:" //Mail from a sender
+//#define GOTLS "STARTTLS" //Requesting crypted mode
//list of keyword
typedef enum { //list of SMTP protocol keyword
- c_helo, //Basic Helo command
c_ehlo, //EHLO command
+ c_helo, //Basic Helo command
+ c_mail, //'mail from:' sequence detected
c_noop, //No Operation request
c_orgn, //DEBUG PEERIP override
c_quit, //quit exchange
+ c_rcpt, //'rcpt to:' sequence detected
c_rset, //resetting session
- c_mail, //mail from sequence detected
c_starttls, //Starting a TLS crypted link
c_unknown //key word unknown
}CODTYP;