Nagios – check_smtp ile Hotmail Ban Kontrolü
Warning: mysqli_query(): (HY000/3): Error writing file '/tmp/MY0MvhtP' (Errcode: 28 - No space left on device) in /usr/share/nginx/html/syslogs/wp-includes/class-wpdb.php on line 2349
Sizi bilmem ama genel olarak özellikle email iletişiminin önemli olduğu online servisler için Hotmail kullanıcılarına mail göndermek, MS'in SmartScreen isimli pek de kararlı olmayan spam filtresi yüzünden genelde başa bela bir durumdur. Çünkü SmartScreen yıllardır sorunsuz gönderim yaptığınız posta sunuculardan gelen mailleri “421 RP-001” kodlu hata mesajı ile gönderim limitlerini aştınız diyerek “geçici olarak” reddetmeye başlayabilir. Böyle bir durumda yapılabilecek tek şey ise ban durumunu bir an önce farketmek ve gönderim adedini düşürmektir. Zira aynı oranda gönderime devam etmekte ısrarcı olmak geçici (temporary) olan ban'ın kalıcı (permanent) olmasına neden olur.
Özellikle son zamanlarda yukarıda anlattığım senaryo sık sık cereyan etmeye başlayınca (ki bu durum MS'in SmartScreen'de bir değişiklik yapmış olmasına bağlanabilir) ban durumlarını mümkün olan en kısa zamanda tespit edebilmek için nagios ile Hotmail ban monitoring yapmaya başladım.
Yazının devamımnda, nagios, nrpe ve check_smtp plugini ile posta sunucuları üzerinden hotmail ban monitoring yapılmasından bahsedeceğim. Sizin de benzer problemleriniz varsa aynı yöntemi kullanmak isteyebilirsiniz. nagios ile ilgili detaylı kurulum ve yapılandırma dökümanı için ise http://www.syslogs.org/nagios-kurulumu-ve-yapilandirmasi/ adresinden yararlanabilirsiniz.
Monitoring işlemini özetlemek gerekirse, monitor edilecek posta sunucusu üzerindeki nrpe'ye, check_smtp isimli plugini kullanarak hotmail'in mx'lerinden birine bağlanması ve mail atma işlemini simüle etmesi için bir komut tanımlıyoruz, daha sonra Nagios'a, mail serverda tanımlanan check komutunu periyodik olarak nrpe üzerinden çalıştırılması için yapılandırıyoruz. Böylece olası bir ban durumundan hemen haberdar olma sanşımız oluyor.
Gereksinimler
Yazının devamında anlatılan işlemleri yapabilmek için mail sunucunuz üzerinde nrpe (ve dolaylı olarak nagios pluginleri) kurulu ve yapılandırılmış olmalı; Nagios sunucunuz da bahsi geçen mail serveri hali hazırda monitor ediyor olmalıdır.
Bu konularla ilgili bilgi almak için http://www.syslogs.org/nagios-kurulumu-ve-yapilandirmasi/ adresine göz atabilirsiniz.
Mail Server NRPE Yapılandırılması
Özet bölümünde bahsettiğim üzere mail sunucu üzerindeki nrpe yapılandırma dosyasına hotmail'in check edilmesi için bir komut satırı ekleyecegiz. nrpe.cfg isimli bu dosya linux sistemlerde /etc/nagios/ altında durmaktadır. (FreeBSD kullanıyorsanız /usr/local/etc/ dizini altındadır.)
nrpe.cfg dosyasını editliyoruz:
# vi /etc/nagios/nrpe.cfg
Dosyanın sonlarına doğru yer alan command satırlarının bulunduğu bölüme [check_smtp_hotmailban] isimli komutumuzu ekliyoruz:
command[check_smtp_hotmailban]=/usr/lib/nagios/plugins/check_smtp -H mx1.hotmail.com -F mailserver_hostnamei -C "mail from: [email protected]" -R "Sender OK"
(Not: FreeBSD sistemlerde check_smtp plugin'i “/usr/local/libexec/nagios/check_smtp” path'in de bulunmaktadır.)
Komut parametrelerinin anlamları şu şekildedir:
-H : Mail testi yapılacak smtp sunucunun hostname'i ya da ip adresi. Örnekte gönderim denemesi mx1.hotmail.com isimli sunucu için yapılmaktadır.
-F: Test sırasında HELO komutu için kullanılacak FQDN. (Mail sunucunuzun smtp banner'da döndüğü hostname neyse onu yazın.)
-C: Smtp Komutu. Örneğimizde, “mail from: [email protected]” şeklinde gönderici adresi iletmek için kullanılıyor.
-R: C parametresi ile gönderilen komuta dönen cevap. Örnekte reponse'un “Sender OK” olması beklenmekte. Eğer hotmail sunucusu Sender OK cevabı dışından bir cevap dönerse sunucunuzdan mail kabul edilmiyor anlamına gelir ve Nagios tarafından alarm üretilmesi sağlanır.
Komutun düzgün çalışıp çalışmadığını test etmek için direk console'dan aşağıdaki gibi girilebilir:
# /usr/lib/nagios/plugins/check_smtp -H mx1.hotmail.com -F mailserverin_hostnamei -C "mail from: [email protected]" -R "Sender OK"
Herşey yolundaysa komut aşağıdakine benzer bir OK cevabı döndürmelidir:
SMTP OK - 1.030 sec. response time|time=1.030469s;;;0.000000
Görüldüğü gibi hotmail, “mail from: [email protected]” komutuna “Sender OK” cevabı döndürerek gönderilecek maili kabul edeceğini belirtti. Aksi durumda aşağıdaki gibi bir hata alınır:
SMTP WARNING - Invalid response
ve beklenen “Sender OK” mesajı yerine başka bir cevap döndürüldüğünden dolayı mail gönderiminin başarısız olacağı tespit edilir.
Nrpe.cfg dosyasına eklemeyi yapıp dosyayı kaydettikten sonra değişikliklerin devreye alınması için nrpe servisini restart ediyoruz:
# /etc/init.d/nrpe restart
Bundan sonraki işlem Nagios tarafının yapılandırılması.
Nagios Tarafındaki İşlemler
Bu bölümde, mail sunucunun nrpe yapılandırmasına eklenen check_smtp_hotmailban komutunun Nagios tarafından çağrılması için gereken işlemleri yapacağız.
Nagios sunucumuzda, mail server'a ait olan yapılandırma dosyasını açalım. Örnek olarak mailserver.cfg ismini kullanalım:
# vi /usr/local/nagios/etc/objects/mailserver.cfg
Dosyanın içerisine, eklediğimiz komutun nrpe üzerinden çağırılması için şu bölümü ekliyoruz.
define service{ use generic-service host_name MAILSERVER service_description MAILSERVER / Hotmail Ban Check check_command check_nrpe!check_smtp_hotmailban }
Dosyayı kaydettikten sonra nagios'u restart ediyoruz:
# /etc/init.d/nagios restart
Böylece Nagios, nrpe uzerinden mail servera'a periyodik olarak ban kontrolü yaptıracak ve olası bir ban durumunda alarm üreterek sizi uyaracaktır.
Bu yazılar da ilginizi çekebilir:
- Nagios – ICMP Erişimi Kapalı Hostlar için Check İşlemi
- Firefox add-on: Nagios Checker
- Nagios Kurulumu ve Yapılandırması
Yorumlar
Trackbacks
Yorumda bulunun.
Güzel fikir, kullanmaya başladık hemen :)
[Cevapla]
Merhaba,
Ufak bir katkı yapmak isterim müsadenizle.
Hotmail’e günlük 100k’nın üzerinde mail gönderiyoruz. Gördüğümüz enteresan bir konu var.
Hotmail sunucuları emaillerin bir kısmını daha mail kendisine iletilirken reddediyor. Yukarıda kurduğunuz sistem bu emailleri yakalayacaktır.
Bir kısmınıysa önce kabul ediyor. Ardından envelope-sender’a bounce email’ini hotmail sunucularından gönderiyor.
Eğer envelope-sender’a düşen bounce emailleri pop3’ten otomatik toplayacak bir kod devreye almazsanız yukarıdaki ikinci grup bouncelar kaçacaktır.
Böyle bir kaçak olup olmadığını en iyi SNDS’te takip edersiniz. Eğer RCPT commands’daki sayılarınız ile DATA commands arasındaki kayıp oranı %1’in üzerindeyse halen hard-bounce yapan adresleriniz var demektir.
Güzel yazı için teşekkürler :)
[Cevapla]
Selamlar,
Evet dediğiniz gibi iki tür rejection var. Birincisi bu bahsedilen 4xx kodlu gecici ban durumu ki bunu iki kosulda yapiyorlar; Birincisi gray listing yaparak toplam gonderimin %4’ü kadarini gecici olarak reddedebiliyorlar. (%4’un ustu permanent ban’in habercisi oluyor). Gecici olarak reddedilen bu kuyrukta kaliyorlar ve MTA’nin bir sonraki gonderim retry interval’inde kabul ediliyorlar. Bir de limitleri asmak gerekcesi ile gene 4xx kodu ile bir gecici kabul etmeme durumu var ki bu durumda kuyrukta biriken bu mailleri MTA yaklasik 6 saat boyunca iletemiyor.
Nagios ile yukaridaki her iki kosulda olusan ban durumunu yakalamak mumkun. Bahsettiginiz 5xx kodlu permanent rejection durumlarinda ise mumkun degil. Fakat bu mailler bounce ediliyorlar; oysa 4xx durumunda bounce olmadigi icin mailler tekrar gondrim icin kuyrukta biriktiriliyor ve kuyrugu kontrol etmediğiniz ya da sunucu loglarina bakmadiginiz surece bu durumdan haberdar olamiyorsunuz. İste bu noktada da Nagios benim baya isime yaradi.
Katkiniz ve verdiğiniz bilgiler icin cok tesekkurler.
[Cevapla]
Selamlar :)
Cevap için teşekkürler.
Maalesef Hotmail 5xx’te de yapıyor bunu. Biliyorum teknik kurallara aykırı bir davranış ama yine de yapıyorlar.
Gmail ve Yahoo kurallara düzgün uyuyor bizim tecrübelerimizde.
Sevgiler.
[Cevapla]
Evet zaten RFC’lere uymamak MS’in kronik adetlerinden birisi. Kendileri herkese değil herkes kendilerine uysunlar istiyorlar.
Ancak yaptığını söylediğiniz şeyi tam anlayamadım sanırım; 5xx rejectionlar için bounce mesajı mı üretmiyorlar ?
[Cevapla]
Postfix kullanıyoruz. Aşağıdaki mesajları logdan çektim şimdi.
relay=mx3.hotmail.com[65.54.188.126]:25, delay=1.1, delays=0.63/0.01/0.2/0.2/0.24, dsn=2.0.0, status=sent (250 Queued mail for delivery)
Her ne kadar 250 kodunu döndüyse de bu mesaj kesin teslimat garantisi değil maalesef. Hotmail birazdan bounce mailini gönderebilir.
Ama örneğin aşağıdaki gibi 550’yi de verebiliyor. Bu durumda sonradan hotmail’den ayrıca bir bounce maili gelmiyor. Bu durumda Postfix kendisi bounce mailini hazırlayıp gönderiyor göndericiye.
relay=mx3.hotmail.com[65.55.37.120]:25, delay=1.2, delays=0.8/0.01/0.19/0.18, dsn=5.0.0, status=bounced (host mx3.hotmail.com[65.55.37.120] said: 550 Requested action not taken: mailbox unavailable (in reply to RCPT TO command))
[Cevapla]
Ne demek istediğinizi şimdi anladım; evet hatta bazen hotmail’in gelen maili 250 ok ile kabul edip kullanicinin posta kutusuna koymadigi da oluyor. Bu durumda yapabilecek hiç bir sey olmuyor. Ben Nagios ile teslimat ya da bounce durumlarindan çok from’a döndüğü cevabı izliyorum. Sonuç olarak sizden mail kabul etmeyecekse from adresini gondermenizin ardından standart olarak bağlantıyı sonlandırıyorlar.
[Cevapla]
Bu arada, bu konu üzerine de bir yazı yazmak lazım.
Dediğiniz gibi Hotmail çok keyfi davrandığından ötürü yaşattıkları problemler sadece tecrübe ederek keşfedilebiliyor.
Öyle bir yazı yazmak düşüncem var; o zaman sizin de bu spesifik tecrübelerinizden yararlanmak isterim :)
[Cevapla]
Her zaman severek :)
Hotmail az uğraştırmıyor.
[Cevapla]