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";