Φίλος μου ζήτησε βοήθεια ώστε να καθαρίσει διάφορα backscatter mails από το mailbox του. Μία από τις πλέον γνωστές επιθέσεις είναι ο spammer να χρησιμοποιεί διαφορετική mail address ή ακόμα και reply-address με αποτέλεσμα τα back scatters να μην έρχονται σε αυτόν αλλά να πηγαίνουν σε κάποιον άλλο.
Με βοήθησε αρκετά το συγκεκριμένο άρθρο:mbox_selective_deletion και πάνω σε αυτό βασίστηκα για να γράψω την δική μου παραλλαγή:
#!/usr/bin/perl -w
# Created by Ben Okopnik on Thu Jan 14 21:55:46 EST 2010
# Updated by Evaggelos Balaskas on Sun Jun 27 20:50:11 EEST 2010
use strict;
use Mail::MboxParser;
die $0 =~ /([^/]+)$/, " <mbox> n" unless @ARGV == 1;
my $mb = Mail::MboxParser->new($ARGV[0]);
my @subjects = (
"Undeliverable",
"Warning: could not send message for past 12 hours",
"Returned mail: see transcript for details",
"Delivery Status Notification (Failure)",
"Undelivered Mail Returned to Sender"
);
while ( my $msg = $mb->next_message ) {
my $s = $msg->header->{subject};
$s ||= "empty_subject";
my $flag = 0;
foreach (@subjects) {
if ( $s =~ $_ ) {
$flag = 1;
last;
}
}
print $msg."n" unless $flag ;
}
Η χρήση του είναι η εξής:
./remove.pl mailbox > newmailbox
και φυσικά μπορείτε να προσθέσετε στην λίστα strong>@subjects</strong όσα περισσότερα subjects θέλετε.
Ο πλήρες κώδικας βρίσκεται εδώ: How to remove a specific mail from a mbox
ΥΓ: Θα χαρώ να λάβω παρατηρήσεις.