From 6e87b61cbf5fdcbed22bf3dd8103949caf22dd59 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Fri, 24 Jun 2016 20:37:52 +0000 Subject: watch_maildir: ignore Trash and Drafts, support Dovecot Trashed messages and drafts are probably not intended for importing, so do not import them. Dovecot uses extra flags via lowercase letters, so we must support those (as that's the server I use). --- lib/PublicInbox/WatchMaildir.pm | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'lib') diff --git a/lib/PublicInbox/WatchMaildir.pm b/lib/PublicInbox/WatchMaildir.pm index 72bd3d08..b25704e6 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 _try_fsn_paths { 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 _force_mid { 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"; -- cgit v1.2.3-24-ge0c7