From 6eb73a30e5a408d5d967827e734a5acdee19495c Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Wed, 21 May 2014 15:22:49 +0000 Subject: MDA: cleanse headers in case of delivery We nuke DKIM headers because we modify headers and sometimes the body, which may invalidate the message. We'll also nuke whatever Mailman nukes from messages to avoid phishing and leaking information. --- lib/PublicInbox/MDA.pm | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) (limited to 'lib/PublicInbox/MDA.pm') diff --git a/lib/PublicInbox/MDA.pm b/lib/PublicInbox/MDA.pm index 6a984b81..fe04ded9 100644 --- a/lib/PublicInbox/MDA.pm +++ b/lib/PublicInbox/MDA.pm @@ -58,14 +58,27 @@ sub alias_specified { return 0; } -# RFC2919 sub set_list_headers { my ($class, $simple, $dst) = @_; my $pa = $dst->{-primary_address}; - $simple->header_set("List-Id", "<$pa>"); - # prevent training loops - $simple->header_set('Delivered-To'); + $simple->header_set("List-Id", "<$pa>"); # RFC2919 + + # remove Delivered-To: prevent training loops + # The rest are taken from Mailman 2.1.15, some may be used for phishing + foreach my $h (qw(delivered-to approved approve x-approved x-approve + urgent return-receipt-to disposition-notification-to + x-confirm-reading-to x-pmrqc)) { + $simple->header_set($h); + } + + # Remove any "DomainKeys" (or similar) header lines. + # Any modifications (including List-Id) will cause a message + # to appear invalid + foreach my $h (qw(domainkey-signature dkim-signature + authentication-results)) { + $simple->header_set($h); + } } # returns a 3-element array: name, email, date -- cgit v1.2.3-24-ge0c7