Mail sunucu yönetenler için sıkça yaşanabilecek bir problem olarak sevgili kullanıcılarınızın bir botnet zombisi haline gelmiş olması ya da bir şekilde mail şifresini çaldırmış olmasıdır. Buna bağlı olarak kullanıcının bilgisayarı üzerinden ya da farklı bir noktadan yüklü bir spam mail gönderimi ile sonuçlanır.
Eğer ki MTA olarak qmail kullanıyorsak takım çantanızda sürekli barındırmanız gereken iki adet edevat bulunmaktadır. Bunlardan birincisi qmHandle, daha bir güzeli ise qmail-remove
qmHandle detaylı bir çıktı verebilen, local ve remote queue’yu sadece bir parametre ile güzelce listeleyebilen güzel bir perl script’idir. Eğer ki queue’da biriken mailleriniz onbinlerin üzerinde ise maalesef ki queue üzerinde işlem yapmanız demek pek te mümkün olmayacaktır.
qmHandle’ı http://sourceforge.net/projects/qmhandle/ adresi üzerinden edinebilir ve queue directory yapısında değişiklik yapılmamış bir qmail kurulumu üzerinde problemsiz olarak kullanabilirsiniz.
Download adresinden indireceğiniz dosyayı tar ile açmanız yeterlidir. Script bash üzerinde çalışmaya nazır ve hazırdır.
(Plesk kontrol panel kullanılan sunucularda qmHandle’ı indirmeye gerek bulunmamaktadır. Çakma bir isim değiştirme yöntemi ile duplicate edilmiş script’in kendisini /usr/local/psa/admin/sbin/mailqueuemng adıyla çağırabilirsiniz.)
Bash üzerinde perl ile birlikte şu şekilde çalıştırabilirsiniz.
| Bash | | | | ? |
| 1 | |
| 2 | perl qmHandle |
| 3 |
Bu işlem sonunda kullanabileceğiniz parametrelere dair aşağıdaki gibi bir çıktı görüntülenecektir;
| Bash | | | | ? |
| 01 | |
| 02 | qmHandle v1.2.0 |
| 03 | Copyright 1998-2003 Michele Beltrame |
| 04 | Available parameters: |
| 05 | -a : try to send queued messages now (qmail must be running) |
| 06 | -l : list message queues |
| 07 | -L : list local message queue |
| 08 | -R : list remote message queue |
| 09 | -T : list todo message queue |
| 10 | -s : show some statistics |
| 11 | -mN : display message number N |
| 12 | -dN : delete message number N |
| 13 | -Stext : delete all messages that have/contain text as Subject |
| 14 | -D : delete all messages in the queue (local and remote) |
| 15 | -V : print program version |
| 16 | |
| 17 | Additional (optional) parameters: |
| 18 | -c : display colored output |
| 19 | -N : list message numbers only |
| 20 | (to be used either with -l, -L, -R or -T) |
| 21 | |
| 22 | You can view/delete multiple message i.e. -d123 -v456 -d567 |
| 23 |
Yardım içeriğinde de bahsettiği üzre “-l”, “-L”, “-R”, “-T” ile queue üzerindeki tüm mesajları ve queue’daki çeşitlerine göre listeleyebilmektesiniz.
Örneğin qmHandle -R ile listelemiş olduğunuz remote queue’da aynı kullanıcının defalarca mail gönderdiğini gördünüz fakat içeriğini merak ediyorsunuz.
| Bash | | | | ? |
| 01 | |
| 02 | 65732975 (10, R) |
| 03 | Return-path: spammer@damnit.com |
| 04 | From: |
| 05 | To: |
| 06 | Subject: Viagra Cialis |
| 07 | Date: Thu, 3 Jun 2010 19:17:37 +0300 |
| 08 | Size: 11273 bytes |
| 09 | Message-Id: <000f01cb0338$484a6c80$0302a8c0@emlak5a8613ad1> |
| 10 | Queue Time: 1275581860 sec |
| 11 | Envelope Recipients (R): mazlum@yandim.com, daha_bir_cok_mail_adresi |
| 12 | |
| 13 | 65736822 (16, R) |
| 14 | Return-path: spammer@damnit.com |
| 15 | From: |
| 16 | To: |
| 17 | Subject: Viagra Cialis |
| 18 | Date: Thu, 3 Jun 2010 19:17:37 +0300 |
| 19 | Size: 11273 bytes |
| 20 | Message-Id: <000f01cb0338$484a6c80$0302a8c0@emlak5a8613ad1> |
| 21 | Queue Time: 1275581860 sec |
| 22 | Envelope Recipients (R): mazlum@tiallahcezani.com, daha_bir_cok_mail_adresi |
| 23 |
Yukarıdaki görmüş olduğunuz queue çıktısında mail header’larının hemen üstünde yer alan numara unique bir queue id’sidir. Yine qmHandle yardımı ile mesajın içeriğini aşağıdaki gibi görüntüleyebiliriz.
| Bash | | | | ? |
| 1 | |
| 2 | perl qmHandle -m65736822 |
| 3 |
DİKKAT : Gerek qmHandle, gerek qmail-remove ile kuyruktan herhangi bir maili silmeden önce muhakkak ve muhakkak qmail’i durdurmanız gerekmektedir.
Yine bu maili dilerseniz mesaj id’si ile, dilerseniz de subject’ine göre silebilirsiniz;
| Bash | | | | ? |
| 1 | |
| 2 | perl qmHandle -m65736822 |
| 3 |
veya
| Bash | | | | ? |
| 1 | |
| 2 | perl qmHandle -SViagra\ Cialis |
| 3 |
Eğer ki normal işleyen bir mail sistemi ise queue’nuz da çok kabarık olmayacağından bu şekilde çok rahat kuyruk maillerini yönetebiliriz. Ya bekleyen 263000 mail biriktiyse?
Bu gibi durumlarda qmHandle sizin için yeterli olmayacaktır. queue okuma işini qmail’in kendi binary’si olan qmail-qread’a ve silme işini de qmail-remove’un eline bırakacağız.
Kurulumu sadece bir C dosyası build etmekten ibaret olan basit ve 3 adımlı bir süreçten geçeceğiz; download – untar – make ve make install
| Bash | | | | ? |
| 1 | |
| 2 | wget http://www.linuxmagic.com/opensource/qmail/qmail-remove/qmail-remove-0.95.tar.gz |
| 3 | tar zxf qmail-remove-0.95.tar.gz |
| 4 | make &amp;&amp; make install |
| 5 |
Bu işlemin ardından /usr/local/sbin altında emirlerimize amade bir qmail-remove bulunmakta. Artık queue’ya göz atmaya hazır ve spam olması muhtemel mailleri silmeye geldi;
| Bash | | | | ? |
| 01 | |
| 02 | /var/qmail/bin/qmail-qread |
| 03 | |
| 04 | 03 Jun 2010 21:21:21 GMT #65732975 468772 bouncing |
| 05 | |
| 06 | done remote zavalli@insancik.com |
| 07 | remote vahtuh@spamyedik.com |
| 08 | done remote mazlum@tiallahcezani.com |
| 09 | remote ulan@spamgondereninben.com |
| 10 | |
| 11 | 03 Jun 2010 21:21:22 GMT #65732975 468772 bouncing |
| 12 | |
| 13 | done remote zavalli@insancik.com |
| 14 | remote vahtuh@spamyedik.com |
| 15 | done remote mazlum@tiallahcezani.com |
| 16 | remote ulan@spamgondereninben.com |
| 17 | |
| 18 | 03 Jun 2010 21:21:25 GMT #65732975 468772 bouncing |
| 19 | |
| 20 | done remote zavalli@insancik.com |
| 21 | remote vahtuh@spamyedik.com |
| 22 | done remote mazlum@tiallahcezani.com |
| 23 | remote ulan@spamgondereninben.com |
| 24 |
gibi bir çıktıda spammer@damnit.com’un spam yaptığını gördünüz. Bundan sonrası qmail’i durdurmak ve qmail-remove’a pattern olarak mail adresini vererek sil demek kadar basit olacaktır.
| Bash | | | | ? |
| 1 | |
| 2 | /etc/init.d/qmail stop |
| 3 | qmail-remove -d -p spammer@damnit.com |
| 4 |
silinen maillere karşılık şöyle bir çıktı alırsınız.
| Bash | | | | ? |
| 01 | |
| 02 | remove mess/20/65732975 |
| 03 | remove remote/20/65732975 |
| 04 | remove info/20/65732975 |
| 05 | 65733100: no |
| 06 | 65732893: no |
| 07 | 65733156: yes |
| 08 | remove mess/7/65732975 |
| 09 | remove remote/7/65732975 |
| 10 | remove info/7/65732975 |
| 11 | 65733087: no |
| 12 | 65736008: yes |
| 13 | remove mess/7/65732975 |
| 14 | remove remote/7/65732975 |
| 15 | remove info/7/65732975 |
| 16 | remove bounce/65732975 |
| 17 | 263482 file(s) match |
| 18 |
Artık qmail’i start ederek mutlu mesut günlerinize kaldığınız yerden devam edebilirsiniz.
Not:
- -d parametresini vermediğiniz sürece qmail-remove silme işlemi yapmayacaktır.
- -d -p parametresini vererek bir pattern belirtmezseni qmail-remove komple queue’nuzu boşaltacaktır.
- Dosyaların incelemek üzre silinmemesini istiyorsanız -y parametresi ile bir klasör belirtebilirsiniz.
- Eğer ki queue directory’niz /var/qmail/queue ‘den farklıysa -q parametresi ile bu klasörün yerini bildirebilirsiniz.