From: Eric Wong <e@80x24.org>
Date: Thu, 21 Apr 2016 22:46:04 +0000 (+0000)
Subject: mda: reject multiple Message-IDs up front
X-Git-Tag: v1.0.0~598
X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=1ef09f609adb0afc9efa5a3ff1600bae3c9587e6;p=public-inbox.git

mda: reject multiple Message-IDs up front

While ssoma now documents it uses the first Message-ID, they
are confusing and could be a sign of a broken mail software,
and broken mail software is often a sign of spam...

ref: http://public-inbox.org/meta/20160421221128.4910-1-e@80x24.org/
---

diff --git a/lib/PublicInbox/MDA.pm b/lib/PublicInbox/MDA.pm
index 003bac65..26681c2f 100644
--- a/lib/PublicInbox/MDA.pm
+++ b/lib/PublicInbox/MDA.pm
@@ -23,7 +23,9 @@ sub __drop_plus {
 sub precheck {
 	my ($klass, $filter, $address) = @_;
 	my Email::Simple $simple = $filter->simple;
-	my $mid = $simple->header("Message-ID");
+	my @mid = $simple->header('Message-ID');
+	return 0 if scalar(@mid) != 1;
+	my $mid = $mid[0];
 	return 0 if (length($mid) > MAX_MID_SIZE);
 	return 0 unless usable_str(length('<m@h>'), $mid) && $mid =~ /\@/;
 	return 0 unless usable_str(length('u@h'), $filter->from);