diff options
author | Eric Wong <e@80x24.org> | 2019-10-30 20:46:44 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2019-10-30 20:46:44 +0000 |
commit | dc84f78e4b3c7f5c8384fbf5a6b538ac1826a604 (patch) | |
tree | 30f147efadad0e4728aaa65359740dbd7baafa5c /lib/PublicInbox | |
parent | e177c05afa9bdc5ca27bc2bd9f946b70290ca3f4 (diff) | |
parent | 4da1c13914d958807fe9ef347d3a6abf7b129b62 (diff) | |
download | public-inbox-dc84f78e4b3c7f5c8384fbf5a6b538ac1826a604.tar.gz |
* learn: doc: add public-inbox-learn(1) manpage mda: support multiple List-ID matches mda: prepare for multiple destinations inboxwritable: add assert_usable_dir sub mda: skip MIME parsing if spam mda: hoist out mda_filter_adjust filter/base: remove MAX_MID_SIZE constant mda: hoist out List-ID handling and reuse in -learn learn: hoist out remove_or_add subroutine learn: GIT_COMMITTER_<NAME|EMAIL> may be "" or "0" learn: update usage statement learn: only map recipient list on "ham" or "rm" learn: support multiple To/Cc headers
Diffstat (limited to 'lib/PublicInbox')
-rw-r--r-- | lib/PublicInbox/Filter/Base.pm | 1 | ||||
-rw-r--r-- | lib/PublicInbox/InboxWritable.pm | 9 | ||||
-rw-r--r-- | lib/PublicInbox/MDA.pm | 21 | ||||
-rw-r--r-- | lib/PublicInbox/V2Writable.pm | 5 |
4 files changed, 31 insertions, 5 deletions
diff --git a/lib/PublicInbox/Filter/Base.pm b/lib/PublicInbox/Filter/Base.pm index 052cd332..7a0c720f 100644 --- a/lib/PublicInbox/Filter/Base.pm +++ b/lib/PublicInbox/Filter/Base.pm @@ -6,7 +6,6 @@ package PublicInbox::Filter::Base; use strict; use warnings; use PublicInbox::MsgIter; -use constant MAX_MID_SIZE => 244; # max term size - 1 in Xapian sub No ($) { "*** We only accept plain-text mail, No $_[0] ***" } diff --git a/lib/PublicInbox/InboxWritable.pm b/lib/PublicInbox/InboxWritable.pm index ab7b0ed5..9eab394d 100644 --- a/lib/PublicInbox/InboxWritable.pm +++ b/lib/PublicInbox/InboxWritable.pm @@ -30,12 +30,19 @@ sub new { $self; } +sub assert_usable_dir { + my ($self) = @_; + my $dir = $self->{inboxdir}; + return $dir if defined($dir) && $dir ne ''; + die "no inboxdir defined for $self->{name}\n"; +} + sub init_inbox { my ($self, $shards, $skip_epoch, $skip_artnum) = @_; # TODO: honor skip_artnum my $v = $self->{version} || 1; if ($v == 1) { - my $dir = $self->{inboxdir} or die "no inboxdir in inbox\n"; + my $dir = assert_usable_dir($self); PublicInbox::Import::init_bare($dir); } else { my $v2w = importer($self); diff --git a/lib/PublicInbox/MDA.pm b/lib/PublicInbox/MDA.pm index 9cafda13..b0dfac45 100644 --- a/lib/PublicInbox/MDA.pm +++ b/lib/PublicInbox/MDA.pm @@ -83,4 +83,25 @@ sub set_list_headers { } } +sub inboxes_for_list_id ($$) { + my ($klass, $config, $simple) = @_; + + # newer Email::Simple allows header_raw, as does Email::MIME: + my @list_ids = $simple->can('header_raw') ? + $simple->header_raw('List-Id') : + $simple->header('List-Id'); + my @dests; + for my $list_id (@list_ids) { + $list_id =~ /<[ \t]*(.+)?[ \t]*>/ or next; + if (my $ibx = $config->lookup_list_id($1)) { + push @dests, $ibx; + } + } + if (scalar(@list_ids) > 1) { + warn "W: multiple List-IDs in message:\n"; + warn "W: List-ID: $_\n" for @list_ids + } + \@dests; +} + 1; diff --git a/lib/PublicInbox/V2Writable.pm b/lib/PublicInbox/V2Writable.pm index ad2e8e62..1825da2c 100644 --- a/lib/PublicInbox/V2Writable.pm +++ b/lib/PublicInbox/V2Writable.pm @@ -77,7 +77,8 @@ sub new { # $creat may be any true value, or 0/undef. A hashref is true, # and $creat->{nproc} may be set to an integer my ($class, $v2ibx, $creat) = @_; - my $dir = $v2ibx->{inboxdir} or die "no inboxdir in inbox\n"; + $v2ibx = PublicInbox::InboxWritable->new($v2ibx); + my $dir = $v2ibx->assert_usable_dir; unless (-d $dir) { if ($creat) { require File::Path; @@ -86,8 +87,6 @@ sub new { die "$dir does not exist\n"; } } - - $v2ibx = PublicInbox::InboxWritable->new($v2ibx); $v2ibx->umask_prepare; my $xpfx = "$dir/xap" . PublicInbox::Search::SCHEMA_VERSION; |