15 Şubat 2006

İsimler önemlidir, dikkat etmek gerekir

Tanıştıklarınızın isimlerini unutmamanız gerekir, bir şeye isim verirken özen göstermek gerekir, çünkü isimlendireceğiniz şeyle birlikte yaşayacaktır vereceğiniz isim. Evet isimlendirmek betikler için de önem taşıyor, başıma gelen bir olay bunu iyice öğretti bana.

E-posta sunucumuzda postfix'in yanında gri liste programı olarak postgrey kullanıyoruz uzun süredir. Gelen spam miktarında gözle görülür elle tutulur bir azalma yaşadık. Ancak başımıza gelen bazı üzücü durumlar da oldu. Postgrey, kullandığımız bir yıllık süre içinde 3-4 defa çöktü. Program hiç iz bırakmadan hata vermeden sırra kadem basıyordu. Postgrey çöktüğünde e-posta sunucusu postfix karşı tarafa "Bu tarafta bir ayar hatası var, sonra deneyin" cevabını dönüyor, ve bunu da kayda düşüyor. Genellikle kayıtları düzenli olarak takip ettiğim için kısa süre içinde duruma müdahale edip postgrey'i ayağa kaldırıyordum. Bir keresinde ben tatildeyken çöktü ve bir buçuk hafta müdahale edilmedi, geri döndüğümde kimlere e-postaları ulaşmamış ayıklayıp haber vermem gerekti. Buna bir çözüm bulmak için ufak bir betik yazdım, postgrey-kontrol. Eğer postgrey ölürse, durumu bana haber veriyor ve postgrey'i zorla yeniden başlatıyordu, içeriği de şöyle [[ Evet içerikte yazım hatası var :) Halen böyle ]]
ps -ef |grep postgrey| grep -v grep
if [ $? -ne 0 ]
then
   date >> /var/log/postgey-cok.log ;
   mail -s postgrey_coktu root < /var/log/postgey-cok.log
   /etc/init.d/postgrey zap;
   /etc/init.d/postgrey start;
fi
Sonra bunu cron ile düzenli aralıklarla çalışacak şekilde ayarladım.

Buraya kadar her şey normal değil mi ? Değil. postgrey yine çöktü ve bana haber falan gelmedi. Yoğun olduğum için kayıtlara da bakamadım ve yine bir kaç gün kapımızdan geri çevirdik mesajları. Sorunu anlamaya çalıştım. Betik içindeki ilk satırı komut satırına yazıyorum ve dönen değere bakıyorum, 1. Yani çalışan programlar arasında postgrey diye bir şey yok. Komut satırında sonraki if'i de deniyorum, tamam o da çalışıyor. Ama postgrey-kontrol dosyasını çalıştırıyorum tepki yok. Elle düzeltip bir süre daha kendi haline bıraktım :) Ve yine çöktü ! Bu sefer kesin bir çözüm bulmam gerekliydi. Bu arada sorunun olası sebeplerini de postgrey listesine yazıp görüş aldım, halen neden çöktüğü konusunda bir sonuca ulaşamasam da, benim yazdığım betiğin neden çalışmadığını anladım; yazının başında da değindiğim gibi, isim önemlidir. "postgrey-kontrol" betiği çalışırken, ilk satırdaki komutlar 0 dönüyor, çünkü çalışan programlardan birinin adında "postgrey" var, kendisinin :) Betiğin adı postkontrol yapılır, mutlu mesut beklenir; bakalım bir daha ne zaman çökecek ve bu sefer sorunun asıl kaynağını gösterecek bir iz bırakacak mı.

Bu yazıyı yazmamın asıl amacı ise, gri liste faydalı bir şey :-P Hatalı tespitlere fırsat vermeden spamlerden ve virüslerden büyük oranda kurtuluyorsunuz. Eğer e-posta sunucusu çalıştırıyorsanız mutlaka göz atın derim.

Hiç yorum yok: