rss.png profile for ebal on Stack Exchange, a network of free, community-driven Q&A sites
Jun
27
2010
Remove backscatter mails from mailbox

Φίλος μου ζήτησε βοήθεια ώστε να καθαρίσει διάφορα 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

ΥΓ: Θα χαρώ να λάβω παρατηρήσεις.