«

»

Sep 24

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 :

1.su - zimbra -c "mailq"

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

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

Menjadi :

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

Script Selengkapnya :

01.#!/usr/bin/perl -w
02.#
03.# pfdel - deletes message containing specified address from
04.# Postfix queue. Matches either sender or recipient address.
05.#
06.# Usage: pfdel <email_address>
07.#
08. 
09.use strict;
10. 
11.# Change these paths if necessary.
12.my $LISTQ = "/opt/zimbra/postfix/sbin/postqueue -p";
13.my $POSTSUPER = "/opt/zimbra/postfix/sbin/postsuper";
14. 
15.my $email_addr = "";
16.my $qid = "";
17.my $euid = $&gt;;
18. 
19.if ( @ARGV !=  1 ) {
20.die "Usage: pfdel <email_address>\n";
21.} else {
22.$email_addr = $ARGV[0];
23.}
24. 
25.if ( $euid != 0 ) {
26.die "You must be root to delete queue files.\n";
27.}
28. 
29. 
30.open(QUEUE, "$LISTQ |") ||
31.die "Can't get pipe to $LISTQ: $!\n";
32. 
33.my $entry = &lt;QUEUE&gt;;    # skip single header line
34.$/ = "";        # Rest of queue entries print on
35.# multiple lines.
36.while ( $entry = &lt;QUEUE&gt; ) {
37.if ( $entry =~ / $email_addr$/m ) {
38.($qid) = split(/\s+/, $entry, 2);
39.$qid =~ s/[\*\!]//;
40.next unless ($qid);
41. 
42.#
43.# Execute postsuper -d with the queue id.
44.# postsuper provides feedback when it deletes
45.# messages. Let its output go through.
46.#
47.if ( system($POSTSUPER, "-d", $qid) != 0 ) {
48.# If postsuper has a problem, bail.
49.die "Error executing $POSTSUPER: error " .
50."code " .  ($?/256) . "\n";
51.}
52.}
53.}
54.close(QUEUE);
55. 
56.if (! $qid ) {
57.die "No messages with the address <$email_addr> " .
58."found in queue.\n";
59.}
60. 
61.exit 0;

Incoming search terms:

  • apa arti queued di email
  • cara melihat email deffered zimbra
  • cara menghilangkan tracemail
  • mail spam yg memenuhi mail server
  • queuning didalam root

Leave a Reply

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

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Translate »