view src/dnsbl.h @ 163:97d7da45fe2a

spamassassin changes
author carl
date Sun, 26 Aug 2007 19:03:17 -0700
parents c7fc218686f5
children 9b129ed78d7d
line wrap: on
line source

/*

Copyright (c) 2007 Carl Byington - 510 Software Group, released under
the GPL version 3 or any later version at your choice available at
http://www.gnu.org/licenses/gpl-3.0.txt

*/

#ifndef dnsbl_include
#define dnsbl_include

#include "context.h"
#include "spamass.h"

extern int debug_syslog;

class recorder;
class url_scanner;

////////////////////////////////////////////////
// mail filter private data, held for us by sendmail
//
struct mlfiPriv
{
	// connection specific data
	CONFIG	*pc;					// global filtering configuration
	int 	fd; 					// to talk to dns resolvers process
	bool	err;					// did we get any errors on the resolver socket?
	int 	ip; 					// ip4 address of the smtp client
	char	*helo;					// helo from client
	map<DNSBLP, bool> checked;		// map of dnsblp to result of (ip listed on that dnsbl)
	// message specific data
	char			*mailaddr;		// envelope from value
	char			*queueid;		// sendmail queue id
	char			*authenticated; // client authenticated? if so, suppress all dnsbl checks, but check rate limits
	bool			have_whites;	// have at least one whitelisted recipient? need to accept content and remove all non-whitelisted recipients if it fails
	bool			only_whites;	// every recipient is whitelisted?
	context_map 	env_to; 		// map each non-whitelisted recipient to their filtering context
	recorder		*memory;		// memory for the content scanner
	url_scanner 	*scanner;		// object to handle body scanning
	char			*content_suffix;		// for url body filtering based on ip addresses of hostnames in the body
	char			*content_message;		// ""
	char			*uribl_suffix;			// for uribl body filtering based on hostnames in the body
	char			*uribl_message; 		// ""
	string_set		*content_host_ignore;	// ""
	SpamAssassin	*assassin;


	mlfiPriv();
	~mlfiPriv();
	void reset(bool final = false); // for a new message
	void get_fd();
	void return_fd();
	int  my_read(char *buf, int len);
	int  my_write(char *buf, int len);
	void need_content_filter(char *rcpt, CONTEXT &con);
};

void my_syslog(mlfiPriv *priv, char *text);
void my_syslog(mlfiPriv *priv, string text);
void my_syslog(char *text);

#endif