diff options
Diffstat (limited to 'network/opendmarc/patches/ticket208-fixed.patch')
-rw-r--r-- | network/opendmarc/patches/ticket208-fixed.patch | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/network/opendmarc/patches/ticket208-fixed.patch b/network/opendmarc/patches/ticket208-fixed.patch new file mode 100644 index 0000000000..e44589e471 --- /dev/null +++ b/network/opendmarc/patches/ticket208-fixed.patch @@ -0,0 +1,115 @@ +diff -ur opendmarc-1.3.2/opendmarc/opendmarc.c opendmarc-1.3.2_fix/opendmarc/opendmarc.c +--- opendmarc-1.3.2/opendmarc/opendmarc.c 2017-03-04 14:28:39.000000000 +0100 ++++ opendmarc-1.3.2_fix/opendmarc/opendmarc.c 2017-03-27 18:11:14.977304726 +0200 +@@ -168,6 +168,7 @@ + char * conf_ignorelist; + char ** conf_trustedauthservids; + char ** conf_ignoredomains; ++ char ** conf_ignorereceivers; + struct list * conf_domainwhitelist; + unsigned int conf_domainwhitelisthashcount; + }; +@@ -1226,6 +1227,11 @@ + if (str != NULL) + dmarcf_mkarray(str, ",", &conf->conf_ignoredomains); + ++ str = NULL; ++ (void) config_get(data, "IgnoreMailTo", &str, sizeof str); ++ if (str != NULL) ++ dmarcf_mkarray(str, ",", &conf->conf_ignorereceivers); ++ + (void) config_get(data, "AuthservIDWithJobID", + &conf->conf_authservidwithjobid, + sizeof conf->conf_authservidwithjobid); +@@ -2015,6 +2021,7 @@ + mlfi_eom(SMFICTX *ctx) + { + _Bool wspf = FALSE; ++ int skiphistory; + int c; + int pc; + int policy; +@@ -3147,7 +3154,34 @@ + ** Record activity in the history file. + */ + +- if (conf->conf_historyfile != NULL && ++ skiphistory = 0; ++ if (conf->conf_ignorereceivers != NULL) ++ { ++ struct dmarcf_header *to = dmarcf_findheader(dfc, "To", 0); ++ if (to != NULL) ++ { ++ char *val = to->hdr_value; ++ while (*val && !skiphistory) ++ { ++ memset(addrbuf, '\0', sizeof addrbuf); ++ strncpy(addrbuf, val, sizeof addrbuf - 1); ++ status = dmarcf_mail_parse(addrbuf, &user, &domain); ++ if (status == 0 && user != NULL && domain != NULL) ++ { ++ snprintf(replybuf, sizeof replybuf - 1, "%s@%s", user, domain); ++ if(dmarcf_match(replybuf, conf->conf_ignorereceivers, TRUE)) ++ { ++ skiphistory = 1; ++ } ++ } ++ while(*val && *val != ',' && *val != ';') ++ ++val; ++ if(*val) ++ ++val; ++ } ++ } ++ } ++ if (!skiphistory && conf->conf_historyfile != NULL && + (conf->conf_recordall || ostatus != DMARC_DNS_ERROR_NO_RECORD)) + { + FILE *f; +diff -ur opendmarc-1.3.2/opendmarc/opendmarc.conf.5.in opendmarc-1.3.2_fix/opendmarc/opendmarc.conf.5.in +--- opendmarc-1.3.2/opendmarc/opendmarc.conf.5.in 2016-12-18 08:50:34.000000000 +0100 ++++ opendmarc-1.3.2_fix/opendmarc/opendmarc.conf.5.in 2017-03-27 17:00:14.424955664 +0200 +@@ -185,6 +185,13 @@ + no mail is ignored. + + .TP ++.I IgnoreMailTo (string) ++Gives a list of mail addresses which aren't entered into the history file. ++This is useful to prevent exchanging single message reports. The ++list should be comma-separated. Matching against this list is ++case-insensitive. The default is an empty list, meaning no mail is ignored. ++ ++.TP + .I MilterDebug (integer) + Sets the debug level to be requested from the milter library. The + default is 0. +diff -ur opendmarc-1.3.2/opendmarc/opendmarc-config.h opendmarc-1.3.2_fix/opendmarc/opendmarc-config.h +--- opendmarc-1.3.2/opendmarc/opendmarc-config.h 2016-12-18 08:50:34.000000000 +0100 ++++ opendmarc-1.3.2_fix/opendmarc/opendmarc-config.h 2017-03-27 17:39:01.727649907 +0200 +@@ -35,6 +35,7 @@ + { "IgnoreAuthenticatedClients", CONFIG_TYPE_BOOLEAN, FALSE }, + { "IgnoreHosts", CONFIG_TYPE_STRING, FALSE }, + { "IgnoreMailFrom", CONFIG_TYPE_STRING, FALSE }, ++ { "IgnoreMailTo", CONFIG_TYPE_STRING, FALSE }, + { "MilterDebug", CONFIG_TYPE_INTEGER, FALSE }, + { "PidFile", CONFIG_TYPE_STRING, FALSE }, + { "PublicSuffixList", CONFIG_TYPE_STRING, FALSE }, +diff -ur opendmarc-1.3.2/opendmarc/opendmarc.conf.sample opendmarc-1.3.2_fix/opendmarc/opendmarc.conf.sample +--- opendmarc-1.3.2/opendmarc/opendmarc.conf.sample 2017-03-04 14:28:39.000000000 +0100 ++++ opendmarc-1.3.2_fix/opendmarc/opendmarc.conf.sample 2017-03-27 17:39:32.594647158 +0200 +@@ -205,6 +205,16 @@ + # + # IgnoreMailFrom example.com + ++## IgnoreMailTo email[,...] ++## default (none) ++## ++## Gives a list of mail addresses which aren't entered into the history file. ++## This is useful to prevent exchanging mutual message reports. The ++## list should be comma-separated. Matching against this list is ++## case-insensitive. The default is an empty list, meaning no mail is ignored. ++# ++# IgnoreMailTo dmarc-ruf@example.com ++ + ## MilterDebug (integer) + ## default 0 + ## |