Yahoo Groups archive

Milter-greylist

Index last updated: 2026-04-28 23:32 UTC

Message

logging changes patch

2008-09-22 by Joe Pruett

here is a patch that adds a nolog keyword for acl lines to stop 
milter-greylist from filling up your syslog.  also a logfac config line 
that lets you set the logging facility if you want something other the the 
default of mail.  it applies to 4.1.5 and seems to be running ok on a box 
of mine with a few thousand attempts a day.

diff -ur milter-greylist-4.1.5/acl.c milter-greylist-test/acl.c
--- milter-greylist-4.1.5/acl.c	2008-08-02 22:00:06.000000000 -0700
+++ milter-greylist-test/acl.c	2008-09-21 16:37:48.000000000 -0700
@@ -1153,6 +1153,12 @@
  }

  void
+acl_add_nolog(void) {
+	gacl->a_flags |= A_NOLOG;
+	return; 
+}
+
+void
  acl_add_netblock(ad, data)
  	acl_data_t *ad;
  	void *data;
@@ -1906,6 +1912,9 @@
  		if (ap.ap_flags & A_FLUSHADDR)
  			pending_del_addr(sa, salen, queueid, acl->a_line);

+		if (ap.ap_flags & A_NOLOG)
+			retval |= EXF_NOLOG;
+
  		if (conf.c_debug || conf.c_acldebug) {
  			char aclstr[HDRLEN + 1];

@@ -1929,7 +1938,7 @@
  		priv->priv_sr.sr_autowhite = conf.c_autowhite_validity;
  	}

-	if (retval & EXF_WHITELIST) {
+	if (retval & EXF_WHITELIST && (! (retval & EXF_NOLOG))) {
  		whystr[0] = '\0';
  		if (retval & EXF_ADDR) {
  			iptostring(sa, salen, addrstr, sizeof(addrstr));
@@ -2000,7 +2009,7 @@
  		ADD_REASON(whystr, tmpstr);

  		mg_log(LOG_INFO, "%s: skipping greylist because %s",
-		    queueid, whystr);
+			queueid, whystr);
  	}
  	error = 0;
  out:
@@ -2161,6 +2170,11 @@
  		mystrlcat(entrystr, tempstr, len);
  	}

+	if (acl->a_flags & A_NOLOG) {
+		snprintf(tempstr, sizeof(tempstr), "[nolog] ");
+		mystrlcat(entrystr, tempstr, len);
+	}
+
  	if (acl->a_code) {
  		snprintf(tempstr, sizeof(tempstr),
  		    "[code \"%s\"] ", acl->a_code);
diff -ur milter-greylist-4.1.5/acl.h milter-greylist-test/acl.h
--- milter-greylist-4.1.5/acl.h	2008-08-02 22:00:06.000000000 -0700
+++ milter-greylist-test/acl.h	2008-09-21 16:28:30.000000000 -0700
@@ -153,6 +153,7 @@
  #define A_FREE_REPORT		0x10
  #define A_FREE_ID		0x20
  #define A_DROP_ACL		0x40
+#define A_NOLOG			0x80

  struct all_list_entry;

@@ -244,6 +245,7 @@
  void acl_add_delay(time_t);
  void acl_add_autowhite(time_t);
  void acl_add_flushaddr(void);
+void acl_add_nolog(void);
  void acl_add_id(char *);
  void acl_add_code(char *);
  void acl_add_ecode(char *);
@@ -330,4 +332,5 @@
  #define EXF_PROP	(1 << 25)
  #define EXF_HELO	(1 << 26)
  #define EXF_LDAPCHECK	(1 << 27)
+#define EXF_NOLOG	(1 << 28)
  #endif /* _ACL_H_ */
diff -ur milter-greylist-4.1.5/conf.c milter-greylist-test/conf.c
--- milter-greylist-4.1.5/conf.c	2008-08-02 22:00:06.000000000 -0700
+++ milter-greylist-test/conf.c	2008-09-05 15:08:30.000000000 -0700
@@ -449,6 +449,7 @@
  	c->c_dracdb = DRACDB;
  	c->c_nodrac = 0;
  	c->c_maxpeek = 0;
+	c->c_logfac = LOG_MAIL;

  	return;
  }
diff -ur milter-greylist-4.1.5/conf.h milter-greylist-test/conf.h
--- milter-greylist-4.1.5/conf.h	2007-12-29 11:06:49.000000000 -0800
+++ milter-greylist-test/conf.h	2008-09-05 15:07:41.000000000 -0700
@@ -96,6 +96,7 @@
  	int c_nodrac;
  	int c_dump_no_time_translation;
  	int c_logexpired;
+	int c_logfac;
  	char c_pidfile_storage[QSTRLEN + 1];
  	char c_dumpfile_storage[QSTRLEN + 1];
  	char c_socket_storage[QSTRLEN + 1];
diff -ur milter-greylist-4.1.5/config.h milter-greylist-test/config.h
--- milter-greylist-4.1.5/config.h	2008-08-09 04:57:33.000000000 -0700
+++ milter-greylist-test/config.h	2008-09-05 15:55:01.000000000 -0700
@@ -2,7 +2,7 @@
  /* config.h.in.  Generated from configure.ac by autoheader.  */

  /* Build environnement */
-#define BUILD_ENV "manu@adipocyte:/home/manu/milter-greylist-current Sat Aug  9 04:12:19 UTC 2008"
+#define BUILD_ENV "joey@...:/home/joey/milter-greylist-test Fri Sep  5 15:55:00 PDT 2008"

  /* Define to 1 if you have the <arpa/inet.h> header file. */
  #define HAVE_ARPA_INET_H 1
@@ -65,10 +65,10 @@
  #define HAVE_NETINET_IN_H 1

  /* old <sys/queue.h> */
-/* #undef HAVE_OLD_QUEUE_H */
+#define HAVE_OLD_QUEUE_H

  /* sa_len field in struct sockaddr */
-#define HAVE_SA_LEN 
+/* #undef HAVE_SA_LEN */

  /* Define to 1 if you have the `select' function. */
  #define HAVE_SELECT 1
@@ -83,7 +83,7 @@
  /* #undef HAVE_SPF */

  /* we use libspf2 */
-/* #undef HAVE_SPF2 */
+#define HAVE_SPF2

  /* we use libspf2 1.0 */
  /* #undef HAVE_SPF2_10 */
@@ -114,7 +114,7 @@
  #define HAVE_STRING_H 1

  /* Define to 1 if you have the `strlcat' function. */
-#define HAVE_STRLCAT 1
+/* #undef HAVE_STRLCAT */

  /* Define to 1 if you have the <syslog.h> header file. */
  #define HAVE_SYSLOG_H 1
diff -ur milter-greylist-4.1.5/conf_lex.l milter-greylist-test/conf_lex.l
--- milter-greylist-4.1.5/conf_lex.l	2008-08-02 22:00:06.000000000 -0700
+++ milter-greylist-test/conf_lex.l	2008-09-05 15:52:20.000000000 -0700
@@ -87,6 +87,7 @@
  unset		[Uu][Nn][Ss][Ee][Tt]
  list		[Ll][Ii][Ss][Tt]
  flushaddr	[Ff][Ll][Uu][Ss][Hh][Aa][Dd][Dd][Rr]
+nolog		[Nn][Oo][Ll][Oo][Gg]
  code		[Cc][Oo][Dd][Ee]
  ecode		[Ee][Cc][Oo][Dd][Ee]
  msg		[Mm][Ss][Gg]
@@ -97,6 +98,27 @@
  geoip		[Gg][Ee][Oo][Ii][Pp]
  ldapconf	[Ll][Dd][Aa][Pp][Cc][Oo][Nn][Ff]
  ldapcheck	[Ll][Dd][Aa][Pp][Cc][Hh][Ee][Cc][Kk]
+logfac		[Ll][Oo][Gg][Ff][Aa][Cc]
+log_kern	[Kk][Ee][Rr][Nn]
+log_user	[Uu][Ss][Ee][Rr]
+log_mail	[Mm][Aa][Ii][Ll]
+log_daemon	[Dd][Aa][Ee][Mm][Oo][Nn]
+log_auth	[Aa][Uu][Tt][Hh]
+log_syslog	[Ss][Yy][Ss][Ll][Oo][Gg]
+log_lpr		[Ll][Pp][Rr]
+log_news	[Nn][Ee][Ww][Ss]
+log_uucp	[Uu][Uu][Cc][Pp]
+log_cron	[Cc][Rr][Oo][Nn]
+log_authpriv	[Aa][Uu][Tt][Hh][Pp][Rr][Ii][Vv]
+log_ftp		[Ff][Tt][Pp]
+log_local0	[Ll][Oo][Cc][Aa][Ll]0
+log_local1	[Ll][Oo][Cc][Aa][Ll]1
+log_local2	[Ll][Oo][Cc][Aa][Ll]2
+log_local3	[Ll][Oo][Cc][Aa][Ll]3
+log_local4	[Ll][Oo][Cc][Aa][Ll]4
+log_local5	[Ll][Oo][Cc][Aa][Ll]5
+log_local6	[Ll][Oo][Cc][Aa][Ll]6
+log_local7	[Ll][Oo][Cc][Aa][Ll]7
  openlist	"{"
  closelist	"}"
  nextln		"\\".*"\n"
@@ -117,6 +139,7 @@

  %s S_REGEX
  %s S_SPF
+%x S_LOGFAC
  %x S_CLOCKSPEC1 S_CLOCKSPEC2


@@ -213,6 +236,7 @@
  {unset}  	{ return UNSET; }
  {list}  	{ return LIST; }
  {flushaddr}  	{ return FLUSHADDR; }
+{nolog}  	{ return NOLOG; }
  {code}  	{ return CODE; }
  {ecode}  	{ return ECODE; }
  {msg}	  	{ return MSG; }
@@ -230,6 +254,28 @@
  {socket}	{ return SOCKET; }
  {user}		{ return USER; }
  {nodetach}	{ return NODETACH; }
+{logfac}	{ BEGIN(S_LOGFAC); return LOGFAC; }
+<S_LOGFAC>{log_kern}	{ BEGIN(0); return LOGFAC_KERN; }
+<S_LOGFAC>{log_user}	{ BEGIN(0); return LOGFAC_USER; }
+<S_LOGFAC>{log_mail}	{ BEGIN(0); return LOGFAC_MAIL; }
+<S_LOGFAC>{log_daemon}	{ BEGIN(0); return LOGFAC_DAEMON; }
+<S_LOGFAC>{log_auth}	{ BEGIN(0); return LOGFAC_AUTH; }
+<S_LOGFAC>{log_syslog}	{ BEGIN(0); return LOGFAC_SYSLOG; }
+<S_LOGFAC>{log_lpr}	{ BEGIN(0); return LOGFAC_LPR; }
+<S_LOGFAC>{log_news}	{ BEGIN(0); return LOGFAC_NEWS; }
+<S_LOGFAC>{log_uucp}	{ BEGIN(0); return LOGFAC_UUCP; }
+<S_LOGFAC>{log_cron}	{ BEGIN(0); return LOGFAC_CRON; }
+<S_LOGFAC>{log_authpriv}	{ BEGIN(0); return LOGFAC_AUTHPRIV; }
+<S_LOGFAC>{log_ftp}	{ BEGIN(0); return LOGFAC_FTP; }
+<S_LOGFAC>{log_local0}	{ BEGIN(0); return LOGFAC_LOCAL0; }
+<S_LOGFAC>{log_local1}	{ BEGIN(0); return LOGFAC_LOCAL1; }
+<S_LOGFAC>{log_local2}	{ BEGIN(0); return LOGFAC_LOCAL2; }
+<S_LOGFAC>{log_local3}	{ BEGIN(0); return LOGFAC_LOCAL3; }
+<S_LOGFAC>{log_local4}	{ BEGIN(0); return LOGFAC_LOCAL4; }
+<S_LOGFAC>{log_local5}	{ BEGIN(0); return LOGFAC_LOCAL5; }
+<S_LOGFAC>{log_local6}	{ BEGIN(0); return LOGFAC_LOCAL6; }
+<S_LOGFAC>{log_local7}	{ BEGIN(0); return LOGFAC_LOCAL7; }
+<S_LOGFAC>{none}	{ BEGIN(0); return NONE; }
  {report}	{ return REPORT; }
  <INITIAL>{none}	{ return NONE; }
  {stat}		{ return STAT; }
diff -ur milter-greylist-4.1.5/conf_yacc.y milter-greylist-test/conf_yacc.y
--- milter-greylist-4.1.5/conf_yacc.y	2008-08-02 22:00:06.000000000 -0700
+++ milter-greylist-test/conf_yacc.y	2008-09-05 15:48:22.000000000 -0700
@@ -1,4 +1,5 @@
-%token TNUMBER ADDR IPADDR IP6ADDR CIDR HELO FROM RCPT EMAIL PEER AUTOWHITE GREYLIST NOAUTH NOACCESSDB EXTENDEDREGEX NOSPF QUIET TESTMODE VERBOSE PIDFILE GLDUMPFILE QSTRING TDELAY SUBNETMATCH SUBNETMATCH6 SOCKET USER NODETACH REGEX REPORT NONE DELAYS NODELAYS ALL LAZYAW GLDUMPFREQ GLTIMEOUT DOMAIN DOMAINNAME SYNCADDR SYNCSRCADDR PORT ACL WHITELIST DEFAULT STAR DELAYEDREJECT DB NODRAC DRAC DUMP_NO_TIME_TRANSLATION LOGEXPIRED GLXDELAY DNSRBL LIST OPENLIST CLOSELIST BLACKLIST FLUSHADDR CODE ECODE MSG SM_MACRO UNSET URLCHECK RACL DACL GLHEADER BODY MAXPEEK STAT POSTMSG FORK GETPROP CLEAR PROP AUTH TLS SPF MSGSIZE RCPTCOUNT OP NO SLASH MINUS COMMA TIME GEOIPDB GEOIP PASS FAIL SOFTFAIL NEUTRAL UNKNWON ERROR SELF SPF_STATUS LDAPCONF LDAPCHECK
+%token TNUMBER ADDR IPADDR IP6ADDR CIDR HELO FROM RCPT EMAIL PEER AUTOWHITE GREYLIST NOAUTH NOACCESSDB EXTENDEDREGEX NOSPF QUIET TESTMODE VERBOSE PIDFILE GLDUMPFILE QSTRING TDELAY SUBNETMATCH SUBNETMATCH6 SOCKET USER NODETACH REGEX REPORT NONE DELAYS NODELAYS ALL LAZYAW GLDUMPFREQ GLTIMEOUT DOMAIN DOMAINNAME SYNCADDR SYNCSRCADDR PORT ACL WHITELIST DEFAULT STAR DELAYEDREJECT DB NODRAC DRAC DUMP_NO_TIME_TRANSLATION LOGEXPIRED GLXDELAY DNSRBL LIST OPENLIST CLOSELIST BLACKLIST FLUSHADDR NOLOG CODE ECODE MSG SM_MACRO UNSET URLCHECK RACL DACL GLHEADER BODY MAXPEEK STAT POSTMSG FORK GETPROP CLEAR PROP AUTH TLS SPF MSGSIZE RCPTCOUNT OP NO SLASH MINUS COMMA TIME GEOIPDB GEOIP PASS FAIL SOFTFAIL NEUTRAL UNKNWON ERROR SELF SPF_STATUS LDAPCONF LDAPCHECK
+%token LOGFAC LOGFAC_KERN LOGFAC_USER LOGFAC_MAIL LOGFAC_DAEMON LOGFAC_AUTH LOGFAC_SYSLOG LOGFAC_LPR LOGFAC_NEWS LOGFAC_UUCP LOGFAC_CRON LOGFAC_AUTHPRIV LOGFAC_FTP LOGFAC_LOCAL0 LOGFAC_LOCAL1 LOGFAC_LOCAL2 LOGFAC_LOCAL3 LOGFAC_LOCAL4 LOGFAC_LOCAL5 LOGFAC_LOCAL6 LOGFAC_LOCAL7

  %{
  #include "config.h"
@@ -115,6 +116,7 @@
  	|	lines nodetach '\n'
  	|	lines lazyaw '\n'
  	|	lines report '\n'
+	|	lines logfac '\n'
  	|	lines statdef '\n'
  	|	lines dumpfreq '\n'
  	|	lines timeout '\n'
@@ -393,6 +395,29 @@
  	|	REPORT ALL	{ conf.c_report = C_ALL; }
  	;

+logfac:	LOGFAC NONE { conf.c_logfac = -1; }
+	|	LOGFAC LOGFAC_KERN { conf.c_logfac = LOG_KERN; }
+	|	LOGFAC LOGFAC_USER { conf.c_logfac = LOG_USER; }
+	|	LOGFAC LOGFAC_MAIL { conf.c_logfac = LOG_MAIL; }
+	|	LOGFAC LOGFAC_DAEMON { conf.c_logfac = LOG_DAEMON; }
+	|	LOGFAC LOGFAC_AUTH { conf.c_logfac = LOG_AUTH; }
+	|	LOGFAC LOGFAC_SYSLOG { conf.c_logfac = LOG_SYSLOG; }
+	|	LOGFAC LOGFAC_LPR { conf.c_logfac = LOG_LPR; }
+	|	LOGFAC LOGFAC_NEWS { conf.c_logfac = LOG_NEWS; }
+	|	LOGFAC LOGFAC_UUCP { conf.c_logfac = LOG_UUCP; }
+	|	LOGFAC LOGFAC_CRON { conf.c_logfac = LOG_CRON; }
+	|	LOGFAC LOGFAC_AUTHPRIV { conf.c_logfac = LOG_AUTHPRIV; }
+	|	LOGFAC LOGFAC_FTP { conf.c_logfac = LOG_FTP; }
+	|	LOGFAC LOGFAC_LOCAL0 { conf.c_logfac = LOG_LOCAL0; }
+	|	LOGFAC LOGFAC_LOCAL1 { conf.c_logfac = LOG_LOCAL1; }
+	|	LOGFAC LOGFAC_LOCAL2 { conf.c_logfac = LOG_LOCAL2; }
+	|	LOGFAC LOGFAC_LOCAL3 { conf.c_logfac = LOG_LOCAL3; }
+	|	LOGFAC LOGFAC_LOCAL4 { conf.c_logfac = LOG_LOCAL4; }
+	|	LOGFAC LOGFAC_LOCAL5 { conf.c_logfac = LOG_LOCAL5; }
+	|	LOGFAC LOGFAC_LOCAL6 { conf.c_logfac = LOG_LOCAL6; }
+	|	LOGFAC LOGFAC_LOCAL7 { conf.c_logfac = LOG_LOCAL7; }
+	;
+
  statdef:	STAT QSTRING QSTRING	{
  				char output[QSTRLEN + 1];
  				char format[QSTRLEN + 1];
@@ -638,6 +663,7 @@
  	|	msg_value
  	|	report_value
  	|	flush_value
+	|	nolog_value
  	;

  greylist_value:		GLXDELAY TDELAY 
@@ -648,6 +674,8 @@
  	;
  flush_value:		FLUSHADDR { acl_add_flushaddr(); }
  	;
+nolog_value:		NOLOG { acl_add_nolog(); }
+	;
  code_value:		CODE QSTRING {
  				char code[QSTRLEN + 1];

diff -ur milter-greylist-4.1.5/greylist.conf.5 milter-greylist-test/greylist.conf.5
--- milter-greylist-4.1.5/greylist.conf.5	2008-08-02 22:00:06.000000000 -0700
+++ milter-greylist-test/greylist.conf.5	2008-09-21 16:44:13.000000000 -0700
@@ -249,6 +249,7 @@
  .I delay\fR,
  .I autowhite\fR,
  .I flushaddr\fR,
+.I nolog\fR,
  .I code\fR,
  .I ecode\fR,
  .I report\fR,
@@ -282,6 +283,11 @@
  .IP
    racl blacklist dnsrbl "known-spamers" flushaddr
  .TP
+.I nolog
+Do not generate syslog message if this rule matches. Example:
+.IP
+  racl whitelist default nolog
+.TP
  .I code
  .TP
  .I ecode
@@ -910,6 +916,33 @@
  .SH MISCELLANEOUS
  These options have no command line equivalent:
  .TP
+.I logfac
+Sets the syslog facility for messages.  Can be set to any of the standard
+facilities:
+.I kern\fR,
+.I user\fR,
+.I mail\fR,
+.I daemon\fR,
+.I auth\fR,
+.I syslog\fR,
+.I lpr\fR,
+.I news\fR,
+.I uucp\fR,
+.I cron\fR,
+.I authpriv\fR,
+.I ftp\fR,
+.I local0\fR,
+.I local1\fR,
+.I local2\fR,
+.I local3\fR,
+.I local4\fR,
+.I local5\fR,
+.I local6\fR,
+.I local7\fR.
+Can also be set to
+.I none
+to disable syslog output completely.
+.TP
  .I timeout
  is used to control how long greylist tuples are retained in the database.
  Value is in seconds, except if a suffix is given (m for minutes, h for hours,
diff -ur milter-greylist-4.1.5/milter-greylist.c milter-greylist-test/milter-greylist.c
--- milter-greylist-4.1.5/milter-greylist.c	2008-08-02 22:00:06.000000000 -0700
+++ milter-greylist-test/milter-greylist.c	2008-09-21 17:25:55.000000000 -0700
@@ -492,6 +492,7 @@
  	char *greylist;
  	char addrstr[IPADDRSTRLEN];
  	char rcpt[ADDRLEN + 1];
+	int save_nolog;

  	/*
  	 * Strip spaces from the recipient address
@@ -587,10 +588,12 @@
  			snprintf(aclstr, sizeof(aclstr), " (ACL %d)",
  			    priv->priv_sr.sr_acl_line);

-		mg_log(LOG_INFO, 
-		    "%s: addr %s[%s] from %s to %s blacklisted%s",
-		    priv->priv_queueid, priv->priv_hostname, addrstr, 
-		    priv->priv_from, rcpt, aclstr);
+		if (!(priv->priv_sr.sr_whitelist & EXF_NOLOG)) {
+			mg_log(LOG_INFO, 
+				"%s: addr %s[%s] from %s to %s blacklisted%s",
+				priv->priv_queueid, priv->priv_hostname, addrstr, 
+				priv->priv_from, rcpt, aclstr);
+		}

  		set_sr_defaults(priv, code, ecode, msg);
  		mg_setreply(ctx, priv, rcpt);
@@ -599,8 +602,9 @@

  	/*
  	 * Check if the tuple {sender IP, sender e-mail, recipient e-mail}
-	 * was autowhitelisted
+	 * was autowhitelisted.
  	 */
+	save_nolog = priv->priv_sr.sr_whitelist & EXF_NOLOG;
  	priv->priv_sr.sr_whitelist = autowhite_check(SA(&priv->priv_addr),
  	    priv->priv_addrlen, priv->priv_from, rcpt, priv->priv_queueid,
  	    priv->priv_sr.sr_delay, priv->priv_sr.sr_autowhite);
@@ -642,6 +646,7 @@
  	/*
  	 * Log temporary failure and report to the client.
  	 */
+	priv->priv_sr.sr_whitelist |= save_nolog;
  	log_and_report_greylisting(ctx, priv, *envrcpt);
  	return mg_stat(priv, SMFIS_TEMPFAIL);

@@ -867,10 +872,12 @@
  		iptostring(SA(&priv->priv_addr), priv->priv_addrlen, addrstr,
  		    sizeof(addrstr));

-		mg_log(LOG_INFO, 
-		    "%s: addr %s[%s] from %s blacklisted%s",
-		    priv->priv_queueid, priv->priv_hostname, addrstr, 
-		    priv->priv_from, aclstr);
+		if (!(priv->priv_sr.sr_whitelist & EXF_NOLOG)) {
+			mg_log(LOG_INFO, 
+				"%s: addr %s[%s] from %s blacklisted%s",
+				priv->priv_queueid, priv->priv_hostname, addrstr, 
+				priv->priv_from, aclstr);
+		}

  		set_sr_defaults(priv, code, ecode, msg);
  		mg_setreply(ctx, priv, NULL);
@@ -1308,7 +1315,7 @@
  	conf_retain();
  	nodetach = conf.c_nodetach;

-	openlog("milter-greylist", 0, LOG_MAIL);
+	openlog("milter-greylist", 0, conf.c_logfac);
  	conf_cold = 0;

  	if (conf.c_socket == NULL) {
@@ -1811,10 +1818,12 @@
  	else
  		aclstr[0] = '\0';

-	mg_log(LOG_INFO, 
-	    "%s: addr %s[%s] from %s to %s delayed%s for %02d:%02d:%02d%s",
-	    priv->priv_queueid, priv->priv_hostname, addrstr, 
-	    priv->priv_from, rcpt, delayed_rj, h, mn, s, aclstr);
+	if (!(priv->priv_sr.sr_whitelist & EXF_NOLOG)) {
+		mg_log(LOG_INFO, 
+			"%s: addr %s[%s] from %s to %s delayed%s for %02d:%02d:%02d%s",
+			priv->priv_queueid, priv->priv_hostname, addrstr, 
+			priv->priv_from, rcpt, delayed_rj, h, mn, s, aclstr);
+	}

  	set_sr_defaults(priv, code, ecode, msg);
  	mg_setreply(ctx, priv, rcpt);
@@ -1975,8 +1984,19 @@
  	}

  	if (!conf_cold) {
+		int logfac;
+		if (!GET_CONF()) {
+			conf_retain();
+			logfac = conf.c_logfac;
+			conf_release();
+		} else {
+			logfac = conf.c_logfac;
+		}
+		if (logfac == -1) {
+			return;
+		}
  		va_start(ap, fmt);
-		vsyslog(level, fmt, ap);
+		vsyslog(logfac | level, fmt, ap);
  		va_end(ap);
  	}

diff -ur milter-greylist-4.1.5/urlcheck.c milter-greylist-test/urlcheck.c
--- milter-greylist-4.1.5/urlcheck.c	2008-08-02 22:00:06.000000000 -0700
+++ milter-greylist-test/urlcheck.c	2008-09-05 14:31:57.000000000 -0700
@@ -1149,6 +1149,11 @@
  		goto out;
  	}

+	if (strcasecmp(key, "milterGreylistNoLog") == 0) {
+		ap->ap_flags |= A_NOLOG;
+		goto out;
+	}
+
  	if (strcasecmp(key, "milterGreylistCode") == 0) {
  		if ((ap->ap_code = strdup(value)) == NULL) {
  			mg_log(LOG_ERR, "strdup(\"%s\") failed: %s",

Attachments

Move to quarantaine

This moves the raw source file on disk only. The archive index is not changed automatically, so you still need to run a manual refresh afterward.