X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=lib%2FPublicInbox%2FMDA.pm;h=003bac659e6166ef73d29613ac372fc6cb382702;hb=3cda6050b7c8f73e7fd86f88efc5cd42d0c13f73;hp=16da7afac2bb8a6f357f57b79db41bf8c86911af;hpb=e9fda329d958fca206543b92bc8ebea8e91eb43a;p=public-inbox.git diff --git a/lib/PublicInbox/MDA.pm b/lib/PublicInbox/MDA.pm index 16da7afa..003bac65 100644 --- a/lib/PublicInbox/MDA.pm +++ b/lib/PublicInbox/MDA.pm @@ -1,12 +1,15 @@ -# Copyright (C) 2013, Eric Wong and all contributors +# Copyright (C) 2013-2015 all contributors # License: AGPLv3 or later (https://www.gnu.org/licenses/agpl-3.0.txt) +# +# For the -mda script (mail delivery agent) package PublicInbox::MDA; use strict; use warnings; +use Email::Simple; use Email::Address; -use Encode qw/decode/; use Date::Parse qw(strptime); use constant MAX_SIZE => 1024 * 500; # same as spamc default, should be tunable +use constant MAX_MID_SIZE => 244; # max term size - 1 in Xapian use constant cmd => qw/ssoma-mda -1/; # drop plus addressing for matching @@ -19,8 +22,9 @@ sub __drop_plus { # do not allow Bcc, only Cc and To if recipient is set sub precheck { my ($klass, $filter, $address) = @_; - my $simple = $filter->simple; + my Email::Simple $simple = $filter->simple; my $mid = $simple->header("Message-ID"); + return 0 if (length($mid) > MAX_MID_SIZE); return 0 unless usable_str(length(''), $mid) && $mid =~ /\@/; return 0 unless usable_str(length('u@h'), $filter->from); return 0 unless usable_str(length(':o'), $simple->header("Subject")); @@ -71,14 +75,6 @@ sub set_list_headers { 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