diff src/spamass.h @ 163:97d7da45fe2a

spamassassin changes
author carl
date Sun, 26 Aug 2007 19:03:17 -0700
parents
children 9b129ed78d7d
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/spamass.h	Sun Aug 26 19:03:17 2007 -0700
@@ -0,0 +1,75 @@
+/*
+
+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
+
+Based on spamass-milter by Georg C. F. Greve <greve@gnu.org>
+
+*/
+
+#ifndef _SPAMASS_MILTER_H
+#define _SPAMASS_MILTER_H
+
+extern "C" {
+	#include <libmilter/mfapi.h>
+}
+
+#ifdef HAVE_CDEFS_H
+#include <sys/cdefs.h>
+#endif
+
+#include <list>
+
+using namespace std;
+
+class mlfiPriv;
+
+class SpamAssassin {
+public:
+	SpamAssassin();
+	~SpamAssassin();
+
+	void mlfi_connect(mlfiPriv *priv_, int ip);
+	void mlfi_helo(char *helohost);
+	void mlfi_envfrom(char *from, char *qid);
+	void mlfi_envrcpt(SMFICTX *ctx, char *envrcpt);
+	void mlfi_header(char* headerf, char* headerv);
+	void mlfi_eoh();
+	void mlfi_body(u_char *bodyp, size_t bodylen);
+	int  mlfi_eom();
+
+private:
+	void Connect();
+	void output(const char*buffer, size_t size);
+	void output(const char*buffer);
+	void output(string buffer);
+	void close_output();
+	void input();
+	int  read_pipe();
+	void empty_and_close_pipe();
+	void closeall(int fd);
+	void warnmacro(char *macro, char *scope);
+
+public:
+	bool error; 		// spamc died or cannot work
+	bool running;		// running implies (connected and pid)
+	bool first_recipient;	// have we seen any recipients?
+
+	// connection back to main dnsbl priv structure for logging
+	mlfiPriv *priv;
+
+	// strings owned by main dnsbl
+	char *queueid;		// the sendmail queue id for this message
+	char *envfrom;		// envelope from value for this message
+	char *helo; 		// client helo value
+	int  ip4;			// ip4 address of smtp client
+
+	// Process handling variables
+	pid_t pid;
+	int pipe_io[2][2];
+	string spamc_output;
+	string spamc_input;
+};
+
+#endif