We can't rely on Email::MIME noticing the change to our
scalar ref after calling `PublicInbox::MIME->new'.
This is because Email::MIME::body_set (unlike
Email::Simple::body_set) will copy the contents of the body into
`->{body_raw}' as a new scalar.
Furthermore, we need to escape multiple From lines in the body,
not just the first one, using the `g' modifier to `s//'.
Reported-by: Kyle Meyer <kyle@kyleam.com>
sub mb_add ($$$$) {
my ($im, $variant, $filter, $msg) = @_;
$$msg =~ s/(\r?\n)+\z/$1/s;
- my $mime = PublicInbox::MIME->new($msg);
if ($variant eq 'mboxrd') {
- $$msg =~ s/^>(>*From )/$1/sm;
+ $$msg =~ s/^>(>*From )/$1/gms;
} elsif ($variant eq 'mboxo') {
- $$msg =~ s/^>From /From /sm;
+ $$msg =~ s/^>From /From /gms;
}
+ my $mime = PublicInbox::MIME->new($msg);
if ($filter) {
my $ret = $filter->scrub($mime) or return;
return if $ret == REJECT();