about summary refs log tree commit homepage
path: root/lib/PublicInbox.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/PublicInbox.pm')
-rw-r--r--lib/PublicInbox.pm10
1 files changed, 9 insertions, 1 deletions
diff --git a/lib/PublicInbox.pm b/lib/PublicInbox.pm
index b51c000f..899027be 100644
--- a/lib/PublicInbox.pm
+++ b/lib/PublicInbox.pm
@@ -4,6 +4,7 @@ package PublicInbox;
 use strict;
 use warnings;
 use Email::Address;
+use constant MAX_SIZE => 1024 * 500; # same as spamc default
 
 # drop plus addressing for matching
 sub __drop_plus {
@@ -13,8 +14,15 @@ sub __drop_plus {
 }
 
 # do not allow Bcc, only Cc and To if ORIGINAL_RECIPIENT (postfix) env is set
-sub recipient_specified {
+sub precheck {
         my ($klass, $filter) = @_;
+        return 0 unless defined($filter->from);
+        return 0 if length($filter->simple->as_string) > MAX_SIZE;
+        recipient_specified($filter);
+}
+
+sub recipient_specified {
+        my ($filter) = @_;
         my $or = $ENV{ORIGINAL_RECIPIENT};
         defined($or) or return 1; # for imports
         my @or = Email::Address->parse($or);