Mail-DeliveryStatus-BounceParser-1.534/ 0000755 0001750 0001750 00000000000 12124361043 020251 5 ustar mstevens mstevens Mail-DeliveryStatus-BounceParser-1.534/lib/ 0000755 0001750 0001750 00000000000 12124361043 021017 5 ustar mstevens mstevens Mail-DeliveryStatus-BounceParser-1.534/lib/Mail/ 0000755 0001750 0001750 00000000000 12124361043 021701 5 ustar mstevens mstevens Mail-DeliveryStatus-BounceParser-1.534/lib/Mail/DeliveryStatus/ 0000755 0001750 0001750 00000000000 12124361043 024670 5 ustar mstevens mstevens Mail-DeliveryStatus-BounceParser-1.534/lib/Mail/DeliveryStatus/Report.pm 0000644 0001750 0001750 00000000655 11765623736 026533 0 ustar mstevens mstevens package Mail::DeliveryStatus::Report;
our $VERSION = '1.531';
$VERSION = eval $VERSION;
use Mail::Header;
use strict;
use warnings;
use vars qw(@ISA);
BEGIN { @ISA = qw(Mail::Header) };
# i just don't like how Mail::Header leaves a \n at the end of everything
# meng
sub get {
my $string = $_[0]->SUPER::get($_[1]);
$string = q{} unless defined $string and length $string;
$string =~ s/\s+$//s;
return $string;
}
1;
Mail-DeliveryStatus-BounceParser-1.534/lib/Mail/DeliveryStatus/BounceParser.pm 0000644 0001750 0001750 00000135202 12124361021 027615 0 ustar mstevens mstevens package Mail::DeliveryStatus::BounceParser;
=head1 NAME
Mail::DeliveryStatus::BounceParser - Perl extension to analyze bounce messages
=head1 SYNOPSIS
use Mail::DeliveryStatus::BounceParser;
# $message is \*io or $fh or "entire\nmessage" or \@lines
my $bounce = eval { Mail::DeliveryStatus::BounceParser->new($message); };
if ($@) {
# couldn't parse.
}
my @addresses = $bounce->addresses; # email address strings
my @reports = $bounce->reports; # Mail::Header objects
my $orig_message_id = $bounce->orig_message_id; #
my $orig_message = $bounce->orig_message; # Mail::Internet object
=head1 ABSTRACT
Mail::DeliveryStatus::BounceParser analyzes RFC822 bounce messages and returns
a structured description of the addresses that bounced and the reason they
bounced; it also returns information about the original returned message
including the Message-ID. It works best with RFC1892 delivery reports, but
will gamely attempt to understand any bounce message no matter what MTA
generated it.
=head1 DESCRIPTION
Meng Wong wrote this for the Listbox v2 project; good mailing list managers
handle bounce messages so listowners don't have to. The best mailing list
managers figure out exactly what is going on with each subscriber so the
appropriate action can be taken.
=cut
use 5.006;
use strict;
use warnings;
our $VERSION = '1.534';
$VERSION = eval $VERSION;
use MIME::Parser;
use Mail::DeliveryStatus::Report;
use vars qw($EMAIL_ADDR_REGEX);
$EMAIL_ADDR_REGEX = qr{
# Avoid using something like Email::Valid
# Full rfc(2)822 compliance isn't exactly what we want, and this seems to work
# for most real world cases
(?:<|^|\s) # Space, or the start of a string
([^\s\/<]+ # some non-space, non-/ characters; none are <
\@ # at sign (duh)
(?:[-\w]+\.)+[-\w]+) # word characters or hypens organized into
# at least two dot-separated words
(?:$|\s|>) # then the end
}sx;
my $Not_An_Error = qr/
\b delayed \b
| \b warning \b
| transient.{0,20}\serror
| Your \s message .{0,100} was \s delivered \s to \s the \s following \s recipient
/six;
# added "permanent fatal errors" - fix for bug #41874
my $Really_An_Error = qr/this is a permanent error|permanent fatal errors/i;
my $Returned_Message_Below = qr/(
(?:original|returned) \s message \s (?:follows|below)
| (?: this \s is \s a \s copy \s of
| below \s this \s line \s is \s a \s copy
) .{0,100} \s message\.?
| message \s header \s follows
| ^ (?:return-path|received|from):
)\s+/sixm;
my @Preprocessors = qw(
p_ims
p_aol_senderblock
p_novell_groupwise
p_plain_smtp_transcript
p_xdelivery_status
);
=head2 parse
my $bounce = Mail::DeliveryStatus::BounceParser->parse($message, \%arg);
OPTIONS. If you pass BounceParser->new(..., {log=>sub { ... }}) That will be
used as a logging callback.
NON-BOUNCES. If the message is recognizably a vacation autoresponse, or is a
report of a transient nonfatal error, or a spam or virus autoresponse, you'll
still get back a C<$bounce>, but its C<< $bounce->is_bounce() >> will return
false.
It is possible that some bounces are not really bounces; such as
anything that apears to have a 2XX status code. To include such
non-bounces in the reports, pass the option {report_non_bounces=>1}.
For historical reasons, C is an alias for the C method.
=cut
sub parse {
my ($class, $data, $arg) = @_;
# my $bounce = Mail::DeliveryStatus::BounceParser->new( \*STDIN | $fh |
# "entire\nmessage" | ["array","of","lines"] );
my $parser = MIME::Parser->new;
$parser->output_to_core(1);
$parser->decode_headers(1);
my $message;
if (not $data) {
print STDERR "BounceParser: expecting bounce mesage on STDIN\n" if -t STDIN;
$message = $parser->parse(\*STDIN);
} elsif (not ref $data) {
$message = $parser->parse_data($data);
} elsif (ref $data eq "ARRAY") {
$message = $parser->parse_data($data);
} else {
$message = $parser->parse($data);
}
my $self = bless {
reports => [],
is_bounce => 1,
log => $arg->{log},
parser => $parser,
orig_message_id => undef,
prefer_final_recipient => $arg->{prefer_final_recipient},
}, $class;
$self->log(
"received message with type "
. (defined($message->effective_type) ? $message->effective_type : "undef")
. ", subject "
. (defined($message->head->get("subject")) ? $message->head->get("subject") : "CAN'T GET SUBJECT")
);
# before we even start to analyze the bounce, we recognize certain special
# cases, and rewrite them to be intelligible to us
foreach my $preprocessor (@Preprocessors) {
if (my $newmessage = $self->$preprocessor($message)) {
$message = $newmessage;
}
}
$self->{message} = $message;
$self->log(
"now the message is type "
. $message->effective_type
. ", subject "
. (defined($message->head->get("subject")) ? $message->head->get("subject") : "CAN'T GET SUBJECT")
);
my $first_part = _first_non_multi_part($message);
# Deal with some common C/R systems like TMDA
{
last unless ($message->head->get("x-delivery-agent")
and $message->head->get("X-Delivery-Agent") =~ /^TMDA/);
$self->log("looks like a challenge/response autoresponse; ignoring.");
$self->{type} = "Challenge / Response system autoreply";
$self->{is_bounce} = 0;
return $self;
}
{
last unless ($message->head->get("X-Bluebottle-Request") and $first_part->stringify_body =~ /This account is protected by Bluebottle/);
$self->log("looks like a challenge/response autoresponse; ignoring.");
$self->{type} = "Challenge / Response system autoreply";
$self->{is_bounce} = 0;
return $self;
}
{
last unless defined $first_part and $first_part->stringify_body =~ /Your server requires confirmation/;
$self->log("Looks like a challenge/response autoresponse; ignoring.");
$self->{type} = "Challenge / Response system autoreply";
$self->{is_bounce} = 0;
return $self;
}
{
last unless defined $first_part and $first_part->stringify_body =~ /Please add yourself to my Boxbe Guest List/;
$self->log("Looks like a challenge/response autoresponse; ignoring.");
$self->{type} = "Challenge / Response system autoreply";
$self->{is_bounce} = 0;
}
{
last unless defined $first_part and $first_part->stringify_body =~ /This\s+is\s+a\s+one-time\s+automated\s+message\s+to\s+confirm\s+that\s+you're\s+listed\s+on\s+my\s+Boxbe\s+Guest\s+List/;
$self->log("Looks like a challenge/response autoresponse; ignoring.");
$self->{type} = "Challenge / Response system autoreply";
$self->{is_bounce} = 0;
}
# we'll deem autoreplies to be usually less than a certain size.
# Some vacation autoreplies are (sigh) multipart/mixed, with an additional
# part containing a pointless disclaimer; some are multipart/alternative,
# with a pointless HTML part saying the exact same thing. (Messages in
# this latter category have the decency to self-identify with things like
# '', so we know to avoid such software in future.) So look
# at the first part of a multipart message (recursively, down the tree).
{
last if $message->effective_type eq 'multipart/report';
last if !$first_part || $first_part->effective_type ne 'text/plain';
my $string = $first_part->as_string;
last if length($string) > 3000;
# added return receipt (fix for bug #41870)
last if $string !~ /auto.{0,20}(reply|response)|return receipt|vacation|(out|away|on holiday).*office/i;
$self->log("looks like a vacation autoreply, ignoring.");
$self->{type} = "vacation autoreply";
$self->{is_bounce} = 0;
return $self;
}
# vacation autoreply tagged in the subject
{
last if $message->effective_type eq 'multipart/report';
last if !$first_part || $first_part->effective_type ne 'text/plain';
my $subject = $message->head->get('Subject');
last if !defined($subject);
last if $subject !~ /^AUTO/;
last if $subject !~ /is out of the office/;
$self->log("looks like a vacation autoreply, ignoring.");
$self->{type} = "vacation autoreply";
$self->{is_bounce} = 0;
return $self;
}
# Polish auto-reply
{
last if $message->effective_type eq 'multipart/report';
last if !$first_part || $first_part->effective_type ne 'text/plain';
my $subject = $message->head->get('Subject');
last if !defined($subject);
last if $subject !~ /Automatyczna\s+odpowied/;
$self->log("looks like a polish autoreply, ignoring.");
$self->{type} = "polish autoreply";
$self->{is_bounce} = 0;
return $self;
}
# "Email address changed but your message has been forwarded"
{
last if $message->effective_type eq 'multipart/report';
last if !$first_part || $first_part->effective_type ne 'text/plain';
my $string = $first_part->as_string;
last if length($string) > 3000;
last if $string
!~ /(address .{0,60} changed | domain .{0,40} retired) .*
(has\s*been|was|have|will\s*be) \s* (forwarded|delivered)/six;
$self->log('looks like an address-change autoreply, ignoring');
$self->{type} = 'informational address-change autoreply';
$self->{is_bounce} = 0;
return $self;
}
# Network Associates WebShield SMTP V4.5 MR1a on cpwebshield intercepted a
# mail from which caused the Content Filter
# Block extension COM to be triggered.
if ($message->effective_type eq "text/plain"
and (length $message->as_string) < 3000
and $message->bodyhandle->as_string
=~ m/norton\sassociates\swebshield|content\s+filter/ix
) {
$self->log("looks like a virus/spam block, ignoring.");
$self->{type} = "virus/spam false positive";
$self->{is_bounce} = 0;
return $self;
}
# nonfatal errors usually say they're transient
if ($message->effective_type eq "text/plain"
and $message->bodyhandle->as_string =~ /transient.*error/is) {
$self->log("seems like a nonfatal error, ignoring.");
$self->{is_bounce} = 0;
return $self;
}
# nonfatal errors usually say they're transient, but sometimes they do it
# straight out and sometimes it's wrapped in a multipart/report.
#
# Be careful not to examine a returned body for the transient-only signature:
# $Not_An_Error can match the single words 'delayed' and 'warning', which
# could quite reasonably occur in the body of the returned message. This
# also means it's worth additionally checking for a regex that gives a very
# strong indication that the error was permanent.
{
my $part_for_maybe_transient;
$part_for_maybe_transient = $message
if $message->effective_type eq "text/plain";
($part_for_maybe_transient)
= grep { $_->effective_type eq "text/plain" } $message->parts
if $message->effective_type =~ /multipart/
&& $message->effective_type ne 'multipart/report';
if ($part_for_maybe_transient) {
my $string = $part_for_maybe_transient->bodyhandle->as_string;
my $transient_pos = _match_position($string, $Not_An_Error);
last unless defined $transient_pos;
my $permanent_pos = _match_position($string, $Really_An_Error);
my $orig_msg_pos = _match_position($string, $Returned_Message_Below);
last if _position_before($permanent_pos, $orig_msg_pos);
if (_position_before($transient_pos, $orig_msg_pos)) {
$self->log("transient error, ignoring.");
$self->{is_bounce} = 0;
return $self;
}
}
}
# In all cases we will read the message body to try to pull out a message-id.
if ($message->effective_type =~ /multipart/) {
# "Internet Mail Service" sends multipart/mixed which still has a
# message/rfc822 in it
if (
my ($orig_message) =
grep { $_->effective_type eq "message/rfc822" } $message->parts
) {
# see MIME::Entity regarding REPLACE
my $orig_message_id = $orig_message->parts(0)->head->get("message-id");
if ($orig_message_id) {
$orig_message_id =~ s/(\r|\n)*$//g;
$self->log("extracted original message-id [$orig_message_id] from the original rfc822/message");
} else {
$self->log("Couldn't extract original message-id from the original rfc822/message");
}
$self->{orig_message_id} = $orig_message_id;
$self->{orig_message} = $orig_message->parts(0);
}
# todo: handle pennwomen-la@v2.listbox.com/200209/19/1032468832.1444_1.frodo
# which is a multipart/mixed containing an application/tnef instead of a
# message/rfc822. yow!
if (! $self->{orig_message_id}
and
my ($rfc822_headers) =
grep { lc $_->effective_type eq "text/rfc822-headers" } $message->parts
) {
my $orig_head = Mail::Header->new($rfc822_headers->body);
my $message_id = $orig_head->get("message-id");
if ($message_id) {
chomp ($self->{orig_message_id} = $orig_head->get("message-id"));
$self->{orig_header} = $orig_head;
$self->log("extracted original message-id $self->{orig_message_id} from text/rfc822-headers");
}
}
}
if (! $self->{orig_message_id}) {
if ($message->bodyhandle and $message->bodyhandle->as_string =~ /Message-ID: (\S+)/i) {
$self->{orig_message_id} = $1;
$self->log("found a message-id $self->{orig_message_id} in the body.");
}
}
if (! $self->{orig_message_id}) {
$self->log("couldn't find original message id.");
}
#
# try to extract email addresses to identify members.
# we will also try to extract reasons as much as we can.
#
if ($message->effective_type eq "multipart/report") {
my ($delivery_status) =
grep { $_->effective_type eq "message/delivery-status" } $message->parts;
my %global = ("reporting-mta" => undef, "arrival-date" => undef);
my ($seen_action_expanded, $seen_action_failed);
# Some MTAs generate malformed multipart/report messages with no
# message/delivery-status part; don't die in such cases.
my $delivery_status_body
= eval { $delivery_status->bodyhandle->as_string } || '';
# Used to be \n\n, but now we allow any number of newlines between
# individual per-recipient fields to deal with stupid bug with the IIS SMTP
# service. RFC1894 (2.1, 2.3) is not 100% clear about whether more than
# one line is allowed - it just says "preceded by a blank line". We very
# well may put an upper bound on this in the future.
#
# See t/iis-multiple-bounce.t
foreach my $para (split /\n{2,}/, $delivery_status_body) {
# See t/surfcontrol-extra-newline.t - deal with bug #21249
$para =~ s/\A\n+//g;
# added the following line as part of fix for #41874
$para =~ s/\r/ /g;
my $report = Mail::DeliveryStatus::Report->new([split /\n/, $para]);
# Removed a $report->combine here - doesn't seem to work without a tag
# anyway... not sure what that was for. - wby 20060823
# Unfold so message doesn't wrap over multiple lines
$report->unfold;
# Some MTAs send unsought delivery-status notifications indicating
# success; others send RFC1892/RFC3464 delivery status notifications
# for transient failures.
if (defined $report->get('Action') and lc $report->get('Action')) {
my $action = lc $report->get('Action');
$action =~ s/^\s+//;
if ($action =~ s/^\s*([a-z]+)\b.*/$1/s) {
# In general, assume that anything other than 'failed' is a
# non-bounce; but 'expanded' is handled after the end of this
# foreach loop, because it might be followed by another
# per-recipient group that says 'failed'.
if ($action eq 'expanded') {
$seen_action_expanded = 1;
} elsif ($action eq 'failed') {
$seen_action_failed = 1;
} else {
$self->log("message/delivery-status says 'Action: \L$1'");
$self->{type} = 'delivery-status \L$1';
$self->{is_bounce} = 0;
return $self;
}
}
}
for my $hdr (qw(Reporting-MTA Arrival-Date)) {
my $val = $global{$hdr} ||= $report->get($hdr);
if (defined($val)) {
$report->replace($hdr => $val)
}
}
my $email;
if ($self->{prefer_final_recipient}) {
$email = $report->get("final-recipient")
|| $report->get("original-recipient");
} else {
$email = $report->get("original-recipient")
|| $report->get("final-recipient");
}
next unless $email;
# $self->log("email = \"$email\"") if $DEBUG > 3;
# Diagnostic-Code: smtp; 550 5.1.1 User unknown
my $reason = $report->get("diagnostic-code");
$email =~ s/[^;]+;\s*//; # strip leading RFC822; or LOCAL; or system;
if (defined $reason) {
$reason =~ s/[^;]+;\s*//; # strip leading X-Postfix;
}
$email = _cleanup_email($email);
$report->replace(email => $email);
if (defined $reason) {
$report->replace(reason => $reason);
} else {
$report->delete("reason");
}
my $status = $report->get('Status');
$report->replace(Status => $status) if $status =~ s/ \(permanent failure\)$//;
if ($status) {
# RFC 1893... prefer Status: if it exists and is something we know
# about
# Not 100% sure about 5.1.0...
if ($status =~ /^5\.1\.[01]$/) {
$report->replace(std_reason => "user_unknown");
} elsif ($status eq "5.1.2") {
$report->replace(std_reason => "domain_error");
} elsif ($status eq "5.2.1") {
$report->replace(std_reason => "user_disabled");
} elsif ($status eq "5.2.2") {
$report->replace(std_reason => "over_quota");
} elsif ($status eq "5.4.4") {
$report->replace(std_reason => "domain_error");
} else {
$report->replace(
std_reason => _std_reason($report->get("diagnostic-code"))
);
}
} else {
$report->replace(
std_reason => _std_reason($report->get("diagnostic-code"))
);
}
my $diag_code = $report->get("diagnostic-code");
my $host;
if (defined $diag_code) {
($host) = $diag_code =~ /\bhost\s+(\S+)/;
}
$report->replace(host => ($host)) if $host;
my ($code);
if (defined $diag_code) {
($code) = $diag_code =~
m/ ( ( [245] \d{2} ) \s | \s ( [245] \d{2} ) (?!\.) ) /x;
}
if (!$code && $status) {
$code = $status;
$code =~ s/\.//g;
}
if ($code) {
$report->replace(smtp_code => $code);
}
if (not $report->get("host")) {
my $email = $report->get("email");
if (defined $email) {
my $host = ($email =~ /\@(.+)/)[0];
$report->replace(host => $host) if $host;
}
}
if ($report->get("smtp_code") and ($report->get("smtp_code") =~ /^2../)) {
$self->log(
"smtp code is "
. $report->get("smtp_code")
. "; no_problemo."
);
}
unless ($arg->{report_non_bounces}) {
if ($report->get("std_reason") eq "no_problemo") {
$self->log(
"not actually a bounce: " . $report->get("diagnostic-code")
);
next;
}
}
push @{$self->{reports}},
Mail::DeliveryStatus::Report->new([ split /\n/, $report->as_string ]
);
}
if ($seen_action_expanded && !$seen_action_failed) {
# We've seen at least one 'Action: expanded' DSN-field, but no
# 'Action: failed'
$self->log(q[message/delivery-status says 'Action: expanded']);
$self->{type} = 'delivery-status expanded';
$self->{is_bounce} = 0;
return $self;
}
} elsif ($message->effective_type =~ /multipart/) {
# but not a multipart/report. look through each non-message/* section.
# See t/corpus/exchange.unknown.msg
my @delivery_status_parts = grep { $_->effective_type =~ m{text/plain}
and not $_->is_multipart
} $message->parts;
# $self->log("error parts: @{[ map { $_->bodyhandle->as_string }
# @delivery_status_parts ]}") if $DEBUG > 3;
push @{$self->{reports}}, $self->_extract_reports(@delivery_status_parts);
} elsif ($message->effective_type =~ m{text/plain}) {
# handle plain-text responses
# This used to just take *any* part, even if the only part wasn't a
# text/plain part
#
# We may have to specifically allow some other types, but in my testing, all
# the messages that get here and are actual bounces are text/plain
# wby - 20060907
# they usually say "returned message" somewhere, and we can split on that,
# above and below.
my $body_string = $message->bodyhandle->as_string || '';
if ($body_string =~ $Returned_Message_Below) {
my ($stuff_before, $stuff_splitted, $stuff_after) =
split $Returned_Message_Below, $message->bodyhandle->as_string, 2;
# $self->log("splitting on \"$stuff_splitted\", " . length($stuff_before)
# . " vs " . length($stuff_after) . " bytes.") if $DEBUG > 3;
push @{$self->{reports}}, $self->_extract_reports($stuff_before);
$self->{orig_text} = $stuff_after;
} elsif ($body_string =~ /(.+)\n\n(.+?Message-ID:.+)/is) {
push @{$self->{reports}}, $self->_extract_reports($1);
$self->{orig_text} = $2;
} else {
push @{$self->{reports}}, $self->_extract_reports($body_string);
$self->{orig_text} = $body_string;
}
}
return $self;
}
BEGIN { *new = \&parse };
=head2 log
$bounce->log($messages);
If a logging callback has been given, the message will be passed to it.
=cut
sub log {
my ($self, @log) = @_;
if (ref $self->{log} eq "CODE") {
$self->{log}->(@_);
}
return 1;
}
sub _extract_reports {
my $self = shift;
# input: either a list of MIME parts, or just a chunk of text.
if (@_ > 1) { return map { _extract_reports($_) } @_ }
my $text = shift;
$text = $text->bodyhandle->as_string if ref $text;
my %by_email;
# we'll assume that the text is made up of:
# blah blah 0
# email@address 1
# blah blah 1
# email@address 2
# blah blah 2
#
# we'll break it up accordingly, and first try to detect a reason for email 1
# in section 1; if there's no reason returned, we'll look in section 0. and
# we'll keep going that way for each address.
return unless $text;
my @split = split($EMAIL_ADDR_REGEX, $text);
foreach my $i (0 .. $#split) {
# only interested in the odd numbered elements, which are the email
# addressess.
next if $i % 2 == 0;
my $email = _cleanup_email($split[$i]);
if ($split[$i-1] =~ /they are not accepting mail from/) {
# aol airmail sender block
next;
}
if($split[$i-1] =~ /A message sent by/) {
# sender block
next;
}
my $std_reason = "unknown";
$std_reason = _std_reason($split[$i+1]) if $#split > $i;
$std_reason = _std_reason($split[$i-1]) if $std_reason eq "unknown";
# todo:
# if we can't figure out the reason, if we're in the delivery-status part,
# go back up into the text part and try extract_report() on that.
next if (
exists $by_email{$email}
and $by_email{$email}->{std_reason}
ne "unknown" and $std_reason eq "unknown"
);
my $reason = $split[$i-1];
$reason =~ s/(.*?). (Your mail to the following recipients could not be delivered)/$2/;
$self->log("extracted a reason [$reason]");
$by_email{$email} = {
email => $email,
raw => join ("", @split[$i-1..$i+1]),
std_reason => $std_reason,
reason => $reason
};
}
my @toreturn;
foreach my $email (keys %by_email) {
my $report = Mail::DeliveryStatus::Report->new();
$report->modify(1);
$report->header_hashref($by_email{$email});
push @toreturn, $report;
}
return @toreturn;
}
=head2 is_bounce
if ($bounce->is_bounce) { ... }
This method returns true if the bounce parser thought the message was a bounce,
and false otherwise.
=cut
sub is_bounce { return shift->{is_bounce}; }
=head2 reports
Each $report returned by $bounce->reports() is basically a Mail::Header object
with a few modifications. It includes the email address bouncing, and the
reason for the bounce.
Consider an RFC1892 error report of the form
Reporting-MTA: dns; hydrant.pobox.com
Arrival-Date: Fri, 4 Oct 2002 16:49:32 -0400 (EDT)
Final-Recipient: rfc822; bogus3@dumbo.pobox.com
Action: failed
Status: 5.0.0
Diagnostic-Code: X-Postfix; host dumbo.pobox.com[208.210.125.24] said: 550
: Nonexistent Mailbox
Each "header" above is available through the usual get() mechanism.
print $report->get('reporting_mta'); # 'some.host.com'
print $report->get('arrival-date'); # 'Fri, 4 Oct 2002 16:49:32 -0400 (EDT)'
print $report->get('final-recipient'); # 'rfc822; bogus3@dumbo.pobox.com'
print $report->get('action'); # "failed"
print $report->get('status'); # "5.0.0"
print $report->get('diagnostic-code'); # X-Postfix; ...
# BounceParser also inserts a few interpretations of its own:
print $report->get('email'); # 'bogus3@dumbo.pobox.com'
print $report->get('std_reason'); # 'user_unknown'
print $report->get('reason'); # host [199.248.185.2] said: 550 5.1.1 unknown or illegal user: somebody@uss.com
print $report->get('host'); # dumbo.pobox.com
print $report->get('smtp_code'); # 550
print $report->get('raw') || # the original unstructured text
$report->as_string; # the original structured text
Probably the two most useful fields are "email" and "std_reason", the
standardized reason. At this time BounceParser returns the following
standardized reasons:
user_unknown
over_quota
user_disabled
domain_error
spam
message_too_large
unknown
no_problemo
The "spam" standard reason indicates that the message bounced because
the recipient considered it spam.
(no_problemo will only appear if you set {report_non_bounces=>1})
If the bounce message is not structured according to RFC1892,
BounceParser will still try to return as much information as it can;
in particular, you can count on "email" and "std_reason" to be
present.
=cut
sub reports { return @{shift->{reports}} }
=head2 addresses
Returns a list of the addresses which appear to be bouncing. Each member of
the list is an email address string of the form 'foo@bar.com'.
=cut
sub addresses { return map { $_->get("email") } shift->reports; }
=head2 orig_message_id
If possible, returns the message-id of the original message as a string.
=cut
sub orig_message_id { return shift->{orig_message_id}; }
=head2 orig_message
If the original message was included in the bounce, it'll be available here as
a message/rfc822 MIME entity.
my $orig_message = $bounce->orig_message;
=cut
sub orig_message { return shift->{orig_message} }
=head2 orig_header
If only the original headers were returned in the text/rfc822-headers chunk,
they'll be available here as a Mail::Header entity.
=cut
sub orig_header { return shift->{orig_header} }
=head2 orig_text
If the bounce message was poorly structured, the above two methods won't return
anything --- instead, you get back a block of text that may or may not
approximate the original message. No guarantees. Good luck.
=cut
sub orig_text { return shift->{orig_text} }
=head1 CAVEATS
Bounce messages are generally meant to be read by humans, not computers. A
poorly formatted bounce message may fool BounceParser into spreading its net
too widely and returning email addresses that didn't actually bounce. Before
you do anything with the email addresses you get back, confirm that it makes
sense that they might be bouncing --- for example, it doesn't make sense for
the sender of the original message to show up in the addresses list, but it
could if the bounce message is sufficiently misformatted.
Still, please report all bugs!
=head1 FREE-FLOATING ANXIETY
Some bizarre MTAs construct bounce messages using the original headers of the
original message. If your application relies on the assumption that all
Message-IDs are unique, you need to watch out for these MTAs and program
defensively; before doing anything with the Message-ID of a bounce message,
first confirm that you haven't already seen it; if you have, change it to
something else that you make up on the spot, such as
"".
=head1 BUGS
BounceParser assumes a sanely constructed bounce message. Input from the real
world may cause BounceParser to barf and die horribly when we violate one of
MIME::Entity's assumptions; this is why you should always call it inside an
eval { }.
=head2 TODO
Provide some translation of the SMTP and DSN error codes into English. Review
RFC1891 and RFC1893.
=head1 KNOWN TO WORK WITH
We understand bounce messages generated by the following MTAs / organizations:
Postfix
Sendmail
Exim
AOL
Yahoo
Hotmail
AOL's AirMail sender-blocking
Microsoft Exchange*
Qmail*
Novell Groupwise*
* Items marked with an asterisk currently may return incomplete information.
=head1 SEE ALSO
Used by http://listbox.com/ --- if you like BounceParser and you know it,
consider Listbox for your mailing list needs!
SVN repository and email list information at:
http://emailproject.perl.org/
RFC1892 and RFC1894
=head1 RANDOM OBSERVATION
Schwern's modules have the Alexandre Dumas property.
=head1 AUTHOR
Original author: Meng Weng Wong, Emengwong+bounceparser@pobox.comE
Current maintainer: Ricardo SIGNES, Erjbs@cpan.orgE
Massive contributions to the 1.5xx series were made by William Yardley and
Michael Stevens. Ricardo mostly just helped out and managed releases.
=head1 COPYRIGHT AND LICENSE
Copyright (C) 2003-2006, IC Group, Inc.
pobox.com permanent email forwarding with spam filtering
listbox.com mailing list services for announcements and discussion
This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.
=head1 WITH A SHOUT OUT TO
coraline, Fletch, TorgoX, mjd, a-mused, Masque, gbarr,
sungo, dngor, and all the other hoopy froods on #perl
=cut
sub _std_reason {
local $_ = shift;
if (!defined $_) {
return "unknown";
}
if (/(?:domain|host|service)\s+(?:not\s+found|unknown|not\s+known)/i) {
return "domain_error"
}
if (/sorry,\s+that\s+domain\s+isn't\s+in\s+my\s+list\s+of\s+allowed\s+rcpthosts/i) {
return "domain_error";
}
if (
/try.again.later/is or
/mailbox\b.*\bfull/ or
/storage/i or
/quota/i or
/\s552\s/ or
/\s#?5\.2\.2\s/ or # rfc 1893
/User\s+mailbox\s+exceeds\s+allowed\s+size/i or
/Mailbox\s+size\s+limit\s+exceeded/i or
/max\s+message\s+size\s+exceeded/i or
/Benutzer\s+hat\s+zuviele\s+Mails\s+auf\s+dem\s+Server/i or
/exceeded\s+its\s+disk\s+space\s+limit/i
) {
return "over_quota";
}
my $user_re =
qr'(?: mailbox | user | recipient | address (?: ee)?
| customer | account | e-?mail | $EMAIL_ADDR_REGEX >? )'ix;
if (
/\s \(? \#? 5\.1\.[01] \)? \s/x or # rfc 1893
/$user_re\s+(?:\S+\s+)? (?:is\s+)? # Generic
(?: (?: un|not\s+) (?: known | recognized )
| [dw]oes\s?n[o']?t
(?: exist|found ) | disabled | expired ) /ix or
/no\s+(?:such)\s+?$user_re/i or # Gmail and other (mofified for bug #41874)
/unrouteable address/i or # bug #41874
/inactive user/i or # Outblaze
/unknown local part/i or # Exim(?)
/user\s+doesn't\s+have\s+a/i or # Yahoo!
/account\s+has\s+been\s+(?:disabled|suspended)/i or # Yahoo!
/$user_re\s+(?:suspended|discontinued)/i or # everyone.net / other?
/unknown\s+$user_re/i or # Generic
/$user_re\s+(?:is\s+)?(?:inactive|unavailable)/i or # Hotmail, others?
/(?:(?:in|not\s+a\s+)?valid|no such)\s$user_re/i or # Various
/$user_re\s+(?:was\s+)?not\s+found/i or # AOL, generic
/$user_re \s+ (?:is\s+)? (?:currently\s+)? # ATT, generic
(?:suspended|unavailable)/ix or
/address is administratively disabled/i or # Unknown
/no $user_re\s+(?:here\s+)?by that name/i or # Unknown
/$EMAIL_ADDR_REGEX>? is invalid/i or # Unknown
/address.*not known here/i or # Unknown
/recipient\s+(?:address\s+)?rejected/i or # Cox, generic
/not\s+listed\s+in\s+Domino/i or # Domino
/account not activated/i or # usa.net
/not\s+our\s+customer/i or # Comcast
/doesn't handle mail for that user/i or # mailfoundry
/$user_re\s+does\s+not\s+exist/i or
/Recipient\s+$EMAIL_ADDR_REGEX>?\s+does\s+not\s+exist/i or
/recipient\s+no\s+longer\s+on\s+server/i or # me.com
/is\s+not\s+a\s+known\s+user\s+on\s+this\s+system/i or # cam.ac.uk
/Rcpt\s+$EMAIL_ADDR_REGEX>?\s+does\s+not\s+exist/i or
/Mailbox\s+not\s+available/i or
/No\s+mailbox\s+found/i or
/$EMAIL_ADDR_REGEX>?\s+is\s+a\s+deactivated\s+mailbox/i or
/Recipient\s+does\s+not\s+exist\s+on\s+this\s+system/i or
/user\s+mail-box\s+not\s+found/i or
/No\s+mail\s+box\s+available\s+for\s+this\s+user/i or
/User\s+\[\S+\]\s+does\s+not\s+exist/i or
/email\s+account\s+that\s+you\s+tried\s+to\s+reach\s+is\s+disabled/i or
/not\s+an\s+active\s+address\s+at\s+this\s+host/i or
/not\s+a\s+known\s+user/i or
/BAD_RECIPIENT/i
) {
return "user_unknown";
}
if (
/domain\s+syntax/i or
/timed\s+out/i or
/route\s+to\s+host/i or
/connection\s+refused/i or
/no\s+data\s+record\s+of\s+requested\s+type/i or
/Malformed name server reply/i or
/as\s+a\s+relay,\s+but\s+I\s+have\s+not\s+been\s+configured\s+to\s+let/i or
/550\s+relay\s+not\s+permitted/i or
/550\s+relaying\s+denied/i or
/Relay\s+access\s+denied/i or
/Relaying\s+denied/i or
/No\s+such\s+domain\s+at\s+this\s+location/i
) {
return "domain_error";
}
if (
/Blocked\s+by\s+SpamAssassin/i or
/spam\s+rejection/i or
/identified\s+SPAM,\s+message\s+permanently\s+rejected/i or
/Mail\s+appears\s+to\s+be\s+unsolicited/i or
/Message\s+rejected\s+as\s+spam\s+by\s+Content\s+Filtering/i or
/message\s+looks\s+like\s+SPAM\s+to\s+me/i or
/NOT\s+JUNKEMAILFILTER/i or
/your\s+message\s+has\s+triggered\s+a\s+SPAM\s+block/i or
/Spam\s+detected/i or
/Message\s+looks\s+like\s+spam/i or
/Message\s+content\s+rejected,\s+UBE/i or
/Blocked\s+using\s+spam\s+pattern/i or
/breaches\s+local\s+URIBL\s+policy/i or
/Your\s+email\s+had\s+spam-like\s+header\s+contents/i or
/detected\s+as\s+spam/i or
/Denied\s+due\s+to\s+spam\s+list/i or
/appears\s+to\s+be\s+unsolicited/i or
/antispam\s+checks/i or
/Probable\s+Spam/i or
/ESETS_SMTP\s+\(spam\)/i or
/this\s+message\s+appears\s+to\s+be\s+spam/i or
/Spam\s+score\s+\(\S+\)\s+too\s+high/i or
/matches\s+a\s+profile\s+the\s+Internet\s+community\s+may\s+consider\s+spam/i or
/accepted\s+due\s+to\s+spam\s+filter/i or
/content\s+filter\s+rejection/i or
/using\s+a\s+mass\s+mailer/i or
/Spam\s+email/i or
/Spam\s+content/i or
(/CONTENT\s+REJECT/i and /dspam\s+check/i) or
/this\s+email\s+is\s+spam/i or
/rejected\s+as\s+spam/i or
/MCSpamSignature/i or
/identified\s+as\s+spam/i or
/Spamming\s+not\s+allowed/i or
/classified\s+as\s+spam/i or
/Message\s+refused\s+by\s+MailMarshal\s+SpamProfiler/i or
/Your\s+email\s+appears\s+similar\s+to\s+spam/i or
/This\s+message\s+scored\s+\S+\s+spam\s+points\s+and\s+has\s+been\s+rejected/i or
/Spam\s+Blocked/i or
/bulk\s+e?mail/i or
/probably\s+spam/i or
/appears\s+to\s+be\s+SPAM/i or
/SPAM NOT ACCEPTED/i or
/5.9.8\s+spam/i
) {
return "spam";
}
if (
/RESOLVER.RST.RecipSizeLimit/i or
/exceeds\s+size\s+limit/i or
/Message\s+too\s+big/i or
/RESOLVER.RST.SendSizeLimit/i or
/Message\s+Rejected\s+Class=size/i
) {
return "message_too_large";
}
return "unknown";
}
# ---------------------------------------------------------------------
# preprocessors
# ---------------------------------------------------------------------
sub p_ims {
my $self = shift;
my $message = shift;
# Mangle Exchange messages into a format we like better
# see t/corpus/exchange.unknown.msg
return
unless ($message->head->get("X-Mailer")||'') =~ /Internet Mail Service/i;
if ($message->is_multipart) {
return unless my ($error_part)
= grep { $_->effective_type eq "text/plain" } $message->parts;
return unless my ($actual_error)
= $error_part->as_string
=~ /did not reach the following recipient\S+\s*(.*)/is;
if (my $io = $error_part->open("w")) {
$io->print($actual_error);
$io->close;
}
} else {
return unless my ($actual_error)
= $message->bodyhandle->as_string
=~ /did not reach the following recipient\S+\s*(.*)/is;
my ($stuff_before, $stuff_after)
= split /^(?=Message-ID:|Received:)/m, $message->bodyhandle->as_string;
$stuff_before =~ s/.*did not reach the following recipient.*?$//ism;
$self->log("rewrote IMS into plain/report.");
return $self->new_plain_report($message, $stuff_before, $stuff_after);
}
return $message;
}
sub p_aol_senderblock {
my $self = shift;
my $message = shift;
return unless ($message->head->get("Mailer")||'') =~ /AirMail/i;
return unless $message->effective_type eq "text/plain";
return unless $message->bodyhandle->as_string =~ /Your mail to the following recipients could not be delivered because they are not accepting mail/i;
my ($host) = $message->head->get("From") =~ /\@(\S+)>/;
my $rejector;
my @new_output;
for (split /\n/, $message->bodyhandle->as_string) {
# "Sorry luser@example.com. Your mail to the...
# Get rid of this so that the module doesn't create a report for
# *your* address.
s/Sorry \S+?@\S+?\.//g;
if (/because they are not accepting mail from (\S+?):?/i) {
$rejector = $1;
push @new_output, $_;
next;
}
if (/^\s*(\S+)\s*$/) {
my $recipient = $1;
if ($recipient =~ /\@/) {
push @new_output, $_;
next;
}
s/^(\s*)(\S+)(\s*)$/$1$2\@$host$3/;
push @new_output, $_;
next;
}
push @new_output, $_;
next;
}
push @new_output, ("# rewritten by BounceParser: p_aol_senderblock()", "");
if (my $io = $message->open("w")) {
$io->print(join "\n", @new_output);
$io->close;
}
return $message;
}
sub p_novell_groupwise {
# renamed from p_novell_groupwise_5_2 - hopefully we can deal with most / all
# versions and create test cases / fixes when we can't
#
# See t/various-unknown.t and t/corpus/novell-*.msg for some recent examples.
my $self = shift;
my $message = shift;
return unless ($message->head->get("X-Mailer")||'') =~ /Novell Groupwise/i;
return unless $message->effective_type eq "multipart/mixed";
return unless my ($error_part)
= grep { $_->effective_type eq "text/plain" } $message->parts;
my ($host) = $message->head->get("From") =~ /\@(\S+)>?/;
# A lot of times, Novell returns just the LHS; this makes it difficult /
# impossible in many cases to guess the recipient address. MBP makes an
# attempt here.
my @new_output;
for (split /\n/, $error_part->bodyhandle->as_string) {
if (/^(\s*)(\S+)(\s+\(.*\))$/) {
my ($space, $recipient, $reason) = ($1, $2, $3);
if ($recipient =~ /\@/) {
push @new_output, $_;
next;
}
$_ = join "", $space, "$2\@$host", $reason;
push @new_output, $_; next;
}
push @new_output, $_; next;
}
push @new_output,
("# rewritten by BounceParser: p_novell_groupwise()", "");
if (my $io = $error_part->open("w")) {
$io->print(join "\n", @new_output);
$io->close;
}
return $message;
}
sub p_plain_smtp_transcript {
my ($self, $message) = (shift, shift);
# sometimes, we have a proper smtp transcript;
# that means we have enough information to mark the message up into a proper
# multipart/report!
#
# pennwomen-la@v2.listbox.com/200209/19/1032468752.1444_1.frodo
# The original message was received at Thu, 19 Sep 2002 13:51:36 -0700 (MST)
# from daemon@localhost
#
# ----- The following addresses had permanent fatal errors -----
#
# (expanded from: )
#
# ----- Transcript of session follows -----
# ... while talking to smtp-local.primenet.com.:
# >>> RCPT To:
# <<< 550 ... User unknown
# 550 ... User unknown
# ----- Message header follows -----
#
# what we'll do is mark it back up into a proper multipart/report.
return unless $message->effective_type eq "text/plain";
return unless $message->bodyhandle->as_string
=~ /The following addresses had permanent fatal errors/;
return unless $message->bodyhandle->as_string
=~ /Transcript of session follows/;
return unless $message->bodyhandle->as_string =~ /Message .* follows/;
my ($stuff_before, $stuff_after)
= split /^.*Message (?:header|body) follows.*$/im,
$message->bodyhandle->as_string, 2;
my %by_email = $self->_analyze_smtp_transcripts($stuff_before);
my @paras = _construct_delivery_status_paras(\%by_email);
my @new_output;
my ($reporting_mta) = _cleanup_email($message->head->get("From")) =~ /\@(\S+)/;
chomp (my $arrival_date = $message->head->get("Date"));
push @new_output, "Reporting-MTA: $reporting_mta" if $reporting_mta;
push @new_output, "Arrival-Date: $arrival_date" if $arrival_date;
push @new_output, "";
push @new_output, map { @$_, "" } @paras;
return $self->new_multipart_report(
$message,
$stuff_before,
join("\n", @new_output),
$stuff_after
);
}
sub _construct_delivery_status_paras {
my %by_email = %{shift()};
my @new_output;
foreach my $email (sort keys %by_email) {
# Final-Recipient: RFC822; robinbw@aol.com
# Action: failed
# Status: 2.0.0
# Remote-MTA: DNS; air-xj03.mail.aol.com
# Diagnostic-Code: SMTP; 250 OK
# Last-Attempt-Date: Thu, 19 Sep 2002 16:53:10 -0400 (EDT)
push @new_output, [
"Final-Recipient: RFC822; $email",
"Action: failed",
"Status: 5.0.0",
($by_email{$email}->{host} ? ("Remote-MTA: DNS; $by_email{$email}->{host}") : ()),
_construct_diagnostic_code(\%by_email, $email),
];
}
return @new_output;
}
sub _construct_diagnostic_code {
my %by_email = %{shift()};
my $email = shift;
join (" ",
"Diagnostic-Code: X-BounceParser;",
($by_email{$email}->{'host'} ? "host $by_email{$email}->{'host'} said:" : ()),
($by_email{$email}->{'smtp_code'}),
(join ", ", @{ $by_email{$email}->{'errors'} }));
}
sub _analyze_smtp_transcripts {
my $self = shift;
my $plain_smtp_transcript = shift;
my (%by_email, $email, $smtp_code, @error_strings, $host);
# parse the text part for the actual SMTP transcript
for (split /\n\n|(?=>>>)/, $plain_smtp_transcript) {
$email = _cleanup_email($1) if /RCPT TO:\s*(\S+)/im;
if (/The\s+following\s+addresses\s+had\s+permanent\s+fatal\s+errors\s+-----\s+\<(.*)\>/im) {
$email = _cleanup_email($1);
}
$by_email{$email}->{host} = $host if $email;
if (/while talking to (\S+)/im) {
$host = $1;
$host =~ s/[.:;]+$//g;
}
if (/<<< (\d\d\d) (.*)/m) {
$by_email{$email}->{smtp_code} = $1;
push @{$by_email{$email}->{errors}}, $2;
}
if (/^(\d\d\d)\b.*(<\S+\@\S+>)\.*\s+(.+)/m) {
$email = _cleanup_email($2);
$by_email{$email}->{smtp_code} = $1;
push @{$by_email{$email}->{errors}}, $3;
}
}
delete $by_email{''};
return %by_email;
}
# ------------------------------------------------------------
sub new_plain_report {
my ($self, $message, $error_text, $orig_message) = @_;
$orig_message =~ s/^\s+//;
my $newmessage = $message->dup();
$newmessage->make_multipart("plain-report");
$newmessage->parts([]);
$newmessage->attach(Type => "text/plain", Data => $error_text);
my $orig_message_mime = MIME::Entity->build(Type => "multipart/transitory");
$orig_message_mime->add_part($self->{parser}->parse_data($orig_message));
$orig_message_mime->head->mime_attr("content-type" => "message/rfc822");
$newmessage->add_part($orig_message_mime);
$self->log("created new plain-report message.");
return $newmessage;
}
# ------------------------------------------------------------
sub new_multipart_report {
my ($self, $message, $error_text, $delivery_status, $orig_message) = @_;
$orig_message =~ s/^\s+//;
my $newmessage = $message->dup();
$newmessage->make_multipart("report");
$newmessage->parts([]);
$newmessage->attach(
Type => "text/plain",
Data => $error_text
);
$newmessage->attach(
Type => "message/delivery-status",
Data => $delivery_status
);
my $orig_message_mime
= MIME::Entity->build(Type => "multipart/transitory", Top => 0);
$orig_message_mime->add_part($self->{parser}->parse_data($orig_message));
$orig_message_mime->head->mime_attr("content-type" => "message/rfc822");
$newmessage->add_part($orig_message_mime);
$self->log("created new multipart-report message.");
return $newmessage;
}
# ------------------------------------------------------------
sub _cleanup_email {
my $email = shift;
for ($email) {
chomp;
# Get rid of parens around addresses like (luser@example.com)
# Got rid of earlier /\(.*\)/ - not sure what that was about - wby
tr/[()]//d;
s/^To:\s*//i;
s/[.:;]+$//;
s/<(.+)>/$1/;
# IMS hack: c=US;a= ;p=NDC;o=ORANGE;dda:SMTP=slpark@msx.ndc.mc.uci.edu; on
# Thu, 19 Sep...
s/.*:SMTP=//;
s/^\s+//;
s/\s+$//;
# hack to get rid of stuff like "luser@example.com...User"
s/\.{3}\S+//;
# SMTP:foo@example.com
s/^SMTP://;
}
return $email;
}
sub p_xdelivery_status {
my ($self, $message) = @_;
# This seems to be caused by something called "XWall v3.31", which
# (according to Google) is a "firewall that protects your Exchange
# server from viruses, spam mail and dangerous attachments". Shame it
# doesn't protect the rest of the world from gratuitously broken MIME
# types.
for ($message->parts_DFS) {
$_->effective_type('message/delivery-status')
if $_->effective_type eq 'message/xdelivery-status';
}
}
sub _first_non_multi_part {
my ($entity) = @_;
my $part = $entity;
$part = $part->parts(0) or return while $part->is_multipart;
return $part;
}
sub _position_before {
my ($pos_a, $pos_b) = @_;
return 1 if defined($pos_a) && (!defined($pos_b) || $pos_a < $pos_b);
return;
}
# Return the position in $string at which $regex first matches, or undef if
# no match.
sub _match_position {
my ($string, $regex) = @_;
return $string =~ $regex ? $-[0] : undef;
}
1;
Mail-DeliveryStatus-BounceParser-1.534/README 0000644 0001750 0001750 00000002657 12124360622 021145 0 ustar mstevens mstevens Mail/DeliveryStatus/BounceParser version 1.534
==============================================
Mail::DeliveryStatus::BounceParser analyzes bounce messages and
returns a structured description of the addresses that bounced and
why they bounced; it also returns information about the original
returned message, where possible, including the Message-ID.
INSTALLATION
To install this module type the following:
perl Makefile.PL
make
make test
make install
DEPENDENCIES
This module requires these other modules and libraries:
Mail::Address
MIME::Tools
TESTS
Test cases have been mostly anonymised a fair bit to hide details
of the original emails being tested.
They retain enough essence to form a test case but if you're looking
to examine more detail they may no longer be there.
COPYRIGHT AND LICENCE
Copyright (C) 2003-2006 IC Group, Inc.
pobox.com permanent email forwarding with spam filtering
listbox.com mailing list services
This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.
AUTHOR
Original author: Meng Weng Wong, mengwong+bounceparser@pobox.com
Current maintainer: Ricardo SIGNES, rjbs@cpan.org
Massive contributions to the 1.5xx series were made by William Yardley.
Ricardo mostly just helped out and managed releases.
SHOUT OUT
to coraline, Fletch, TorgoX, mjd, a-mused, Masque, gbarr,
sungo, dngor, and all the other hoopy froods on #perl
Mail-DeliveryStatus-BounceParser-1.534/Makefile.PL 0000644 0001750 0001750 00000001215 12030064247 022224 0 ustar mstevens mstevens use strict;
use 5.006;
use inc::Module::Install;
name ('Mail-DeliveryStatus-BounceParser');
author ('Ricardo SIGNES ');
license ('perl');
version_from ('lib/Mail/DeliveryStatus/BounceParser.pm');
perl_version ('5.006'); # rjbs refuses to continue supporting 5.00503!
requires ('MIME::Entity' => 5.418); # topic localization bug fixed
requires ("Mail::Header" => 2.04); # known to work with current version
test_requires ('Test::More' => 0.94); # known to work with current version
repository('https://gitorious.org/mail-deliverystatus-bounceparser-fork/mail-deliverystatus-bounceparser-fork');
WriteAll();
Mail-DeliveryStatus-BounceParser-1.534/Changes 0000644 0001750 0001750 00000011205 12124360730 021545 0 ustar mstevens mstevens Revision history for Perl extension Mail::DeliveryStatus::BounceParser.
1.534 2013-03-26
Added another spam detection case (mstevens)
1.533 2013-01-23
Added two new spam detection cases (mstevens)
Hopefully fixed tests on newer perl, at the cost of slightly
reformatted messages. Why is Mail::DeliveryStatus::Report
a header object anyway? (mstevens)
1.532 2012-09-24
Added five new spam detection cases (mstevens)
New message too large case (mstevens)
1.531 2012-06-12
Three more spam detection cases (mstevens)
New message too large case (mstevens)
New over quota case (mstevens)
1.530 2012-02-16
Two more spam detection cases (mstevens)
Another unknown user case (mstevens)
1.529 2012-01-03
Patches from Ondeej Brablc to improve status parsing.
Adds new user_disabled standard reason.
add another spam detection case (mstevens)
add another message too large case (mstevens)
1.528 2011-12-09
Lots more spam detection (mstevens)
Another case of message too large (mstevens)
Fix previously miscategorised corpus message (mstevens)
1.527 2011-04-07
add another spam detection case (mstevens)
1.526 2011-04-01
more cases of over quota (mstevens)
misc. bug fixes (mstevens)
RJBS apologizes for the state of the git repository at tag 1.526
1.525 2010-10-30
(all changes by mstevens)
domain_error now reported for bounces due to DNS error (5.4.4, etc)
message_too_large now reported for oversize deliveries
messages from challenge/response systems should be identified
1.524 2010-06-10
test for more cases of over quota and spam (mstevens)
1.523 2010-03-18
test for more cases of over quota and spam (mstevens)
1.522 2010-01-28
add "spam" reason
numerous other improvements by mstevens
1.519 2008-01-14
fix POD coverage test (failure mode was weird and stupid)
1.518 2007-12-05
restore the somehow-deleted _construct_diagnostic_code
1.517 Fri Oct 20 2006
allow user to choose to prioritize original or final recipient
(below, mostly maintenance by William Yardley)
Updated docs
Removed p_ms preprocessor (should be needed anymore)
Fixed bug 21249 (extra \n causing message not to be parsed)
Added test for above
1.516 Tue Sep 26 2006
(most maintenance by William Yardley)
fix manifest
Remove some naive assumptions that were causing MBP to look at
bogus parts in non-bounce messages. This may break some stuff,
but is a first step towards fixing some longer problems.
Updated _std_reason regexp to catch some Exchange bounces
Fix a bug reported by Chris Dragon where the IIS smtp service uses
2 blank lines (rather than one) between each per-recipient field.
More new tests / emails in corpus
Improve email regexp
1.515 Tue Sep 5 2006
(most maintenance by William Yardley)
Fix a few regexps, including an unescaped comment.
Added more new tests, and updated some existing ones (including
some tests for minor issues that aren't resolved yet).
1.514 Wed Aug 16 2006
(most maintenance by William Yardley)
Ignore TMDA confirmation messages
Bit more address cleanup
Change around user unknown regexes
Update AOL's "sender block" preprocessor
1.513 Mon Jul 31 2006
(most maintenance by William Yardley)
[ NOT RELEASED TO THE CPAN ]
Temp fix for bug #20751 - ignore attachments with /image/
in their content-type, add test for same
Added comments to a couple tests
Munged some email addresses in test messages
1.512 Sat Jul 29 2006
warning avoidance; lots of ($string||'') added
fix a bogus autoresponse detection
fix a bogus smtp code determination
1.511 Sun Jun 4 2006
added pod test
privatize a number of undocumented methods
1.510 Sat May 27 2006
some cleanup of code
switch to Module::Install
rename "new" method to "parse"
added first test message
1.501 Fri May 26 2006
new maintainer RJBS
many formatting changes
implementation of arg parsing grossly simplified
should be no functionality changes
1.5 Sun Mar 13 13:25:02 2005
new co-maintainer Aaron Crane
several improvements to 1.4's accuracy and speed
0.01 Wed Feb 12 13:28:03 2003
original version; created by h2xs 1.22 with options
-b 5.5.3 -A -X -n Mail::DeliveryStatus::BounceParser
Mail-DeliveryStatus-BounceParser-1.534/t/ 0000755 0001750 0001750 00000000000 12124361043 020514 5 ustar mstevens mstevens Mail-DeliveryStatus-BounceParser-1.534/t/pod.t 0000644 0001750 0001750 00000000324 11546616741 021501 0 ustar mstevens mstevens #!perl -T
use Test::More;
plan skip_all => "set RELEASE_TESTING" unless $ENV{RELEASE_TESTING};
eval "use Test::Pod 1.00";
plan skip_all => "Test::Pod 1.00 required for testing POD" if $@;
all_pod_files_ok();
Mail-DeliveryStatus-BounceParser-1.534/t/quota-6.t 0000644 0001750 0001750 00000001151 11546616741 022212 0 ustar mstevens mstevens #!perl -wT
use strict;
use Test::More tests => 3;
use Mail::DeliveryStatus::BounceParser;
# FH because we're being backcompat to pre-lexical
sub readfile {
my $fn = shift;
open FH, "$fn" or die $!;
local $/;
my $text = ;
close FH;
return $text;
}
my $message = readfile('t/corpus/quota-6.msg');
my $bounce = Mail::DeliveryStatus::BounceParser->new($message);
isa_ok($bounce, 'Mail::DeliveryStatus::BounceParser');
ok($bounce->is_bounce, "It's a bounce");
my ($report) = $bounce->reports;
my $std_reason = $report->get("std_reason");
is($std_reason, "over_quota", "std reason is over_quota");
Mail-DeliveryStatus-BounceParser-1.534/t/quota-2.t 0000644 0001750 0001750 00000001151 11546616741 022206 0 ustar mstevens mstevens #!perl -wT
use strict;
use Test::More tests => 3;
use Mail::DeliveryStatus::BounceParser;
# FH because we're being backcompat to pre-lexical
sub readfile {
my $fn = shift;
open FH, "$fn" or die $!;
local $/;
my $text = ;
close FH;
return $text;
}
my $message = readfile('t/corpus/quota-2.msg');
my $bounce = Mail::DeliveryStatus::BounceParser->new($message);
isa_ok($bounce, 'Mail::DeliveryStatus::BounceParser');
ok($bounce->is_bounce, "It's a bounce");
my ($report) = $bounce->reports;
my $std_reason = $report->get("std_reason");
is($std_reason, "over_quota", "std reason is over_quota");
Mail-DeliveryStatus-BounceParser-1.534/t/not-a-relay.t 0000644 0001750 0001750 00000001247 11546616741 023054 0 ustar mstevens mstevens #!perl -wT
use strict;
use Test::More tests => 3;
use Mail::DeliveryStatus::BounceParser;
# Test we can spot being blocked by spamassassin.
# FH because we're being backcompat to pre-lexical
sub readfile {
my $fn = shift;
open FH, "$fn" or die $!;
local $/;
my $text = ;
close FH;
return $text;
}
my $message = readfile('t/corpus/not-a-relay.msg');
my $bounce = Mail::DeliveryStatus::BounceParser->new($message);
isa_ok($bounce, 'Mail::DeliveryStatus::BounceParser');
ok($bounce->is_bounce, "This is a bounce");
my ($report) = $bounce->reports;
my $std_reason = $report->get("std_reason");
is($std_reason, "domain_error", "std reason is domain_error");
Mail-DeliveryStatus-BounceParser-1.534/t/orig-message.t 0000644 0001750 0001750 00000012004 11546616741 023277 0 ustar mstevens mstevens #!perl -wT
use strict;
use Test::More tests => 12;
use Mail::DeliveryStatus::BounceParser;
# FH because we're being backcompat to pre-lexical
sub readfile {
my $fn = shift;
open FH, "$fn" or die $!;
local $/;
my $text = ;
close FH;
return $text;
}
{
my $message = readfile('t/corpus/postfix.msg');
my $bounce = Mail::DeliveryStatus::BounceParser->new($message);
isa_ok($bounce, 'Mail::DeliveryStatus::BounceParser');
ok($bounce->is_bounce, "it's a bounce, alright");
is(
$bounce->orig_message_id,
'<20060527213404.GN13012@mta.domain-1.com>',
"the right bounced message id is given (but has angle-brackets)",
);
my $orig_message = <<'END_MESSAGE';
Received: by mta.domain-1.com (Postfix, from userid 1001)
id 89BEE2E6069; Sat, 27 May 2006 21:34:04 +0000 (UTC)
Date: Sat, 27 May 2006 17:34:04 -0400
From: Ricardo SIGNES
To: bounce@dest.example.com
Subject: asdf
Message-ID: <20060527213404.GN13012@mta.domain-1.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
User-Agent: Mutt/1.5.11+cvs20060126
Test.
--
sender
END_MESSAGE
is($bounce->orig_message->as_string, $orig_message, "got original message");
}
{
my $message = readfile('t/corpus/aol.unknown.msg');
my $bounce = Mail::DeliveryStatus::BounceParser->new($message);
isa_ok($bounce, 'Mail::DeliveryStatus::BounceParser');
ok($bounce->is_bounce, "it's a bounce, alright");
is(
$bounce->orig_message_id,
'<200606062115.k56LFe7d012436@somehost.example.com>',
"the right bounced message id is given (but has angle-brackets)",
);
my $orig_headers = <<'END_MESSAGE';
Received: from somehost.example.com (somehost.example.com [10.0.0.98]) by rly-yi03.mx.aol.com (v109.13) with ESMTP id MAILRELAYINYI34-7bc4485f93b290; Tue, 06 Jun 2006 17:53:00 -0400
Received: from somehost.example.com (localhost [127.0.0.1])
by somehost.example.com (8.12.11.20060308/8.12.11) with ESMTP id k56LpQ9h031020
for ; Tue, 6 Jun 2006 14:52:59 -0700
Received: (from sender@localhost)
by somehost.example.com (8.12.11.20060308/8.12.11/Submit) id k56LFe7d012436
for recipient@example.net; Tue, 6 Jun 2006 14:15:40 -0700
Date: Tue, 6 Jun 2006 14:15:40 -0700
Message-Id: <200606062115.k56LFe7d012436@somehost.example.com>
Content-Type: multipart/alternative;
boundary="----------=_1149628539-8175-2121"
Content-Transfer-Encoding: binary
MIME-Version: 1.0
X-Mailer: MIME-tools 5.415 (Entity 5.415)
From: Sender Address
To: Sender Address
Subject: Test Message
X-AOL-IP: 10.3.4.5
X-AOL-SCOLL-SCORE: 1:2:477151932:12348031
X-AOL-SCOLL-URL_COUNT: 86
END_MESSAGE
is($bounce->orig_header->as_string, $orig_headers, "got original headers");
}
{
my $message = readfile('t/corpus/qmail.unknown.msg');
my $bounce = Mail::DeliveryStatus::BounceParser->new($message);
isa_ok($bounce, 'Mail::DeliveryStatus::BounceParser');
ok($bounce->is_bounce, "it's a bounce, alright");
is(
$bounce->orig_message_id,
'<200608282008.k7SK8Bbu032023@somehost.example.com>',
"the right bounced message id is given (but has angle-brackets)",
);
my $orig_message = <<'END_MESSAGE';
Return-Path:
Received: (qmail 7496 invoked from network); 28 Aug 2006 16:38:01 -0400
Received: from avas5.coqui.net ([196.28.61.131])
(envelope-sender )
by mail1.coqui.net (qmail-ldap-1.03) with SMTP
for ; 28 Aug 2006 16:38:01 -0400
Received: from somehost.example.com ([64.156.13.103])
by avas5.coqui.net with ESMTP; 28 Aug 2006 16:37:27 -0400
Received: from somehost.example.com (localhost [127.0.0.1])
by somehost.example.com (8.12.11.20060308/8.12.11) with ESMTP id k7SKYZYD007776
for ; Mon, 28 Aug 2006 13:37:26 -0700
Received: (from sender@localhost)
by somehost.example.com (8.12.11.20060308/8.12.11/Submit) id k7SK8Bbu032023
for recipient@example.net; Mon, 28 Aug 2006 13:08:11 -0700
Date: Mon, 28 Aug 2006 13:08:11 -0700
Message-Id: <200608282008.k7SK8Bbu032023@somehost.example.com>
Content-Type: multipart/alternative;
boundary="----------=_1156795691-26218-2900"
Content-Transfer-Encoding: binary
MIME-Version: 1.0
X-Mailer: MIME-tools 5.415 (Entity 5.415)
From: Sender Address
To: Sender Address
Subject: Test Bounce Message
This is a multi-part message in MIME format...
------------=_1156795691-26218-2900
Content-Type: text/plain
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Plaintext part here.
------------=_1156795691-26218-2900
Content-Type: text/html
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Test Bounce Message
Test HTML part here.
------------=_1156795691-26218-2900--
END_MESSAGE
is($bounce->orig_text, $orig_message, "got original message");
}
Mail-DeliveryStatus-BounceParser-1.534/t/boxbe2.t 0000644 0001750 0001750 00000001031 11546616741 022074 0 ustar mstevens mstevens #!perl -wT
use strict;
use Test::More tests => 2;
use Mail::DeliveryStatus::BounceParser;
# Test parsing boxbe Challlenge/Response
# FH because we're being backcompat to pre-lexical
sub readfile {
my $fn = shift;
open FH, "$fn" or die $!;
local $/;
my $text = ;
close FH;
return $text;
}
my $message = readfile('t/corpus/boxbe-cr2.msg');
my $bounce = Mail::DeliveryStatus::BounceParser->new($message);
isa_ok($bounce, 'Mail::DeliveryStatus::BounceParser');
ok(!$bounce->is_bounce, "C/R messages are not bounces");
Mail-DeliveryStatus-BounceParser-1.534/t/spam-lots-of-bogus-addresses.t 0000644 0001750 0001750 00000001350 11546616741 026330 0 ustar mstevens mstevens #!perl -wT
use strict;
use Test::More tests => 2;
use Mail::DeliveryStatus::BounceParser;
# Test an issue where a non-bounce spam message is parsed as a bounce,
# and strings in the message are (mis)identified as email addresses.
# (Currently) returns about 8 reports with bogus strings like:
# P@tchesreg
# P@ñk@ge
# etc.
# FH because we're being backcompat to pre-lexical
sub readfile {
my $fn = shift;
open FH, "$fn" or die $!;
local $/;
my $text = ;
close FH;
return $text;
}
my $message = readfile('t/corpus/spam-lots-of-bogus-addresses.msg');
my $bounce = Mail::DeliveryStatus::BounceParser->new($message);
isa_ok($bounce, 'Mail::DeliveryStatus::BounceParser');
ok( !($bounce->reports), "No reports (good)");
Mail-DeliveryStatus-BounceParser-1.534/t/surfcontrol-extra-newline.t 0000644 0001750 0001750 00000001267 11546616741 026066 0 ustar mstevens mstevens #!perl -wT
use strict;
use Test::More tests => 3;
use Mail::DeliveryStatus::BounceParser;
# Make sure we don't interpret part of an IP address as a status code
# See bug #20734
# FH because we're being backcompat to pre-lexical
sub readfile {
my $fn = shift;
open FH, "$fn" or die $!;
local $/;
my $text = ;
close FH;
return $text;
}
my $message = readfile('t/corpus/surfcontrol-extra-newline.msg');
my $bounce = Mail::DeliveryStatus::BounceParser->new($message);
isa_ok($bounce, 'Mail::DeliveryStatus::BounceParser');
ok($bounce->is_bounce, "it's a bounce, alright");
my ($report) = $bounce->reports;
is($report->get('smtp_code'), 554, "we got the right smtp code");
Mail-DeliveryStatus-BounceParser-1.534/t/virus-caused-multiple-weird-reports.t 0000644 0001750 0001750 00000001320 11546616741 027763 0 ustar mstevens mstevens #!perl -wT
use strict;
use Test::More tests => 2;
use Mail::DeliveryStatus::BounceParser;
# Test an issue where a non-bounce virus message is parsed as a bounce, and
# bogus binary strings in the message are identified as an email address.
# Originally returned 160 (!!) reports with bogus junk
# FH because we're being backcompat to pre-lexical
sub readfile {
my $fn = shift;
open FH, "$fn" or die $!;
local $/;
my $text = ;
close FH;
return $text;
}
my $message = readfile('t/corpus/virus-caused-multiple-weird-reports.msg');
my $bounce = Mail::DeliveryStatus::BounceParser->new($message);
isa_ok($bounce, 'Mail::DeliveryStatus::BounceParser');
ok( not($bounce->reports), "No reports (good)");
Mail-DeliveryStatus-BounceParser-1.534/t/junkemailfilter.t 0000644 0001750 0001750 00000001150 11546616741 024102 0 ustar mstevens mstevens #!perl -wT
use strict;
use Test::More tests => 3;
use Mail::DeliveryStatus::BounceParser;
# FH because we're being backcompat to pre-lexical
sub readfile {
my $fn = shift;
open FH, "$fn" or die $!;
local $/;
my $text = ;
close FH;
return $text;
}
my $message = readfile('t/corpus/junkemailfilter.msg');
my $bounce = Mail::DeliveryStatus::BounceParser->new($message);
isa_ok($bounce, 'Mail::DeliveryStatus::BounceParser');
ok($bounce->is_bounce, "This is a bounce");
my ($report) = $bounce->reports;
my $std_reason = $report->get("std_reason");
is($std_reason, "spam", "std reason is spam");
Mail-DeliveryStatus-BounceParser-1.534/t/user-disabled.t 0000644 0001750 0001750 00000001402 11701026560 023423 0 ustar mstevens mstevens #!perl -wT
use strict;
use Test::More tests => 6;
use Mail::DeliveryStatus::BounceParser;
# FH because we're being backcompat to pre-lexical
sub readfile {
my $fn = shift;
open FH, "$fn" or die $!;
local $/;
my $text = ;
close FH;
return $text;
}
my @test_files = ("user-unknown-disabled.msg", "polish-unknown.msg");
for my $file (@test_files) {
my $message = readfile("t/corpus/$file");
my $bounce = Mail::DeliveryStatus::BounceParser->new($message);
isa_ok($bounce, 'Mail::DeliveryStatus::BounceParser');
ok($bounce->is_bounce, "This is a bounce");
my ($report) = $bounce->reports;
my $std_reason = $report->get("std_reason");
is($std_reason, "user_disabled", "std reason is user_disabled");
}
Mail-DeliveryStatus-BounceParser-1.534/t/aol-vacation.t 0000644 0001750 0001750 00000001003 11546616741 023267 0 ustar mstevens mstevens #!perl -wT
use strict;
use Test::More tests => 2;
use Mail::DeliveryStatus::BounceParser;
use Data::Dumper;
# FH because we're being backcompat to pre-lexical
sub readfile {
my $fn = shift;
open FH, "$fn" or die $!;
local $/;
my $text = ;
close FH;
return $text;
}
my $message = readfile('t/corpus/aol-vacation.msg');
my $bounce = Mail::DeliveryStatus::BounceParser->new($message);
isa_ok($bounce, 'Mail::DeliveryStatus::BounceParser');
ok(!$bounce->is_bounce, "it's not a bounce, alright");
Mail-DeliveryStatus-BounceParser-1.534/t/misidentified-recipient.t 0000644 0001750 0001750 00000001477 11546616741 025526 0 ustar mstevens mstevens #!perl -wT
use strict;
use Test::More tests => 3;
use Mail::DeliveryStatus::BounceParser;
# Test an issue where a non-bounce spam message is parsed as a bounce,
# and strings in the message are (mis)identified as email addresses.
# (Currently) returns about 8 reports with bogus strings like:
# P@tchesreg
# P@ñk@ge
# etc.
# FH because we're being backcompat to pre-lexical
sub readfile {
my $fn = shift;
open FH, "$fn" or die $!;
local $/;
my $text = ;
close FH;
return $text;
}
my $message = readfile('t/corpus/misidentified-recipient.msg');
my $bounce = Mail::DeliveryStatus::BounceParser->new($message);
isa_ok($bounce, 'Mail::DeliveryStatus::BounceParser');
ok($bounce->is_bounce, "It's a bounce, alright");
is_deeply(
[ $bounce->addresses ],
[ 'john.b@b.c'],
"We've got the right address",
);
Mail-DeliveryStatus-BounceParser-1.534/t/whitelist.t 0000644 0001750 0001750 00000001036 11546616741 022734 0 ustar mstevens mstevens #!perl -wT
use strict;
use Test::More tests => 2;
use Mail::DeliveryStatus::BounceParser;
# Test parsing bluebottle Challlenge/Response
# FH because we're being backcompat to pre-lexical
sub readfile {
my $fn = shift;
open FH, "$fn" or die $!;
local $/;
my $text = ;
close FH;
return $text;
}
my $message = readfile('t/corpus/whitelist.msg');
my $bounce = Mail::DeliveryStatus::BounceParser->new($message);
isa_ok($bounce, 'Mail::DeliveryStatus::BounceParser');
ok(!$bounce->is_bounce, "C/R messages are not bounces");
Mail-DeliveryStatus-BounceParser-1.534/t/aol-senderblock.t 0000644 0001750 0001750 00000001247 11546616741 023770 0 ustar mstevens mstevens #!perl -wT
use strict;
use Test::More tests => 3;
use Mail::DeliveryStatus::BounceParser;
# Test parsing AOL "sender block" messages
# FH because we're being backcompat to pre-lexical
sub readfile {
my $fn = shift;
open FH, "$fn" or die $!;
local $/;
my $text = ;
close FH;
return $text;
}
my $message = readfile('t/corpus/aol-senderblock.msg');
my $bounce = Mail::DeliveryStatus::BounceParser->new($message);
isa_ok($bounce, 'Mail::DeliveryStatus::BounceParser');
ok($bounce->is_bounce, "it's a bounce, alright");
my ($report) = $bounce->reports;
is_deeply(
[ $bounce->addresses ],
[ 'mykewlaolacct@aol.com' ],
"We've got the right address",
);
Mail-DeliveryStatus-BounceParser-1.534/t/rcpthosts.t 0000644 0001750 0001750 00000001162 11546616741 022751 0 ustar mstevens mstevens #!perl -wT
use strict;
use Test::More tests => 3;
use Mail::DeliveryStatus::BounceParser;
# FH because we're being backcompat to pre-lexical
sub readfile {
my $fn = shift;
open FH, "$fn" or die $!;
local $/;
my $text = ;
close FH;
return $text;
}
my $message = readfile('t/corpus/rcpthosts.msg');
my $bounce = Mail::DeliveryStatus::BounceParser->new($message);
isa_ok($bounce, 'Mail::DeliveryStatus::BounceParser');
ok($bounce->is_bounce, "This is a bounce");
my ($report) = $bounce->reports;
my $std_reason = $report->get("std_reason");
is($std_reason, "domain_error", "std reason is domain_error");
Mail-DeliveryStatus-BounceParser-1.534/t/malformed-dns.t 0000644 0001750 0001750 00000001364 11700616456 023447 0 ustar mstevens mstevens #!perl -wT
use strict;
use Test::More tests => 4;
use Mail::DeliveryStatus::BounceParser;
# Test we can spot being blocked by spamassassin.
# FH because we're being backcompat to pre-lexical
sub readfile {
my $fn = shift;
open FH, "$fn" or die $!;
local $/;
my $text = ;
close FH;
return $text;
}
my $message = readfile('t/corpus/malformed-dns.msg');
my $bounce = Mail::DeliveryStatus::BounceParser->new($message);
isa_ok($bounce, 'Mail::DeliveryStatus::BounceParser');
ok($bounce->is_bounce, "This is a bounce");
my ($report) = $bounce->reports;
my $std_reason = $report->get("std_reason");
is($std_reason, "domain_error", "std reason is domain_error");
is($report->get("Status"), "5.4.4", "check status code is extracted ok");
Mail-DeliveryStatus-BounceParser-1.534/t/spam-with-image.t 0000644 0001750 0001750 00000001171 11546616741 023711 0 ustar mstevens mstevens #!perl -wT
use strict;
use Test::More tests => 2;
use Mail::DeliveryStatus::BounceParser;
# Test an issue where binary image attachments were being parsed,
# resulting in tons of junk reports for each message.
# Fixes bug #20751
# FH because we're being backcompat to pre-lexical
sub readfile {
my $fn = shift;
open FH, "$fn" or die $!;
local $/;
my $text = ;
close FH;
return $text;
}
my $message = readfile('t/corpus/spam-with-image.msg');
my $bounce = Mail::DeliveryStatus::BounceParser->new($message);
isa_ok($bounce, 'Mail::DeliveryStatus::BounceParser');
ok( !($bounce->reports), "No reports (good)");
Mail-DeliveryStatus-BounceParser-1.534/t/non-autoreply.t 0000644 0001750 0001750 00000000756 11546616741 023544 0 ustar mstevens mstevens #!perl -wT
use strict;
use Test::More tests => 2;
use Mail::DeliveryStatus::BounceParser;
# FH because we're being backcompat to pre-lexical
sub readfile {
my $fn = shift;
open FH, "$fn" or die $!;
local $/;
my $text = ;
close FH;
return $text;
}
my $message = readfile('t/corpus/non-autoreply.msg');
my $bounce = Mail::DeliveryStatus::BounceParser->new($message);
isa_ok($bounce, 'Mail::DeliveryStatus::BounceParser');
ok($bounce->is_bounce, "it's a bounce, alright");
Mail-DeliveryStatus-BounceParser-1.534/t/message-too-large-3.t 0000644 0001750 0001750 00000001203 11653544254 024365 0 ustar mstevens mstevens #!perl -wT
use strict;
use Test::More tests => 3;
use Mail::DeliveryStatus::BounceParser;
# FH because we're being backcompat to pre-lexical
sub readfile {
my $fn = shift;
open FH, "$fn" or die $!;
local $/;
my $text = ;
close FH;
return $text;
}
my $message = readfile('t/corpus/message-too-large-3.msg');
my $bounce = Mail::DeliveryStatus::BounceParser->new($message);
isa_ok($bounce, 'Mail::DeliveryStatus::BounceParser');
ok($bounce->is_bounce, "It's a bounce");
my ($report) = $bounce->reports;
my $std_reason = $report->get("std_reason");
is($std_reason, "message_too_large", "std reason is message_too_large");
Mail-DeliveryStatus-BounceParser-1.534/t/various-domain.t 0000644 0001750 0001750 00000003655 11700616456 023661 0 ustar mstevens mstevens #!perl -wT
use strict;
use Test::More tests => 18;
use Mail::DeliveryStatus::BounceParser;
# FH because we're being backcompat to pre-lexical
sub readfile {
my $fn = shift;
open FH, "$fn" or die $!;
local $/;
my $text = ;
close FH;
return $text;
}
# Loop through a bunch of "user unknown" reject messages from various
# providers / MTAs, as delivered by Sendmail, and make sure they give us
# what we want.
my %files_and_responses = (
"sendmail-host-unknown.msg" => {
"reason" => '550 Host unknown',
"smtp_code" => 550,
"recipient" => 'recipient@#example.net'
},
"postfix-host-unknown.msg" => {
"reason" => '[dest.example.com]: Name or service not known',
"smtp_code" => 500,
"recipient" => 'bounce@dest.example.com'
},
"no-such-domain.msg" => {
"reason" => '550 No such domain at this location (recipient@example.net)',
"smtp_code" => "550",
"recipient" => 'recipient@example.net',
},
);
foreach my $file (keys %files_and_responses) {
# just for debugging
print "$file\n";
my $smtp_code = $files_and_responses{$file}{"smtp_code"};
my $reason = $files_and_responses{$file}{"reason"};
my $expected = $files_and_responses{$file}{"recipient"};
my $message = readfile("t/corpus/$file");
my $bounce = Mail::DeliveryStatus::BounceParser->new($message);
isa_ok($bounce, 'Mail::DeliveryStatus::BounceParser');
ok($bounce->is_bounce, "it's a bounce, alright");
my ($report) = $bounce->reports;
# check that std_reason is user_unknown
is($report->get('std_reason'), 'domain_error', "We got the right reason");
# and that the message matches up
is($report->get('reason'), $reason, "We got the right message");
is($report->get('smtp_code'), $smtp_code, "We got the right smtp code");
my ($address) = $bounce->addresses;
$address = lc($address);
is($address, $expected, "the right bounced address is given");
}
Mail-DeliveryStatus-BounceParser-1.534/t/quota-5.t 0000644 0001750 0001750 00000001224 11546616741 022212 0 ustar mstevens mstevens #!perl -wT
use strict;
use Test::More tests => 3;
use Mail::DeliveryStatus::BounceParser;
# FH because we're being backcompat to pre-lexical
sub readfile {
my $fn = shift;
open FH, "$fn" or die $!;
local $/;
my $text = ;
close FH;
return $text;
}
my $message = readfile('t/corpus/quota-5.msg');
my $bounce = Mail::DeliveryStatus::BounceParser->new($message);
isa_ok($bounce, 'Mail::DeliveryStatus::BounceParser');
ok($bounce->is_bounce, "It's a bounce");
my ($report) = $bounce->reports;
my $std_reason = $report->get("std_reason");
TODO: {
local $TODO = "not done yet";
is($std_reason, "over_quota", "std reason is over_quota");
};
Mail-DeliveryStatus-BounceParser-1.534/t/email_addr_regex.t 0000644 0001750 0001750 00000002453 11546616741 024177 0 ustar mstevens mstevens #!perl -wT
use strict;
use Test::More tests => 16;
use Mail::DeliveryStatus::BounceParser;
my $regex = $Mail::DeliveryStatus::BounceParser::EMAIL_ADDR_REGEX;
my @ok_addrs = ('TEST-ING@example.com',
'my_email_address@example.net',
'fakeaddress.123@us.example.com',
'bogus@example.co.uk',
'not-arealaddress@emh15.invalid.army.mil',
'"recipient:lycos.com"@mail.lycos.com-us4cluster7.as.int',
'&-@no.spam.example.com'
);
my @bad_addrs = ('enI@rgement', # yay spammers
'ide@$',
'embarr@$sment',
'href="http://mukrasa.info/del.php?mail=address@example.com', # We don't want the whole thing
'MYADDRESS@YAHOO', # Invalid domain name
'Person@!yahoo.com', # invalid char in hostname
'face="@r1aI"', # more HTML garbage
'Amig@:/FONT>
:';
if ($string =~ $regex) {
$addr = $1;
}
is($addr, 'luser@example.com', "We got the right address");
Mail-DeliveryStatus-BounceParser-1.534/t/pod-coverage.t 0000644 0001750 0001750 00000000621 11546616741 023272 0 ustar mstevens mstevens #!perl -T
use Test::More;
plan skip_all => "set RELEASE_TESTING" unless $ENV{RELEASE_TESTING};
eval "use Test::Pod::Coverage 1.08";
plan skip_all => "Test::Pod::Coverage 1.08 required for testing POD coverage"
if $@;
all_pod_coverage_ok({
coverage_class => 'Pod::Coverage::CountParents',
also_private => [ qr/^p_/ ], # preprocessors
trustme => [ qw(new get) ], # alias to parse
});
Mail-DeliveryStatus-BounceParser-1.534/t/message-too-large-2.t 0000644 0001750 0001750 00000001203 11653543262 024362 0 ustar mstevens mstevens #!perl -wT
use strict;
use Test::More tests => 3;
use Mail::DeliveryStatus::BounceParser;
# FH because we're being backcompat to pre-lexical
sub readfile {
my $fn = shift;
open FH, "$fn" or die $!;
local $/;
my $text = ;
close FH;
return $text;
}
my $message = readfile('t/corpus/message-too-large-2.msg');
my $bounce = Mail::DeliveryStatus::BounceParser->new($message);
isa_ok($bounce, 'Mail::DeliveryStatus::BounceParser');
ok($bounce->is_bounce, "It's a bounce");
my ($report) = $bounce->reports;
my $std_reason = $report->get("std_reason");
is($std_reason, "message_too_large", "std reason is message-too-large");
Mail-DeliveryStatus-BounceParser-1.534/t/no-message-collected.t 0000644 0001750 0001750 00000000765 11546616741 024722 0 ustar mstevens mstevens #!perl -wT
use strict;
use Test::More tests => 2;
use Mail::DeliveryStatus::BounceParser;
# FH because we're being backcompat to pre-lexical
sub readfile {
my $fn = shift;
open FH, "$fn" or die $!;
local $/;
my $text = ;
close FH;
return $text;
}
my $message = readfile('t/corpus/no-message-collected.msg');
my $bounce = Mail::DeliveryStatus::BounceParser->new($message);
isa_ok($bounce, 'Mail::DeliveryStatus::BounceParser');
ok($bounce->is_bounce, "it's a bounce, alright");
Mail-DeliveryStatus-BounceParser-1.534/t/message-too-large.t 0000644 0001750 0001750 00000001201 11546616741 024225 0 ustar mstevens mstevens #!perl -wT
use strict;
use Test::More tests => 3;
use Mail::DeliveryStatus::BounceParser;
# FH because we're being backcompat to pre-lexical
sub readfile {
my $fn = shift;
open FH, "$fn" or die $!;
local $/;
my $text = ;
close FH;
return $text;
}
my $message = readfile('t/corpus/message-too-large.msg');
my $bounce = Mail::DeliveryStatus::BounceParser->new($message);
isa_ok($bounce, 'Mail::DeliveryStatus::BounceParser');
ok($bounce->is_bounce, "It's a bounce");
my ($report) = $bounce->reports;
my $std_reason = $report->get("std_reason");
is($std_reason, "message_too_large", "std reason is message-too-large");
Mail-DeliveryStatus-BounceParser-1.534/t/postfix-malformed.t 0000644 0001750 0001750 00000001712 11546616741 024361 0 ustar mstevens mstevens #!perl -wT
use strict;
use Test::More tests => 5;
use Mail::DeliveryStatus::BounceParser;
# Test a postfix message where we got a DNS failure
# not marked as domain_error before this test added
# FH because we're being backcompat to pre-lexical
sub readfile {
my $fn = shift;
open FH, "$fn" or die $!;
local $/;
my $text = ;
close FH;
return $text;
}
my $message = readfile('t/corpus/postfix-malformed.msg');
my $bounce = Mail::DeliveryStatus::BounceParser->new($message);
isa_ok($bounce, 'Mail::DeliveryStatus::BounceParser');
ok($bounce->is_bounce, "it's a bounce, alright");
is_deeply(
[ $bounce->addresses ],
[ 'exampleuser@yyahoo.com' ],
"the right bounced address is given",
);
is(
$bounce->orig_message_id,
'<42@server4.example.co.uk>',
"the right bounced message id is given (but has angle-brackets)",
);
my ($report) = $bounce->reports;
is(
$report->get("std_reason"),
"domain_error",
"standard reason is right"
);
Mail-DeliveryStatus-BounceParser-1.534/t/message-too-large-6.t 0000644 0001750 0001750 00000001203 11770102166 024360 0 ustar mstevens mstevens #!perl -wT
use strict;
use Test::More tests => 3;
use Mail::DeliveryStatus::BounceParser;
# FH because we're being backcompat to pre-lexical
sub readfile {
my $fn = shift;
open FH, "$fn" or die $!;
local $/;
my $text = ;
close FH;
return $text;
}
my $message = readfile('t/corpus/message-too-large-6.msg');
my $bounce = Mail::DeliveryStatus::BounceParser->new($message);
isa_ok($bounce, 'Mail::DeliveryStatus::BounceParser');
ok($bounce->is_bounce, "It's a bounce");
my ($report) = $bounce->reports;
my $std_reason = $report->get("std_reason");
is($std_reason, "message_too_large", "std reason is message_too_large");
Mail-DeliveryStatus-BounceParser-1.534/t/spamassassin.t 0000644 0001750 0001750 00000001230 11546616741 023421 0 ustar mstevens mstevens #!perl -wT
use strict;
use Test::More tests => 3;
use Mail::DeliveryStatus::BounceParser;
# Test we can spot being blocked by spamassassin.
# FH because we're being backcompat to pre-lexical
sub readfile {
my $fn = shift;
open FH, "$fn" or die $!;
local $/;
my $text = ;
close FH;
return $text;
}
my $message = readfile('t/corpus/spamassassin.msg');
my $bounce = Mail::DeliveryStatus::BounceParser->new($message);
isa_ok($bounce, 'Mail::DeliveryStatus::BounceParser');
ok($bounce->is_bounce, "This is a bounce");
my ($report) = $bounce->reports;
my $std_reason = $report->get("std_reason");
is($std_reason, "spam", "std reason is spam");
Mail-DeliveryStatus-BounceParser-1.534/t/aol-attachment.t 0000644 0001750 0001750 00000001764 12124360707 023620 0 ustar mstevens mstevens #!perl -wT
use strict;
use Test::More tests => 4;
use Mail::DeliveryStatus::BounceParser;
use Data::Dumper;
# Test parsing AOL "recipient not accepting attachment" messages
# FH because we're being backcompat to pre-lexical
sub readfile {
my $fn = shift;
open FH, "$fn" or die $!;
local $/;
my $text = ;
close FH;
return $text;
}
my $message = readfile('t/corpus/aol.attachment.msg');
my $bounce = Mail::DeliveryStatus::BounceParser->new($message);
isa_ok($bounce, 'Mail::DeliveryStatus::BounceParser');
ok($bounce->is_bounce, "it's a bounce, alright");
my ($report) = $bounce->reports;
is_deeply(
[ $bounce->addresses ],
[ 'exampleuser@aol.com' ],
"We've got the right address",
);
my $reason = $report->get("reason");
$reason =~ s/\s//g;
my $expected_reason = "Your mail to the following recipients could not be delivered because they are not accepting mail with attachments or embedded images:";
$expected_reason =~ s/\s//g;
is($reason, $expected_reason, "reason is right");
Mail-DeliveryStatus-BounceParser-1.534/t/spam-rejection.t 0000644 0001750 0001750 00000003717 12124360160 023630 0 ustar mstevens mstevens #!perl -wT
use strict;
use Test::More tests => 126;
use Mail::DeliveryStatus::BounceParser;
# Test we can spot being blocked by spamassassin.
# FH because we're being backcompat to pre-lexical
sub readfile {
my $fn = shift;
open FH, "$fn" or die "Couldn't open $fn:" . $!;
local $/;
my $text = ;
close FH;
return $text;
}
my @files = ("spam-rejection.msg",
"spam-rejection2.msg",
"spam-rejection3.msg",
"spam-rejection4.msg",
"spam-rejection5.msg",
"spam-rejection6.msg",
"spam-rejection7.msg",
"spam-rejection8.msg",
"spam-rejection9.msg",
"spam-rejection10.msg",
"spam-rejection11.msg",
"spam-rejection12.msg",
"spam-rejection13.msg",
"spam-rejection14.msg",
"spam-rejection15.msg",
"spam-rejection16.msg",
"spam-rejection17.msg",
"spam-rejection18.msg",
"spam-rejection19.msg",
"spam-rejection20.msg",
"spam-rejection21.msg",
"spam-rejection22.msg",
"spam-rejection23.msg",
"spam-rejection24.msg",
"spam-rejection25.msg",
"spam-rejection26.msg",
"spam-rejection27.msg",
"spam-rejection28.msg",
"spam-rejection29.msg",
"spam-rejection30.msg",
"spam-rejection31.msg",
"spam-rejection32.msg",
"spam-rejection33.msg",
"spam-rejection34.msg",
"spam-rejection35.msg",
"spam-rejection36.msg",
"spam-rejection37.msg",
"spam-rejection38.msg",
"spam-rejection39.msg",
"spam-rejection40.msg",
"spam-rejection41.msg",
"spam-rejection42.msg",
);
foreach my $file (@files) {
my $message = readfile("t/corpus/${file}");
my $bounce = Mail::DeliveryStatus::BounceParser->new($message);
isa_ok($bounce, 'Mail::DeliveryStatus::BounceParser');
ok($bounce->is_bounce, "This is a bounce");
my ($report) = $bounce->reports;
my $std_reason = $report->get("std_reason");
is($std_reason, "spam", "std reason is spam");
}
Mail-DeliveryStatus-BounceParser-1.534/t/quota-4.t 0000644 0001750 0001750 00000001151 11546616741 022210 0 ustar mstevens mstevens #!perl -wT
use strict;
use Test::More tests => 3;
use Mail::DeliveryStatus::BounceParser;
# FH because we're being backcompat to pre-lexical
sub readfile {
my $fn = shift;
open FH, "$fn" or die $!;
local $/;
my $text = ;
close FH;
return $text;
}
my $message = readfile('t/corpus/quota-4.msg');
my $bounce = Mail::DeliveryStatus::BounceParser->new($message);
isa_ok($bounce, 'Mail::DeliveryStatus::BounceParser');
ok($bounce->is_bounce, "It's a bounce");
my ($report) = $bounce->reports;
my $std_reason = $report->get("std_reason");
is($std_reason, "over_quota", "std reason is over_quota");
Mail-DeliveryStatus-BounceParser-1.534/t/message-too-large-5.t 0000644 0001750 0001750 00000001203 11760671117 024365 0 ustar mstevens mstevens #!perl -wT
use strict;
use Test::More tests => 3;
use Mail::DeliveryStatus::BounceParser;
# FH because we're being backcompat to pre-lexical
sub readfile {
my $fn = shift;
open FH, "$fn" or die $!;
local $/;
my $text = ;
close FH;
return $text;
}
my $message = readfile('t/corpus/message-too-large-5.msg');
my $bounce = Mail::DeliveryStatus::BounceParser->new($message);
isa_ok($bounce, 'Mail::DeliveryStatus::BounceParser');
ok($bounce->is_bounce, "It's a bounce");
my ($report) = $bounce->reports;
my $std_reason = $report->get("std_reason");
is($std_reason, "message_too_large", "std reason is message_too_large");
Mail-DeliveryStatus-BounceParser-1.534/t/boxbe.t 0000644 0001750 0001750 00000001030 11546616741 022011 0 ustar mstevens mstevens #!perl -wT
use strict;
use Test::More tests => 2;
use Mail::DeliveryStatus::BounceParser;
# Test parsing boxbe Challlenge/Response
# FH because we're being backcompat to pre-lexical
sub readfile {
my $fn = shift;
open FH, "$fn" or die $!;
local $/;
my $text = ;
close FH;
return $text;
}
my $message = readfile('t/corpus/boxbe-cr.msg');
my $bounce = Mail::DeliveryStatus::BounceParser->new($message);
isa_ok($bounce, 'Mail::DeliveryStatus::BounceParser');
ok(!$bounce->is_bounce, "C/R messages are not bounces");
Mail-DeliveryStatus-BounceParser-1.534/t/spambouncer.t 0000644 0001750 0001750 00000001226 11546616741 023237 0 ustar mstevens mstevens #!perl -wT
use strict;
use Test::More tests => 3;
use Mail::DeliveryStatus::BounceParser;
# Test we can spot being blocked by spambouncer.
# FH because we're being backcompat to pre-lexical
sub readfile {
my $fn = shift;
open FH, "$fn" or die $!;
local $/;
my $text = ;
close FH;
return $text;
}
my $message = readfile('t/corpus/spambouncer.msg');
my $bounce = Mail::DeliveryStatus::BounceParser->new($message);
isa_ok($bounce, 'Mail::DeliveryStatus::BounceParser');
ok($bounce->is_bounce, "This is a bounce");
my ($report) = $bounce->reports;
my $std_reason = $report->get("std_reason");
is($std_reason, "spam", "std reason is spam");
Mail-DeliveryStatus-BounceParser-1.534/t/postfix.t 0000644 0001750 0001750 00000003573 11546616741 022424 0 ustar mstevens mstevens #!perl -wT
use strict;
use Test::More tests => 7;
use Mail::DeliveryStatus::BounceParser;
# FH because we're being backcompat to pre-lexical
sub readfile {
my $fn = shift;
open FH, "$fn" or die $!;
local $/;
my $text = ;
close FH;
return $text;
}
{
my $message = readfile('t/corpus/postfix.msg');
my $bounce = Mail::DeliveryStatus::BounceParser->new($message);
isa_ok($bounce, 'Mail::DeliveryStatus::BounceParser');
ok($bounce->is_bounce, "it's a bounce, alright");
is_deeply(
[ $bounce->addresses ],
[ 'bounce@dest.example.com' ],
"the right bounced address is given",
);
is(
$bounce->orig_message_id,
'<20060527213404.GN13012@mta.domain-1.com>',
"the right bounced message id is given (but has angle-brackets)",
);
my $orig_message = <<'END_MESSAGE';
Received: by mta.domain-1.com (Postfix, from userid 1001)
id 89BEE2E6069; Sat, 27 May 2006 21:34:04 +0000 (UTC)
Date: Sat, 27 May 2006 17:34:04 -0400
From: Ricardo SIGNES
To: bounce@dest.example.com
Subject: asdf
Message-ID: <20060527213404.GN13012@mta.domain-1.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
User-Agent: Mutt/1.5.11+cvs20060126
Test.
--
sender
END_MESSAGE
is($bounce->orig_message->as_string, $orig_message, "got original message");
}
{
my $message = readfile('t/corpus/postfix-orig.msg');
{
my $bounce = Mail::DeliveryStatus::BounceParser->new($message);
is_deeply(
[ $bounce->addresses ],
[ 'original@dest.example.com' ],
"default behavior is to prefer original to final recipient",
);
}
{
my $bounce = Mail::DeliveryStatus::BounceParser->new(
$message,
{ prefer_final_recipient => 1 },
);
is_deeply(
[ $bounce->addresses ],
[ 'final@dest.example.com' ],
"...but we can request preference for final",
);
}
}
Mail-DeliveryStatus-BounceParser-1.534/t/spam-bogus-email-in-report.t 0000644 0001750 0001750 00000001545 11546616741 026004 0 ustar mstevens mstevens #!perl -wT
use strict;
use Test::More tests => 2;
use Mail::DeliveryStatus::BounceParser;
# Test an issue where a non-bounce spam message is parsed as a bounce,
# and a URL in the message is identified as an email address.
# (Currently) returns two reports with bogus strings like:
# href="http://uFZxuoVI.fedeck.be?/x2Mw5PocSJohI3YhyzLgx2Mw9FoiAzYmI3o0yJLvI2YibQp0EUn&unsubscribe=recipient@example.com>">link",
# FH because we're being backcompat to pre-lexical
sub readfile {
my $fn = shift;
open FH, "$fn" or die $!;
local $/;
my $text = ;
close FH;
return $text;
}
my $message = readfile('t/corpus/spam-bogus-email-in-report.msg');
my $bounce = Mail::DeliveryStatus::BounceParser->new($message);
isa_ok($bounce, 'Mail::DeliveryStatus::BounceParser');
ok( not($bounce->reports), "No reports (good)");
Mail-DeliveryStatus-BounceParser-1.534/t/00-load.t 0000644 0001750 0001750 00000000144 11546616741 022053 0 ustar mstevens mstevens #!perl -wT
use strict;
use Test::More tests => 1;
use Mail::DeliveryStatus::BounceParser;
ok(1);
Mail-DeliveryStatus-BounceParser-1.534/t/quota.t 0000644 0001750 0001750 00000001147 11546616741 022054 0 ustar mstevens mstevens #!perl -wT
use strict;
use Test::More tests => 3;
use Mail::DeliveryStatus::BounceParser;
# FH because we're being backcompat to pre-lexical
sub readfile {
my $fn = shift;
open FH, "$fn" or die $!;
local $/;
my $text = ;
close FH;
return $text;
}
my $message = readfile('t/corpus/quota.msg');
my $bounce = Mail::DeliveryStatus::BounceParser->new($message);
isa_ok($bounce, 'Mail::DeliveryStatus::BounceParser');
ok($bounce->is_bounce, "It's a bounce");
my ($report) = $bounce->reports;
my $std_reason = $report->get("std_reason");
is($std_reason, "over_quota", "std reason is over_quota");
Mail-DeliveryStatus-BounceParser-1.534/t/polish-autoreply.t 0000644 0001750 0001750 00000001007 11546616741 024236 0 ustar mstevens mstevens #!perl -wT
use strict;
use Test::More tests => 2;
use Mail::DeliveryStatus::BounceParser;
use Data::Dumper;
# FH because we're being backcompat to pre-lexical
sub readfile {
my $fn = shift;
open FH, "$fn" or die $!;
local $/;
my $text = ;
close FH;
return $text;
}
my $message = readfile('t/corpus/polish-autoreply.msg');
my $bounce = Mail::DeliveryStatus::BounceParser->new($message);
isa_ok($bounce, 'Mail::DeliveryStatus::BounceParser');
ok(!$bounce->is_bounce, "it's not a bounce, alright");
Mail-DeliveryStatus-BounceParser-1.534/t/status-209.t 0000644 0001750 0001750 00000001256 11546616741 022557 0 ustar mstevens mstevens #!perl -wT
use strict;
use Test::More tests => 3;
use Mail::DeliveryStatus::BounceParser;
# Make sure we don't interpret part of an IP address as a status code
# See bug #20734
# FH because we're being backcompat to pre-lexical
sub readfile {
my $fn = shift;
open FH, "$fn" or die $!;
local $/;
my $text = ;
close FH;
return $text;
}
my $message = readfile('t/corpus/postfix-smtp-550.msg');
my $bounce = Mail::DeliveryStatus::BounceParser->new($message);
isa_ok($bounce, 'Mail::DeliveryStatus::BounceParser');
ok($bounce->is_bounce, "it's a bounce, alright");
my ($report) = $bounce->reports;
is($report->get('smtp_code'), 550, "we got the right smtp code");
Mail-DeliveryStatus-BounceParser-1.534/t/warnings.t 0000644 0001750 0001750 00000005740 11700616456 022551 0 ustar mstevens mstevens #!perl -wT
use strict;
use Test::More tests => 22;
use Mail::DeliveryStatus::BounceParser;
# Test we can parse various messages without any warnings
# FH because we're being backcompat to pre-lexical
sub readfile {
my $fn = shift;
open FH, "$fn" or die $!;
local $/;
my $text = ;
close FH;
return $text;
}
my $message = readfile('t/corpus/warning-1.msg');
my $bounce = Mail::DeliveryStatus::BounceParser->new($message);
isa_ok($bounce, 'Mail::DeliveryStatus::BounceParser');
ok($bounce->is_bounce, "This is a bounce");
my ($report) = $bounce->reports;
my $std_reason = $report->get("std_reason");
is($std_reason, "user_unknown", "std reason is user_unknown");
my $message2 = readfile('t/corpus/warning-2.msg');
my $bounce2 = Mail::DeliveryStatus::BounceParser->new($message2);
isa_ok($bounce2, 'Mail::DeliveryStatus::BounceParser');
ok($bounce2->is_bounce, "This is a bounce");
my ($report2) = $bounce2->reports;
my $std_reason2 = $report2->get("std_reason");
is($std_reason2, "user_unknown", "std reason is user_unknown");
my $message3 = readfile('t/corpus/warning-3.msg');
my $bounce3 = Mail::DeliveryStatus::BounceParser->new($message3);
isa_ok($bounce3, 'Mail::DeliveryStatus::BounceParser');
ok($bounce3->is_bounce, "This is a bounce");
my ($report3) = $bounce3->reports;
my $std_reason3 = $report3->get("std_reason");
is($std_reason3, "user_unknown", "std reason is user_unknown");
my $message4 = readfile('t/corpus/warning-4.msg');
my $bounce4 = Mail::DeliveryStatus::BounceParser->new($message4);
isa_ok($bounce4, 'Mail::DeliveryStatus::BounceParser');
ok($bounce4->is_bounce, "This is a bounce");
my ($report4) = $bounce4->reports;
my $std_reason4 = $report4->get("std_reason");
is($std_reason4, "over_quota", "std reason is over_quota");
my $message5 = readfile('t/corpus/warning-5.msg');
my $bounce5 = Mail::DeliveryStatus::BounceParser->new($message5);
isa_ok($bounce5, 'Mail::DeliveryStatus::BounceParser');
ok($bounce5->is_bounce, "This is a bounce");
my ($report5) = $bounce5->reports;
# FIXME: This is actually wrong, but documents current behaviour
# it should give a report!
is($report5, undef, "report is missing");
my $message6 = readfile('t/corpus/warning-6.msg');
my $bounce6 = Mail::DeliveryStatus::BounceParser->new($message6);
isa_ok($bounce6, 'Mail::DeliveryStatus::BounceParser');
ok(!$bounce6->is_bounce, "This is not a bounce");
my $message7 = readfile('t/corpus/warning-7.msg');
my $bounce7 = Mail::DeliveryStatus::BounceParser->new($message7);
isa_ok($bounce7, 'Mail::DeliveryStatus::BounceParser');
ok($bounce7->is_bounce, "This is a bounce");
my ($report7) = $bounce7->reports;
my $std_reason7 = $report7->get("std_reason");
is($std_reason7, "over_quota", "std reason is over_quota");
my $message8 = readfile('t/corpus/warning-8.msg');
my $bounce8 = Mail::DeliveryStatus::BounceParser->new($message8);
isa_ok($bounce8, 'Mail::DeliveryStatus::BounceParser');
# it's not a bounce - transient nonfatal error
ok(!$bounce8->is_bounce, "This is a bounce");
Mail-DeliveryStatus-BounceParser-1.534/t/message-too-large-4.t 0000644 0001750 0001750 00000001203 11700616456 024363 0 ustar mstevens mstevens #!perl -wT
use strict;
use Test::More tests => 3;
use Mail::DeliveryStatus::BounceParser;
# FH because we're being backcompat to pre-lexical
sub readfile {
my $fn = shift;
open FH, "$fn" or die $!;
local $/;
my $text = ;
close FH;
return $text;
}
my $message = readfile('t/corpus/message-too-large-4.msg');
my $bounce = Mail::DeliveryStatus::BounceParser->new($message);
isa_ok($bounce, 'Mail::DeliveryStatus::BounceParser');
ok($bounce->is_bounce, "It's a bounce");
my ($report) = $bounce->reports;
my $std_reason = $report->get("std_reason");
is($std_reason, "message_too_large", "std reason is message_too_large");
Mail-DeliveryStatus-BounceParser-1.534/t/quota-7.t 0000644 0001750 0001750 00000001151 11762153127 022205 0 ustar mstevens mstevens #!perl -wT
use strict;
use Test::More tests => 3;
use Mail::DeliveryStatus::BounceParser;
# FH because we're being backcompat to pre-lexical
sub readfile {
my $fn = shift;
open FH, "$fn" or die $!;
local $/;
my $text = ;
close FH;
return $text;
}
my $message = readfile('t/corpus/quota-7.msg');
my $bounce = Mail::DeliveryStatus::BounceParser->new($message);
isa_ok($bounce, 'Mail::DeliveryStatus::BounceParser');
ok($bounce->is_bounce, "It's a bounce");
my ($report) = $bounce->reports;
my $std_reason = $report->get("std_reason");
is($std_reason, "over_quota", "std reason is over_quota");
Mail-DeliveryStatus-BounceParser-1.534/t/autoreply.t 0000644 0001750 0001750 00000001164 11546616741 022746 0 ustar mstevens mstevens #!perl -wT
use strict;
use Test::More tests => 2;
use Mail::DeliveryStatus::BounceParser;
use Data::Dumper;
# FH because we're being backcompat to pre-lexical
sub readfile {
my $fn = shift;
open FH, "$fn" or die $!;
local $/;
my $text = ;
close FH;
return $text;
}
my $message = readfile('t/corpus/autoreply.msg');
my $bounce = Mail::DeliveryStatus::BounceParser->new($message);
isa_ok($bounce, 'Mail::DeliveryStatus::BounceParser');
TODO: {
local $TODO = "Putting this in out of hope, but right now it looks hard to recognise as an autoreply";
ok(!$bounce->is_bounce, "it's not a bounce, alright");
};
Mail-DeliveryStatus-BounceParser-1.534/t/bluebottle.t 0000644 0001750 0001750 00000001037 11546616741 023062 0 ustar mstevens mstevens #!perl -wT
use strict;
use Test::More tests => 2;
use Mail::DeliveryStatus::BounceParser;
# Test parsing bluebottle Challlenge/Response
# FH because we're being backcompat to pre-lexical
sub readfile {
my $fn = shift;
open FH, "$fn" or die $!;
local $/;
my $text = ;
close FH;
return $text;
}
my $message = readfile('t/corpus/bluebottle.msg');
my $bounce = Mail::DeliveryStatus::BounceParser->new($message);
isa_ok($bounce, 'Mail::DeliveryStatus::BounceParser');
ok(!$bounce->is_bounce, "C/R messages are not bounces");
Mail-DeliveryStatus-BounceParser-1.534/t/spam-rejection-uribl.t 0000644 0001750 0001750 00000001240 11546616741 024750 0 ustar mstevens mstevens #!perl -wT
use strict;
use Test::More tests => 3;
use Mail::DeliveryStatus::BounceParser;
# Test we can spot being blocked by spamassassin.
# FH because we're being backcompat to pre-lexical
sub readfile {
my $fn = shift;
open FH, "$fn" or die $!;
local $/;
my $text = ;
close FH;
return $text;
}
my $message = readfile('t/corpus/spam-rejection-uribl.msg');
my $bounce = Mail::DeliveryStatus::BounceParser->new($message);
isa_ok($bounce, 'Mail::DeliveryStatus::BounceParser');
ok($bounce->is_bounce, "This is a bounce");
my ($report) = $bounce->reports;
my $std_reason = $report->get("std_reason");
is($std_reason, "spam", "std reason is spam");
Mail-DeliveryStatus-BounceParser-1.534/t/corpus/ 0000755 0001750 0001750 00000000000 12124361043 022027 5 ustar mstevens mstevens Mail-DeliveryStatus-BounceParser-1.534/t/corpus/quota-2.msg 0000644 0001750 0001750 00000007755 11546616741 024064 0 ustar mstevens mstevens Delivered-To: automated-bounces+45e14a44-32a0-11df-997c-88ff3c6d9c12@email.example.com
Received: by 10.216.178.78 with SMTP id e56cs190459wem;
Tue, 23 Mar 2010 08:11:50 -0700 (PDT)
Received: by 10.204.23.6 with SMTP id p6mr5599916bkb.67.1269357109876;
Tue, 23 Mar 2010 08:11:49 -0700 (PDT)
Return-Path: <>
Received: from server4.example.co.uk (server4.example.co.uk [94.236.45.212])
by mx.google.com with ESMTP id p14si14911552bkd.51.2010.03.23.08.11.49;
Tue, 23 Mar 2010 08:11:49 -0700 (PDT)
Received-SPF: pass (google.com: best guess record for domain of server4.example.co.uk designates 94.236.45.212 as permitted sender) client-ip=94.236.45.212;
Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of server4.example.co.uk designates 94.236.45.212 as permitted sender) smtp.mail=
Received: by server4.example.co.uk (Postfix)
id 6CEB916581C5; Tue, 23 Mar 2010 15:11:49 +0000 (GMT)
Date: Tue, 23 Mar 2010 15:11:49 +0000 (GMT)
From: MAILER-DAEMON@server4.example.co.uk (Mail Delivery System)
Subject: Undelivered Mail Returned to Sender
To: automated-bounces+45E14A44-32A0-11DF-997C-88FF3C6D9C12@email.example.com
Auto-Submitted: auto-replied
MIME-Version: 1.0
Content-Type: multipart/report; report-type=delivery-status;
boundary="4C2ACC302AD.1269357109/server4.example.co.uk"
Message-Id: <20100323151149.6CEB916581C5@server4.example.co.uk>
This is a MIME-encapsulated message.
--4C2ACC302AD.1269357109/server4.example.co.uk
Content-Description: Notification
Content-Type: text/plain; charset=us-ascii
This is the mail system at host server4.example.co.uk.
I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.
For further assistance, please send mail to
If you do so, please include this problem report. You can
delete your own text from the attached returned message.
The mail system
: host a.d.e[65.61.209.19] said: 452
Mailbox size limit exceeded (in reply to RCPT
TO command)
--4C2ACC302AD.1269357109/server4.example.co.uk
Content-Description: Delivery report
Content-Type: message/delivery-status
Reporting-MTA: dns; server4.example.co.uk
X-Postfix-Queue-ID: 4C2ACC302AD
X-Postfix-Sender: rfc822; automated-bounces+45E14A44-32A0-11DF-997C-88FF3C6D9C12@email.example.com
Arrival-Date: Thu, 18 Mar 2010 15:09:39 +0000 (GMT)
Final-Recipient: rfc822; junkmail@b.c
Action: failed
Status: 4.0.0
Remote-MTA: dns; a.d.e
Diagnostic-Code: smtp; 452 Mailbox size limit
exceeded
--4C2ACC302AD.1269357109/server4.example.co.uk
Content-Description: Undelivered Message
Content-Type: message/rfc822
Received: by server4.example.co.uk (Postfix, from userid 505)
id 4C2ACC302AD; Thu, 18 Mar 2010 15:09:39 +0000 (GMT)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=email.example.com;
s=default10; t=1268924979;
bh=PvBeqlgwhtS+D7uysuw6BXUN2jai7vWzT5i5MpsViHw=;
h=MIME-Version:Content-Transfer-Encoding:Content-Type:Date:From:
Subject:List-Unsubscribe:To:Message-Id;
b=JR618/DBjWobkpwDR+0Zi/BE3YmacasHafQ4raBTbfaHu/KoW3AZKDTfPpKtPVHID
9ThNE4cLynCViAxfOOroSlu/rPCHwG/LFv5HyWOXUsbO9QT8qwCZMjOGaRjJL0jaeB
6FP5n8QQZ6WY5Jsw9rBol+WJU/Xy2zOK6eP6QeqQ=
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Type: multipart/related; boundary="_----------=_126892497929411967"
X-Mailer: MIME::Lite 3.027 (F2.77; T1.28; A2.04; B3.08; Q3.08)
Date: Thu, 18 Mar 2010 15:09:39 +0000
From: John Smith
Subject: xx
X-Campaignid: dianomi20100129.2
To: John Smith
Message-Id: <20100318150939.4C2ACC302AD@server4.example.co.uk>
This is a multi-part message in MIME format.
--_----------=_126892497929411967
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html
HTML here
--_----------=_126892497929411967--
--4C2ACC302AD.1269357109/server4.example.co.uk--
Mail-DeliveryStatus-BounceParser-1.534/t/corpus/yahoo-via-sendmail.unknown.msg 0000644 0001750 0001750 00000007455 11546616741 027755 0 ustar mstevens mstevens Return-Path:
Received: from somehost.example.com (somehost.example.com [192.168.120.120])
by somehost.example.com (8.12.11.20060308/8.12.11) with ESMTP id k56LsrJq013151
(version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO)
for ; Tue, 6 Jun 2006 14:55:06 -0700
Received: from localhost (localhost)
by somehost.example.com (8.12.11.20060308/8.12.11) id k56LsrTZ025705;
Tue, 6 Jun 2006 14:54:53 -0700
Date: Tue, 6 Jun 2006 14:54:53 -0700
From: Mail Delivery Subsystem
Message-Id: <200606062154.k56LsrTZ025705@somehost.example.com>
To:
MIME-Version: 1.0
Content-Type: multipart/report; report-type=delivery-status;
boundary="k56LsrTZ025705.1149630893/somehost.example.com"
Content-Transfer-Encoding: binary
Subject: Returned mail: see transcript for details
Auto-Submitted: auto-generated (failure)
This is a MIME-encapsulated message
--k56LsrTZ025705.1149630893/somehost.example.com
The original message was received at Tue, 6 Jun 2006 14:53:59 -0700
from localhost [127.0.0.1]
----- The following addresses had permanent fatal errors -----
(reason: 554 delivery error: dd Sorry your message to recipient@example.net cannot be delivered. This account has been disabled or discontinued [#102]. - mta330.mail.mud.yahoo.com)
----- Transcript of session follows -----
451 4.4.1 reply: read error from mx3.mail.yahoo.com.
... while talking to mx2.mail.yahoo.com.:
>>> DATA
<<< 554 delivery error: dd Sorry your message to recipient@example.net cannot be delivered. This account has been disabled or discontinued [#102]. - mta330.mail.mud.yahoo.com
554 5.0.0 Service unavailable
--k56LsrTZ025705.1149630893/somehost.example.com
Content-Type: message/delivery-status
Reporting-MTA: dns; somehost.example.com
Received-From-MTA: DNS; localhost
Arrival-Date: Tue, 6 Jun 2006 14:53:59 -0700
Final-Recipient: RFC822; recipient@example.net
Action: failed
Status: 5.0.0
Remote-MTA: DNS; mx2.mail.yahoo.com
Diagnostic-Code: SMTP; 554 delivery error: dd Sorry your message to recipient@example.net cannot be delivered. This account has been disabled or discontinued [#102]. - mta330.mail.mud.yahoo.com
Last-Attempt-Date: Tue, 6 Jun 2006 14:54:53 -0700
--k56LsrTZ025705.1149630893/somehost.example.com
Content-Type: message/rfc822
Content-Transfer-Encoding: binary
Return-Path:
Received: from somehost.example.com (localhost [127.0.0.1])
by somehost.example.com (8.12.11.20060308/8.12.11) with ESMTP id k56LpAk1024010
for ; Tue, 6 Jun 2006 14:53:59 -0700
Received: (from sender@localhost)
by somehost.example.com (8.12.11.20060308/8.12.11/Submit) id k56LAcCB004251
for recipient@example.net; Tue, 6 Jun 2006 14:10:38 -0700
Date: Tue, 6 Jun 2006 14:10:38 -0700
Message-Id: <200606062110.k56LAcCB004251@somehost.example.com>
Content-Type: multipart/alternative;
boundary="----------=_1149628238-3704-269"
Content-Transfer-Encoding: binary
MIME-Version: 1.0
X-Mailer: MIME-tools 5.415 (Entity 5.415)
From: Sender Address
To: Sender Address
Subject: Test Bounce Message
This is a multi-part message in MIME format...
------------=_1149628238-3704-269
Content-Type: text/plain
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Plaintext message here.
------------=_1149628238-3704-269
Content-Type: text/html
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Test Bounce Message
Test HTML part here.
------------=_1149628238-3704-269--
--k56LsrTZ025705.1149630893/somehost.example.com--
Mail-DeliveryStatus-BounceParser-1.534/t/corpus/postfix-orig.msg 0000644 0001750 0001750 00000006113 11546616741 025211 0 ustar mstevens mstevens Return-Path: <>
X-Spam-Checker-Version: SpamAssassin 3.1.1 (2006-03-10) on
mta.domain-1.com
X-Spam-Level:
X-Spam-Status: No, score=-1.1 required=3.4 tests=AWL,BAYES_00,
RAZOR2_CF_RANGE_51_100,RAZOR2_CF_RANGE_E4_51_100,RAZOR2_CHECK,
SPF_HELO_PASS autolearn=no version=3.1.1
X-Original-To: sender@domain-1.com
Delivered-To: sender@domain-1.com
Received: from host-2.domain-2.org (host-2.domain-2.org [2.3.4.5])
by mta.domain-1.com (Postfix) with SMTP id B4D4A2E6069
for ; Sat, 27 May 2006 21:34:09 +0000 (UTC)
Received: (qmail 29981 invoked by uid 1014); 27 May 2006 21:34:25 -0000
Delivered-To: sender@domain-2.org
Received: (qmail 29978 invoked from network); 27 May 2006 21:34:25 -0000
Received: from unknown (HELO mta.domain-1.com) (11.22.33.44)
by host-2.domain-2.org with SMTP; 27 May 2006 21:34:25 -0000
Received: by mta.domain-1.com (Postfix)
id 68C8B2E6096; Sat, 27 May 2006 17:34:05 -0400 (EDT)
Date: Sat, 27 May 2006 17:34:05 -0400 (EDT)
From: MAILER-DAEMON@mta.domain-1.com (Mail Delivery System)
Subject: Undelivered Mail Returned to Sender
To: sender@domain-2.org
MIME-Version: 1.0
Content-Type: multipart/report; report-type=delivery-status;
boundary="89BEE2E6069.1148765645/mta.domain-1.com"
Message-Id: <20060527213405.68C8B2E6096@mta.domain-1.com>
Lines: 60
This is a MIME-encapsulated message.
--89BEE2E6069.1148765645/mta.domain-1.com
Content-Description: Notification
Content-Type: text/plain
This is the Postfix program at host mta.domain-1.com.
I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.
For further assistance, please send mail to
If you do so, please include this problem report. You can
delete your own text from the attached returned message.
The Postfix program
: host mx-all.example.com[208.58.1.198] said: 554
: Relay access denied (in reply to RCPT TO command)
--89BEE2E6069.1148765645/mta.domain-1.com
Content-Description: Delivery report
Content-Type: message/delivery-status
Reporting-MTA: dns; mta.domain-1.com
X-Postfix-Queue-ID: 89BEE2E6069
X-Postfix-Sender: rfc822; sender@domain-2.org
Arrival-Date: Sat, 27 May 2006 21:34:04 +0000 (UTC)
Final-Recipient: rfc822; final@dest.example.com
Original-Recipient: rfc822; original@dest.example.com
Action: failed
Status: 5.0.0
Diagnostic-Code: X-Postfix; host mx-all.example.com[208.58.1.198] said: 554
: Relay access denied (in reply to RCPT TO command)
--89BEE2E6069.1148765645/mta.domain-1.com
Content-Description: Undelivered Message
Content-Type: message/rfc822
Received: by mta.domain-1.com (Postfix, from userid 1001)
id 89BEE2E6069; Sat, 27 May 2006 21:34:04 +0000 (UTC)
Date: Sat, 27 May 2006 17:34:04 -0400
From: Ricardo SIGNES
To: bounce@dest.example.com
Subject: asdf
Message-ID: <20060527213404.GN13012@mta.domain-1.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
User-Agent: Mutt/1.5.11+cvs20060126
Test.
--
sender
--89BEE2E6069.1148765645/mta.domain-1.com--
Mail-DeliveryStatus-BounceParser-1.534/t/corpus/polish-autoreply.msg 0000644 0001750 0001750 00000002472 11546616741 026103 0 ustar mstevens mstevens Delivered-To: michael.stevens@example.com
Received: by 10.227.128.85 with SMTP id j21cs69400wbs;
Thu, 19 Aug 2010 07:06:45 -0700 (PDT)
Received: by 10.223.113.65 with SMTP id z1mr9436823fap.38.1282226803554;
Thu, 19 Aug 2010 07:06:43 -0700 (PDT)
Return-Path:
Received: from mx3.wp.pl (mx3.wp.pl [212.77.101.7])
by mx.google.com with ESMTP id r6si1666058faq.15.2010.08.19.07.06.43;
Thu, 19 Aug 2010 07:06:43 -0700 (PDT)
Received-SPF: pass (google.com: domain of example10@wp.pl designates 212.77.101.7 as permitted sender) client-ip=212.77.101.7;
Authentication-Results: mx.google.com; spf=pass (google.com: domain of example10@wp.pl designates 212.77.101.7 as permitted sender) smtp.mail=example10@wp.pl
Received: (wp-smtpd 16293 invoked by uid 100); 19 Aug 2010 16:06:43 +0200
Message-ID: <20100819140643.16292.qmail@smtp.wp.pl>
Date: 19 Aug 2010 16:06:43 +0200
Delivered-To: example10@wp.pl (example10)
Precedence: junk
To: michael.stevens@example.com
From: Dianomi Dianomi
Subject: [Automatyczna =?iso-8859-2?Q?odpowied=BC?=] test
MIME-version: 1.0
Content-type: text/plain; charset=iso-8859-2
Content-transfer-encoding: 8BIT
the cat sat on the mat. The quick brown fox jumped over the lazy dog. The rain in Spain falls mainly on the plain. Lorem ipsum lorem ipsum.
Mail-DeliveryStatus-BounceParser-1.534/t/corpus/spam-rejection8.msg 0000644 0001750 0001750 00000010317 11546616741 025570 0 ustar mstevens mstevens Delivered-To: automated-bounces+ca0cfcc8-e5a6-11df-a994-e859dd31f8f5@email.dianomi.com
Received: by 10.204.50.199 with SMTP id a7cs129629bkg;
Mon, 1 Nov 2010 03:57:37 -0700 (PDT)
Received: by 10.216.142.131 with SMTP id i3mr2533849wej.5.1288609057497;
Mon, 01 Nov 2010 03:57:37 -0700 (PDT)
Return-Path: <>
Received: from mail.apetito.co.uk (mail.apetito.co.uk [194.72.240.146])
by mx.google.com with ESMTP id x80si8867099weq.80.2010.11.01.03.57.37;
Mon, 01 Nov 2010 03:57:37 -0700 (PDT)
Received-SPF: pass (google.com: best guess record for domain of mail.apetito.co.uk designates 194.72.240.146 as permitted sender) client-ip=194.72.240.146;
Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of mail.apetito.co.uk designates 194.72.240.146 as permitted sender) smtp.mail=
MIME-Version: 1.0
From: MAILER-DAEMON
Message-ID: <20101101105716.2DC3A16581BC@server4.dianomi.co.uk>
Subject: **Message you sent blocked by our bulk email filter**
Content-Type: multipart/report; report-type=delivery-status;
charset=utf-8;
boundary="----------=_1288609057-11092-1"
To:
Date: Mon, 1 Nov 2010 10:57:37 +0000 (GMT)
This is a multi-part message in MIME format...
------------=_1288609057-11092-1
Content-Type: text/plain; charset="utf-8"
Content-Disposition: inline
Content-Transfer-Encoding: base64
WW91ciBtZXNzYWdlIHRvOiBSSUNIQVJELlJJTkdAQVBFVElUTy5DTy5VSw0K
d2FzIGJsb2NrZWQgYnkgb3VyIFNwYW0gJiBWaXJ1cyBGaXJld2FsbC4gVGhl
IGVtYWlsIHlvdSBzZW50IHdpdGggdGhlIGZvbGxvd2luZyBzdWJqZWN0IGhh
cyBOT1QgQkVFTiBERUxJVkVSRUQ6DQoNClN1YmplY3Q6IERlYXIgTXIgUmlu
ZywgZGlkIHlvdSBmaW5kIHRoZSBDYXIgeW91IHdlcmUgbG9va2luZyBmb3I/
DQoNClRoaXMgbWVzc2FnZSBoYXMgbm90IGJlZW4gZGVsZXRlZCwgaWYgeW91
IGJlbGlldmUgdGhpcyB3YXMgaW4gZXJyb3IsIHBsZWFzZSBmb3J3YXJkIHRo
ZSBvcmlnaW5hbCBtYWlsIHRvIGFudGlzcGFtQGFwZXRpdG8uY28udWsgd2hl
cmUgb3VyIElUIFNlcnZpY2UgdGVhbSB3aWxsIHJldmlldyB0aGUgbWVzc2Fn
ZS4NCg0KWW91cnMgcmVncmV0ZnVsbHkgDQoNCmFwZXRpdG8gSVQgU2Vydmlj
ZSBUZWFtDQpQaG9uZSAwMTIyNSA3NTYwOTIK
------------=_1288609057-11092-1
Content-Type: message/delivery-status
Content-Disposition: inline
Content-Transfer-Encoding: 7bit
Content-Description: Delivery error report
Reporting-MTA: dns; mail.apetito.co.uk
Received-From-MTA: smtp; mail.apetito.co.uk ([127.0.0.1])
Arrival-Date: Mon, 1 Nov 2010 10:57:29 +0000 (GMT)
Final-Recipient: rfc822; RICHARD.RING@APETITO.CO.UK
Action: failed
Status: 5.7.1
Diagnostic-Code: smtp; 550 5.7.1 Message content rejected, UBE, id=11092-02-101
Last-Attempt-Date: Mon, 1 Nov 2010 10:57:37 +0000 (GMT)
------------=_1288609057-11092-1
Content-Type: text/rfc822-headers
Content-Disposition: inline
Content-Transfer-Encoding: 7bit
Content-Description: Undelivered-message headers
Received: from server4.dianomi.co.uk (server4.dianomi.co.uk [94.236.45.212]) by mail.apetito.co.uk with ESMTP id cL9J3qViOY8BeYoU for ; Mon, 01 Nov 2010 10:57:17 +0000 (GMT)
Received: by server4.dianomi.co.uk (Postfix, from userid 507)
id 2DC3A16581BC; Mon, 1 Nov 2010 10:57:16 +0000 (GMT)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=email.dianomi.com;
s=default10; t=1288609036;
bh=U5u7yAkLcum42DgkpoVppfAD5xFJaqM592XWVSljB18=;
h=MIME-Version:Content-Transfer-Encoding:Content-Type:Date:From:
Subject:List-Unsubscribe:To:Message-Id;
b=SM/JRPpvHs1nXMEZshaM1dD6PEOhfi6k1jucfMCmpYF6o7uicW7ZcX7PdlfqdFeAU
JjOo3s+h9GzFTMtWkETqEW0aY7x/W5dzS+YImjGf1UELtvv+kfTSp0c/u/WUO9XN4l
JGXz28j6Od80TkXqXI9owiav44o10RHVr/l79Fd4=
MIME-Version: 1.0
Content-Transfer-Encoding: binary
Content-Type: multipart/related; boundary="_----------=_128860903674561092"
X-Mailer: MIME::Lite 3.027 (F2.77; T1.28; A2.04; B3.08; Q3.08)
Date: Mon, 1 Nov 2010 10:57:16 +0000
From: Julia Stevens
Subject: Dear Mr Ring, did you find the Car you were looking for?
List-Unsubscribe:
To: RICHARD RING
Message-Id: <20101101105716.2DC3A16581BC@server4.dianomi.co.uk>
X-Virus-Scanned: by bsmtpd at apetito.co.uk
------------=_1288609057-11092-1--
Mail-DeliveryStatus-BounceParser-1.534/t/corpus/spam-rejection9.msg 0000644 0001750 0001750 00000007341 11546616741 025574 0 ustar mstevens mstevens Delivered-To: automated-bounces+be7a91d4-02cc-11e0-b64e-7a97dd31f8f5@email.example.com
Received: by 10.216.139.130 with SMTP id c2cs15069wej;
Wed, 8 Dec 2010 05:12:25 -0800 (PST)
Received: by 10.227.132.70 with SMTP id a6mr8974856wbt.85.1291813944341;
Wed, 08 Dec 2010 05:12:24 -0800 (PST)
Return-Path: <>
Received: from server4.example.co.uk (server4.example.co.uk [94.236.45.212])
by mx.google.com with ESMTP id 2si827809wbi.44.2010.12.08.05.12.24;
Wed, 08 Dec 2010 05:12:24 -0800 (PST)
Received-SPF: pass (google.com: best guess record for domain of server4.example.co.uk designates 94.236.45.212 as permitted sender) client-ip=94.236.45.212;
Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of server4.example.co.uk designates 94.236.45.212 as permitted sender) smtp.mail=
Received: by server4.example.co.uk (Postfix)
id 1727816581D5; Wed, 8 Dec 2010 13:12:24 +0000 (GMT)
Date: Wed, 8 Dec 2010 13:12:24 +0000 (GMT)
From: MAILER-DAEMON@server4.example.co.uk (Mail Delivery System)
Subject: Undelivered Mail Returned to Sender
To: automated-bounces+BE7A91D4-02CC-11E0-B64E-7A97DD31F8F5@email.example.com
Auto-Submitted: auto-replied
MIME-Version: 1.0
Content-Type: multipart/report; report-type=delivery-status;
boundary="81E631658177.1291813944/server4.example.co.uk"
Message-Id: <20101208131224.1727816581D5@server4.example.co.uk>
This is a MIME-encapsulated message.
--81E631658177.1291813944/server4.example.co.uk
Content-Description: Notification
Content-Type: text/plain; charset=us-ascii
This is the mail system at host server4.example.co.uk.
I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.
For further assistance, please send mail to
If you do so, please include this problem report. You can
delete your own text from the attached returned message.
The mail system
: host spam.example.net[210.105.137.8] said: 553 Blocked
using spam pattern, your message may contain the spam contents (in reply to
end of DATA command)
--81E631658177.1291813944/server4.example.co.uk
Content-Description: Delivery report
Content-Type: message/delivery-status
Reporting-MTA: dns; server4.example.co.uk
X-Postfix-Queue-ID: 81E631658177
X-Postfix-Sender: rfc822; automated-bounces+BE7A91D4-02CC-11E0-B64E-7A97DD31F8F5@email.example.com
Arrival-Date: Wed, 8 Dec 2010 13:12:01 +0000 (GMT)
Final-Recipient: rfc822; recipient@example.net
Action: failed
Status: 5.0.0
Remote-MTA: dns; spam.example.net
Diagnostic-Code: smtp; 553 Blocked using spam pattern, your message may contain
the spam contents
--81E631658177.1291813944/server4.example.co.uk
Content-Description: Undelivered Message
Content-Type: message/rfc822
Received: by server4.example.co.uk (Postfix, from userid 507)
id 81E631658177; Wed, 8 Dec 2010 13:12:01 +0000 (GMT)
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Type: multipart/related; boundary="_----------=_1291813921232180"
X-Mailer: MIME::Lite 3.027 (F2.77; T1.28; A2.04; B3.08; Q3.08)
Date: Wed, 8 Dec 2010 13:12:01 +0000
From: Fred Bloggs
Subject: foo
List-Unsubscribe:
To: recipient
Message-Id: <20101208131201.81E631658177@server4.example.co.uk>
This is a multi-part message in MIME format.
--_----------=_1291813921232180
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html
HTML
--_----------=_1291813921232180--
--81E631658177.1291813944/server4.example.co.uk--
Mail-DeliveryStatus-BounceParser-1.534/t/corpus/deactivated-mailbox.msg 0000644 0001750 0001750 00000011235 11546616741 026466 0 ustar mstevens mstevens Delivered-To: automated-bounces+6d4df878-a7dc-11df-a9cc-e7a9dd31f8f5@email.example.com
Received: by 10.220.190.129 with SMTP id di1cs35660vcb;
Sat, 14 Aug 2010 12:45:20 -0700 (PDT)
Received: by 10.142.172.6 with SMTP id u6mr2768790wfe.52.1281815119446;
Sat, 14 Aug 2010 12:45:19 -0700 (PDT)
Return-Path: <>
Received: from c9mailgw02.example1.com (c9outbound210.example2.com [216.163.188.210])
by mx.google.com with ESMTP id l15si10125747wfa.37.2010.08.14.12.45.19;
Sat, 14 Aug 2010 12:45:19 -0700 (PDT)
Received-SPF: neutral (google.com: 216.163.188.210 is neither permitted nor denied by best guess record for domain of c9mailgw02.example1.com) client-ip=216.163.188.210;
Authentication-Results: mx.google.com; spf=neutral (google.com: 216.163.188.210 is neither permitted nor denied by best guess record for domain of c9mailgw02.example1.com) smtp.mail=
Received: from c2mailgw10.example1.com (unknown [10.2.14.10])
by c9mailgw02.example1.com (Postfix) with ESMTP id A411D586A5894
for ; Sat, 14 Aug 2010 12:45:09 -0700 (PDT)
Received: by c2mailgw10.example1.com (Postfix)
id 562976BAF4164; Sat, 14 Aug 2010 12:45:09 -0700 (PDT)
Date: Sat, 14 Aug 2010 12:45:09 -0700 (PDT)
From: MAILER-DAEMON@mail2world.com (Mail Delivery System)
Subject: Undelivered Mail Returned to Sender
To: automated-bounces+6D4DF878-A7DC-11DF-A9CC-E7A9DD31F8F5@email.example.com
Auto-Submitted: auto-replied
MIME-Version: 1.0
Content-Type: multipart/report; report-type=delivery-status;
boundary="800006BAF3EA4.1281815109/c2mailgw10.example1.com"
Message-Id: <20100814194509.562976BAF4164@c2mailgw10.example1.com>
X-CTASD-RefID: str=0001.0A090205.4C66F24C.0006,ss=1,fgs=256
X-CTASD-IP: 10.2.14.10
X-CTASD-Sender: MAILER-DAEMON@mail2world.com
x-ctasd: uncategorized
x-ctasd-vod: uncategorized
x-ctasd-station:
This is a MIME-encapsulated message.
--800006BAF3EA4.1281815109/c2mailgw10.example1.com
Content-Description: Notification
Content-Type: text/plain; charset=us-ascii
This is the mail system at host c2mailgw10.example1.com.
I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.
For further assistance, please send mail to postmaster.
If you do so, please include this problem report. You can
delete your own text from the attached returned message.
The mail system
: host m2w-in1.example2.com[74.202.142.24] said: 551
is a deactivated mailbox (in reply to RCPT TO
command)
--800006BAF3EA4.1281815109/c2mailgw10.example1.com
Content-Description: Delivery report
Content-Type: message/delivery-status
Reporting-MTA: dns; c2mailgw10.example1.com
X-Postfix-Queue-ID: 800006BAF3EA4
X-Postfix-Sender: rfc822; automated-bounces+6D4DF878-A7DC-11DF-A9CC-E7A9DD31F8F5@email.example.com
Arrival-Date: Sat, 14 Aug 2010 12:45:02 -0700 (PDT)
Final-Recipient: rfc822; recipient@example.net
Original-Recipient: rfc822;recipient@example.net
Action: failed
Status: 5.0.0
Remote-MTA: dns; m2w-in1.example2.com
Diagnostic-Code: smtp; 551 is a deactivated mailbox
--800006BAF3EA4.1281815109/c2mailgw10.example1.com
Content-Description: Undelivered Message
Content-Type: message/rfc822
Received: from server4.example.co.uk (unknown [94.236.45.212])
by c2mailgw10.example1.com (Postfix) with ESMTP id 60CB26BAF22F0
for ; Sat, 14 Aug 2010 12:45:02 -0700 (PDT)
Received: by server4.example.co.uk (Postfix, from userid 507)
id 59E751658201; Sat, 14 Aug 2010 20:45:01 +0100 (BST)
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Type: multipart/related; boundary="_----------=_1281815101279350"
X-Mailer: MIME::Lite 3.027 (F2.77; T1.28; A2.04; B3.08; Q3.08)
Date: Sat, 14 Aug 2010 20:45:01 +0100
From: Fred Bloggs
Subject: foo
List-Unsubscribe:
To: John Smith
Message-Id: <20100814194501.59E751658201@server4.example.co.uk>
X-CTASD-RefID: str=0001.0A02020A.4C66F241.00A4:SCGSTAT654533,ss=1,pt=SMP_0_RSA_2206166,fgs=1024
X-CTASD-IP: 94.236.45.212
X-CTASD-Sender: fred.bloggs@email.example.com
x-ctasd: uncategorized
x-ctasd-vod: uncategorized
x-ctasd-station:
This is a multi-part message in MIME format.
--_----------=_1281815101279350
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html
HTML
--_----------=_1281815101279350--
--800006BAF3EA4.1281815109/c2mailgw10.example1.com--
Mail-DeliveryStatus-BounceParser-1.534/t/corpus/spam-rejection40.msg 0000644 0001750 0001750 00000007471 12033520307 025633 0 ustar mstevens mstevens Delivered-To: automated-bounces+583532c8-0e08-11e2-b2ad-5a4d5ff98e22@email.example.com
Received: by 10.14.45.2 with SMTP id o2csp109128eeb;
Thu, 4 Oct 2012 02:44:45 -0700 (PDT)
Received: by 10.216.194.222 with SMTP id m72mr3198449wen.34.1349343885336;
Thu, 04 Oct 2012 02:44:45 -0700 (PDT)
Return-Path: <>
Received: from admin1.example.co.uk (admin1.example.co.uk. [94.236.45.212])
by mx.google.com with ESMTP id n48si7634772wea.157.2012.10.04.02.44.45;
Thu, 04 Oct 2012 02:44:45 -0700 (PDT)
Received-SPF: pass (google.com: domain of admin1.example.co.uk designates 94.236.45.212 as permitted sender) client-ip=94.236.45.212;
Authentication-Results: mx.google.com; spf=pass (google.com: domain of admin1.example.co.uk designates 94.236.45.212 as permitted sender) smtp.mail=
Received: by admin1.example.co.uk (Postfix)
id EF474651304; Thu, 4 Oct 2012 10:44:44 +0100 (BST)
Date: Thu, 4 Oct 2012 10:44:44 +0100 (BST)
From: MAILER-DAEMON@admin1.example.co.uk (Mail Delivery System)
Subject: Undelivered Mail Returned to Sender
To: automated-bounces+583532C8-0E08-11E2-B2AD-5A4D5FF98E22@email.example.com
Auto-Submitted: auto-replied
MIME-Version: 1.0
Content-Type: multipart/report; report-type=delivery-status;
boundary="DD942651198.1349343884/admin1.example.co.uk"
Message-Id: <20121004094444.EF474651304@admin1.example.co.uk>
This is a MIME-encapsulated message.
--DD942651198.1349343884/admin1.example.co.uk
Content-Description: Notification
Content-Type: text/plain; charset=us-ascii
This is the mail system at host admin1.example.co.uk.
I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.
For further assistance, please send mail to
If you do so, please include this problem report. You can
delete your own text from the attached returned message.
The mail system
: host mail.sample.uk.com[188.220.16.176] said: 550
5.7.1 Your message has been rejected because it appears to be SPAM. (in
reply to end of DATA command)
--DD942651198.1349343884/admin1.example.co.uk
Content-Description: Delivery report
Content-Type: message/delivery-status
Reporting-MTA: dns; admin1.example.co.uk
X-Postfix-Queue-ID: DD942651198
X-Postfix-Sender: rfc822; automated-bounces+583532C8-0E08-11E2-B2AD-5A4D5FF98E22@email.example.com
Arrival-Date: Thu, 4 Oct 2012 10:44:31 +0100 (BST)
Final-Recipient: rfc822; fred.bloggs@sample.uk.com
Original-Recipient: rfc822;fred.bloggs@sample.uk.com
Action: failed
Status: 5.7.1
Remote-MTA: dns; mail.sample.uk.com
Diagnostic-Code: smtp; 550 5.7.1 Your message has been rejected because it
appears to be SPAM.
--DD942651198.1349343884/admin1.example.co.uk
Content-Description: Undelivered Message Headers
Content-Type: text/rfc822-headers
Received: from cloudadmin1.example.co.uk (cloudadmin1 [10.177.197.82])
by admin1.example.co.uk (Postfix) with ESMTP id DD942651198;
Thu, 4 Oct 2012 10:44:31 +0100 (BST)
Authentication-Results: admin1.example.co.uk; dkim=pass (1024-bit key)
header.i=@email.example.com; x-dkim-adsp=pass
Received: by cloudadmin1.example.co.uk (Postfix, from userid 507)
id DE3281E80A3; Thu, 4 Oct 2012 10:46:17 +0100 (BST)
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Type: multipart/related; boundary="_----------=_134934397796810"
X-Mailer: MIME::Lite 3.027 (F2.78; T1.31; A2.08; B3.13; Q3.13)
Date: Thu, 4 Oct 2012 10:46:17 +0100
From: John Smith
Subject: foo
List-Unsubscribe:
To: Fred Bloggs
Message-Id: <20121004094617.DE3281E80A3@cloudadmin1.example.co.uk>
--DD942651198.1349343884/admin1.example.co.uk--
Mail-DeliveryStatus-BounceParser-1.534/t/corpus/quota-4.msg 0000644 0001750 0001750 00000006355 11546616741 024061 0 ustar mstevens mstevens Delivered-To: automated-bounces+c62bb278-7190-11df-95f8-f0d13a824f27@email.example.com
Received: by 10.216.170.84 with SMTP id o62cs134738wel;
Sun, 6 Jun 2010 10:56:21 -0700 (PDT)
Received: by 10.227.132.65 with SMTP id a1mr12743782wbt.79.1275846980163;
Sun, 06 Jun 2010 10:56:20 -0700 (PDT)
Return-Path: <>
Received: by mail.a.b.c (8.0.013.3) id 4C07ED5800FBA62E for automated-bounces+C62BB278-7190-11DF-95F8-F0D13A824F27@email.example.com; Sun, 6 Jun 2010 18:56:18 +0100
From: Mail Delivery Service
Subject: Delivery Status Notification
To: automated-bounces+C62BB278-7190-11DF-95F8-F0D13A824F27@email.example.com
Date: Sun, 6 Jun 2010 18:56:18 +0100
Message-ID: <4C07ED5800FBA60B@>
X-CP-Transaction-ID: 4C07ED5800FBA3BD
X-CP-For: fred-bloggs@a.b.c
MIME-Version: 1.0
Content-Type: Multipart/Report; report-type=delivery-status; boundary="========/4C07ED5800FBA3BD/mail.a.b.c"
This multi-part MIME message contains a Delivery Status Notification.
If you can see this text, your mail client may not be able to understand MIME
formatted messages or DSNs (see RFC 2045 through 2049 for general MIME
information and RFC 1891 through 1894 for DSN specific information).
--========/4C07ED5800FBA3BD/mail.a.b.c
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 8bit
- These recipients of your message have been processed by the mail server:
fred-bloggs@a.b.c; Failed; 5.1.1 (bad destination mailbox address)
Remote MTA 82.132.141.70: SMTP diagnostic: 550 RCPT TO: max message size exceeded
--========/4C07ED5800FBA3BD/mail.a.b.c
Content-Type: Message/Delivery-Status
Reporting-MTA: dns; mail.a.b.c
Received-from-MTA: dns; server2.example.co.uk (1.2.3.5)
Arrival-Date: Sun, 6 Jun 2010 18:56:18 +0100
Original-Recipient: rfc822;fred-bloggs@a.b.c
Final-Recipient: rfc822; fred-bloggs@a.b.c
Action: Failed
Status: 5.1.1 (bad destination mailbox address)
Remote-MTA: dns; 1.2.3.4
Diagnostic-Code: smtp; 550 RCPT TO: max message size exceeded
--========/4C07ED5800FBA3BD/mail.a.b.c
Content-Type: Message/RFC822
Return-Path:
Received: from server2.example.co.uk (1.2.3.5) by mail.a.b.c (8.0.013.3)
id 4C07ED5800FBA3BD for fred-bloggs@a.b.c; Sun, 6 Jun 2010 18:56:11 +0100
Received: by server2.example.co.uk (Postfix, from userid 507)
id E9197B5820A; Sun, 6 Jun 2010 18:27:25 +0100 (BST)
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Type: multipart/related; boundary="_----------=_1275845245261230"
X-Mailer: MIME::Lite 3.027 (F2.77; T1.28; A2.04; B3.08; Q3.08)
Date: Sun, 6 Jun 2010 18:27:25 +0100
From: John Smith
Subject: test
To: Fred Bloggs
Message-Id: <20100606172725.E9197B5820A@server2.example.co.uk>
This is a multi-part message in MIME format.
--_----------=_1275845245261230
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html
HTML was here
--_----------=_1275845245261230
Content-Disposition: inline; filename="witanIT.pdf"
Content-Transfer-Encoding: base64
Content-Type: application/pdf; name="witanIT.pdf"
pdfwashere
Mail-DeliveryStatus-BounceParser-1.534/t/corpus/spam-rejection30.msg 0000644 0001750 0001750 00000007133 11717162163 025637 0 ustar mstevens mstevens Delivered-To: automated-bounces+5cab89e0-5717-11e1-a4a8-a4bc391b88f3@email.example.com
Received: by 10.52.112.97 with SMTP id ip1cs132681vdb;
Tue, 14 Feb 2012 06:22:52 -0800 (PST)
Received: by 10.216.137.129 with SMTP id y1mr912594wei.59.1329229371937;
Tue, 14 Feb 2012 06:22:51 -0800 (PST)
Return-Path: <>
Received: from admin1.example.co.uk (admin1.example.co.uk. [94.236.45.212])
by mx.google.com with ESMTP id f58si12536290wed.83.2012.02.14.06.22.51;
Tue, 14 Feb 2012 06:22:51 -0800 (PST)
Received-SPF: pass (google.com: domain of admin1.example.co.uk designates 94.236.45.212 as permitted sender) client-ip=94.236.45.212;
Authentication-Results: mx.google.com; spf=pass (google.com: domain of admin1.example.co.uk designates 94.236.45.212 as permitted sender) smtp.mail=
Received: by admin1.example.co.uk (Postfix)
id 5AFAF65126B; Tue, 14 Feb 2012 14:22:51 +0000 (GMT)
Date: Tue, 14 Feb 2012 14:22:51 +0000 (GMT)
From: MAILER-DAEMON@admin1.example.co.uk (Mail Delivery System)
Subject: Undelivered Mail Returned to Sender
To: automated-bounces+5CAB89E0-5717-11E1-A4A8-A4BC391B88F3@email.example.com
Auto-Submitted: auto-replied
MIME-Version: 1.0
Content-Type: multipart/report; report-type=delivery-status;
boundary="63F08651262.1329229371/admin1.example.co.uk"
Message-Id: <20120214142251.5AFAF65126B@admin1.example.co.uk>
This is a MIME-encapsulated message.
--63F08651262.1329229371/admin1.example.co.uk
Content-Description: Notification
Content-Type: text/plain; charset=us-ascii
This is the mail system at host admin1.example.co.uk.
I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.
For further assistance, please send mail to
If you do so, please include this problem report. You can
delete your own text from the attached returned message.
The mail system
: host mailhub2.bar.ac.uk[143.117.14.19] said: 550 This
message has been identified as spam (in reply to end of DATA command)
--63F08651262.1329229371/admin1.example.co.uk
Content-Description: Delivery report
Content-Type: message/delivery-status
Reporting-MTA: dns; admin1.example.co.uk
X-Postfix-Queue-ID: 63F08651262
X-Postfix-Sender: rfc822; automated-bounces+5CAB89E0-5717-11E1-A4A8-A4BC391B88F3@email.example.com
Arrival-Date: Tue, 14 Feb 2012 14:22:45 +0000 (GMT)
Final-Recipient: rfc822; john.smith@bar.ac.uk
Action: failed
Status: 5.0.0
Remote-MTA: dns; mailhub2.bar.ac.uk
Diagnostic-Code: smtp; 550 This message has been identified as spam
--63F08651262.1329229371/admin1.example.co.uk
Content-Description: Undelivered Message
Content-Type: message/rfc822
Received: by admin1.example.co.uk (Postfix, from userid 507)
id 63F08651262; Tue, 14 Feb 2012 14:22:45 +0000 (GMT)
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Type: multipart/related; boundary="_----------=_132922936574210"
X-Mailer: MIME::Lite 3.027 (F2.78; T1.31; A2.08; B3.13; Q3.13)
Date: Tue, 14 Feb 2012 14:22:45 +0000
From: Fred Bloggs
Subject: foo
List-Unsubscribe:
To: John Smith
Message-Id: <20120214142245.63F08651262@admin1.example.co.uk>
This is a multi-part message in MIME format.
--_----------=_132922936574210
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html
HTML
--_----------=_132922936574210--
--63F08651262.1329229371/admin1.example.co.uk--
Mail-DeliveryStatus-BounceParser-1.534/t/corpus/user-unknown-polish.msg 0000644 0001750 0001750 00000010026 11546616741 026524 0 ustar mstevens mstevens Delivered-To: automated-bounces+bfab8114-900b-11df-8fb7-89d06df2b1bd@email.example.com
Received: by 10.224.28.133 with SMTP id m5cs238117qac;
Thu, 15 Jul 2010 05:23:19 -0700 (PDT)
Received: by 10.227.128.5 with SMTP id i5mr17641668wbs.91.1279196599086;
Thu, 15 Jul 2010 05:23:19 -0700 (PDT)
Return-Path: <>
Received: from server4.example.co.uk (server4.example.co.uk [94.236.45.212])
by mx.google.com with ESMTP id r55si150309weq.80.2010.07.15.05.23.18;
Thu, 15 Jul 2010 05:23:19 -0700 (PDT)
Received-SPF: pass (google.com: best guess record for domain of server4.example.co.uk designates 94.236.45.212 as permitted sender) client-ip=94.236.45.212;
Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of server4.example.co.uk designates 94.236.45.212 as permitted sender) smtp.mail=
Received: by server4.example.co.uk (Postfix)
id 82F63165835A; Thu, 15 Jul 2010 13:23:18 +0100 (BST)
Date: Thu, 15 Jul 2010 13:23:18 +0100 (BST)
From: MAILER-DAEMON@server4.example.co.uk (Mail Delivery System)
Subject: Undelivered Mail Returned to Sender
To: automated-bounces+BFAB8114-900B-11DF-8FB7-89D06DF2B1BD@email.example.com
Auto-Submitted: auto-replied
MIME-Version: 1.0
Content-Type: multipart/report; report-type=delivery-status;
boundary="0A2ED1658350.1279196598/server4.example.co.uk"
Content-Transfer-Encoding: 8bit
Message-Id: <20100715122318.82F63165835A@server4.example.co.uk>
This is a MIME-encapsulated message.
--0A2ED1658350.1279196598/server4.example.co.uk
Content-Description: Notification
Content-Type: text/plain; charset=us-ascii
This is the mail system at host server4.example.co.uk.
I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.
For further assistance, please send mail to
If you do so, please include this problem report. You can
delete your own text from the attached returned message.
The mail system
: host mx.a.b.c[213.180.147.146] said:
501 5.1.3 Odbiorca nie istnieje / Recipient
does not exist (in reply to RCPT TO command)
--0A2ED1658350.1279196598/server4.example.co.uk
Content-Description: Delivery report
Content-Type: message/delivery-status
Reporting-MTA: dns; server4.example.co.uk
X-Postfix-Queue-ID: 0A2ED1658350
X-Postfix-Sender: rfc822; automated-bounces+BFAB8114-900B-11DF-8FB7-89D06DF2B1BD@email.example.com
Arrival-Date: Thu, 15 Jul 2010 13:23:18 +0100 (BST)
Final-Recipient: rfc822; recipient@example.net
Action: failed
Status: 5.1.3
Remote-MTA: dns; mx.a.b.c
Diagnostic-Code: smtp; 501 5.1.3 Odbiorca nie
istnieje / Recipient does not exist
--0A2ED1658350.1279196598/server4.example.co.uk
Content-Description: Undelivered Message
Content-Type: message/rfc822
Content-Transfer-Encoding: 8bit
Received: by server4.example.co.uk (Postfix, from userid 508)
id 0A2ED1658350; Thu, 15 Jul 2010 13:23:18 +0100 (BST)
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Type: multipart/alternative; boundary="_----------=_1279196598273011064"
X-Mailer: MIME::Lite 3.027 (F2.77; T1.28; A2.04; B3.08; Q3.08)
Date: Thu, 15 Jul 2010 13:23:18 +0100
From: Fred Bloggs
Subject: foo
X-Campaignid: example20100423.1
List-Unsubscribe:
To: John Smith
Message-Id: <20100715122318.0A2ED1658350@server4.example.co.uk>
This is a multi-part message in MIME format.
--_----------=_1279196598273011064
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
email_text
--_----------=_1279196598273011064
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html
email html
--_----------=_1279196598273011064--
--0A2ED1658350.1279196598/server4.example.co.uk--
Mail-DeliveryStatus-BounceParser-1.534/t/corpus/user-unknown-disabled.msg 0000644 0001750 0001750 00000007712 11546616741 027005 0 ustar mstevens mstevens Delivered-To: automated-bounces+5b805f96-32a1-11e0-a4c9-eb3b278a9227@email.example.com
Received: by 10.100.190.1 with SMTP id n1cs37359anf;
Mon, 7 Feb 2011 02:02:24 -0800 (PST)
Received: by 10.227.151.65 with SMTP id b1mr1642791wbw.163.1297072943515;
Mon, 07 Feb 2011 02:02:23 -0800 (PST)
Return-Path: <>
Received: from admin1.example.co.uk (admin1.example.co.uk [94.236.45.212])
by mx.google.com with ESMTP id f25si6044788wbf.55.2011.02.07.02.02.23;
Mon, 07 Feb 2011 02:02:23 -0800 (PST)
Received-SPF: pass (google.com: best guess record for domain of admin1.example.co.uk designates 94.236.45.212 as permitted sender) client-ip=94.236.45.212;
Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of admin1.example.co.uk designates 94.236.45.212 as permitted sender) smtp.mail=
Received: by admin1.example.co.uk (Postfix)
id EF728650D72; Mon, 7 Feb 2011 10:02:22 +0000 (GMT)
Date: Mon, 7 Feb 2011 10:02:22 +0000 (GMT)
From: MAILER-DAEMON@admin1.example.co.uk (Mail Delivery System)
Subject: Undelivered Mail Returned to Sender
To: automated-bounces+5B805F96-32A1-11E0-A4C9-EB3B278A9227@email.example.com
Auto-Submitted: auto-replied
MIME-Version: 1.0
Content-Type: multipart/report; report-type=delivery-status;
boundary="C8039650D70.1297072942/admin1.example.co.uk"
Content-Transfer-Encoding: 8bit
Message-Id: <20110207100222.EF728650D72@admin1.example.co.uk>
This is a MIME-encapsulated message.
--C8039650D70.1297072942/admin1.example.co.uk
Content-Description: Notification
Content-Type: text/plain; charset=us-ascii
This is the mail system at host admin1.example.co.uk.
I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.
For further assistance, please send mail to
If you do so, please include this problem report. You can
delete your own text from the attached returned message.
The mail system
: host aspmx.l.google.com[209.85.227.27] said: 550 5.2.1
The email account that you tried to reach is disabled. t11si6005099wes.103
(in reply to RCPT TO command)
--C8039650D70.1297072942/admin1.example.co.uk
Content-Description: Delivery report
Content-Type: message/delivery-status
Reporting-MTA: dns; admin1.example.co.uk
X-Postfix-Queue-ID: C8039650D70
X-Postfix-Sender: rfc822; automated-bounces+5B805F96-32A1-11E0-A4C9-EB3B278A9227@email.example.com
Arrival-Date: Mon, 7 Feb 2011 10:02:22 +0000 (GMT)
Final-Recipient: rfc822; recipient@example.net
Action: failed
Status: 5.2.1
Remote-MTA: dns; aspmx.l.google.com
Diagnostic-Code: smtp; 550 5.2.1 The email account that you tried to reach is
disabled. t11si6005099wes.103
--C8039650D70.1297072942/admin1.example.co.uk
Content-Description: Undelivered Message
Content-Type: message/rfc822
Content-Transfer-Encoding: 8bit
Received: by admin1.example.co.uk (Postfix, from userid 507)
id C8039650D70; Mon, 7 Feb 2011 10:02:22 +0000 (GMT)
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Type: multipart/alternative; boundary="_----------=_129707294257417"
X-Mailer: MIME::Lite 3.027 (F2.78; T1.31; A2.07; B3.13; Q3.13)
Date: Mon, 7 Feb 2011 10:02:22 +0000
From: Julia Stevens
Subject: test
X-Campaignid: example20101008.1
List-Unsubscribe:
To: Fred Bloggs
Message-Id: <20110207100222.C8039650D70@admin1.example.co.uk>
This is a multi-part message in MIME format.
--_----------=_129707294257417
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Text
--_----------=_129707294257417
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html
HTML
--_----------=_129707294257417--
--C8039650D70.1297072942/admin1.example.co.uk--
Mail-DeliveryStatus-BounceParser-1.534/t/corpus/spam-rejection7.msg 0000644 0001750 0001750 00000007461 11546616741 025575 0 ustar mstevens mstevens Delivered-To: automated-bounces+ae343e80-a9e2-11df-9acf-c5a8dd31f8f5@email.example.com
Received: by 10.220.199.3 with SMTP id eq3cs62820vcb;
Tue, 17 Aug 2010 02:35:03 -0700 (PDT)
Received: by 10.227.157.4 with SMTP id z4mr5426397wbw.43.1282037702277;
Tue, 17 Aug 2010 02:35:02 -0700 (PDT)
Return-Path: <>
Received: from server4.example.co.uk (server4.example.co.uk [94.236.45.212])
by mx.google.com with ESMTP id a22si9656795wba.33.2010.08.17.02.35.01;
Tue, 17 Aug 2010 02:35:02 -0700 (PDT)
Received-SPF: pass (google.com: best guess record for domain of server4.example.co.uk designates 94.236.45.212 as permitted sender) client-ip=94.236.45.212;
Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of server4.example.co.uk designates 94.236.45.212 as permitted sender) smtp.mail=
Received: by server4.example.co.uk (Postfix)
id AF53316581D9; Tue, 17 Aug 2010 10:35:01 +0100 (BST)
Date: Tue, 17 Aug 2010 10:35:01 +0100 (BST)
From: MAILER-DAEMON@server4.example.co.uk (Mail Delivery System)
Subject: Undelivered Mail Returned to Sender
To: automated-bounces+AE343E80-A9E2-11DF-9ACF-C5A8DD31F8F5@email.example.com
Auto-Submitted: auto-replied
MIME-Version: 1.0
Content-Type: multipart/report; report-type=delivery-status;
boundary="7BAC516581D6.1282037701/server4.example.co.uk"
Content-Transfer-Encoding: 8bit
Message-Id: <20100817093501.AF53316581D9@server4.example.co.uk>
This is a MIME-encapsulated message.
--7BAC516581D6.1282037701/server4.example.co.uk
Content-Description: Notification
Content-Type: text/plain; charset=us-ascii
This is the mail system at host server4.example.co.uk.
I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.
For further assistance, please send mail to
If you do so, please include this problem report. You can
delete your own text from the attached returned message.
The mail system
: host pop3.example.net[213.216.132.115] said: 554
Failure Message looks like spam, sorry not wanted here q=2381882
friend_rule (in reply to end of DATA command)
--7BAC516581D6.1282037701/server4.example.co.uk
Content-Description: Delivery report
Content-Type: message/delivery-status
Reporting-MTA: dns; server4.example.co.uk
X-Postfix-Queue-ID: 7BAC516581D6
X-Postfix-Sender: rfc822; automated-bounces+AE343E80-A9E2-11DF-9ACF-C5A8DD31F8F5@email.example.com
Arrival-Date: Tue, 17 Aug 2010 10:34:49 +0100 (BST)
Final-Recipient: rfc822; recipient@example.net
Action: failed
Status: 5.0.0
Remote-MTA: dns; pop3.example.net
Diagnostic-Code: smtp; 554 Failure Message looks like spam, sorry not wanted
here q=2381882 friend_rule
--7BAC516581D6.1282037701/server4.example.co.uk
Content-Description: Undelivered Message
Content-Type: message/rfc822
Content-Transfer-Encoding: 8bit
Received: by server4.example.co.uk (Postfix, from userid 507)
id 7BAC516581D6; Tue, 17 Aug 2010 10:34:49 +0100 (BST)
MIME-Version: 1.0
Content-Transfer-Encoding: binary
Content-Type: multipart/related; boundary="_----------=_128203768927645433"
X-Mailer: MIME::Lite 3.027 (F2.77; T1.28; A2.04; B3.08; Q3.08)
Date: Tue, 17 Aug 2010 10:34:49 +0100
From: Fred Bloggs
Subject: foo
List-Unsubscribe:
To: John Smith
Message-Id: <20100817093449.7BAC516581D6@server4.example.co.uk>
This is a multi-part message in MIME format.
--_----------=_128203768927645433
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
Content-Type: text/html
HTML
--_----------=_128203768927645433--
--7BAC516581D6.1282037701/server4.example.co.uk--
Mail-DeliveryStatus-BounceParser-1.534/t/corpus/spam-with-image.msg 0000644 0001750 0001750 00000036242 11546616741 025556 0 ustar mstevens mstevens Return-Path:
Received: from [59.144.252.184] ([59.144.252.184])
by somehost.example.com (8.12.11.20060308/8.12.11) with ESMTP id k57IQHQV028784;
Wed, 7 Jun 2006 11:26:18 -0700
Message-Id: <200606071826.k57IQHQV028784@somehost.example.com>
From: "Jacqueline Burroughs"
To:
Subject: Re:
Date: Fri, 2 Jan 2004 11:43:19 -0330
MIME-Version: 1.0
Content-Type: multipart/related;
type="multipart/alternative";
boundary="----=_NextPart_000_006A_01C3D153.B81F0FC0"
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 6.00.2800.1506
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1506
X-Virus-Scanned: ClamAV version 0.88.1, clamav-milter version 0.88.1 on localhost
X-Virus-Status: Clean
Content-Length: 14718
This is a multi-part message in MIME format.
------=_NextPart_000_006A_01C3D153.B81F0FC0
Content-Type: multipart/alternative;
boundary="----=_NextPart_001_006B_01C3D153.B81F0FC0"
------=_NextPart_001_006B_01C3D153.B81F0FC0
Content-Type: text/plain;
charset="iso-8859-2"
Content-Transfer-Encoding: quoted-printable
7181B 4
------=_NextPart_001_006B_01C3D153.B81F0FC0
Content-Type: text/html;
charset="iso-8859-2"
Content-Transfer-Encoding: quoted-printable
7181B 4
------=_NextPart_001_006B_01C3D153.B81F0FC0--
------=_NextPart_000_006A_01C3D153.B81F0FC0
Content-Type: image/png;
name="W466SOM.PNG"
Content-Transfer-Encoding: base64
Content-ID: <006901c3d125$9e66d3c0$6c822ecf@AP909KFM>
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
------=_NextPart_000_006A_01C3D153.B81F0FC0--
Mail-DeliveryStatus-BounceParser-1.534/t/corpus/exchange.unknown.msg 0000644 0001750 0001750 00000004650 11546616741 026043 0 ustar mstevens mstevens Return-Path:
Received: from smtp2.dnb.com (smtp2.dnb.com [204.254.175.103])
by somehost.example.com (8.12.11/8.12.11) with ESMTP id k1F9PaLe021541
for ; Wed, 15 Feb 2006 01:25:36 -0800
Received: from unknown (HELO relay.us.dnb.com) ([159.137.225.58])
by smtp2.dnb.com with ESMTP; 15 Feb 2006 04:32:09 -0500
Received: from smtp-gw.us.dnb.com (smtp-gw.us.dnb.com [10.158.22.127])
by relay.us.dnb.com (8.12.9/8.12.9) with SMTP id k1F9PRKr042136
for ; Wed, 15 Feb 2006 04:25:34 -0500 (EST)
Received: from exbhbhbh04.us.dnb.com ([159.137.224.39])
by smtp-gw.us.dnb.com (SAVSMTP 3.1.0.29) with SMTP id M2006021504253404247
for ; Wed, 15 Feb 2006 04:25:34 -0500
Received: by exbhbhbh04.us.dbisna.com with Internet Mail Service (5.5.2657.72)
id ; Wed, 15 Feb 2006 04:25:33 -0500
Message-ID: <71DFAC6F3166D711B6DB0008C74CCDF2391EBE34@exbhbhbh01.us.dbisna.com>
From: System Administrator
To: sender@example.com
Subject: Undeliverable: Some test message
Date: Wed, 15 Feb 2006 04:25:33 -0500
MIME-Version: 1.0
X-Mailer: Internet Mail Service (5.5.2657.72)
X-MS-Embedded-Report:
Content-Type: multipart/mixed;
boundary="----_=_NextPart_000_01C63211.C564A2DC"
This message is in MIME format. Since your mail reader does not understand
this format, some or all of this message may not be legible.
------_=_NextPart_000_01C63211.C564A2DC
Content-Type: text/plain;
charset="iso-8859-1"
Your message
To: recipient
Subject: Some test message
Sent: Wed, 15 Feb 2006 03:53:57 -0500
did not reach the following recipient(s):
RECIPIENT@EXAMPLE.NET on Wed, 15 Feb 2006 04:25:29 -0500
The recipient name is not recognized
The MTS-ID of the original message is: c=us;a=
;p=dnb;l=EXBHBHBH0106021509251DBVZ38X
MSEXCH:IMS:DNB:USEAST:EXBHBHBH01 0 (000C05A6) Unknown Recipient
------_=_NextPart_000_01C63211.C564A2DC
Content-Type: message/rfc822
Message-ID: <200602150853.k1F8rvvX006268@somehost.example.com>
From: Sender
To: recipient
Subject: Some test message
Date: Wed, 15 Feb 2006 03:53:57 -0500
MIME-Version: 1.0
X-Mailer: Internet Mail Service (5.5.2657.72)
X-MS-Embedded-Report:
X-BrightmailFiltered: true
X-Brightmail-Tracker: AAAAAA==
Errors-To: noreply@example.com
Content-Type: text/plain;
charset="iso-8859-1"
Text here
------_=_NextPart_000_01C63211.C564A2DC--
Mail-DeliveryStatus-BounceParser-1.534/t/corpus/spam-rejection24.msg 0000644 0001750 0001750 00000007400 11651307050 025630 0 ustar mstevens mstevens Delivered-To: automated-bounces+ef6d04e6-f38c-11e0-854f-be0087d98979@email.example.com
Received: by 10.180.105.100 with SMTP id gl4cs124817wib;
Mon, 10 Oct 2011 15:12:47 -0700 (PDT)
Received: by 10.227.200.146 with SMTP id ew18mr7056930wbb.16.1318284766356;
Mon, 10 Oct 2011 15:12:46 -0700 (PDT)
Return-Path: <>
Received: from admin1.example.co.uk (admin1.example.co.uk. [94.236.45.212])
by mx.google.com with ESMTP id fl17si14714845wbb.107.2011.10.10.15.12.46;
Mon, 10 Oct 2011 15:12:46 -0700 (PDT)
Received-SPF: pass (google.com: domain of admin1.example.co.uk designates 94.236.45.212 as permitted sender) client-ip=94.236.45.212;
Authentication-Results: mx.google.com; spf=pass (google.com: domain of admin1.example.co.uk designates 94.236.45.212 as permitted sender) smtp.mail=
Received: by admin1.example.co.uk (Postfix)
id EBB3B651198; Mon, 10 Oct 2011 23:12:45 +0100 (BST)
Date: Mon, 10 Oct 2011 23:12:45 +0100 (BST)
From: MAILER-DAEMON@admin1.example.co.uk (Mail Delivery System)
Subject: Undelivered Mail Returned to Sender
To: automated-bounces+EF6D04E6-F38C-11E0-854F-BE0087D98979@email.example.com
Auto-Submitted: auto-replied
MIME-Version: 1.0
Content-Type: multipart/report; report-type=delivery-status;
boundary="E8E46651197.1318284765/admin1.example.co.uk"
Message-Id: <20111010221245.EBB3B651198@admin1.example.co.uk>
This is a MIME-encapsulated message.
--E8E46651197.1318284765/admin1.example.co.uk
Content-Description: Notification
Content-Type: text/plain; charset=us-ascii
This is the mail system at host admin1.example.co.uk.
I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.
For further assistance, please send mail to
If you do so, please include this problem report. You can
delete your own text from the attached returned message.
The mail system
: host mail.broadbandcompany.ug[41.138.0.6] said:
554 Failure Spam content matched. Fix using:
http://test.co.ug/cgi/user.cgi?cmd=r&f=15436278 (in reply to end of
DATA command)
--E8E46651197.1318284765/admin1.example.co.uk
Content-Description: Delivery report
Content-Type: message/delivery-status
Reporting-MTA: dns; admin1.example.co.uk
X-Postfix-Queue-ID: E8E46651197
X-Postfix-Sender: rfc822; automated-bounces+EF6D04E6-F38C-11E0-854F-BE0087D98979@email.example.com
Arrival-Date: Mon, 10 Oct 2011 23:12:25 +0100 (BST)
Final-Recipient: rfc822; fred.bloggs@test.co.ug
Action: failed
Status: 5.0.0
Remote-MTA: dns; mail.broadbandcompany.ug
Diagnostic-Code: smtp; 554 Failure Spam content matched. Fix using:
http://test.co.ug/cgi/user.cgi?cmd=r&f=15436278
--E8E46651197.1318284765/admin1.example.co.uk
Content-Description: Undelivered Message
Content-Type: message/rfc822
Received: by admin1.example.co.uk (Postfix, from userid 507)
id E8E46651197; Mon, 10 Oct 2011 23:12:25 +0100 (BST)
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Type: multipart/related; boundary="_----------=_131828474589660"
X-Mailer: MIME::Lite 3.027 (F2.78; T1.31; A2.07; B3.13; Q3.13)
Date: Mon, 10 Oct 2011 23:12:25 +0100
From: John Smith
Subject: foo
X-Campaignid: example20100129.2
List-Unsubscribe:
To: fred bloggs
Message-Id: <20111010221225.E8E46651197@admin1.example.co.uk>
This is a multi-part message in MIME format.
--_----------=_131828474589660
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html
HTML
--_----------=_131828474589660--
--E8E46651197.1318284765/admin1.example.co.uk--
Mail-DeliveryStatus-BounceParser-1.534/t/corpus/spam-rejection34.msg 0000644 0001750 0001750 00000010032 11767624312 025637 0 ustar mstevens mstevens Delivered-To: automated-bounces+267ace36-b292-11e1-8573-aef4e4e96c2b@email.sample.com
Received: by 10.52.101.202 with SMTP id fi10csp52380vdb;
Sat, 9 Jun 2012 20:49:46 -0700 (PDT)
Received: by 10.216.216.1 with SMTP id f1mr4144213wep.24.1339300185212;
Sat, 09 Jun 2012 20:49:45 -0700 (PDT)
Return-Path: <>
Received: from admin1.sample.co.uk (admin1.sample.co.uk. [94.236.45.212])
by mx.google.com with ESMTP id dr8si9587699wib.16.2012.06.09.20.49.44;
Sat, 09 Jun 2012 20:49:45 -0700 (PDT)
Received-SPF: pass (google.com: domain of admin1.sample.co.uk designates 94.236.45.212 as permitted sender) client-ip=94.236.45.212;
Authentication-Results: mx.google.com; spf=pass (google.com: domain of admin1.sample.co.uk designates 94.236.45.212 as permitted sender) smtp.mail=
Received: by admin1.sample.co.uk (Postfix)
id 8960E6512E1; Sun, 10 Jun 2012 04:49:44 +0100 (BST)
Date: Sun, 10 Jun 2012 04:49:44 +0100 (BST)
From: MAILER-DAEMON@admin1.sample.co.uk (Mail Delivery System)
Subject: Undelivered Mail Returned to Sender
To: automated-bounces+267ACE36-B292-11E1-8573-AEF4E4E96C2B@email.sample.com
Auto-Submitted: auto-replied
MIME-Version: 1.0
Content-Type: multipart/report; report-type=delivery-status;
boundary="08CB26512B7.1339300184/admin1.sample.co.uk"
Content-Transfer-Encoding: 8bit
Message-Id: <20120610034944.8960E6512E1@admin1.sample.co.uk>
This is a MIME-encapsulated message.
--08CB26512B7.1339300184/admin1.sample.co.uk
Content-Description: Notification
Content-Type: text/plain; charset=us-ascii
This is the mail system at host admin1.sample.co.uk.
I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.
For further assistance, please send mail to
If you do so, please include this problem report. You can
delete your own text from the attached returned message.
The mail system
: host globala.test.com.au[130.94.124.172]
said: 554 5.7.1 554 5.7.1 Your email appears similar to spam we have
received before. We urge you to modify your message and resend it. (in
reply to end of DATA command)
--08CB26512B7.1339300184/admin1.sample.co.uk
Content-Description: Delivery report
Content-Type: message/delivery-status
Reporting-MTA: dns; admin1.sample.co.uk
X-Postfix-Queue-ID: 08CB26512B7
X-Postfix-Sender: rfc822; automated-bounces+267ACE36-B292-11E1-8573-AEF4E4E96C2B@email.sample.com
Arrival-Date: Sun, 10 Jun 2012 01:20:58 +0100 (BST)
Final-Recipient: rfc822; john.smith@example.com.au
Action: failed
Status: 5.7.1
Remote-MTA: dns; globala.test.com.au
Diagnostic-Code: smtp; 554 5.7.1 554 5.7.1 Your email appears similar to spam
we have received before. We urge you to modify your message and resend it.
--08CB26512B7.1339300184/admin1.sample.co.uk
Content-Description: Undelivered Message
Content-Type: message/rfc822
Content-Transfer-Encoding: 8bit
Received: by admin1.sample.co.uk (Postfix, from userid 507)
id 08CB26512B7; Sun, 10 Jun 2012 01:20:58 +0100 (BST)
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Type: multipart/alternative; boundary="_----------=_13392876582779110"
X-Mailer: MIME::Lite 3.027 (F2.78; T1.31; A2.08; B3.13; Q3.13)
Date: Sun, 10 Jun 2012 01:20:58 +0100
From: Fred Bloggs
Subject: foo
X-Campaignid: sample20110704.1
List-Unsubscribe:
To: John Smith
Message-Id: <20120610002058.08CB26512B7@admin1.sample.co.uk>
This is a multi-part message in MIME format.
--_----------=_13392876582779110
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Text goes here.
--_----------=_13392876582779110
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html
HTML goes here
--_----------=_13392876582779110--
--08CB26512B7.1339300184/admin1.sample.co.uk--
Mail-DeliveryStatus-BounceParser-1.534/t/corpus/spam-rejection25.msg 0000644 0001750 0001750 00000007746 11651310040 025637 0 ustar mstevens mstevens Delivered-To: automated-bounces+fe3a4824-f299-11e0-af66-f4ecf5691d73@email.example.com
Received: by 10.180.105.100 with SMTP id gl4cs83417wib;
Sun, 9 Oct 2011 10:40:42 -0700 (PDT)
Received: by 10.216.221.135 with SMTP id r7mr5596434wep.45.1318182041964;
Sun, 09 Oct 2011 10:40:41 -0700 (PDT)
Return-Path: <>
Received: from admin1.example.co.uk (admin1.example.co.uk. [94.236.45.212])
by mx.google.com with ESMTP id x17si11536394weq.66.2011.10.09.10.40.41;
Sun, 09 Oct 2011 10:40:41 -0700 (PDT)
Received-SPF: pass (google.com: domain of admin1.example.co.uk designates 94.236.45.212 as permitted sender) client-ip=94.236.45.212;
Authentication-Results: mx.google.com; spf=pass (google.com: domain of admin1.example.co.uk designates 94.236.45.212 as permitted sender) smtp.mail=
Received: by admin1.example.co.uk (Postfix)
id 8F7E06510AF; Sun, 9 Oct 2011 18:40:41 +0100 (BST)
Date: Sun, 9 Oct 2011 18:40:41 +0100 (BST)
From: MAILER-DAEMON@admin1.example.co.uk (Mail Delivery System)
Subject: Undelivered Mail Returned to Sender
To: automated-bounces+FE3A4824-F299-11E0-AF66-F4ECF5691D73@email.example.com
Auto-Submitted: auto-replied
MIME-Version: 1.0
Content-Type: multipart/report; report-type=delivery-status;
boundary="2C2786510C8.1318182041/admin1.example.co.uk"
Content-Transfer-Encoding: 8bit
Message-Id: <20111009174041.8F7E06510AF@admin1.example.co.uk>
This is a MIME-encapsulated message.
--2C2786510C8.1318182041/admin1.example.co.uk
Content-Description: Notification
Content-Type: text/plain; charset=us-ascii
This is the mail system at host admin1.example.co.uk.
I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.
For further assistance, please send mail to
If you do so, please include this problem report. You can
delete your own text from the attached returned message.
The mail system
: host testmx1.test.com[61.135.132.110] said: 553 5.7.3
CONTENT REJECT:192.168.95.162.2011101001.XXYIvtHf:dspam
check:4:http://mail.test.com/info/policy/12 (in reply to end of DATA
command)
--2C2786510C8.1318182041/admin1.example.co.uk
Content-Description: Delivery report
Content-Type: message/delivery-status
Reporting-MTA: dns; admin1.example.co.uk
X-Postfix-Queue-ID: 2C2786510C8
X-Postfix-Sender: rfc822; automated-bounces+FE3A4824-F299-11E0-AF66-F4ECF5691D73@email.example.com
Arrival-Date: Sun, 9 Oct 2011 18:13:23 +0100 (BST)
Final-Recipient: rfc822; john.smith.g@test.com
Action: failed
Status: 5.7.3
Remote-MTA: dns; testmx1.test.com
Diagnostic-Code: smtp; 553 5.7.3 CONTENT
REJECT:192.168.95.162.2011101001.XXYIvtHf:dspam
check:4:http://mail.test.com/info/policy/12
--2C2786510C8.1318182041/admin1.example.co.uk
Content-Description: Undelivered Message
Content-Type: message/rfc822
Content-Transfer-Encoding: 8bit
Received: by admin1.example.co.uk (Postfix, from userid 507)
id 2C2786510C8; Sun, 9 Oct 2011 18:13:23 +0100 (BST)
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Type: multipart/alternative; boundary="_----------=_131818040318075154"
X-Mailer: MIME::Lite 3.027 (F2.78; T1.31; A2.07; B3.13; Q3.13)
Date: Sun, 9 Oct 2011 18:13:23 +0100
From: Fred Bloggs
Subject: foo
X-Campaignid: example20110704.1
List-Unsubscribe:
To: john smith
Message-Id: <20111009171323.2C2786510C8@admin1.example.co.uk>
This is a multi-part message in MIME format.
--_----------=_131818040318075154
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Text
--_----------=_131818040318075154
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html
HTML
--_----------=_131818040318075154--
--2C2786510C8.1318182041/admin1.example.co.uk--
Mail-DeliveryStatus-BounceParser-1.534/t/corpus/cam-unknown.msg 0000644 0001750 0001750 00000010440 11546616741 025012 0 ustar mstevens mstevens Delivered-To: automated-bounces+c769741a-932b-11df-af69-e1b922927a70@email.example.com
Received: by 10.224.45.67 with SMTP id d3cs109052qaf;
Mon, 19 Jul 2010 04:50:09 -0700 (PDT)
Received: by 10.227.157.13 with SMTP id z13mr3921508wbw.184.1279540209023;
Mon, 19 Jul 2010 04:50:09 -0700 (PDT)
Return-Path: <>
Received: from server4.example.co.uk (server4.example.co.uk [94.236.45.212])
by mx.google.com with ESMTP id c24si6318686wbc.97.2010.07.19.04.50.08;
Mon, 19 Jul 2010 04:50:09 -0700 (PDT)
Received-SPF: pass (google.com: best guess record for domain of server4.example.co.uk designates 94.236.45.212 as permitted sender) client-ip=94.236.45.212;
Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of server4.example.co.uk designates 94.236.45.212 as permitted sender) smtp.mail=
Received: by server4.example.co.uk (Postfix)
id 7F46F16582EE; Mon, 19 Jul 2010 12:50:08 +0100 (BST)
Date: Mon, 19 Jul 2010 12:50:08 +0100 (BST)
From: MAILER-DAEMON@server4.example.co.uk (Mail Delivery System)
Subject: Undelivered Mail Returned to Sender
To: automated-bounces+C769741A-932B-11DF-AF69-E1B922927A70@email.example.com
Auto-Submitted: auto-replied
MIME-Version: 1.0
Content-Type: multipart/report; report-type=delivery-status;
boundary="4B69B16582C5.1279540208/server4.example.co.uk"
Message-Id: <20100719115008.7F46F16582EE@server4.example.co.uk>
This is a MIME-encapsulated message.
--4B69B16582C5.1279540208/server4.example.co.uk
Content-Description: Notification
Content-Type: text/plain; charset=us-ascii
This is the mail system at host server4.example.co.uk.
I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.
For further assistance, please send mail to
If you do so, please include this problem report. You can
delete your own text from the attached returned message.
The mail system
: host mx.example.net[131.111.8.146] said: 550-
is not a known user on this system; 550 see
http://www.example.net/cs/email/bounce.html (in reply to RCPT TO command)
--4B69B16582C5.1279540208/server4.example.co.uk
Content-Description: Delivery report
Content-Type: message/delivery-status
Reporting-MTA: dns; server4.example.co.uk
X-Postfix-Queue-ID: 4B69B16582C5
X-Postfix-Sender: rfc822; automated-bounces+C769741A-932B-11DF-AF69-E1B922927A70@email.example.com
Arrival-Date: Mon, 19 Jul 2010 12:50:08 +0100 (BST)
Final-Recipient: rfc822; recipient@example.net
Action: failed
Status: 5.0.0
Remote-MTA: dns; mx.example.net
Diagnostic-Code: smtp; 550- is not a known user on this
system; 550 see http://www.example.net/cs/email/bounce.html
--4B69B16582C5.1279540208/server4.example.co.uk
Content-Description: Undelivered Message
Content-Type: message/rfc822
Received: by server4.example.co.uk (Postfix, from userid 505)
id 4B69B16582C5; Mon, 19 Jul 2010 12:50:08 +0100 (BST)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=email.example.com;
s=default10; t=1279540208;
bh=qFKZ/hvwahVJ6Io61UyyuF2gRDG3hZ1XA647W7lsk2Q=;
h=MIME-Version:Content-Transfer-Encoding:Content-Type:Date:From:
Subject:List-Unsubscribe:To:Message-Id;
b=rTfGlA3hcwLArmjavo3tT4EQ1/zg6b831Q//iR5Wuzr+DJyf3bOMcZrZcsPmQFJwT
81HJFZrQ1PwrRwju9Rpt8Epzx4Uo3i4ZrTLyoJWb+UYZ0kNIeV0OhOAAY35LYXUhGc
hFy166wn1Z4Q/v9r0Na7dhsKRM3OaPpme8AsoRq8=
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Type: multipart/related; boundary="_----------=_127954020820863890"
X-Mailer: MIME::Lite 3.027 (F2.77; T1.28; A2.04; B3.08; Q3.08)
Date: Mon, 19 Jul 2010 12:50:08 +0100
From: Fred Bloggs
Subject: foo
X-Campaignid: example20100129.2
List-Unsubscribe:
To: John Smith
Message-Id: <20100719115008.4B69B16582C5@server4.example.co.uk>
This is a multi-part message in MIME format.
--_----------=_127954020820863890
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html
HTML here.
--_----------=_127954020820863890--
--4B69B16582C5.1279540208/server4.example.co.uk--
Mail-DeliveryStatus-BounceParser-1.534/t/corpus/quota-6.msg 0000644 0001750 0001750 00000007515 11546616741 024062 0 ustar mstevens mstevens Delivered-To: automated-bounces+8b072ea2-f0c5-11df-accf-8148583e2313@email.example.com
Received: by 10.216.139.130 with SMTP id c2cs134824wej;
Mon, 15 Nov 2010 06:35:09 -0800 (PST)
Received: by 10.216.11.205 with SMTP id 55mr738044wex.72.1289831708152;
Mon, 15 Nov 2010 06:35:08 -0800 (PST)
Return-Path: <>
Received: from server4.example.co.uk (server4.example.co.uk [94.236.45.212])
by mx.google.com with ESMTP id y84si55304weq.44.2010.11.15.06.35.08;
Mon, 15 Nov 2010 06:35:08 -0800 (PST)
Received-SPF: pass (google.com: best guess record for domain of server4.example.co.uk designates 94.236.45.212 as permitted sender) client-ip=94.236.45.212;
Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of server4.example.co.uk designates 94.236.45.212 as permitted sender) smtp.mail=
Received: by server4.example.co.uk (Postfix)
id E606016581F8; Mon, 15 Nov 2010 14:35:07 +0000 (GMT)
Date: Mon, 15 Nov 2010 14:35:07 +0000 (GMT)
From: MAILER-DAEMON@server4.example.co.uk (Mail Delivery System)
Subject: Undelivered Mail Returned to Sender
To: automated-bounces+8B072EA2-F0C5-11DF-ACCF-8148583E2313@email.example.com
Auto-Submitted: auto-replied
MIME-Version: 1.0
Content-Type: multipart/report; report-type=delivery-status;
boundary="999E316581F7.1289831707/server4.example.co.uk"
Message-Id: <20101115143507.E606016581F8@server4.example.co.uk>
This is a MIME-encapsulated message.
--999E316581F7.1289831707/server4.example.co.uk
Content-Description: Notification
Content-Type: text/plain; charset=us-ascii
This is the mail system at host server4.example.co.uk.
I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.
For further assistance, please send mail to
If you do so, please include this problem report. You can
delete your own text from the attached returned message.
The mail system
: host mx-ha01.web.de[217.72.192.149] said: 550
Benutzer hat zuviele Mails auf dem Server. / User
has too many messages on the server. (in reply to RCPT TO command)
--999E316581F7.1289831707/server4.example.co.uk
Content-Description: Delivery report
Content-Type: message/delivery-status
Reporting-MTA: dns; server4.example.co.uk
X-Postfix-Queue-ID: 999E316581F7
X-Postfix-Sender: rfc822; automated-bounces+8B072EA2-F0C5-11DF-ACCF-8148583E2313@email.example.com
Arrival-Date: Mon, 15 Nov 2010 14:35:07 +0000 (GMT)
Final-Recipient: rfc822; fred.bloggs@web.de
Action: failed
Status: 5.0.0
Remote-MTA: dns; mx-ha01.web.de
Diagnostic-Code: smtp; 550 Benutzer hat zuviele Mails
auf dem Server. / User has too many messages on the server.
--999E316581F7.1289831707/server4.example.co.uk
Content-Description: Undelivered Message
Content-Type: message/rfc822
Received: by server4.example.co.uk (Postfix, from userid 505)
id 999E316581F7; Mon, 15 Nov 2010 14:35:07 +0000 (GMT)
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Type: multipart/related; boundary="_----------=_12898317074814282"
X-Mailer: MIME::Lite 3.027 (F2.77; T1.28; A2.04; B3.08; Q3.08)
Date: Mon, 15 Nov 2010 14:35:07 +0000
From: John Smith
Subject: Foo
X-Campaignid: example20100129.2
List-Unsubscribe:
To: Fred Bloggs
Message-Id: <20101115143507.999E316581F7@server4.example.co.uk>
This is a multi-part message in MIME format.
--_----------=_12898317074814282
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html
HTML goes here.
--_----------=_12898317074814282--
--999E316581F7.1289831707/server4.example.co.uk--
Mail-DeliveryStatus-BounceParser-1.534/t/corpus/virus-caused-multiple-weird-reports.msg 0000644 0001750 0001750 00000220527 11546616741 031635 0 ustar mstevens mstevens Return-Path:
Received: from somehost.example.com (somehost.example.com [10.0.0.1])
by somehost.example.com (8.12.11/8.12.11) with ESMTP id k0PKW0a9025350
for ; Wed, 25 Jan 2006 12:32:00 -0800
Received: from example.com (2.209.216.216.transedge.com [216.216.209.2])
by somehost.example.com (8.13.1/8.13.1) with ESMTP id k0PKVwaV096031
for ; Wed, 25 Jan 2006 12:31:59 -0800 (PST)
(envelope-from support@example.com)
Message-Id: <200601252031.k0PKVwaV096031@somehost.example.com>
From: support@example.com
To: tracker@example.com
Subject: URL WRSS
Date: Wed, 25 Jan 2006 14:28:48 -0600
MIME-Version: 1.0
Content-Type: multipart/mixed;
boundary="----=_NextPart_000_0010_8CE39B99.72022D3B"
X-Priority: 3
X-MSMail-Priority: Normal
This is a multi-part message in MIME format.
------=_NextPart_000_0010_8CE39B99.72022D3B
Content-Type: text/html;
charset="ISO-8859-1"
Content-Transfer-Encoding: 7bit
Dear user tracker,
You have successfully updated the password of your XXXXXXXXX account.
If you did not authorize this change or if you need assistance with your account, please contact XXXXXXXXX customer service at: support@example.com
Thank you for using XXXXXXXXXXXXXXX!
The XXXXXXXXXXXXXX Support Team
+++ Attachment: No Virus (Clean)
+++ XXXXXXXXXXXXXXX Antivirus - somehost.example.com
------=_NextPart_000_0010_8CE39B99.72022D3B
Content-Type: application/octet-stream;
name="account-password.zip"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="account-password.zip"
UEsDBAoAAAAAAJijOTRQkiovANAAAADQAABeAAAAYWNjb3VudC1wYXNzd29yZC5odG0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLnBpZk1akAADAAAABAAAAP//AAC4AAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAANgAAAAOH7oOALQJzSG4AUzNIVRoaXMgcHJvZ3JhbSBjYW5ub3QgYmUgcnVu
IGluIERPUyBtb2RlLg0NCiQAAAAAAAAAULpPDxTbIVwU2yFcFNshXJfHL1wQ2yFc/MQlXBDbIVyX
03xcGdshXBTbIFyg2yFc/MQrXAbbIVz8xCpcGNshXFJpY2gU2yFcAAAAAAAAAAAAAAAAAAAAAFBF
AABMAQUAAAAAAAAAAAAAAAAA4AAPAQsBAAAA4AAAAOAAAAAAAADU0AEAABAAAADwAAAAAEAAABAA
AAACAAAEAAAAAAAAAAQAAAAAAAAAAAgCAAAEAAAAAAAAAgAAAAAAEAAAEAAAAAAQAAAQAAAAAAAA
EAAAAAAAAAAAAAAAANABADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAQAAAVVNSAAAAAAAA4AAAABAAAABcAAAABAAAAAAAAAAAAAAAAAAAQAAA
wFVTUgAAAAAAADAAAADwAAAADgAAAGAAAAAAAAAAAAAAAAAAAEAAAMBVU1IAAAAAAABgAAAAIAEA
ACgAAABuAAAAAAAAAAAAAAAAAABAAADAVVNSAAAAAAAAUAAAAIABAAACAAAAlgAAAAAAAAAAAAAA
AAAAQAAAwFVTUgAAAAAAADgAAADQAQAAOAAAAJgAAAAAAAAAAAAAAAAAAEAAAMAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
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
BDQmKvQEqIeryGwdWlZFXcF8Arp0Y3BGgr0y9qiR6WJ6PrKAcg3fYC8cxb3jSrE/BhZNodRCWt2e
D75fLjGC83YOLQFzHi63X6NYParA9nCIs7T9c67qHymftbJzhvci+Aq9loo9foWV0G6FVs+58E87
3jDaPeTIjnDP+dP6mdD4RB8kKvl+RvMrLudEUuS2Y+MQqttONJoLGZNpH4oXsUYLZ5KZPWba5Eo3
n4+ina49cJNrFQIWJ5+SXAo29maigINzpdOwX5Bpa/JdNdkG99OUy1EZrHxTlt8b1W5VfEH7Aq3F
IRRtMFotr2EUtbMwDTLzOCFdnY5kh7ippgKJfHzYsUP4Jk2RvsL3kE3QOpaKCpWxrSPXsFlcm+xW
1B9PMKhFgpOqtMgxUci75mbaJ6iJMxNh56AOpYoD/3I0ae2DZANonAeUEPggKYg6CvRrTwKA0uq1
6eRZjIOE5U05o2145q+PcVZ+8/hWofuCmSi/QtupaHw6/B/Tc3gON1U1M3FjxGL5TDVZUgJUetye
nFDTzgNJbo6h4Ncyaf4ZAC4jgt//3WwhZW8ORRdifBNGOGWa9jNCLjxiNccfWoKx6AtAcpI3URqN
w7G4qvUoCdg/kW070WXGFjlzB2BGCFCuXTHkcbAy6dI+Ouhx1YdHfS/iHlA5xjXyGA33L+/Oy9h2
6fcnLtpNjig/1bYvQfVUSNUd1nN3dzp2urtctpDttZRaBOu1s+7/J/SntAjaHGKkl9aKfJlOKZ1/
owBxkmXhw7/RciB7+6BawXPmBAEI/4YD/3ISA9CKAogCSeIV6Kf////oRwAAAP9obmtnYmZfV15W
W09CTj8vPi47JzImLzcuNisvMi4vLw4uCycCJv/X/tb7z+LO3+/e7tvn0ubP9872y+/S7s/vru7+
56Lmn9ee1pvPgs5/L34ueydyJm83bjZrL3Iuby9OLksnQiY/Vz5WO08iTh9vHm4bZxJmD3cOdgtv
Em4Pb+5u62fiZt9X3lbbT8JOvy++LrsnsiavN642qy+yLq8vji6LJ4Imf9d+1nvPYs5f717uW+dS
5k/3TvZL71LuT+8u7ivnZ+Yf1x7WG88Czv8v/i77J/Im7zfuNusv8i7vL84uyyfCJr9Xvla7T6JO
n2+ebptnkmaPd452i2+Sbo9vbm5rZ2JmX1deVltPQk4/Lz4uOycyJi83LjYrLzLIuNzDeEsnLeZP
1pM9Sg/iiN/v3Q1ohIAwD/f5vzPv1u7PQhju/Tehe5cm3tamj/fVzy4Vbcpncrf89KV/qy/DhVc5
UC5LWgIZ6Wb140yeYk6qBDW9W2eTKAd3DnaYDIC5UW9vWatP42ZqcgkWLF5lETJCSajHKm8z/neu
wfU/A4WXRZAui2cF6KcwYLaujyHOXzJep5vnUuZL6vm5oHo+QaZF7e4r54f11hwqEyvQAs5zRIEm
C5ssYwA47jZfbB3uTY4p9403wrN2TAaWu9oxZOivni7nmJFpjbu/dYHDw21xYMRt4G9h/U2mnlaG
D4I5Dpk+LdJmgWYvIvOcrqxCk6Rim+VCcEImZ1j+1vslTDLeZObtctohJs98jmqf19Puz++YTfJo
kRvqF54mmkSKzRYszW57UjKEzpI3+HsvWj1vL049SydCNT9XPmU7TyJOH28ebhtnEmYPdw52C28S
bg9v7m7rZ+Jm31feVttPwk6/L74uuyeyJq83rjarL7Iury+OLosngiZ/137We89izl/vXu5b51Lm
T/dO9kvvUu5P7y7uK+ci5h/XHtYbzwLO/y/+Lvsn8ibvN+426y/yLu8vzi7LJ8Imv1e+VrtPok6f
b55um2eSZo93jnaLb5Juj29ubmtnYmZfV15WW09CTj8vPi47JzImLzcuNisvMi4vLw4uCycCJv/X
/tb7z+LO3+/e7tvn0ubP9872y+/S7s/vru6r56Lmn9ee1pvPgs5/L34ueydyJm83bjZrL3Iuby9O
LksnQiY/Vz5WO08io6pbfqHbJhJmJ7e4dMvkDfmMdyE3HicVOGrM6kHfkRDCtDHCaL2oE3HvNzjO
DHryLjno73nLJwq/4CK+1gOHwxmf71yv0L6zrxH/TkvW27Ksx0ViALZkKnF041GfTo8tqf3wADIs
sQ5XeXMevgdfemogMa2vribCJr/h2onrbumYFE3/N11vkv9qAVjB4AUD4MHoBusH+usB/+sE4+v4
aWgQACAAaL5hQAABLCRo2mFAAAEsJFD/tT9PQADrAf9o/wAAAMNo6wSj6wT/6/vpQOsB/8HgBQPg
JABoEAAgAFNoxGFAAAEsJFD/tT9PQADrAejry+rrAhR3+XIIcw7/gwQkF8PoBAAAAA/1cxHrBppy
7R/rB/VyDvVy+Gjr7IMEJAf1/zQkw4uF1zBAAA+64BVzCGoA/5U/T0AAjb3nLEAAV2j/AAAAV2oA
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
AIwAAAB80AAAAAA=
------=_NextPart_000_0010_8CE39B99.72022D3B--
Mail-DeliveryStatus-BounceParser-1.534/t/corpus/spam-rejection4.msg 0000644 0001750 0001750 00000007240 11546616741 025565 0 ustar mstevens mstevens Delivered-To: automated-bounces+d4d36948-7eaa-11df-a95c-e489dd31f8f5@email.example.com
Received: by 10.216.157.72 with SMTP id n50cs186330wek;
Wed, 23 Jun 2010 02:37:32 -0700 (PDT)
Received: by 10.216.160.130 with SMTP id u2mr2263718wek.73.1277285852167;
Wed, 23 Jun 2010 02:37:32 -0700 (PDT)
Return-Path: <>
Received: from server4.example.co.uk (server4.example.co.uk [94.236.45.212])
by mx.google.com with ESMTP id x83si14572879wei.146.2010.06.23.02.37.32;
Wed, 23 Jun 2010 02:37:32 -0700 (PDT)
Received-SPF: pass (google.com: best guess record for domain of server4.example.co.uk designates 94.236.45.212 as permitted sender) client-ip=94.236.45.212;
Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of server4.example.co.uk designates 94.236.45.212 as permitted sender) smtp.mail=
Received: by server4.example.co.uk (Postfix)
id EEB4A1658630; Wed, 23 Jun 2010 10:37:31 +0100 (BST)
Date: Wed, 23 Jun 2010 10:37:31 +0100 (BST)
From: MAILER-DAEMON@server4.example.co.uk (Mail Delivery System)
Subject: Undelivered Mail Returned to Sender
To: automated-bounces+D4D36948-7EAA-11DF-A95C-E489DD31F8F5@email.example.com
Auto-Submitted: auto-replied
MIME-Version: 1.0
Content-Type: multipart/report; report-type=delivery-status;
boundary="76638165862B.1277285851/server4.example.co.uk"
Content-Transfer-Encoding: 8bit
Message-Id: <20100623093731.EEB4A1658630@server4.example.co.uk>
This is a MIME-encapsulated message.
--76638165862B.1277285851/server4.example.co.uk
Content-Description: Notification
Content-Type: text/plain; charset=us-ascii
This is the mail system at host server4.example.co.uk.
I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.
For further assistance, please send mail to
If you do so, please include this problem report. You can
delete your own text from the attached returned message.
The mail system
: host remote.ho.st[1.2.3.4] said: 554 Sorry,
message looks like SPAM to me (in reply to end of DATA command)
--76638165862B.1277285851/server4.example.co.uk
Content-Description: Delivery report
Content-Type: message/delivery-status
Reporting-MTA: dns; server4.example.co.uk
X-Postfix-Queue-ID: 76638165862B
X-Postfix-Sender: rfc822; automated-bounces+D4D36948-7EAA-11DF-A95C-E489DD31F8F5@email.example.com
Arrival-Date: Wed, 23 Jun 2010 10:36:42 +0100 (BST)
Final-Recipient: rfc822; a@b.c
Action: failed
Status: 5.0.0
Remote-MTA: dns; remote.ho.st
Diagnostic-Code: smtp; 554 Sorry, message looks like SPAM to me
--76638165862B.1277285851/server4.example.co.uk
Content-Description: Undelivered Message
Content-Type: message/rfc822
Content-Transfer-Encoding: 8bit
Received: by server4.example.co.uk (Postfix, from userid 507)
id 76638165862B; Wed, 23 Jun 2010 10:36:42 +0100 (BST)
MIME-Version: 1.0
Content-Transfer-Encoding: binary
Content-Type: multipart/related; boundary="_----------=_127728580219740490"
X-Mailer: MIME::Lite 3.027 (F2.77; T1.28; A2.04; B3.08; Q3.08)
Date: Wed, 23 Jun 2010 10:36:42 +0100
From: Fred Bloggs
Subject: foo
List-Unsubscribe:
To: John Smith
Message-Id: <20100623093642.76638165862B@server4.example.co.uk>
This is a multi-part message in MIME format.
--_----------=_127728580219740490
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
Content-Type: text/html
HTML here
--_----------=_127728580219740490--
--76638165862B.1277285851/server4.example.co.uk--
Mail-DeliveryStatus-BounceParser-1.534/t/corpus/non-autoreply.msg 0000644 0001750 0001750 00000004765 11546616741 025406 0 ustar mstevens mstevens X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on
bacchus.thegestalt.org
X-Spam-Level:
X-Spam-Status: No, score=0.1 required=5.0 tests=AWL,NO_RELAYS autolearn=ham
version=3.1.3
Received: from mailnull by bacchus.thegestalt.org with local (Exim 4.61 (FreeBSD))
id 1G5JKH-0008xD-3e
for london.food-bounce@thegestalt.org; Tue, 25 Jul 2006 10:35:41 +0100
X-Failed-Recipients: hbsdpphvfex@blackwebportal.com
Auto-Submitted: auto-replied
Old-From: Mail Delivery System
To: london.food-bounce@thegestalt.org
Old-Subject: Mail delivery failed: returning message to sender
Message-Id:
Date: Tue, 25 Jul 2006 10:35:41 +0100
Subject: Mail delivery failed: returning message to sender
From: Mail Delivery System
Status: RO
Content-Length: 1666
Lines: 39
This message was created automatically by mail delivery software.
A message that you sent could not be delivered to one or more of its
recipients. This is a permanent error. The following address(es) failed:
hbsdpphvfex@blackwebportal.com
SMTP error from remote mail server after RCPT TO::
host sitemail.everyone.net [209.249.170.32]: 550 Recipient Rejected:
No account by that name here
------ This is a copy of the message, including all the headers. ------
Return-path:
Received: from [82.138.248.236] (helo=bacchus.thegestalt.org)
by bacchus.thegestalt.org with esmtp (Exim 4.61 (FreeBSD))
(envelope-from )
id 1G5JKG-0008xA-3G
for hbsdpphvfex@blackwebportal.com; Tue, 25 Jul 2006 10:35:40 +0100
Received: (from mailnull@localhost)
by bacchus.thegestalt.org (8.13.6/8.13.6/Submit) id k6P9Zdos034419
for hbsdpphvfex@blackwebportal.com; Tue, 25 Jul 2006 10:35:39 +0100 (BST)
(envelope-from london.food-bounce@thegestalt.org)
Date: Tue, 25 Jul 2006 10:35:39 +0100 (BST)
Message-Id: <200607250935.k6P9Zdos034419@bacchus.thegestalt.org>
X-Authentication-Warning: bacchus.thegestalt.org: mailnull set sender to london.food-bounce@thegestalt.org using -f
To: hbsdpphvfex@blackwebportal.com
From: london.food-bounce@thegestalt.org
Subject: Re: Erection problems can be fixed Lionel
In-Reply-To:
<30598324.7175598017554.JavaMail.vmail@service3.colo.realestatemail.net>
Hi,
Non-member posting is disabled for this list, and you don't
appear to be a subscriber.
Your message is now held in an approval queue.
- Siesta::Plugin::MembersOnly
Mail-DeliveryStatus-BounceParser-1.534/t/corpus/surfcontrol-extra-newline.msg 0000644 0001750 0001750 00000006727 11546616741 027732 0 ustar mstevens mstevens Return-Path: <>
X-Original-To: sender@example.com
Delivered-To: sender@example.com
Received: from otherhost.example.com (localhost.localdomain [127.0.0.1])
by otherhost.example.com (Postfix) with ESMTP id 91B1C1193F8
for ; Wed, 16 Aug 2006 05:01:27 -0500 (CDT)
Received: from mailfilter.somehost.example.net (mailfilter.example.net [99.99.49.123])
by otherhost.example.com (Postfix) with ESMTP id 602941193E8
for ; Wed, 16 Aug 2006 05:01:27 -0500 (CDT)
X-SEF-Processed: 5_0_0_816__2006_08_16_05_01_26
X-SEF-NDR-7853D99-ADF1-478E-8894-213D316B8FFA: 1
X-SEF-7853D99-ADF1-478E-8894-213D316B8FFA: 1
Received:
From: <>
To:
Date: Wed, 16 Aug 2006 05:01:24 -0600
Subject: Subject line
X-Mailer: SurfControl E-mail Filter
MIME-Version: 1.0
Content-Type: multipart/report; report-type=delivery-status;
boundary="--=_NextPart_ST_05_01_24_Wednesday_August_16_2006_16202"
Message-Id: <20060816100127.602941193E8@otherhost.example.com>
X-Virus-Scanned: ClamAV using ClamSMTP
----=_NextPart_ST_05_01_24_Wednesday_August_16_2006_16202
Content-Type: text/plain;
Your message could not be sent.
A transcript of the attempts to send the message follows.
The number of attempts made: 1
Addressed To: recipient@example.net
Wed, 16 Aug 2006 05:01:24 -0500
Failed to send to identified host,
recipient@example.net: [99.99.49.50], 554 Service currently unavailable
--- Message non-deliverable.
----=_NextPart_ST_05_01_24_Wednesday_August_16_2006_16202
Content-Type: message/delivery-status;
Action: failed
Final-Recipient: rfc822;recipient@example.net
Diagnostic-Code: smtp; 554 Service currently unavailable
Status: 5.0.0
----=_NextPart_ST_05_01_24_Wednesday_August_16_2006_16202
Content-Type: message/rfc822;
X-SEF-Processed: 5_0_0_816__2006_08_16_05_01_23
X-SEF-7853D99-ADF1-478E-8894-213D316B8FFA: 1
Received: from Unknown [100.100.202.28] by mailfilter.somehost.example.net - SurfControl E-mail Filter ; Wed, 16 Aug 2006 05:01:22 -0500
Received: by bbx.example.com (Postfix, from userid 48)
id CF938474458; Wed, 16 Aug 2006 05:01:17 -0500 (CDT)
Content-Transfer-Encoding: binary
Content-Type: multipart/alternative; boundary="_----------=_11557224771578060"
MIME-Version: 1.0
X-Mailer: MIME::Lite 3.01 (F2.73; A1.74; B3.01; Q3.01)
Date: Wed, 16 Aug 2006 10:01:17 UT
From: Sender
Reply-To:
To: recipient@example.net
Subject: Subject line
Message-Id: <20060816100117.CF938474458@bbx.example.com>
This is a multi-part message in MIME format.
--_----------=_11557224771578060
Content-Disposition: inline
Content-Transfer-Encoding: binary
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
X-Mailer: MIME::Lite 3.01 (F2.73; A1.74; B3.01; Q3.01)
Date: Wed, 16 Aug 2006 10:01:17 UT
Plain-text email message
--_----------=_11557224771578060
Content-Disposition: inline
Content-Transfer-Encoding: binary
Content-Type: text/html; charset="utf-8"
MIME-Version: 1.0
X-Mailer: MIME::Lite 3.01 (F2.73; A1.74; B3.01; Q3.01)
Date: Wed, 16 Aug 2006 10:01:17 UT
HTML Email Message
--_----------=_11557224771578060--
----=_NextPart_ST_05_01_24_Wednesday_August_16_2006_16202--
Mail-DeliveryStatus-BounceParser-1.534/t/corpus/generic-postfix-via-sendmail.unknown.msg 0000644 0001750 0001750 00000007133 11546616741 031735 0 ustar mstevens mstevens Return-Path:
Received: from somehost.example.com (somehost.example.com [192.168.120.100])
by somehost.example.com (8.12.11.20060308/8.12.11) with ESMTP id k56Lshgd012896
(version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO)
for ; Tue, 6 Jun 2006 14:54:49 -0700
Received: from localhost (localhost)
by somehost.example.com (8.12.11.20060308/8.12.11) id k56LshjZ000347;
Tue, 6 Jun 2006 14:54:43 -0700
Date: Tue, 6 Jun 2006 14:54:43 -0700
From: Mail Delivery Subsystem
Message-Id: <200606062154.k56LshjZ000347@somehost.example.com>
To:
MIME-Version: 1.0
Content-Type: multipart/report; report-type=delivery-status;
boundary="k56LshjZ000347.1149630883/somehost.example.com"
Content-Transfer-Encoding: binary
Subject: Returned mail: see transcript for details
Auto-Submitted: auto-generated (failure)
This is a MIME-encapsulated message
--k56LshjZ000347.1149630883/somehost.example.com
The original message was received at Tue, 6 Jun 2006 14:54:42 -0700
from localhost [127.0.0.1]
----- The following addresses had permanent fatal errors -----
(reason: 550 5.1.1 : Recipient address rejected: User unknown in local recipient table)
----- Transcript of session follows -----
... while talking to c.mx.voyager.net.:
>>> DATA
<<< 550 5.1.1 : Recipient address rejected: User unknown in local recipient table
550 5.1.1 ... User unknown
<<< 554 5.5.1 Error: no valid recipients
--k56LshjZ000347.1149630883/somehost.example.com
Content-Type: message/delivery-status
Reporting-MTA: dns; somehost.example.com
Received-From-MTA: DNS; localhost
Arrival-Date: Tue, 6 Jun 2006 14:54:42 -0700
Final-Recipient: RFC822; recipient@example.net
Action: failed
Status: 5.1.1
Remote-MTA: DNS; c.mx.voyager.net
Diagnostic-Code: SMTP; 550 5.1.1 : Recipient address rejected: User unknown in local recipient table
Last-Attempt-Date: Tue, 6 Jun 2006 14:54:42 -0700
--k56LshjZ000347.1149630883/somehost.example.com
Content-Type: message/rfc822
Content-Transfer-Encoding: binary
Return-Path:
Received: from somehost.example.com (localhost [127.0.0.1])
by somehost.example.com (8.12.11.20060308/8.12.11) with ESMTP id k56LsJpH032469
for ; Tue, 6 Jun 2006 14:54:42 -0700
Received: (from sender@localhost)
by somehost.example.com (8.12.11.20060308/8.12.11/Submit) id k56LA4MN021347
for recipient@example.net; Tue, 6 Jun 2006 14:10:04 -0700
Date: Tue, 6 Jun 2006 14:10:04 -0700
Message-Id: <200606062110.k56LA4MN021347@somehost.example.com>
Content-Type: multipart/alternative;
boundary="----------=_1149628204-19504-578"
Content-Transfer-Encoding: binary
MIME-Version: 1.0
X-Mailer: MIME-tools 5.415 (Entity 5.415)
From: Sender Address
To: Sender Address
Subject: Test Bounce Message
This is a multi-part message in MIME format...
------------=_1149628204-19504-578
Content-Type: text/plain
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Plaintext here.
------------=_1149628204-19504-578
Content-Type: text/html
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Test Bounce Message
Test HTML part here.
------------=_1149628204-19504-578--
--k56LshjZ000347.1149630883/somehost.example.com--
Mail-DeliveryStatus-BounceParser-1.534/t/corpus/message-too-large-4.msg 0000644 0001750 0001750 00000010615 11700616456 026230 0 ustar mstevens mstevens Delivered-To: automated-bounces+d51547e4-3535-11e1-9a08-d6b6d6ea5270@email.example.com
Received: by 10.52.111.104 with SMTP id ih8cs426414vdb;
Mon, 2 Jan 2012 03:37:11 -0800 (PST)
Received: by 10.180.19.74 with SMTP id c10mr105125762wie.8.1325504229025;
Mon, 02 Jan 2012 03:37:09 -0800 (PST)
Return-Path: <>
Received: from thing.example3.com (thing.example3.com. [196.33.120.15])
by mx.google.com with ESMTP id ei1si35423807wid.95.2012.01.02.03.37.07;
Mon, 02 Jan 2012 03:37:09 -0800 (PST)
Received-SPF: pass (google.com: best guess record for domain of thing.example3.com designates 196.33.120.15 as permitted sender) client-ip=196.33.120.15;
Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of thing.example3.com designates 196.33.120.15 as permitted sender) smtp.mail=
Received: by thing.example3.com (Postfix)
id ED3C4DE025C; Mon, 2 Jan 2012 13:37:01 +0200 (SAST)
Date: Mon, 2 Jan 2012 13:37:01 +0200 (SAST)
From: MAILER-DAEMON@example3.com (Mail Delivery System)
Subject: Undelivered Mail Returned to Sender
To: automated-bounces+D51547E4-3535-11E1-9A08-D6B6D6EA5270@email.example.com
MIME-Version: 1.0
Content-Type: multipart/report; report-type=delivery-status;
boundary="6A5B6DE0256.1325504221/thing.example3.com"
Content-Transfer-Encoding: 7bit
Message-Id: <20120102113701.ED3C4DE025C@thing.example3.com>
This is a MIME-encapsulated message.
--6A5B6DE0256.1325504221/thing.example3.com
Content-Description: Notification
Content-Type: text/plain
This is the Postfix program at host thing.example3.com.
I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.
For further assistance, please send mail to
If you do so, please include this problem report. You can
delete your own text from the attached returned message.
The Postfix program
: host 196.33.120.18[196.33.120.18] said: 534
SIZE=Message too big. (in reply to MAIL FROM command)
--6A5B6DE0256.1325504221/thing.example3.com
Content-Description: Delivery report
Content-Type: message/delivery-status
Reporting-MTA: dns; thing.example3.com
X-Postfix-Queue-ID: 6A5B6DE0256
X-Postfix-Sender: rfc822; automated-bounces+D51547E4-3535-11E1-9A08-D6B6D6EA5270@email.example.com
Arrival-Date: Mon, 2 Jan 2012 13:36:14 +0200 (SAST)
Final-Recipient: rfc822; john.smith@example2.co.za
Action: failed
Status: 5.0.0
Diagnostic-Code: X-Postfix; host 196.33.120.18[196.33.120.18] said: 534
SIZE=Message too big. (in reply to MAIL FROM command)
--6A5B6DE0256.1325504221/thing.example3.com
Content-Description: Undelivered Message
Content-Type: message/rfc822
Content-Transfer-Encoding: 7bit
Received: from localhost (localhost.localdomain [127.0.0.1])
by thing.example3.com (Postfix) with ESMTP id 6A5B6DE0256
for ; Mon, 2 Jan 2012 13:36:14 +0200 (SAST)
Received: from thing.example3.com ([127.0.0.1])
by localhost (thing.example3.com [127.0.0.1]) (amavisd-new, port 10024)
with ESMTP id I5kvuqTDCPnB for ;
Mon, 2 Jan 2012 13:36:10 +0200 (SAST)
Received: from admin1.example.co.uk (admin1.example.co.uk [94.236.45.212])
by thing.example3.com (Postfix) with ESMTP id A70ACDE025F
for ; Mon, 2 Jan 2012 13:35:17 +0200 (SAST)
Received: by admin1.example.co.uk (Postfix, from userid 507)
id BFD93650D6C; Mon, 2 Jan 2012 11:35:12 +0000 (GMT)
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Type: multipart/related; boundary="_----------=_1325504112319940"
X-Mailer: MIME::Lite 3.027 (F2.78; T1.31; A2.07; B3.13; Q3.13)
Date: Mon, 2 Jan 2012 11:35:12 +0000
From: Fred Bloggs
From: foo
Subject: foo
List-Unsubscribe:
To: John Smith
Message-Id: <20120102113512.BFD93650D6C@admin1.example.co.uk>
This is a multi-part message in MIME format.
--_----------=_1325504112319940
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html
HTML
--_----------=_1325504112319940
Content-Disposition: inline; filename="foo.pdf"
Content-Transfer-Encoding: base64
Content-Type: application/pdf; name="foo.pdf"
PDF
--6A5B6DE0256.1325504221/thing.example3.com--
Mail-DeliveryStatus-BounceParser-1.534/t/corpus/spam-rejection2.msg 0000644 0001750 0001750 00000012164 11546616741 025564 0 ustar mstevens mstevens Delivered-To: automated-bounces+d8dbc0c0-f562-11de-958c-f50b0eb451e0@email.example.com
Return-Path: <>
Received-SPF: neutral (google.com: 212.137.44.177 is neither permitted nor denied by best guess record for domain of relay.b.c) client-ip=212.137.44.177;
Authentication-Results: mx.google.com; spf=neutral (google.com: 212.137.44.177 is neither permitted nor denied by best guess record for domain of relay.b.c) smtp.mail=
Received: from avas-checker
by relay-outbound-6 with esmtp (Relay-Software 4.52)
id 1NQ1gf-0001FN-K9
for automated-bounces+D8DBC0C0-F562-11DE-958C-F50B0EB451E0@email.example.com; Wed, 30 Dec 2009 16:46:17 +0000
Received: from relay.b.c (rlmta11.swi.contact.secure-ops.net [192.168.129.11])
by rlavas04.swi.contact.secure-ops.net (MOS 3.8.3-GA)
with ESMTP id FBO47144;
Wed, 30 Dec 2009 16:46:17 GMT
Received: from [10.16.38.123] (helo=a.b.c)
by relay-inbound-11 with esmtp (Relay-Software 4.52)
id 1NQ1gf-0004rl-Zo
for automated-bounces+D8DBC0C0-F562-11DE-958C-F50B0EB451E0@email.example.com; Wed, 30 Dec 2009 16:46:17 +0000
Received: by a.b.c (Postfix)
id E90A08E5041; Wed, 30 Dec 2009 16:43:22 +0000 (GMT)
Date: Wed, 30 Dec 2009 16:43:22 +0000 (GMT)
From: MAILER-DAEMON@a.b.c (Mail Delivery System)
Subject: Undelivered Mail Returned to Sender
To: automated-bounces+D8DBC0C0-F562-11DE-958C-F50B0EB451E0@email.example.com
Auto-Submitted: auto-replied
MIME-Version: 1.0
Content-Type: multipart/report; report-type=delivery-status;
boundary="A0E518E5027.1262191402/a.b.c"
Message-Id: <20091230164322.E90A08E5041@a.b.c>
This is a MIME-encapsulated message.
--A0E518E5027.1262191402/a.b.c
Content-Description: Notification
Content-Type: text/plain; charset=us-ascii
This is the mail system at host a.b.c.
I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.
For further assistance, please send mail to
If you do so, please include this problem report. You can
delete your own text from the attached returned message.
The mail system
: host 10.16.32.166[10.16.32.166] said: 500 Mail
appears to be unsolicited -- report errors by telephoning the person you
are emailing so they may add you to our whitelist or spammaster@b.c
(in reply to end of DATA command)
--A0E518E5027.1262191402/a.b.c
Content-Description: Delivery report
Content-Type: message/delivery-status
Reporting-MTA: dns; a.b.c
X-Postfix-Queue-ID: A0E518E5027
X-Postfix-Sender: rfc822; automated-bounces+D8DBC0C0-F562-11DE-958C-F50B0EB451E0@email.example.com
Arrival-Date: Wed, 30 Dec 2009 16:43:22 +0000 (GMT)
Final-Recipient: rfc822; a@b.c
Original-Recipient: rfc822;a@b.c
Action: failed
Status: 5.0.0
Remote-MTA: dns; 10.16.32.166
Diagnostic-Code: smtp; 500 Mail appears to be unsolicited -- report errors by
telephoning the person you are emailing so they may add you to our
whitelist or spammaster@slam.nhs.uk
--A0E518E5027.1262191402/a.b.c
Content-Description: Undelivered Message
Content-Type: message/rfc822
Received: from relay.b.c (relay.b.c [194.62.42.123])
by a.b.c (Postfix) with ESMTP id A0E518E5027
for ; Wed, 30 Dec 2009 16:43:22 +0000 (GMT)
Received: from avas-checker
by relay-outbound-3 with esmtp (Relay-Software 4.52)
id 1NQ1ge-0007WS-Bs
for a@b.c; Wed, 30 Dec 2009 16:46:16 +0000
Received: from relay.b.c (rlmta05.swi.contact.secure-ops.net [192.168.129.5])
by rlavas07.swi.contact.secure-ops.net (MOS 3.8.3-GA)
with ESMTP id FMZ76980;
Wed, 30 Dec 2009 16:46:16 GMT
Received: from mail-hurdle
by relay-inbound-5 with esmtp (Relay-Software 4.52)
id 1NQ1ge-00077c-Hh
for a@b.c; Wed, 30 Dec 2009 16:46:16 +0000
Received: from server4.example.co.uk (server4.example.co.uk [94.236.45.212])
by rlmh09.swi.contact.secure-ops.net (MOS 3.8.3-GA)
with ESMTP id QPQ98307;
Wed, 30 Dec 2009 16:46:16 GMT
Received: by server4.example.co.uk (Postfix, from userid 505)
id 29FD116581D0; Wed, 30 Dec 2009 16:46:16 +0000 (GMT)
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Type: multipart/related; boundary="_----------=_126219157699683942"
X-Mailer: MIME::Lite 3.027 (F2.77; T1.28; A2.04; B3.08; Q3.08)
Date: Wed, 30 Dec 2009 16:46:16 +0000
From: Customer Services
To: a@b.c
Subject: stuff
Message-Id: <20091230164616.29FD116581D0@server4.example.co.uk>
X-Junkmail-Status: score=10/50, host=rlavas07.swi.contact.secure-ops.net
X-Junkmail-SD-Raw: score=unknown,
refid=str=0001.0A0B0209.4B3B83D8.01F4:SCFSTAT10123249,ss=1,fgs=0,
ip=94.236.45.212,
so=2006-12-20 11:47:04,
dmn=5.7.1/2009-08-27
X-Junkmail-IWF: false
X-Mirapoint-RAPID-Raw: score=unknown(0),
refid=str=0001.0A0B0209.4B3B83D8.01F4:SCFSTAT10123249,ss=1,fgs=0,
ip=94.236.45.212,
so=2006-12-20 11:47:04,
dmn=5.7.1/2009-08-27
X-Mirapoint-Loop-Id: 322ba3a4565edf5b11063d1c9df79a43
This is a multi-part message in MIME format.
--_----------=_126219157699683942
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html
html here
--_----------=_126219157699683942--
--A0E518E5027.1262191402/a.b.c--
Mail-DeliveryStatus-BounceParser-1.534/t/corpus/rcpt-dne.msg 0000644 0001750 0001750 00000006707 11546616741 024304 0 ustar mstevens mstevens Delivered-To: automated-bounces+402fa706-9a58-11df-8050-eeb63452e676@email.example.com
Received: by 10.227.154.195 with SMTP id p3cs24903wbw;
Wed, 28 Jul 2010 07:56:45 -0700 (PDT)
Received: by 10.216.178.80 with SMTP id e58mr10378081wem.108.1280329005454;
Wed, 28 Jul 2010 07:56:45 -0700 (PDT)
Return-Path: <>
Received: from server2.example.co.uk (server2.example.co.uk [94.236.45.210])
by mx.google.com with ESMTP id k43si8955528weq.143.2010.07.28.07.56.45;
Wed, 28 Jul 2010 07:56:45 -0700 (PDT)
Received-SPF: pass (google.com: best guess record for domain of server2.example.co.uk designates 94.236.45.210 as permitted sender) client-ip=94.236.45.210;
Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of server2.example.co.uk designates 94.236.45.210 as permitted sender) smtp.mail=
Received: by server2.example.co.uk (Postfix)
id 30B4EB58162; Wed, 28 Jul 2010 15:56:45 +0100 (BST)
Date: Wed, 28 Jul 2010 15:56:45 +0100 (BST)
From: MAILER-DAEMON@server2.example.co.uk (Mail Delivery System)
Subject: Undelivered Mail Returned to Sender
To: automated-bounces+402FA706-9A58-11DF-8050-EEB63452E676@email.example.com
Auto-Submitted: auto-replied
MIME-Version: 1.0
Content-Type: multipart/report; report-type=delivery-status;
boundary="EAB68B58165.1280329005/server2.example.co.uk"
Message-Id: <20100728145645.30B4EB58162@server2.example.co.uk>
This is a MIME-encapsulated message.
--EAB68B58165.1280329005/server2.example.co.uk
Content-Description: Notification
Content-Type: text/plain; charset=us-ascii
This is the mail system at host server2.example.co.uk.
I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.
For further assistance, please send mail to
If you do so, please include this problem report. You can
delete your own text from the attached returned message.
The mail system
: host mx1.example.net[213.8.161.228] said: 554 Rcpt
does not exist (in reply to end of DATA command)
--EAB68B58165.1280329005/server2.example.co.uk
Content-Description: Delivery report
Content-Type: message/delivery-status
Reporting-MTA: dns; server2.example.co.uk
X-Postfix-Queue-ID: EAB68B58165
X-Postfix-Sender: rfc822; automated-bounces+402FA706-9A58-11DF-8050-EEB63452E676@email.example.com
Arrival-Date: Wed, 28 Jul 2010 15:56:06 +0100 (BST)
Final-Recipient: rfc822; recipient@example.net
Action: failed
Status: 5.0.0
Remote-MTA: dns; mx1.example.net
Diagnostic-Code: smtp; 554 Rcpt does not exist
--EAB68B58165.1280329005/server2.example.co.uk
Content-Description: Undelivered Message Headers
Content-Type: text/rfc822-headers
Received: by server2.example.co.uk (Postfix, from userid 507)
id EAB68B58165; Wed, 28 Jul 2010 15:56:06 +0100 (BST)
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Type: multipart/related; boundary="_----------=_1280328966260510"
X-Mailer: MIME::Lite 3.027 (F2.77; T1.28; A2.04; B3.08; Q3.08)
Date: Wed, 28 Jul 2010 15:56:06 +0100
From: Fred Bloggs
Subject: foo
List-Unsubscribe:
To: John Smith
Message-Id: <20100728145606.EAB68B58165@server2.example.co.uk>
--EAB68B58165.1280329005/server2.example.co.uk--
Mail-DeliveryStatus-BounceParser-1.534/t/corpus/user-unknown-bad.msg 0000644 0001750 0001750 00000010333 11712226160 025740 0 ustar mstevens mstevens Delivered-To: automated-bounces+6db3c2be-4c9c-11e1-80d5-8f8518a70fd3@email.example.com
Received: by 10.52.116.40 with SMTP id jt8cs301101vdb;
Tue, 31 Jan 2012 22:17:37 -0800 (PST)
Received: by 10.180.103.97 with SMTP id fv1mr39756064wib.17.1328077056472;
Tue, 31 Jan 2012 22:17:36 -0800 (PST)
Return-Path: <>
Received: from admin1.example.co.uk (admin1.example.co.uk. [94.236.45.212])
by mx.google.com with ESMTP id n55si6082796weq.16.2012.01.31.22.17.36;
Tue, 31 Jan 2012 22:17:36 -0800 (PST)
Received-SPF: pass (google.com: domain of admin1.example.co.uk designates 94.236.45.212 as permitted sender) client-ip=94.236.45.212;
Authentication-Results: mx.google.com; spf=pass (google.com: domain of admin1.example.co.uk designates 94.236.45.212 as permitted sender) smtp.mail=
Received: by admin1.example.co.uk (Postfix)
id 1127D651218; Wed, 1 Feb 2012 06:17:36 +0000 (GMT)
Date: Wed, 1 Feb 2012 06:17:36 +0000 (GMT)
From: MAILER-DAEMON@admin1.example.co.uk (Mail Delivery System)
Subject: Undelivered Mail Returned to Sender
To: automated-bounces+6DB3C2BE-4C9C-11E1-80D5-8F8518A70FD3@email.example.com
Auto-Submitted: auto-replied
MIME-Version: 1.0
Content-Type: multipart/report; report-type=delivery-status;
boundary="B1E00651215.1328077056/admin1.example.co.uk"
Message-Id: <20120201061736.1127D651218@admin1.example.co.uk>
This is a MIME-encapsulated message.
--B1E00651215.1328077056/admin1.example.co.uk
Content-Description: Notification
Content-Type: text/plain; charset=us-ascii
This is the mail system at host admin1.example.co.uk.
I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.
For further assistance, please send mail to
If you do so, please include this problem report. You can
delete your own text from the attached returned message.
The mail system
: host mailserv.sample.ac.uk[144.124.16.43] said: 550
BAD_RECIPIENT - see
http://www.mail.sample.ac.uk/undelivered.php?r=BAD_RECIPIENT&e=YXBwMDlAYWJlci5hYy51aw==
(in reply to RCPT TO command)
--B1E00651215.1328077056/admin1.example.co.uk
Content-Description: Delivery report
Content-Type: message/delivery-status
Reporting-MTA: dns; admin1.example.co.uk
X-Postfix-Queue-ID: B1E00651215
X-Postfix-Sender: rfc822; automated-bounces+6DB3C2BE-4C9C-11E1-80D5-8F8518A70FD3@email.example.com
Arrival-Date: Wed, 1 Feb 2012 06:17:33 +0000 (GMT)
Final-Recipient: rfc822; recipient@example.net
Action: failed
Status: 5.0.0
Remote-MTA: dns; mailserv.sample.ac.uk
Diagnostic-Code: smtp; 550 BAD_RECIPIENT - see
http://www.mail.sample.ac.uk/undelivered.php?r=BAD_RECIPIENT&e=YXBwMDlAYWJlci5hYy51aw==
--B1E00651215.1328077056/admin1.example.co.uk
Content-Description: Undelivered Message
Content-Type: message/rfc822
Received: by admin1.example.co.uk (Postfix, from userid 507)
id B1E00651215; Wed, 1 Feb 2012 06:17:33 +0000 (GMT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=email.example.com;
s=default10; t=1328077053;
bh=JRg08kfVugR9Z2V004oe25JfyrnfIzpBXUj80fGomUw=;
h=MIME-Version:Content-Transfer-Encoding:Content-Type:Date:From:
Subject:List-Unsubscribe:To:Message-Id;
b=mRzuW9hDQe9tS+nhw/M02fKrwp0u0YccBWfGDq6wbsvXrZ/Pc1Amgz2s0fVTP1qeF
m5NBw4oC/L3eDMTOhfw1eWupJrNCYncmnc4m5Ydl8Gq0R0xGIXPIYTCJ919wPi8l6R
mqG7k2z3xBSP0SLQo6gwGgQVpsZYvzlulBnS8Wc0=
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Type: multipart/related; boundary="_----------=_1328077053279826"
X-Mailer: MIME::Lite 3.027 (F2.78; T1.31; A2.07; B3.13; Q3.13)
Date: Wed, 1 Feb 2012 06:17:33 +0000
From: Fred Bloggs
Subject: Foo
X-Campaignid: example20100819.2
List-Unsubscribe:
To: John Smith
Message-Id: <20120201061733.B1E00651215@admin1.example.co.uk>
This is a multi-part message in MIME format.
--_----------=_1328077053279826
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html
FOO
--_----------=_1328077053279826--
--B1E00651215.1328077056/admin1.example.co.uk--
Mail-DeliveryStatus-BounceParser-1.534/t/corpus/doesnotexist.msg 0000644 0001750 0001750 00000007652 11546616741 025320 0 ustar mstevens mstevens Delivered-To: automated-bounces+a54577cc-02c9-11e0-8b82-1265dd31f8f5@email.example2.com
Received: by 10.216.139.130 with SMTP id c2cs14202wej;
Wed, 8 Dec 2010 04:49:52 -0800 (PST)
Received: by 10.227.28.228 with SMTP id n36mr8829100wbc.70.1291812592184;
Wed, 08 Dec 2010 04:49:52 -0800 (PST)
Return-Path: <>
Received: from server4.example2.co.uk (server4.example2.co.uk [94.236.45.212])
by mx.google.com with ESMTP id k3si793913wbx.29.2010.12.08.04.49.51;
Wed, 08 Dec 2010 04:49:52 -0800 (PST)
Received-SPF: pass (google.com: best guess record for domain of server4.example2.co.uk designates 94.236.45.212 as permitted sender) client-ip=94.236.45.212;
Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of server4.example2.co.uk designates 94.236.45.212 as permitted sender) smtp.mail=
Received: by server4.example2.co.uk (Postfix)
id DDA011658177; Wed, 8 Dec 2010 12:49:51 +0000 (GMT)
Date: Wed, 8 Dec 2010 12:49:51 +0000 (GMT)
From: MAILER-DAEMON@server4.example2.co.uk (Mail Delivery System)
Subject: Undelivered Mail Returned to Sender
To: automated-bounces+A54577CC-02C9-11E0-8B82-1265DD31F8F5@email.example2.com
Auto-Submitted: auto-replied
MIME-Version: 1.0
Content-Type: multipart/report; report-type=delivery-status;
boundary="9BAC016581C7.1291812591/server4.example2.co.uk"
Content-Transfer-Encoding: 8bit
Message-Id: <20101208124951.DDA011658177@server4.example2.co.uk>
This is a MIME-encapsulated message.
--9BAC016581C7.1291812591/server4.example2.co.uk
Content-Description: Notification
Content-Type: text/plain; charset=us-ascii
This is the mail system at host server4.example2.co.uk.
I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.
For further assistance, please send mail to
If you do so, please include this problem report. You can
delete your own text from the attached returned message.
The mail system
: host pop3.example.net[65.111.222.25] said: 550 User
[recipient@example.net] does not exist (in reply to RCPT TO command)
--9BAC016581C7.1291812591/server4.example2.co.uk
Content-Description: Delivery report
Content-Type: message/delivery-status
Reporting-MTA: dns; server4.example2.co.uk
X-Postfix-Queue-ID: 9BAC016581C7
X-Postfix-Sender: rfc822; automated-bounces+A54577CC-02C9-11E0-8B82-1265DD31F8F5@email.example2.com
Arrival-Date: Wed, 8 Dec 2010 12:49:50 +0000 (GMT)
Final-Recipient: rfc822; recipient@example.net
Action: failed
Status: 5.0.0
Remote-MTA: dns; pop3.example.net
Diagnostic-Code: smtp; 550 User [recipient@example.net] does not exist
--9BAC016581C7.1291812591/server4.example2.co.uk
Content-Description: Undelivered Message
Content-Type: message/rfc822
Content-Transfer-Encoding: 8bit
Received: by server4.example2.co.uk (Postfix, from userid 507)
id 9BAC016581C7; Wed, 8 Dec 2010 12:49:50 +0000 (GMT)
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Type: multipart/alternative; boundary="_----------=_129181259010314528"
X-Mailer: MIME::Lite 3.027 (F2.77; T1.28; A2.04; B3.08; Q3.08)
Date: Wed, 8 Dec 2010 12:49:50 +0000
From: Fred Bloggs
Subject: foo
X-Campaignid: example220101008.1
List-Unsubscribe:
To: recipient
Message-Id: <20101208124950.9BAC016581C7@server4.example2.co.uk>
This is a multi-part message in MIME format.
--_----------=_129181259010314528
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Text
--_----------=_129181259010314528
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html
HTML
--_----------=_129181259010314528--
--9BAC016581C7.1291812591/server4.example2.co.uk--
Mail-DeliveryStatus-BounceParser-1.534/t/corpus/att-via-sendmail.unknown.msg 0000644 0001750 0001750 00000007172 11546616741 027422 0 ustar mstevens mstevens Return-Path:
Received: from somehost.example.com (somehost.example.com [192.168.120.100])
by somehost.example.com (8.12.11.20060308/8.12.11) with ESMTP id k56Lt0PN013318
(version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO)
for ; Tue, 6 Jun 2006 14:55:21 -0700
Received: from localhost (localhost)
by somehost.example.com (8.12.11.20060308/8.12.11) id k56Lt0jZ000492;
Tue, 6 Jun 2006 14:55:00 -0700
Date: Tue, 6 Jun 2006 14:55:00 -0700
From: Mail Delivery Subsystem
Message-Id: <200606062155.k56Lt0jZ000492@somehost.example.com>
To:
MIME-Version: 1.0
Content-Type: multipart/report; report-type=delivery-status;
boundary="k56Lt0jZ000492.1149630900/somehost.example.com"
Content-Transfer-Encoding: binary
Subject: Returned mail: see transcript for details
Auto-Submitted: auto-generated (failure)
X-Virus-Scanned: ClamAV version 0.88.1, clamav-milter version 0.88.1 on localhost
X-Virus-Status: Clean
This is a MIME-encapsulated message
--k56Lt0jZ000492.1149630900/somehost.example.com
The original message was received at Tue, 6 Jun 2006 14:54:50 -0700
from localhost [127.0.0.1]
----- The following addresses had permanent fatal errors -----
(reason: 550 [SUSPEND] Mailbox currently suspended - Please contact correspondent directly)
----- Transcript of session follows -----
... while talking to gateway1.att.net.:
>>> DATA
<<< 550 [SUSPEND] Mailbox currently suspended - Please contact correspondent directly
550 5.1.1 ... User unknown
<<< 503 need RCPT command [data]
--k56Lt0jZ000492.1149630900/somehost.example.com
Content-Type: message/delivery-status
Reporting-MTA: dns; somehost.example.com
Received-From-MTA: DNS; localhost
Arrival-Date: Tue, 6 Jun 2006 14:54:50 -0700
Final-Recipient: RFC822; recipient@example.net
Action: failed
Status: 5.1.1
Remote-MTA: DNS; gateway1.att.net
Diagnostic-Code: SMTP; 550 [SUSPEND] Mailbox currently suspended - Please contact correspondent directly
Last-Attempt-Date: Tue, 6 Jun 2006 14:55:00 -0700
--k56Lt0jZ000492.1149630900/somehost.example.com
Content-Type: message/rfc822
Content-Transfer-Encoding: binary
Return-Path:
Received: from somehost.example.com (localhost [127.0.0.1])
by somehost.example.com (8.12.11.20060308/8.12.11) with ESMTP id k56LsJrb032469
for ; Tue, 6 Jun 2006 14:54:50 -0700
Received: (from sender@localhost)
by somehost.example.com (8.12.11.20060308/8.12.11/Submit) id k56LEi01030480
for recipient@example.net; Tue, 6 Jun 2006 14:14:44 -0700
Date: Tue, 6 Jun 2006 14:14:44 -0700
Message-Id: <200606062114.k56LEi01030480@somehost.example.com>
Content-Type: multipart/alternative;
boundary="----------=_1149628484-19504-2855"
Content-Transfer-Encoding: binary
MIME-Version: 1.0
X-Mailer: MIME-tools 5.415 (Entity 5.415)
From: Sender Address
To: Sender Address
Subject: Test Bounce
This is a multi-part message in MIME format...
------------=_1149628484-19504-2855
Content-Type: text/plain
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Plain text part
------------=_1149628484-19504-2855
Content-Type: text/html
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Test Bounce Message
Test HTML part here.
------------=_1149628484-19504-2855--
--k56Lt0jZ000492.1149630900/somehost.example.com--
Mail-DeliveryStatus-BounceParser-1.534/t/corpus/warning-3.msg 0000644 0001750 0001750 00000007064 11546616741 024372 0 ustar mstevens mstevens Delivered-To: automated-bounces@example.com
Received: by 10.204.118.69 with SMTP id u5cs196500bkq;
Tue, 7 Jul 2009 16:34:56 -0700 (PDT)
Received: by 10.210.81.9 with SMTP id e9mr7838504ebb.42.1247009696163;
Tue, 07 Jul 2009 16:34:56 -0700 (PDT)
Return-Path: <>
Received: from server4.example.co.uk (server4.example.co.uk [212.100.234.46])
by mx.google.com with ESMTP id 20si15991408ewy.65.2009.07.07.16.34.55;
Tue, 07 Jul 2009 16:34:56 -0700 (PDT)
Received-SPF: pass (google.com: best guess record for domain of server4.example.co.uk designates 212.100.234.46 as permitted sender) client-ip=212.100.234.46;
Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of server4.example.co.uk designates 212.100.234.46 as permitted sender) smtp.mail=
Received: by server4.example.co.uk (Postfix)
id BDA4871C4D9; Wed, 8 Jul 2009 00:34:55 +0100 (BST)
Date: Wed, 8 Jul 2009 00:34:55 +0100 (BST)
From: MAILER-DAEMON@server4.example.co.uk (Mail Delivery System)
Subject: Undelivered Mail Returned to Sender
To: automated-bounces@example.com
MIME-Version: 1.0
Content-Type: multipart/report; report-type=delivery-status;
boundary="6434D71C4D7.1247009695/server4.example.co.uk"
Content-Transfer-Encoding: 8bit
Message-Id: <20090707233455.BDA4871C4D9@server4.example.co.uk>
This is a MIME-encapsulated message.
--6434D71C4D7.1247009695/server4.example.co.uk
Content-Description: Notification
Content-Type: text/plain
This is the Postfix program at host server4.example.co.uk.
I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.
For further assistance, please send mail to
If you do so, please include this problem report. You can
delete your own text from the attached returned message.
The Postfix program
<1@server4.example.co.uk> (expanded from <1>): unknown user: "1"
--6434D71C4D7.1247009695/server4.example.co.uk
Content-Description: Delivery report
Content-Type: message/delivery-status
Reporting-MTA: dns; server4.example.co.uk
X-Postfix-Queue-ID: 6434D71C4D7
X-Postfix-Sender: rfc822; automated-bounces@example.com
Arrival-Date: Wed, 8 Jul 2009 00:34:54 +0100 (BST)
Final-Recipient: rfc822; 1@server4.example.co.uk
Original-Recipient: rfc822; 1
Action: failed
Status: 5.0.0
Diagnostic-Code: X-Postfix; unknown user: "1"
--6434D71C4D7.1247009695/server4.example.co.uk
Content-Description: Undelivered Message
Content-Type: message/rfc822
Content-Transfer-Encoding: 8bit
Received: by server4.example.co.uk (Postfix, from userid 507)
id 6434D71C4D7; Wed, 8 Jul 2009 00:34:54 +0100 (BST)
MIME-Version: 1.0
Content-Transfer-Encoding: binary
Content-Type: multipart/mixed; boundary="_----------=_124700969427088193"
X-Mailer: MIME::Lite 3.021 (F2.73; T1.22; A2.04; B3.08; Q3.08)
Date: Wed, 8 Jul 2009 00:34:54 +0100
From: sales@example.co.uk
To: 1@server4.example.co.uk
Subject: bleh
Message-Id: <20090707233454.6434D71C4D7@server4.example.co.uk>
This is a multi-part message in MIME format.
--_----------=_124700969427088193
Content-Disposition: attachment; filename="foo.CSV"
Content-Length: 638
Content-Transfer-Encoding: binary
Content-Type: text/plain; name="foo.CSV"
foo
--_----------=_124700969427088193
Content-Disposition: inline
Content-Length: 537
Content-Transfer-Encoding: binary
Content-Type: text/plain
Content.
------------------------------------------------------
--_----------=_124700969427088193--
--6434D71C4D7.1247009695/server4.example.co.uk--
Mail-DeliveryStatus-BounceParser-1.534/t/corpus/spam-rejection21.msg 0000644 0001750 0001750 00000007333 11633666142 025644 0 ustar mstevens mstevens Delivered-To: automated-bounces+7f927056-da33-11e0-b766-b42e2e334e9c@email.sample.com
Received: by 10.231.35.202 with SMTP id q10cs23785ibd;
Thu, 8 Sep 2011 08:59:18 -0700 (PDT)
Received: by 10.227.113.73 with SMTP id z9mr934843wbp.8.1315497557355;
Thu, 08 Sep 2011 08:59:17 -0700 (PDT)
Return-Path: <>
Received: from admin1.sample.co.uk (admin1.sample.co.uk [94.236.45.212])
by mx.google.com with ESMTP id b5si3902025wbh.103.2011.09.08.08.59.15;
Thu, 08 Sep 2011 08:59:16 -0700 (PDT)
Received-SPF: pass (google.com: domain of admin1.sample.co.uk designates 94.236.45.212 as permitted sender) client-ip=94.236.45.212;
Authentication-Results: mx.google.com; spf=pass (google.com: domain of admin1.sample.co.uk designates 94.236.45.212 as permitted sender) smtp.mail=
Received: by admin1.sample.co.uk (Postfix)
id A641D65102B; Thu, 8 Sep 2011 16:59:15 +0100 (BST)
Date: Thu, 8 Sep 2011 16:59:15 +0100 (BST)
From: MAILER-DAEMON@admin1.sample.co.uk (Mail Delivery System)
Subject: Undelivered Mail Returned to Sender
To: automated-bounces+7F927056-DA33-11E0-B766-B42E2E334E9C@email.sample.com
Auto-Submitted: auto-replied
MIME-Version: 1.0
Content-Type: multipart/report; report-type=delivery-status;
boundary="F1C1A65102F.1315497555/admin1.sample.co.uk"
Message-Id: <20110908155915.A641D65102B@admin1.sample.co.uk>
This is a MIME-encapsulated message.
--F1C1A65102F.1315497555/admin1.sample.co.uk
Content-Description: Notification
Content-Type: text/plain; charset=us-ascii
This is the mail system at host admin1.sample.co.uk.
I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.
For further assistance, please send mail to
If you do so, please include this problem report. You can
delete your own text from the attached returned message.
The mail system
: host ncmail2.sample3.com[205.139.105.11]
said: 554 5.7.1 Message cannot be accepted, content filter rejection
bbSpamReject>7.5 (in reply to end of DATA command)
--F1C1A65102F.1315497555/admin1.sample.co.uk
Content-Description: Delivery report
Content-Type: message/delivery-status
Reporting-MTA: dns; admin1.sample.co.uk
X-Postfix-Queue-ID: F1C1A65102F
X-Postfix-Sender: rfc822; automated-bounces+7F927056-DA33-11E0-B766-B42E2E334E9C@email.sample.com
Arrival-Date: Thu, 8 Sep 2011 16:59:13 +0100 (BST)
Final-Recipient: rfc822; john.smith@example.org.uk
Action: failed
Status: 5.7.1
Remote-MTA: dns; ncmail2.sample3.com
Diagnostic-Code: smtp; 554 5.7.1 Message cannot be accepted, content filter
rejection bbSpamReject>7.5
--F1C1A65102F.1315497555/admin1.sample.co.uk
Content-Description: Undelivered Message
Content-Type: message/rfc822
Received: by admin1.sample.co.uk (Postfix, from userid 505)
id F1C1A65102F; Thu, 8 Sep 2011 16:59:13 +0100 (BST)
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Type: multipart/related; boundary="_----------=_131549755384674958"
X-Mailer: MIME::Lite 3.027 (F2.78; T1.31; A2.07; B3.13; Q3.13)
Date: Thu, 8 Sep 2011 16:59:13 +0100
From: Fred Bloggs
Subject: foo
X-Campaignid: sample20100819.2
List-Unsubscribe:
To: Thomas Loeffler
Message-Id: <20110908155913.F1C1A65102F@admin1.sample.co.uk>
This is a multi-part message in MIME format.
--_----------=_131549755384674958
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html
HTML goes here.
--_----------=_131549755384674958--
--F1C1A65102F.1315497555/admin1.sample.co.uk--
Mail-DeliveryStatus-BounceParser-1.534/t/corpus/comcast-via-sendmail.unknown.msg 0000644 0001750 0001750 00000006703 11546616741 030262 0 ustar mstevens mstevens Return-Path:
Received: from somehost.example.com (somehost.example.com [192.168.120.115])
by somehost.example.com (8.12.11.20060308/8.12.11) with ESMTP id k71HmEtc031797
(version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO)
for ; Tue, 1 Aug 2006 10:48:14 -0700
Received: from localhost (localhost)
by somehost.example.com (8.12.11.20060308/8.12.11) id k71HmEfS028945;
Tue, 1 Aug 2006 10:48:14 -0700
Date: Tue, 1 Aug 2006 10:48:14 -0700
From: Mail Delivery Subsystem
Message-Id: <200608011748.k71HmEfS028945@somehost.example.com>
To:
MIME-Version: 1.0
Content-Type: multipart/report; report-type=delivery-status;
boundary="k71HmEfS028945.1154454494/somehost.example.com"
Content-Transfer-Encoding: binary
Subject: Returned mail: see transcript for details
Auto-Submitted: auto-generated (failure)
This is a MIME-encapsulated message
--k71HmEfS028945.1154454494/somehost.example.com
The original message was received at Tue, 1 Aug 2006 10:48:04 -0700
from localhost [127.0.0.1]
----- The following addresses had permanent fatal errors -----
(reason: 551 not our customer)
----- Transcript of session follows -----
... while talking to gateway-a.comcast.net.:
<<< 450 busy - please try later
... while talking to gateway-s.comcast.net.:
>>> DATA
<<< 551 not our customer
550 5.1.1 ... User unknown
<<< 503 need RCPT command [data]
--k71HmEfS028945.1154454494/somehost.example.com
Content-Type: message/delivery-status
Reporting-MTA: dns; somehost.example.com
Received-From-MTA: DNS; localhost
Arrival-Date: Tue, 1 Aug 2006 10:48:04 -0700
Final-Recipient: RFC822; recipient@example.net
Action: failed
Status: 5.1.6
Remote-MTA: DNS; gateway-s.comcast.net
Diagnostic-Code: SMTP; 551 not our customer
Last-Attempt-Date: Tue, 1 Aug 2006 10:48:14 -0700
--k71HmEfS028945.1154454494/somehost.example.com
Content-Type: message/rfc822
Content-Transfer-Encoding: binary
Return-Path:
Received: from somehost.example.com (localhost [127.0.0.1])
by somehost.example.com (8.12.11.20060308/8.12.11) with ESMTP id k71HjSW6023431
for ; Tue, 1 Aug 2006 10:48:04 -0700
Received: (from sender@localhost)
by somehost.example.com (8.12.11.20060308/8.12.11/Submit) id k71HjChr023017
for recipient@example.net; Tue, 1 Aug 2006 10:45:12 -0700
Date: Tue, 1 Aug 2006 10:45:12 -0700
Message-Id: <200608011745.k71HjChr023017@somehost.example.com>
Content-Type: multipart/alternative;
boundary="----------=_1154454312-19747-1634"
Content-Transfer-Encoding: binary
MIME-Version: 1.0
X-Mailer: MIME-tools 5.415 (Entity 5.415)
From: Sender Address
To: Sender Address
Subject: Test Bounce Message
This is a multi-part message in MIME format...
------------=_1154454312-19747-1634
Content-Type: text/plain
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Plaintext stuff here.
------------=_1154454312-19747-1634
Content-Type: text/html
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Test Bounce Message
Test HTML part here.
------------=_1154454312-19747-1634--
--k71HmEfS028945.1154454494/somehost.example.com--
Mail-DeliveryStatus-BounceParser-1.534/t/corpus/spamassassin.msg 0000644 0001750 0001750 00000007010 11546616741 025261 0 ustar mstevens mstevens Delivered-To: automated-bounces@example.com
Received: by 10.211.179.3 with SMTP id g3cs24102ebp;
Thu, 16 Jul 2009 08:52:41 -0700 (PDT)
Received: by 10.210.82.2 with SMTP id f2mr1786123ebb.16.1247759561164;
Thu, 16 Jul 2009 08:52:41 -0700 (PDT)
Return-Path: <>
Received: from server4.example.co.uk (server4.example.co.uk [212.100.234.46])
by mx.google.com with ESMTP id 6si324106ewy.30.2009.07.16.08.52.41;
Thu, 16 Jul 2009 08:52:41 -0700 (PDT)
Received-SPF: pass (google.com: best guess record for domain of server4.example.co.uk designates 212.100.234.46 as permitted sender) client-ip=212.100.234.46;
Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of server4.example.co.uk designates 212.100.234.46 as permitted sender) smtp.mail=
Received: by server4.example.co.uk (Postfix)
id 006F971DEB3; Thu, 16 Jul 2009 16:52:41 +0100 (BST)
Date: Thu, 16 Jul 2009 16:52:41 +0100 (BST)
From: MAILER-DAEMON@server4.example.co.uk (Mail Delivery System)
Subject: Undelivered Mail Returned to Sender
To: automated-bounces@example.com
MIME-Version: 1.0
Content-Type: multipart/report; report-type=delivery-status;
boundary="4754671DEA0.1247759561/server4.example.co.uk"
Content-Transfer-Encoding: 8bit
Message-Id: <20090716155241.006F971DEB3@server4.example.co.uk>
This is a MIME-encapsulated message.
--4754671DEA0.1247759561/server4.example.co.uk
Content-Description: Notification
Content-Type: text/plain
This is the Postfix program at host server4.example.co.uk.
I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.
For further assistance, please send mail to
If you do so, please include this problem report. You can
delete your own text from the attached returned message.
The Postfix program
: host mx.exampleclient.com[1.2.3.4] said: 550
5.7.1 Blocked by SpamAssassin (in reply to end of DATA command)
--4754671DEA0.1247759561/server4.example.co.uk
Content-Description: Delivery report
Content-Type: message/delivery-status
Reporting-MTA: dns; server4.example.co.uk
X-Postfix-Queue-ID: 4754671DEA0
X-Postfix-Sender: rfc822; automated-bounces@example.com
Arrival-Date: Thu, 16 Jul 2009 16:52:38 +0100 (BST)
Final-Recipient: rfc822; exampleuser@exampleclient.com
Action: failed
Status: 5.0.0
Diagnostic-Code: X-Postfix; host mx.exampleclient.com[1.2.3.4] said: 550
5.7.1 Blocked by SpamAssassin (in reply to end of DATA command)
--4754671DEA0.1247759561/server4.example.co.uk
Content-Description: Undelivered Message
Content-Type: message/rfc822
Content-Transfer-Encoding: 8bit
Received: by server4.example.co.uk (Postfix, from userid 507)
id 4754671DEA0; Thu, 16 Jul 2009 16:52:38 +0100 (BST)
MIME-Version: 1.0
Content-Transfer-Encoding: binary
Content-Type: multipart/related; boundary="_----------=_1247759558130622758"
X-Mailer: MIME::Lite 3.021 (F2.73; T1.22; A2.04; B3.08; Q3.08)
Date: Thu, 16 Jul 2009 16:52:38 +0100
From: Customer Services
To: exampleuser@exampleclient.com
Subject: BLEH
List-Unsubscribe: <>
Message-Id: <20090716155238.4754671DEA0@server4.example.co.uk>
This is a multi-part message in MIME format.
--_----------=_1247759558130622758
Content-Disposition: inline
Content-Length: 3361
Content-Transfer-Encoding: binary
Content-Type: text/html
body
--_----------=_1247759558130622758--
--4754671DEA0.1247759561/server4.example.co.uk--
Mail-DeliveryStatus-BounceParser-1.534/t/corpus/spam-rejection19.msg 0000644 0001750 0001750 00000010045 11615550470 025641 0 ustar mstevens mstevens Delivered-To: automated-bounces+5f3c8d9e-b852-11e0-a0dd-d22393a91d63@email.example.com
Received: by 10.142.214.7 with SMTP id m7cs197072wfg;
Wed, 27 Jul 2011 06:14:40 -0700 (PDT)
Received: by 10.216.229.86 with SMTP id g64mr2792952weq.50.1311772478844;
Wed, 27 Jul 2011 06:14:38 -0700 (PDT)
Return-Path: <>
Received: from admin1.example.co.uk (admin1.example.co.uk [94.236.45.212])
by mx.google.com with ESMTP id i48si208064wed.60.2011.07.27.06.14.37;
Wed, 27 Jul 2011 06:14:37 -0700 (PDT)
Received-SPF: pass (google.com: domain of admin1.example.co.uk designates 94.236.45.212 as permitted sender) client-ip=94.236.45.212;
Authentication-Results: mx.google.com; spf=pass (google.com: domain of admin1.example.co.uk designates 94.236.45.212 as permitted sender) smtp.mail=
Received: by admin1.example.co.uk (Postfix)
id CFE8A651069; Wed, 27 Jul 2011 14:14:36 +0100 (BST)
Date: Wed, 27 Jul 2011 14:14:36 +0100 (BST)
From: MAILER-DAEMON@admin1.example.co.uk (Mail Delivery System)
Subject: Undelivered Mail Returned to Sender
To: automated-bounces+5F3C8D9E-B852-11E0-A0DD-D22393A91D63@email.example.com
Auto-Submitted: auto-replied
MIME-Version: 1.0
Content-Type: multipart/report; report-type=delivery-status;
boundary="9317465105F.1311772476/admin1.example.co.uk"
Message-Id: <20110727131436.CFE8A651069@admin1.example.co.uk>
This is a MIME-encapsulated message.
--9317465105F.1311772476/admin1.example.co.uk
Content-Description: Notification
Content-Type: text/plain; charset=us-ascii
This is the mail system at host admin1.example.co.uk.
I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.
For further assistance, please send mail to
If you do so, please include this problem report. You can
delete your own text from the attached returned message.
The mail system
: host inbound.registeredsite.com[66.97.46.122] said:
554 5.7.1 The message from
()
with the subject of (foo) matches a profile
the Internet community may consider spam. Please revise your message before
resending. (in reply to end of DATA command)
--9317465105F.1311772476/admin1.example.co.uk
Content-Description: Delivery report
Content-Type: message/delivery-status
Reporting-MTA: dns; admin1.example.co.uk
X-Postfix-Queue-ID: 9317465105F
X-Postfix-Sender: rfc822; automated-bounces+5F3C8D9E-B852-11E0-A0DD-D22393A91D63@email.example.com
Arrival-Date: Wed, 27 Jul 2011 14:14:34 +0100 (BST)
Final-Recipient: rfc822; ws@sample.net
Action: failed
Status: 5.7.1
Remote-MTA: dns; inbound.registeredsite.com
Diagnostic-Code: smtp; 554 5.7.1 The message from
()
with the subject of (foo) matches a profile
the Internet community may consider spam. Please revise your message before
resending.
--9317465105F.1311772476/admin1.example.co.uk
Content-Description: Undelivered Message
Content-Type: message/rfc822
Received: by admin1.example.co.uk (Postfix, from userid 507)
id 9317465105F; Wed, 27 Jul 2011 14:14:34 +0100 (BST)
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Type: multipart/related; boundary="_----------=_131177247421185112"
X-Mailer: MIME::Lite 3.027 (F2.78; T1.31; A2.07; B3.13; Q3.13)
Date: Wed, 27 Jul 2011 14:14:34 +0100
From: Julia Stevens
Subject: foo
X-Campaignid: example20100819.2
List-Unsubscribe:
To: Fred Bloggs
Message-Id: <20110727131434.9317465105F@admin1.example.co.uk>
This is a multi-part message in MIME format.
--_----------=_131177247421185112
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html
HTML
--_----------=_131177247421185112--
--9317465105F.1311772476/admin1.example.co.uk--
Mail-DeliveryStatus-BounceParser-1.534/t/corpus/spam-rejection3.msg 0000644 0001750 0001750 00000007755 11546616741 025577 0 ustar mstevens mstevens Delivered-To: automated-bounces+34df9a6a-2531-11df-8a35-bde1fcd165a0@email.example.com
Received: by 10.216.173.129 with SMTP id v1cs468060wel;
Mon, 1 Mar 2010 04:52:23 -0800 (PST)
Received: by 10.220.127.93 with SMTP id f29mr3159170vcs.61.1267447943120;
Mon, 01 Mar 2010 04:52:23 -0800 (PST)
Return-Path: <>
Received: from server4.example.co.uk (server4.example.co.uk [94.236.45.212])
by mx.google.com with ESMTP id 29si10430469vws.37.2010.03.01.04.52.22;
Mon, 01 Mar 2010 04:52:22 -0800 (PST)
Received-SPF: pass (google.com: best guess record for domain of server4.example.co.uk designates 94.236.45.212 as permitted sender) client-ip=94.236.45.212;
Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of server4.example.co.uk designates 94.236.45.212 as permitted sender) smtp.mail=
Received: by server4.example.co.uk (Postfix)
id C9AD916581FC; Mon, 1 Mar 2010 12:52:21 +0000 (GMT)
Date: Mon, 1 Mar 2010 12:52:21 +0000 (GMT)
From: MAILER-DAEMON@server4.example.co.uk (Mail Delivery System)
Subject: Undelivered Mail Returned to Sender
To: automated-bounces+34DF9A6A-2531-11DF-8A35-BDE1FCD165A0@email.example.com
Auto-Submitted: auto-replied
MIME-Version: 1.0
Content-Type: multipart/report; report-type=delivery-status;
boundary="7FD0D16581BB.1267447941/server4.example.co.uk"
Message-Id: <20100301125221.C9AD916581FC@server4.example.co.uk>
This is a MIME-encapsulated message.
--7FD0D16581BB.1267447941/server4.example.co.uk
Content-Description: Notification
Content-Type: text/plain; charset=us-ascii
This is the mail system at host server4.example.co.uk.
I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.
For further assistance, please send mail to
If you do so, please include this problem report. You can
delete your own text from the attached returned message.
The mail system
: host mx01.b.c[194.14.211.245] said: 550
5.7.1 Message rejected as spam by Content Filtering. (in reply to end of
DATA command)
--7FD0D16581BB.1267447941/server4.example.co.uk
Content-Description: Delivery report
Content-Type: message/delivery-status
Reporting-MTA: dns; server4.example.co.uk
X-Postfix-Queue-ID: 7FD0D16581BB
X-Postfix-Sender: rfc822; automated-bounces+34DF9A6A-2531-11DF-8A35-BDE1FCD165A0@email.example.com
Arrival-Date: Mon, 1 Mar 2010 12:51:51 +0000 (GMT)
Final-Recipient: rfc822; aaa@b.c
Action: failed
Status: 5.7.1
Remote-MTA: dns; mx01.b.c
Diagnostic-Code: smtp; 550 5.7.1 Message rejected as spam by Content Filtering.
--7FD0D16581BB.1267447941/server4.example.co.uk
Content-Description: Undelivered Message
Content-Type: message/rfc822
Received: by server4.example.co.uk (Postfix, from userid 505)
id 7FD0D16581BB; Mon, 1 Mar 2010 12:51:51 +0000 (GMT)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=email.example.com;
s=default10; t=1267447911;
bh=FW+DIO7nSsjqe7IUlXrYT1gxRp84EAVtHbm/rchvLic=;
h=MIME-Version:Content-Transfer-Encoding:Content-Type:Date:From:
Subject:List-Unsubscribe:To:Message-Id;
b=OvAIWr1Twlnu3eGyK5HgQt+2aJo0Nkn1Lj7moNe7xwxeNgLy7VWh4Um1hqRHKMvIz
T1UHHewEAaxa1hyzzWzZzPqINy8GVwMUJA0S7XY+WtSn171qmYsvfXgYdMdnGJuX4q
n1kHayojDPCbhS1ThjKpcqUSwyICbjD896ROCxbQ=
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Type: multipart/related; boundary="_----------=_12674479112835980"
X-Mailer: MIME::Lite 3.027 (F2.77; T1.28; A2.04; B3.08; Q3.08)
Date: Mon, 1 Mar 2010 12:51:51 +0000
From: Customer Services
Subject: test
To: Test
Message-Id: <20100301125151.7FD0D16581BB@server4.example.co.uk>
This is a multi-part message in MIME format.
--_----------=_12674479112835980
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html
HTML goes here.
--_----------=_12674479112835980--
--7FD0D16581BB.1267447941/server4.example.co.uk--
Mail-DeliveryStatus-BounceParser-1.534/t/corpus/spam-rejection29.msg 0000644 0001750 0001750 00000007160 11712224750 025643 0 ustar mstevens mstevens Delivered-To: automated-bounces+7be1d472-4b2d-11e1-9e82-a342cb4aa966@email.example.com
Received: by 10.52.116.40 with SMTP id jt8cs206783vdb;
Mon, 30 Jan 2012 02:50:22 -0800 (PST)
Received: by 10.180.14.105 with SMTP id o9mr21209595wic.11.1327920621651;
Mon, 30 Jan 2012 02:50:21 -0800 (PST)
Return-Path: <>
Received: from admin1.example.co.uk (admin1.example.co.uk. [94.236.45.212])
by mx.google.com with ESMTP id i7si3760513wed.114.2012.01.30.02.50.21;
Mon, 30 Jan 2012 02:50:21 -0800 (PST)
Received-SPF: pass (google.com: domain of admin1.example.co.uk designates 94.236.45.212 as permitted sender) client-ip=94.236.45.212;
Authentication-Results: mx.google.com; spf=pass (google.com: domain of admin1.example.co.uk designates 94.236.45.212 as permitted sender) smtp.mail=
Received: by admin1.example.co.uk (Postfix)
id 2DB1D65126B; Mon, 30 Jan 2012 10:50:21 +0000 (GMT)
Date: Mon, 30 Jan 2012 10:50:21 +0000 (GMT)
From: MAILER-DAEMON@admin1.example.co.uk (Mail Delivery System)
Subject: Undelivered Mail Returned to Sender
To: automated-bounces+7BE1D472-4B2D-11E1-9E82-A342CB4AA966@email.example.com
Auto-Submitted: auto-replied
MIME-Version: 1.0
Content-Type: multipart/report; report-type=delivery-status;
boundary="42C5A6512A6.1327920621/admin1.example.co.uk"
Message-Id: <20120130105021.2DB1D65126B@admin1.example.co.uk>
This is a MIME-encapsulated message.
--42C5A6512A6.1327920621/admin1.example.co.uk
Content-Description: Notification
Content-Type: text/plain; charset=us-ascii
This is the mail system at host admin1.example.co.uk.
I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.
For further assistance, please send mail to
If you do so, please include this problem report. You can
delete your own text from the attached returned message.
The mail system
: host service101.mimecast.com[91.220.42.51] said: 554
email rejected due to security policies - MCSpamSignature.sa.5.6 (in reply
to end of DATA command)
--42C5A6512A6.1327920621/admin1.example.co.uk
Content-Description: Delivery report
Content-Type: message/delivery-status
Reporting-MTA: dns; admin1.example.co.uk
X-Postfix-Queue-ID: 42C5A6512A6
X-Postfix-Sender: rfc822; automated-bounces+7BE1D472-4B2D-11E1-9E82-A342CB4AA966@email.example.com
Arrival-Date: Mon, 30 Jan 2012 10:30:52 +0000 (GMT)
Final-Recipient: rfc822; john.smith@sample.co.uk
Action: failed
Status: 5.0.0
Remote-MTA: dns; service101.mimecast.com
Diagnostic-Code: smtp; 554 email rejected due to security policies -
MCSpamSignature.sa.5.6
--42C5A6512A6.1327920621/admin1.example.co.uk
Content-Description: Undelivered Message
Content-Type: message/rfc822
Received: by admin1.example.co.uk (Postfix, from userid 507)
id 42C5A6512A6; Mon, 30 Jan 2012 10:30:52 +0000 (GMT)
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Type: multipart/related; boundary="_----------=_13279194522009234"
X-Mailer: MIME::Lite 3.027 (F2.78; T1.31; A2.07; B3.13; Q3.13)
Date: Mon, 30 Jan 2012 10:30:52 +0000
From: Fred Bloggs
Subject: foo
X-Campaignid: example20100819.2
To: John Smith
Message-Id: <20120130103052.42C5A6512A6@admin1.example.co.uk>
This is a multi-part message in MIME format.
--_----------=_13279194522009234
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html
HTML
--_----------=_13279194522009234--
--42C5A6512A6.1327920621/admin1.example.co.uk--
FLAGS (\Seen)
Mail-DeliveryStatus-BounceParser-1.534/t/corpus/spam-rejection20.msg 0000644 0001750 0001750 00000007200 11633402333 025622 0 ustar mstevens mstevens Delivered-To: automated-bounces+eaf5972c-d88c-11e0-889e-a83de810887e@email.example.com
Received: by 10.231.35.202 with SMTP id q10cs79640ibd;
Tue, 6 Sep 2011 06:35:54 -0700 (PDT)
Received: by 10.216.180.82 with SMTP id i60mr899061wem.92.1315316153163;
Tue, 06 Sep 2011 06:35:53 -0700 (PDT)
Return-Path: <>
Received: from admin1.example.co.uk (admin1.example.co.uk [94.236.45.212])
by mx.google.com with ESMTP id v21si6809197wec.41.2011.09.06.06.35.52;
Tue, 06 Sep 2011 06:35:53 -0700 (PDT)
Received-SPF: pass (google.com: domain of admin1.example.co.uk designates 94.236.45.212 as permitted sender) client-ip=94.236.45.212;
Authentication-Results: mx.google.com; spf=pass (google.com: domain of admin1.example.co.uk designates 94.236.45.212 as permitted sender) smtp.mail=
Received: by admin1.example.co.uk (Postfix)
id A45C165186A; Tue, 6 Sep 2011 14:35:52 +0100 (BST)
Date: Tue, 6 Sep 2011 14:35:52 +0100 (BST)
From: MAILER-DAEMON@admin1.example.co.uk (Mail Delivery System)
Subject: Undelivered Mail Returned to Sender
To: automated-bounces+EAF5972C-D88C-11E0-889E-A83DE810887E@email.example.com
Auto-Submitted: auto-replied
MIME-Version: 1.0
Content-Type: multipart/report; report-type=delivery-status;
boundary="09E8A651865.1315316152/admin1.example.co.uk"
Message-Id: <20110906133552.A45C165186A@admin1.example.co.uk>
This is a MIME-encapsulated message.
--09E8A651865.1315316152/admin1.example.co.uk
Content-Description: Notification
Content-Type: text/plain; charset=us-ascii
This is the mail system at host admin1.example.co.uk.
I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.
For further assistance, please send mail to
If you do so, please include this problem report. You can
delete your own text from the attached returned message.
The mail system
: host mail.test2.net[217.194.212.245] said: 554
Sending address not accepted due to spam filter (in reply to MAIL FROM
command)
--09E8A651865.1315316152/admin1.example.co.uk
Content-Description: Delivery report
Content-Type: message/delivery-status
Reporting-MTA: dns; admin1.example.co.uk
X-Postfix-Queue-ID: 09E8A651865
X-Postfix-Sender: rfc822; automated-bounces+EAF5972C-D88C-11E0-889E-A83DE810887E@email.example.com
Arrival-Date: Tue, 6 Sep 2011 14:34:17 +0100 (BST)
Final-Recipient: rfc822; sales@test.co.uk
Action: failed
Status: 5.0.0
Remote-MTA: dns; mail.test2.net
Diagnostic-Code: smtp; 554 Sending address not accepted due to spam filter
--09E8A651865.1315316152/admin1.example.co.uk
Content-Description: Undelivered Message
Content-Type: message/rfc822
Received: by admin1.example.co.uk (Postfix, from userid 505)
id 09E8A651865; Tue, 6 Sep 2011 14:34:17 +0100 (BST)
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Type: multipart/related; boundary="_----------=_131531605720931336"
X-Mailer: MIME::Lite 3.027 (F2.78; T1.31; A2.07; B3.13; Q3.13)
Date: Tue, 6 Sep 2011 14:34:17 +0100
From: Fred Bloggs
Subject: foo
X-Campaignid: example20100819.2
List-Unsubscribe:
To: john smith
Message-Id: <20110906133417.09E8A651865@admin1.example.co.uk>
This is a multi-part message in MIME format.
--_----------=_131531605720931336
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html
HTML
--_----------=_131531605720931336--
--09E8A651865.1315316152/admin1.example.co.uk--
Mail-DeliveryStatus-BounceParser-1.534/t/corpus/spam-rejection22.msg 0000644 0001750 0001750 00000010105 11650311157 025624 0 ustar mstevens mstevens Delivered-To: automated-bounces+64dd736c-fb14-11e0-8fd4-e50a16514328@email.example.com
Received: by 10.229.184.67 with SMTP id cj3cs207864qcb;
Thu, 20 Oct 2011 05:30:20 -0700 (PDT)
Received: by 10.216.138.221 with SMTP id a71mr4186633wej.102.1319113819652;
Thu, 20 Oct 2011 05:30:19 -0700 (PDT)
Return-Path: <>
Received: from admin1.example.co.uk (admin1.example.co.uk. [94.236.45.212])
by mx.google.com with ESMTP id z32si6804375weq.133.2011.10.20.05.30.19;
Thu, 20 Oct 2011 05:30:19 -0700 (PDT)
Received-SPF: pass (google.com: domain of admin1.example.co.uk designates 94.236.45.212 as permitted sender) client-ip=94.236.45.212;
Authentication-Results: mx.google.com; spf=pass (google.com: domain of admin1.example.co.uk designates 94.236.45.212 as permitted sender) smtp.mail=
Received: by admin1.example.co.uk (Postfix)
id 40B8865108D; Thu, 20 Oct 2011 13:30:19 +0100 (BST)
Date: Thu, 20 Oct 2011 13:30:19 +0100 (BST)
From: MAILER-DAEMON@admin1.example.co.uk (Mail Delivery System)
Subject: Undelivered Mail Returned to Sender
To: automated-bounces+64DD736C-FB14-11E0-8FD4-E50A16514328@email.example.com
Auto-Submitted: auto-replied
MIME-Version: 1.0
Content-Type: multipart/report; report-type=delivery-status;
boundary="4B94C65106A.1319113819/admin1.example.co.uk"
Message-Id: <20111020123019.40B8865108D@admin1.example.co.uk>
This is a MIME-encapsulated message.
--4B94C65106A.1319113819/admin1.example.co.uk
Content-Description: Notification
Content-Type: text/plain; charset=us-ascii
This is the mail system at host admin1.example.co.uk.
I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.
For further assistance, please send mail to
If you do so, please include this problem report. You can
delete your own text from the attached returned message.
The mail system
: host a.mx.example.net[213.162.120.70] said: 550
5.7.1 You're using a mass mailer, therefore you're bounced. (in reply to
end of DATA command)
--4B94C65106A.1319113819/admin1.example.co.uk
Content-Description: Delivery report
Content-Type: message/delivery-status
Reporting-MTA: dns; admin1.example.co.uk
X-Postfix-Queue-ID: 4B94C65106A
X-Postfix-Sender: rfc822; automated-bounces+64DD736C-FB14-11E0-8FD4-E50A16514328@email.example.com
Arrival-Date: Thu, 20 Oct 2011 13:09:43 +0100 (BST)
Final-Recipient: rfc822; fred@example.net
Action: failed
Status: 5.7.1
Remote-MTA: dns; a.mx.example.net
Diagnostic-Code: smtp; 550 5.7.1 You're using a mass mailer, therefore you're
bounced.
--4B94C65106A.1319113819/admin1.example.co.uk
Content-Description: Undelivered Message
Content-Type: message/rfc822
Received: by admin1.example.co.uk (Postfix, from userid 507)
id 4B94C65106A; Thu, 20 Oct 2011 13:09:43 +0100 (BST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=email.example.com;
s=default10; t=1319112583;
bh=nVOidzxGwLzWAOSa6+LP6YjsuvPGLgxKXHz6gSEhAN0=;
h=MIME-Version:Content-Transfer-Encoding:Content-Type:Date:From:
Subject:List-Unsubscribe:To:Message-Id;
b=zB3lH1I+AIN4GuYta1GZ6zrgor5AnEToTuTPFwpr0oR6WCmPkohZysraPtfF6JTp1
LzcbD7p9+qpVqtpQUhnGBZABI0AwNjdZBg7Bjf8GUYSl3vVCSiqKsKUe3OMOrUBCo2
4I/5g7Z0paylPkm26sESl1YNrSWKxj5j1y6dbu5g=
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Type: multipart/related; boundary="_----------=_1319112583110380"
X-Mailer: MIME::Lite 3.027 (F2.78; T1.31; A2.07; B3.13; Q3.13)
Date: Thu, 20 Oct 2011 13:09:43 +0100
From: John Smith
Subject: foo
List-Unsubscribe:
To: fred bloggs