Friday, May 22, 2015

Menghapus Spam Message di Server Zimbra

Wihartoyo     Friday, May 22, 2015    

Timbunan spam message yang terjadi pada server mail akan menyebabkan mail server disibukkan untuk melakukan pengiriman message sampah tersebut. Namun, oleh karena antispam sudah banyak terinstall, maka timbunan itu akan semakin menumpuk oleh karena percobaan pengulangan pengiriman oleh mail server. Akibatnya, mail yang seharusnya terkirim justeru akan mundur pada antrian akhir. Alias tidak terkirim.

Pagi ini, saya menerima banyak sekali komplain dari mail user. E-mail mereka tidak terkirim, dan tidak ada satupun kiriman dari luar tidak ada satupun yang masuk ke inbox mereka.
Hladalah.... downkah mail server saya?
Ping? Ok!
SSH? Ok!
zmcontrol status? Running semua!
Apa ini,
Baiklah, saya coba masuk management control nya, aplikasi web yang nampang di port 7071. Saya buka Monitor->Mail Queues.
Yaa... Salam....! Ada Queue Message yang jumlahnya gak tanggung-tanggung. Lebih dari 21 ribu message tersebar di "Deferred","Incoming", dan "Active". Dan ketika di tail-pun ternyata queue hanya mengurusi timbunan message spam tersebut. Pantesan, tidak ada satupun message masuk ke Inbox, dan tak satupun message bisa dikirim melalui mail server. Lha wong dia sibuk sendiri.
Pada interface Queue itu, saya coba untuk mengidentifikasi mail-mail yang mencurigakan dan syukurnya messeges itu bisa teridentifikasi berasal dari 1 IP. Dan jumlahnya? Masya Allah, 21ribu lebih dari domain [dot]ru. Aku berikan action delete dengan klik kanan delete. Mail server bisa merespons. Tapi tidak seluruh mail dari sejumlah mail yang saya identifikasi sebagai spam itu terhapus.
Saya coba lagi. Masih begitu, malah pada beberapa Queue tab, nampak ada peningkatan jumlah queue.
Ah, ini berarti tidak bisa dihapus dengan klik kanan. Akhirnya... saya harus masuk ke terminal console dari server. Saya harus gunakan mailq untuk melihat queue dan postsuper untuk memberikan perintah penghapusan. Selain dua perangkat itu, saya juga harus menggunakan awk untuk mengekstrak message id dengan perintah print, dan cut untuk memotong string pada lebar tertentu.

Dan statement yang harus dijalankan kira-kira bentuknya akan menjadi demikian:
Perhatikan filter [dot]ru dan pada grep dengan -v yang melakukan inversi.


[root@mail~]#/opt/zimbra/postfix/sbin/mailq | tail -n +2 | grep -v '^ *(' | awk 'BEGIN { RS = "" } { if ($8 ~ /.ru/) print $1 }
'



Hasilnya kira-kira begini (bergantung pada queue riil):


[root@mail~]#/opt/zimbra/postfix/sbin/mailq | tail -n +2 | grep -v '^ *(' | awk 'BEGIN { RS = "" } { if ($8 ~ /.ru/) print $1 }'
8198E6046CDD0
80FC06046CDD7
35EDF609A536A*
397A2609A536C*
0C665604708FF
0E77B609A5362
0F6C260469D78
0ED90609A5374
12BB46046CDC6

Hasil di atas adalah list dari message id yang masuk queue. Pada hasil di atas kita lihat ada yang diakhiri dengan tanda "*", sementara kita harus menghapus per message id dimana tidak ada message id yang diakhiri dengan "*". Untuk itu kita harus memberikan tambahan "cut -c 1-13" yang berarti ambil karakter dari 1 sampai dengan 13. 13 adalah lebar message id.


[root@mail~]#/opt/zimbra/postfix/sbin/mailq | tail -n +2 | grep -v '^ *(' | awk 'BEGIN { RS = "" } { if ($8 ~ /.ru/) print $1 } | cut -c 1-13'
8198E6046CDD0
80FC06046CDD7
35EDF609A536A
397A2609A536C
0C665604708FF
0E77B609A5362
0F6C260469D78
0ED90609A5374
12BB46046CDC6


OK, semua message yang ada di queue muncul tanpa embel-embel "*". Terakhir kita bisa menambahkan perintah penghapusan.


[root@mail~]/opt/zimbra/postfix/sbin/mailq | tail -n +2 | grep -v '^ *(' | awk 'BEGIN { RS = "" } { if ($8 ~ /.ru/) print $1 }' | cut -c 1-13 | /opt/zimbra/postfix/sbin/postsuper -d -
postsuper: 8198E6046CDD0: removed
postsuper: 80FC06046CDD7: removed
postsuper: 35EDF609A536A: removed
postsuper: 397A2609A536C: removed
postsuper: 0C665604708FF: removed
postsuper: 0E77B609A5362: removed
postsuper: 0F6C260469D78: removed
postsuper: 0ED90609A5374: removed
postsuper: 12BB46046CDC6: removed


Ok, selesai, semua sampah terhapus.

,

Recommended