Script untuk Menghapus Email Spam di Queue Zimbra Mail Server

Jika kita mengelola email server, bukan sekali dua email server yang kita kelola mendapat serangan spam. Jika serangan itu cukup parah, kemungkinan ada banyak email deferred yang memenuhi queue. Email-email itu merupakan email sampah, namun kita tidak bisa langsung menghapus seluruh email sampah tersebut dari deferred queue karena ada kemungkinan bercampur dengan email normal.

Untuk mengatasinya bisa menggunakan script berikut, yang saya dapatkan dari blog ini. Caranya, salin script dibawah ini kedalam file teks, simpan dengan nama pfdel, kemudian set permissionnya (chmod 755 pfdel, chmod +x pfdel). Untuk menjalankannya bisa menggunakan perintah :

pfdel email-address-spammer, contoh : pfdel spam@spammer.org

Catatan : Script ini digunakan untuk Zimbra Mail Server dan dijalankan dalam modus akses root. Untuk mengakses mail queue dalam modus root, gunakan perintah ini :

su - zimbra -c "mailq"

Jika digunakan pada mail server berbasis Postfix non Zimbra, ganti baris berikut :

my $LISTQ = "/opt/zimbra/postfix/sbin/postqueue -p";
my $POSTSUPER = "/opt/zimbra/postfix/sbin/postsuper";

Menjadi :

my $LISTQ = "/usr/sbin/postqueue -p";
my $POSTSUPER = "/usr/sbin/postsuper";

Script Selengkapnya :

#!/usr/bin/perl -w
#
# pfdel - deletes message containing specified address from
# Postfix queue. Matches either sender or recipient address.
#
# Usage: pfdel <email_address>
#

use strict;

# Change these paths if necessary.
my $LISTQ = "/opt/zimbra/postfix/sbin/postqueue -p";
my $POSTSUPER = "/opt/zimbra/postfix/sbin/postsuper";

my $email_addr = "";
my $qid = "";
my $euid = $>;

if ( @ARGV !=  1 ) {
    die "Usage: pfdel <email_address>\n";
} else {
    $email_addr = $ARGV[0];
}

if ( $euid != 0 ) {
        die "You must be root to delete queue files.\n";
}


open(QUEUE, "$LISTQ |") ||
  die "Can't get pipe to $LISTQ: $!\n";

my $entry = <QUEUE>;    # skip single header line
$/ = "";        # Rest of queue entries print on
            # multiple lines.
while ( $entry = <QUEUE> ) {
    if ( $entry =~ / $email_addr$/m ) {
        ($qid) = split(/\s+/, $entry, 2);
        $qid =~ s/[\*\!]//;
        next unless ($qid);

        #
        # Execute postsuper -d with the queue id.
        # postsuper provides feedback when it deletes
        # messages. Let its output go through.
        #
        if ( system($POSTSUPER, "-d", $qid) != 0 ) {
            # If postsuper has a problem, bail.
            die "Error executing $POSTSUPER: error " .
               "code " .  ($?/256) . "\n";
        }
    }
}
close(QUEUE);

if (! $qid ) {
    die "No messages with the address <$email_addr> " .
      "found in queue.\n";
}

exit 0;
Pin It

7 thoughts on “Script untuk Menghapus Email Spam di Queue Zimbra Mail Server

  1. Pingback: Pertanyaan Jika Jadi Mengikuti Training Tanggal 22 Agustus 2011 di Excellent « virtualpabx

  2. Pingback: Script untuk Menghapus Email Spam di Queue Zimbra Mail Server | Blog IndraNetwork

  3. Pingback: Tips Mengecek dan Mengatasi Account yang Terindikasi Spam pada Zimbra Mail Server | Bisnis Having Fun

  4. Hi, aku coba script diatas tapi muncul error seperti ini:
    syntax error at pfdel line 10, near “gt;”
    syntax error at pfdel line 21, near “&gt”
    syntax error at pfdel line 24, near “<”
    syntax error at pfdel line 24, near “&gt”
    syntax error at pfdel line 37, near “}”

  5. Pingback: Tips Mengecek dan Mengatasi Account yang Terindikasi Spam pada Zimbra Mail Server - Popular Trending | trends.my.id

  6. Pingback: tips Mengecek dan Mengatasi Account yang Terindikasi Spam pada Zimbra Mail Server | Teras-code's Blog

Leave a Reply

Your email address will not be published. Required fields are marked *


*