Greylisting
Greylisting, enteresan ve efektif bir spam ile başetme metodudur. Bu metod, gönderilen her bir mailin source ip’sini, gonderen e-mail adresini ve alıcı e-mail adresini kontrol ediyor. (Bu üç bilgiye triplet deniyor.) Eğer gönderilen bir maile ait bu üç bilgi daha önce rastlanılmamış bir triplet ise "geçici olarak servis dışı"ymış gibi davranarak ilgili maili reject ediyor ve "Daha sonra tekrar deneyiniz" şeklinde bir hata mesajı gönderiyor.
Server servis dışı olmadığı halde gönderilen maili geçici bir süre için reject etti. İşte greylist uygulamasının enteresan yönü bu.
Bu yalancı reject durumunun nedeni aslında çok basit; SMTP’nin standartların belirtildiği RFC 2821 uyarınca, bir mail geçici olarak reject edildiği zaman, gönderide bulunan MTA ya da maili gönderen uygulama bir müddet sonra aynı maili tekrar göndermek için teşebbüsde bulunur; bulunmuyorsa o mail spamdir.
Spamdyke – Spam filter for qmail
Hatrı sayılır oranda mail trafiğine sahip bir qmail sunucusunun spam trafiği de o oranda fazla oluyor. Böyle bir sunucum var ve spam ile mücadele etmek için bu serverı, üzerinde spamassassin, qsheff ve rblsmtp kurulu olan bir smtp gateway arkasında çalıştırıyorum. Bu üçlü, kullanıcıları spam illetinden oldukça başarılı bir şekilde kurtarıyor. |
Ancak söz konusu spam ile savaş olduğunda, bazı zamanlar false positive durumlar yaşanmaması imkansız oluyor. Geçenlerden yine bir false positive sorunu ile karşılaştım. Ilgili qmail üzerinde hesabı bulunan ve Internet’e ADSL ile bağlanan bir kullanıcının ip’sinin, kullandığım block listte yer almasından dolayı gönderdiği mailler RBLSMTP tarafından reject ediliyordu.
Smtp authentication işleminden geçmesine rağmen adsl ip pool’undan aldığı kirli bir ip adresi nedeniyle ortaya çıkan bu sorun kafayi yemek için güzel bir false positive örneği değil mi?
Bu durum karşısında, yani smtp auth yapmış kişiler için rbl check işlemini pass geçmek için bir çözüm ararken Sam Clippinger’ın 2007’de yazdığı spamdyke isimli bir yazılıma rastladım. Qmail için yazılmış bu tool herhangi bir patch gerektirmeden sisteme kolayca kurulabiliyor ve yapılandırması oldukça basit. FreeBSD ports collectionda bulunan spamdyke’ı kurmam ve yapılandırmam 10 dakikamı almadı.
İşte üzerinde vpopmail çalışan bir qmail’in /var/qmail/supervise/qmail-smtpd/run dosyasının spamdyke ile ilgili temel satirları:
/usr/local/bin/spamdyke -l3 -d /var/qmail/control/rcpthosts -a 300 -T 60 -S /var/qmail/control/blacklist -x bl.spamcop.net --smtp-auth-command-encryption "/home/vpopmail/bin/vchkpw /usr/bin/true" --hostname hostname.domainname.com --access-file /etc/tcp.smtp
Smtp auth. özelliğinden başka bir sürü işe yarar özellikle birlikte gelen spamdyke gerçekten süper bir anti-spam aracı.
Şiddetle tavsiye ederim.
Daha fazla bilgi için:
http://www.spamdyke.org/documentation/README.html
Rblsmtpd
Rblsmtpd, ucspi-tcp paketi ile gelen Realtime Blocking List yazılımıdır. Bu yazılım gelen maillerin source ip’lerini daha önceden belirlediğiniz bir RBL veritabanınında sorgular ve listede bulması halinde maili reject eder. Bu şekilde spammerlara karşı güzel bir önlem almış olursunuz.
Yapılandırması da oldukça kolaydır:
Qmail’inizi stop ettikten sonra, /var/qmail/supervise/qmail-smtpd/run dosyasını editleyin.
Dosyanın orjinali (genel olarak) aşağıdaki gibidir :
#!/bin/sh QMAILDUID=`id -u qmaild` NOFILESGID=`id -g qmaild` MAXSMTPD=`cat /var/qmail/control/concurrencyincoming` LOCAL=`head -1 /var/qmail/control/me` if [ -z "$QMAILDUID" -o -z "$NOFILESGID" -o -z "$MAXSMTPD" -o -z "$LOCAL" ]; then echo QMAILDUID, NOFILESGID, MAXSMTPD, or LOCAL is unset in echo /var/qmail/supervise/qmail-smtpd/run exit 1 fi if [ ! -f /var/qmail/control/rcpthosts ]; then echo "No /var/qmail/control/rcpthosts!" echo "Refusing to start SMTP listener because it'll create an open relay" exit 1 fi exec /usr/local/bin/softlimit -m 7000000 \ /usr/local/bin/tcpserver -v -R -l "$LOCAL" -x /etc/tcp.smtp.cdb -c "$MAXSMTPD" \ -u "$QMAILDUID" -g "$NOFILESGID" 0 smtp /var/qmail/bin/qmail-smtpd 2>&1
Dosyaya, aşağıda kırmızı ile belirtilmiş eklemeleri yapın.
#!/bin/sh QMAILDUID=`id -u qmaild` NOFILESGID=`id -g qmaild` MAXSMTPD=`cat /var/qmail/control/concurrencyincoming` LOCAL=`head -1 /var/qmail/control/me` RBLLIST="" RBLLIST=$RBLLIST" -r bl.spamcop.net" #RBLLIST=$RBLLIST" -r relays.ordb.org" RBLLIST=$RBLLIST" -r dnsbl.sorbs.net" #RBLLIST=$RBLLIST" -r safe.dnsbl.sorbs.net" #RBLLIST=$RBLLIST" -r dev.null.dk" #RBLLIST=$RBLLIST" -r list.dsbl.org" #RBLLIST=$RBLLIST" -r multihop.dsbl.org" #RBLLIST=$RBLLIST" -r orbs.dorkslayers.com" #RBLLIST=$RBLLIST" -r orbz.gst-group.co.uk" #RBLLIST=$RBLLIST" -r sbl-xbl.spamhaus.org" if [ -z "$QMAILDUID" -o -z "$NOFILESGID" -o -z "$MAXSMTPD" -o -z "$LOCAL" ]; then echo QMAILDUID, NOFILESGID, MAXSMTPD, or LOCAL is unset in echo /var/qmail/supervise/qmail-smtpd/run exit 1 fi if [ ! -f /var/qmail/control/rcpthosts ]; then echo "No /var/qmail/control/rcpthosts!" echo "Refusing to start SMTP listener because it'll create an open relay" exit 1 fi exec /usr/local/bin/softlimit -m 7000000 \ /usr/local/bin/tcpserver -v -R -l "$LOCAL" -x /etc/tcp.smtp.cdb -c "$MAXSMTPD" \ -u "$QMAILDUID" -g "$NOFILESGID" 0 smtp \ /usr/local/bin/rblsmtpd -C $RBLLIST /var/qmail/bin/qmail-smtpd 2>&1
Daha sonra qmail’i yeniden başlatın. Böylce, gelen smtp istekleri dosyanın yukarısında belirtilen RBLLIST sunucularında sorgulanacaktır. Örnekte, bl.spamcop.net ve dnsbl.sorbs.net block listeleri kullanılıyor. Başlarında # işareti konup comment out edilmiş olanlar ignore edilmektedir. Farklı blocklistler kullanmak istemeniz durumunda, yeni RBLLIST satırları ekleyebilirsiniz.
Linkler:
http://cr.yp.to/ucspi-tcp/rblsmtpd.html
http://www.qmailinfo.org/index.php/Rblsmtpd
http://www.belgeler.org/howto/qmail-kurulumu-nasil_rblsmtpd.html
Vpopmail Custom Maildir – Skeleton Directory Patch
Normalde Qmail’in maildir yapısı, yeni maillerin bulunduğu new/, okunmuş maillerin tutulduğu cur/ ve teslimat sürecinde kullanılan tmp/ isimli folderdan oluşur. İhtiyaçlarınız doğrultusunda Maildir yapısına yeni klasörler eklemek isteyebilir ve sisteme eklediğiniz her yeni mail kullanıcısının Maildir yapısının bu klasörleri de içermesini isteyebilirsiniz.
Ya da maildrop gibi bir yazılım kullanıyorsunuzdur ve maildrop için tanımladığpınız, maildrop ifadeleri içeren .qmail dosyasının her yeni kullanıcı açılışında Maildir’a kopyalanmasını isteyebilirsiniz.
İşte bu gibi durumlar için skel olarak anılan vpopmail patchi işinize yarayabilir. Skel patchini yüklediğiniz zaman, vpopmail, yeni kullanıcı açılışlarında, daha önceden içerisine özel klasör yapınızı ve dosyalarınızı attığınız ~vpopmail/skel isimli dizinin içeriğini kullanıcının home dizinine kopyalarak, sizi bu işi manuel yapma zahmetinden kurtarır.
Kurulum ve ayarlar şu şekilde:
Netqmail
Qmail’in farkli ozelliklerini devreye almak icin qmail kurulumunda yapilmasi gereken patch’lerle ugrasmamak icin, icerisinde qmail’in yani sira, qmail icin cikan onemli tum patchleri barindiran netqmail isimli paketin yeni versiyonu 1.06 cikmis.
GMFCheck (Goodmailfrom)
Guzel bir qmail patch’i….
http://www.metesek.com/projects/…/project_qmail-gmfcheck.php
Bounce Maillerden kurtulmak.
Mail serverinizda olmayan bir kullaniciya bir mail gonderildigi zaman, serveriniz ilgili RFC‘lerde belirlenmis kriterleri goz onune alarak maili atan adrese”Bende bu sekilde bir kullanici yok.” mealinden bir hata mesaji gonderir (Delivery Status Notification). Bu sekilde maili gonderen kullanici, gondermis oldugu mailin akibetini ve neden iletilemediginin nedenlerini ogrenmis olur.
Ne kadar kullanisli bir sistem degil mi ?
Ancak bu sorunun cevabi her zaman evet olmayabiliyor, ozellikle artik spammer ve kotu niyetli kisiler SMTP’nin bu guzel ozelligini kullanarak sisteminizin basina bela olabiliyorlar. Mesela, bu spammer arkadaslardan biri, sizin mail serverinizda bulunmayan bir kullaniciya, olmayan bir mail adresinden mail atiyor. Bu durumda, mail serveriniz kendi uzerindeki kullanicilar arasinda bu mailin muhattabini bulamadigi icin bir DSN mesaji hazirlayip, spammer’in gonderim yaptigi mail adresine bu mesaji iletiyor. Ancak karsi tarafta da boyle bir mail adresi olmadigindan dolayi, gonderilen hata mesaji karsi tarafin mail serverinca duzenlenmis yeni bir hata mesaji ile birlikte mail serveriniza geri gonderiliyor. Durum bu olunca da posta sunucunuzun kuyrugunda manasi olmayan bir cok mail birikiyor. Sonra vaktinizin bir kismini bu mailleri kuyruktan silmeye vakfediyorsunuz. Ne kadar guzel bir havanda su dovme yontemi degil mi ?
Iste Qmail/Vpopmail serverinizda bu durumdan kurtulmak icin yapilabilecek seyler mevcut.
Oncelikle, double bounce olarak nitelendirilen bu mailleri, http://www.faqts.com/knowledge_base/view.phtml/aid/2571/fid/203 linkinde anlatilan sekilde uzay bosluguna gonderebilirsiniz.
Qmail’in control dizini altinda, doublebounceto isimli bir dosya olusturup icine devnull yazin.
# echo devnull > /var/qmail/control/doublebounceto
Daha sonra qmail’in alias dizini altinda .qmail-devnull isimli bir dosya olusturarak icerisinde sadece # yazin.
# echo # > ~alias/.qmail-devnull
Ve qmail’inizi restart edin.
Bir de daha radikal bir cozum soz konusu; o da herhangi bir bounce mail gondermemek.
Bunu yapmanin yolu da soyle:
~vpopmail/domains/domain.com dizininde bulunan ve icerigi,
|/var/vpopmail/bin/vdelivermail ” bounce-no-mailbox olan .qmail-default isimli dosyanin icerigini
|/var/vpopmail/bin/vdelivermail ” delete olarak degistirin.
Elveda bounce ve double bounce mailler.
Qmail/Vpopmail Clustering
Diyelim ki cok fazla sayida kullanici barindiran bir mail domaininiz var. Ancak o kadar cok islem trafigi yasaniyor ki, tek bir mail servera guvenip mail trafiginizi yonetmekten cekiniyorsunuz.
Iste bu asamada bir clustering (kumeleme) ihtiyaci doguyor; ve qmail ile clustering yapmak oldukca kolay. Bu yazimda genisletilebilir bir qmail clustering yapisinin nasil yapilabilecegini anlatmaya calisacagim.
Oncelikle, mysql ile enterge edilmis calisan iki adet qmail/vpopmail serveriniz oldugunu varsayiyorum.
Her iki qmail server ayni domainleri yonetecegi icin qmail ve vpopmail’in bazi dizinlerini NFS uzerinden paylastirmaniz gerekiyor. NFS uzerinden paylastirma isini, iki sekilde yapabilirsiniz, sadece NFS server olarak calisacak ve yeterli disk alani mevcut olan bir server –hatta S.A.N baglantisi olan bir sever- kullanabileceginiz gibi, qmail serverlarinizdan birisini ayni zamanda NFS server olarak kullanabilir ve gerekli dizinleri diger qmail server(lar)a paylastirabilirsiniz.
Qmail ve Vpopmail’in paylastirilmasi gereken dizinleri sunlar;