Site içi arama


Viewing 1 item

Linux Smpt Qmail Kuyruğu

Qmailde mail gidip gelmiyor diye müşteriler yakınırken bu işe kesin bir çözüm bulmak gerekiyor genelde. Aşağıda kısa bir çözüm hikayesi var. Olaki bir gün yine aynı sorunla karşılaşırsam yada birileri aynı sorunla karşılaşırsa işine yarayacaktır eminim ki. Her seferinde aynı sorunlarla karşılaşıp internetten tekrar aramak yerine oturup bir döküman yazmak herkesin açısından iyi olur herhalde
Qmailin genel işleyişi şöyledir; gidecek yada gelecek mailler kuyrukta sıraya girerler ve işleme tabi tutulurlar. Böylece sırası ile tüm mailler gidecekleri ve gelecekleri yere ulaşmış olurlar. Hikayemizin nedeni qmail in kuyruğunda tonlarca mailin birikmesi.
O anki kuyrukta kaç tane mail bulunduğunu bin dizinindeki qmail-qstat programcığı aracılığı ile ögrenebilirsiniz.

root@plesk root:/var/qmail/bin# ./qmail-qstat
messages in queue: 149
messages in queue but not yet preprocessed: 0

Ama bu size asla ayrıntılı bilgi vermeyecektir. Normalde bu sayının makul değerlerde olması beklenir. Mesela bir gün gelipte bunu çalıştırdığınızda karşınıza
[root@plesk root]# /var/qmail/bin/qmail-qstat
messages in queue : 1283690
messages in queue but not yet preprocessed: 232

şeklinde uçuk değerler görüyorsanız bu bir problemle karşı karşıya olduğunuzun göstergesidir.

Ama qstat size ayrıntılı bilgi vermeyecektir. Bunun için qmHandle isimli opensource projeden faydalanabilirsiniz. Proje sitesi http://sourceforge.net/projects/qmhandle şeklinde

wget http://goo.gl/9FB6Y
gunzip qmhandle*
tar xvf qmhandle*

şeklinde programcığı açtıktan sonra

# ./qmHandle -s

ile daha ayrıntılı bir bilgi alabilirsiniz.
root@plesk root:~# ./qmHandle -s
Messages in local queue: 0
Messages in remote queue: 149

Şimdi asil problemimiz bu kuyruğa neden olan maillerin ne olduğunu keşfetmek olabilir. Bunun için ise
# ./qmHandle -l

komutunu kullanabilirsiniz.
Bu komut kuyrukta bekleyen maillerin nerden geldigini ve nereye gönderilmeye calisildigini vs bilgisi verecektir. Mesela benim karsilastigim sorunda

753180 (22, R)
Return-path:
From:  MAILER-DAEMON at 217-20-118-172.internet…
To:  randy at efg-inc.com
Subject: failure notice
Date: 5 Aug 2006 11:48:44 +0300
Size: 3385 bytes
şeklinde maillerin olduğunu görmüştüm. Yani olmayan mail adresinden dolayi mailer-deamon gönderilmeye calisiliyor. Ve buda bir kuyruk oluşturuluyor. Kuyruktaki maillerin gönderilmesini sağlamak için

# ./qmHandle -a

Komutunu kullanabilirsiniz. Bu işlemden sonra kuyrukta bekleyen mailler büyük ihtimalle zaten asla gönderilemeyecek olan mailler olacaktır.

# ./qmHandle -l

Komutu size kuyruktaki maillerin ayrıntısını verecekti. root :~# ./qmHandle -s
Messages in local queue: 0
Messages in remote queue: 147

root@plesk

dediğimde 151 mailin kuyrukta bekledigini gördüm örnek olarak bunlarin hepsinin acaba aynı şekilde deamon maili mi olduğunu anlamak için basitçe şöyle bir komut kullanabilirsiniz. root:~# ./qmHandle -l | grep MAILER | wc -l
147

root@plesk

iki sayının birbirine eşit olması kuyrukta bu saçma maillerden başka bir mail olmadığını gösterecektir. Bundan sonraki adımda kuyruğumuzu temizleyerek hem gereksiz maillerden kurtarmis oluruz. Hemde kuyruktaki tüm maillerin gereksiz mail olduğunu teyit ederek milletin bekledigi önemli mailleri silmemiş oluruz. Makineyi rahatlama babinda kuyruktaki mailler şu şekilde temizlenebilir;

Qmailde kuyruktaki mailler sırası ile
/var/qmail/queue/info
/var/qmail/queue/mess
/var/qmail/queue/remote
/var/qmail/queue/intd
/var/qmail/queue/local
/var/qmail/queue/todo
Klasörlerinde hiyararşik şekilde dağılmış halde bulunurlar ve bu klasörlerin içerisinde 0 dan 22 ye kadar klasörler vardır. Yani sırası ile bu klasörlerin içeriğini temizlemeniz gerekir.

Örnek olarak
cd /var/qmail/queue/info
rm -rf 0/*
rm -rf 1/*
rm -rf 2/*
rm -rf 3/*
rm -rf 4/*
rm -rf 5/*
rm -rf 6/*
rm -rf 7/*
rm -rf 8/*
rm -rf 9/*
rm -rf 10/*
rm -rf 11/*
rm -rf 12/*
rm -rf 13/*
rm -rf 14/*
rm -rf 15/*
rm -rf 16/*
rm -rf 17/*
rm -rf 18/*
rm -rf 19/*
rm -rf 20/*
rm -rf 21/*
rm -rf 22/* gibi sırası ile tüm klasörleri silmeniz gerekir. Yada sitemdeki hazir sh dosyasi ile bu işi yapabilirsiniz.
Dosyayı indirmek için Tıklayın
# chmod 0777 qmailclear.sh
# ./qmailclear.sh

Olaya son bir çözüm olarakta Qmail in çok fazla uzun süre gönderemedigi mailleri otomatik silmesini sağlayabilirsiniz. bin dizini içinde qmail-showctl qmail in ayarlarını söyleyecektir. queuelifetime parametresi mailin kuyrukta yaşama süresidir.
root@plesk root:/var/qmail/bin# ./qmail-showctl | grep queuelifetime
queuelifetime: Message lifetime in the queue is 604800 seconds.

ki bu yaklaşık 1 haftadır. Bu süre 1 gün yeterli olacağını düşünüyorum Bunu 23 saat olarak atamak için

# echo “82800” > control/queuelifetime
# bin/qmail-showctl | grep queuelifetime
queuelifetime: Message lifetime in the queue is 82800 seconds.

Kaynak: http://linux.yudum.net/linux/qmail-kuyruk-problemleri.html


Henüz yorum yok.

Bir Cevap Yazın