From 74a3206babe0572a1494500d21267a31873af7b0 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Mon, 28 Oct 2019 10:45:26 +0000 Subject: mda: support multiple List-ID matches While it's not RFC2919-conformant, mail software can theoretically set multiple List-ID headers. Deliver to all inboxes which match a given List-ID since that's likely the intended. Cc: Eric W. Biederman Link: https://public-inbox.org/meta/87pniltscf.fsf@x220.int.ebiederm.org/ --- script/public-inbox-learn | 5 +++-- script/public-inbox-mda | 7 +++---- 2 files changed, 6 insertions(+), 6 deletions(-) (limited to 'script') diff --git a/script/public-inbox-learn b/script/public-inbox-learn index 79f3ead5..3073294a 100644 --- a/script/public-inbox-learn +++ b/script/public-inbox-learn @@ -95,8 +95,9 @@ if ($train eq 'spam') { next if $seen{"$ibx"}++; remove_or_add($ibx, $train, $addr); } - my $ibx = PublicInbox::MDA->inbox_for_list_id($pi_config, $mime); - if ($ibx && !$seen{"$ibx"}) { + my $dests = PublicInbox::MDA->inboxes_for_list_id($pi_config, $mime); + for my $ibx (@$dests) { + next if !$seen{"$ibx"}++; remove_or_add($ibx, $train, $ibx->{-primary_address}); } } diff --git a/script/public-inbox-mda b/script/public-inbox-mda index 821bd9cc..dca8a0ea 100755 --- a/script/public-inbox-mda +++ b/script/public-inbox-mda @@ -44,12 +44,11 @@ if (defined $recipient) { push @$dests, $ibx if $ibx; } if (!scalar(@$dests)) { - my $ibx = PublicInbox::MDA->inbox_for_list_id($config, $simple); - if (!defined($ibx) && !defined($recipient)) { + $dests = PublicInbox::MDA->inboxes_for_list_id($config, $simple); + if (!scalar(@$dests) && !defined($recipient)) { die "ORIGINAL_RECIPIENT not defined in ENV\n"; } - defined($ibx) or do_exit(67); # EX_NOUSER 5.1.1 user unknown - push @$dests, $ibx; + scalar(@$dests) or do_exit(67); # EX_NOUSER 5.1.1 user unknown } my $err; -- cgit v1.2.3-24-ge0c7