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",Message
logging changes patch
2008-09-22 by Joe Pruett
Attachments
- No local attachments were found for this message.