Attached you will find a patch that implements a mechanism to override mails
from MLMs in case a message would be rejected.
It introduces a new config option OverrideMLM, which expects a file holding
hostnames and/or IP adresses (similiar to the IgnoreHosts option). I didn't
test it yet with CIDR expressions, but as I use the same code that is used for
IgnoreHosts, I expect that to work, too.
If a mail from a domain with p=reject (or quarantine) arrives via a mailing
list that alters the message (like the Dovecot list), the DMARC check fails,
but if the sending host is in the OverrideMLM file, the policy is overriden to
'none'. For that case I introduced new actions that are logged into the
database.
The opendmarc-reports script is changed so that it will send an override
reason of type "mailing_list" in the report to that domain.
I have this patch in production since May without any issues (I think Andreas Schulze does so, too).
I modified this patch to override all mailing lists passing DKIM or SPF.
This help me to softly implement DMARC inbound controls.
I'm trying the patch and it seems to work, I will appreciate if you find some errors or improvement to this feature.