Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > by-pkgid > c67614878826b4852b4141337f025dd6 > files > 46

clement-debug-2.1-0.133.4mdv2009.0.i586.rpm

/************************************************/
/*						*/
/*      Copyright:				*/
/*		 Jean-Marc Pigeon <jmp@safe.ca>	*/
/*	Distributed under the Gnu Public	*/
/*	License, see the License file in this	*/
/*	package.				*/
/*						*/
/*	Define all routine to manage SMTP low	*/
/*	level exchange.				*/
/*						*/
/************************************************/
#ifndef UNIEML
#define UNIEML

/*TCP Message identificator			*/
#define	MID	"MID"
#define	RQSTID	"RQSTID"
#define	ANSWID	"ANSWID"

/*clement event journal reference		*/
#define	EVJRL	1

/*clement environment variable.			*/
#define	CLEMENT_CHKSMTP	"CLEMENT_CHKSMTP"
#define	CLEMENT_CHECKRS	"CLEMENT_CHECKRS"
#define	CLEMENT_LOCSEND	"CLEMENT_LOCSEND"

/*local access to sendmail			*/
#define	LOCALMAIL	"127.0.0.25,25"
#define	LOCALHOST	"localhost"
#define	SMTPPORT	25

#define	MAILDEM "Mailer_Daemon"
#define	DFLTDOM "All_Other_Domains"
#define	RLAYDOM	"Relay_Domains"
#define	KEEPLOC	"Keeplocal"

#define	DBGSDIR	"dbgs/"	/*debug storage dir	*/

/*E-mail data dir (within spool)		*/
#define	DATADIR	"data/"		/*incoming Email*/
#define	QUEUDIR	"mqueue/"	/*direct Email	*/
#define	TRBLDIR	"trblq/"	/*trouble queue	*/
#define	TRIADIR	"triage/"	/*triage area	*/
#define	SNDRDIR	"senders/"	/*to srvr send	*/
#define	MAILDIR	"mails/"	/*local emails	*/
#define SHELDIR	"shell/"	/*var/lib shell	*/
#define UTILDIR	"utilities/"	/*var/lib util	*/
#define SUPODIR	"support/"	/*  "  support	*/


#define EMAILEXT  "-E"	/*Data E-mail extension	*/
#define QUEUEEXT  "-Q"	/*Data Queue extension	*/

/*QUEUE Directive				*/
#define	SMAILF	"MAIL FROM:"
#define	SRCPTT	"RCPT TO:"
#define	SRELAY	"RELAY"
#define	SLISTEN	"LISTEN"
#define	SQUIT	"Quit"

/*SMTP avail command				*/
#define	RSET		"RSET"	/*smtp reset cmd*/
#define	DATA		"DATA"	/*smtp data cmd	*/
#define	MAILFRM		"MAIL FROM: <%s>"
#define RCPTTO		"RCPT TO: <%s>"
#define HELO		"HELO %s"
#define EHLO		"EHLO %s"
#define STARTTLS	"STARTTLS"


/*mentor API definition				*/
#define	CHKID	"CHKID"	/*check RCPT againt FROM*/
#define	UNIQID	"UNIQID"/*Info about a uniq ID	*/
#define	CKRCPT	"CKRCPT"/*check RCPT againt FROM*/
#define	CKRSND	"CKRSND"/*check RCPT via sender	*/
#define	CKRRLY	"CKRRLY"/*check RCPT via relay	*/
#define	CKRMNT	"CKRMNT"/*check RCPT via mentor	*/
#define	CKCODE	"CKCODE"/*Mentor access code	*/
#define	DROPME	"DROPME"/* "   access disconnect*/
#define	REFRESH	"RFRSH"	/*Mentor user refresh	*/
#define	ADVICE	"ADVICE"/*ask help to mentor	*/
#define	SENT	"SENT"	/*List of Email sent	*/
#define	MENID	"MENID"	/*Unique log identifier	*/
#define	CLIP	"Clip"	/*Client IP		*/
#define	MFROM	"M-From"/*Mail from		*/
#define	HFROM	"H-From"/*E-mail header from	*/
#define	HTO	"H-To"	/*E-mail header distlist*/
#define	SUBJ	"Subj"	/*E-mail subject	*/
#define	MSGID	"MsgId"	/*E-mail Messages ID	*/
#define	RPLID	"RplId"	/*E-mail Reply Msg ID	*/
#define	MSGINF	"MsgInf"/*E-mail info		*/
#define	SPAM	"Spam"	/*E-mail spam level	*/
#define	VIRINF	"Virus"	/*E-mail virus name	*/
#define	ADVRCPT	"RCPT"	/*E-mail rcpt entry	*/
#define	ADVINFO	"RINFO"	/*rcpt advice info	*/

/*Header add on extension marker		*/
#define	XCLEM	"X-Clement-"

/*SMTP protocol status				*/
#define	GIVADV	110	/*Request an advice	*/
#define	RETADV	120	/*advice return		*/
#define	SENADV	130	/*send file advice	*/
#define	QUAADV	131	/*Quarantine advice	*/
#define	DISADV	140	/*Discarded advice	*/
#define	RLYADV	141	/*Advice E-mail relayed	*/
#define	MNTCHK	150	/*Check done by mentor	*/
#define	SIGNON	220	/*signon information	*/
#define	QUITOK	221	/*status on QUIT	*/
#define	IDOK	235	/*Authentication ID OK	*/
#define	CMDOK	250	/*Everything OK		*/
#define	RELAYOK	251	/*Mail can be relayed	*/
#define	NOVRFY	252	/*NO VRFY command	*/
#define	SENDB64	334	/*Send B64 data		*/
#define	DATAOK	354	/*ready to accept data	*/
#define	ERRPROC	451	/*local error/processing*/ 
#define	CHKUSR	452	/*Need check user exist	*/
#define TOOMANY	453	/*too many mail in queue*/
#define	TOOOFT	455	/*connecting too often	*/
#define	ALREAD	456	/*already connected	*/
#define	NEWSITE	457	/*new to me (SPF)	*/
#define	NOSNDR	458	/*sender not connected	*/
#define	NOCHKR	459	/*No checker available	*/
#define	SYNERR	500	/*syntax error		*/
#define	BADPAR	501	/*error in parameters	*/
#define	CMDBAD	502	/*cmd not implemented	*/
#define	BADSEQ	503	/*bad command sequence	*/
#define	BADAUTH	504	/*AUTH not available	*/
#define	NOOP	505	/*Not allowed operation	*/
#define	STOLEN	506	/*trying to steal ID	*/
#define	ONHOLD	507	/*system no ready	*/
#define	BADHDR	510	/*bad headers sequence	*/
#define	BADID	535	/*User ID rejected	*/
#define	EXPIRED	536	/*Contract date expired	*/
#define	REJECT	550	/*E-mail/domain rejected*/
#define	NOLOC	551	/*User not local	*/
#define	MALABRT	552	/*mail aborted		*/
#define	CMDABRT	553	/*aborted command	*/
#define	FAILED	554	/*transaction failed	*/
#define	NORELAY 555	/*we do not relay	*/
#define	NOMENT  556	/*Not known by Clement	*/
#define	NORESP	558	/*daemon no responding	*/
#define	OPRELAY 559	/*daemon allowing relay	*/
#define	BADVIR	560	/*VIRUS found in E-mail	*/
#define	DOMNRES	561	/*Domain do not resolve	*/
#define	NOSPAMS 562	/*we do not allow spam	*/
#define	BADMX	563	/*NO MX with Email addr	*/
#define	BADSPF	564	/*SPF info do not comply*/
#define	MANYRJT	565	/*Too many reject	*/
#define	NCHKED	601	/*ID not checked yet	*/
#define	UNVALID	602	/*ID may be unvalid	*/
#define	TBRECHK	603	/*ID need to be recheck	*/

/*define debug log file reference		*/
typedef	void STDDBG;

typedef	enum	{	/*returned by mentor	*/
	m_indata,	/*waiting to get E-mail	*/
	m_direct,	/*mail sent directly	*/
	m_relayed,	/*mail sent relayed	*/
	m_quarantine,	/*mail set in quarantine*/
	m_rejected,	/*mail reject by mentor	*/
	m_discarded	/*rcpt already seen	*/
	}MENTYP;

typedef	struct	{
	char *rcpt;	/*SMTP RCPT address	*/
	MENTYP status;	/*User internal status	*/
	int smtpstatus;	/*user official status	*/
	char *why;	/*why user is rejected	*/
	}RCPTYP;

/*Inter process CKRCPT message structure	*/
typedef	struct	{
	char *iprem;	/*Msg IPNUM origin	*/
	char *from;	/*SMTP 'From:' E-mail	*/
	long taille;	/*Email size		*/
	int relais;	/*relay allowed		*/
	int listenport;	/*SMPT listening port	*/
	char *listenip;	/*SMTP listening IP	*/
	char *rcpt;	/*SMPT 'Rcpt to:' E-mail*/
	char *rqst;	/*original request	*/
	}RCPTMSG;

typedef	struct	{	/*recipient info	*/
	int pos;	/*Rcpt position		*/
	char *email;	/*recipient address	*/
	int status;	/*SMTP status		*/
	char *why;	/*status commentary	*/
	}RCPADV;

typedef	struct	{
	char *domain;	/*domain ref		*/
	char forwarded;	/*advice rqst forwarded	*/
	RCPADV **rcpts;	/*rcpt info in this dom	*/
	}DOMCHK;

typedef	struct	{
	int msgnum;	/*message number	*/
	int msglast;	/*among x messages	*/
	int relayable;	/*Rmt orig relayable	*/
	char *info;	/*Advice msg info	*/
	char *hdom;	/*Hfrom domain		*/
	float spmlvl;	/*E-mail spam level	*/
	float spmlim;	/*E-mail spam trigger	*/
	DOMCHK **doms;	/*domain to be checked	*/
	}ADVIMSG;

extern char **eml_splitmsg(char *msg);
extern char *eml_strdomain(char *email);
extern void eml_journal(char **datalogs);
extern char **eml_adddata(char **data,char *frm,...);
extern char *eml_ascstat(int status,...);
extern int eml_getlistenport(char *listenip);
extern RCPTMSG *eml_getrcptmsg(char *msg);
extern RCPTMSG *eml_freercptmsg(RCPTMSG *rcptmsg);
extern ADVIMSG *eml_getadvimsg(char *msg);
extern ADVIMSG *eml_freeadvimsg(ADVIMSG *advimsg);
extern char *eml_domtomsg(DOMCHK *dom);
extern char *eml_domtoadv(DOMCHK *dom,int spam);
extern STDDBG *eml_switchstd(char *name);
extern STDDBG *eml_closeswitchstd(STDDBG *stdinfo);
extern int eml_locatedomain(char **domains,char *dom);
extern RCPTYP *eml_freercpt(RCPTYP *rcpt);
extern char *eml_cleanendline(char *line);
#endif