lib/PublicInbox/WatchMaildir.pm | 11 +++++++++-- diff --git a/lib/PublicInbox/WatchMaildir.pm b/lib/PublicInbox/WatchMaildir.pm index 72bd3d085dc6a5fcbf8fe2c01308caf1e948ea4c..b25704e628bad30be39b613e4dd9222d3beccb51 100644 --- a/lib/PublicInbox/WatchMaildir.pm +++ b/lib/PublicInbox/WatchMaildir.pm @@ -1,5 +1,8 @@ # Copyright (C) 2016 all contributors # License: AGPL-3.0+ +# +# ref: https://cr.yp.to/proto/maildir.html +# http://wiki2.dovecot.org/MailboxFormat/Maildir package PublicInbox::WatchMaildir; use strict; use warnings; @@ -89,7 +92,7 @@ } sub _remove_spam { my ($self, $path) = @_; - $path =~ /:2,[A-R]*S[T-Z]*\z/ or return; + $path =~ /:2,[A-R]*S[T-Z]*\z/i or return; my $mime = _path_to_mime($path) or return; _force_mid($mime); foreach my $inbox (values %{$self->{mdmap}}) { @@ -127,7 +130,11 @@ sub _try_path { my ($self, $path) = @_; my @p = split(m!/+!, $path); - return unless $p[-1] =~ /\A[a-zA-Z0-9][\w:,=\.]+\z/; + return if $p[-1] !~ /\A[a-zA-Z0-9][\w:,=\.]+\z/; + if ($p[-1] =~ /:2,([A-Z]+)\z/i) { + my $flags = $1; + return if $flags =~ /[DT]/; # no [D]rafts or [T]rashed mail + } return unless -f $path; if ($path !~ $self->{mdre}) { warn "unrecognized path: $path\n";