Spamassasin
Önceki Posta Sunucuları için Spam Önleme Araçları Sonraki
Spamassasin
Spamassassin kural tabanlı bir spam önleme aracıdır. Spamassassin 800 den fazla kuralı içinde barındırır. Bu kurallara göre bir postanın spam olup olmadığına karar verebilir. Esnek ve gelişmiş programlama arabirimi sayesinde hemen hemen tüm posta sunucuları ile çalışabilr. Ayrıca birçok spam öneleme aracı ile de birlikte bir bütünlük içinde çalışabilir.Bunların başında Razor, Pyzor, Dcc gelir. Ayrıca RBL'leri (kara listeleri) kontrol edebilir ve MX kaydı sorgulaması yapabilir.
Çalışma mantığı kısaca, iletinin başlık bilgisi, konu kısmı ve iletinin gövde kısmı spam denetiminden geçiriliyor. Denetim sırasında her bir adım için puanlar veriliyor. Örneğin iletinin konu kısmı boşsa veya büyük harfler içeriyorsa, ileti gövdesi çok fazla HTML etiketi içeriyorsa ya da ileti birden çok kişiye gönderilmişse gibi kriterler gözönünde bulunduruluyor. Bir de bunlara RBL ve MX kontrolu ekleniyor. Bunların sonucunda yapılan puanlama bizim belirlediğimiz değere göre spam ya da değil şeklinde sonuçlanıyor.
Spamassassin Kurulumu
Kurulum için http://spamassassin.apache.org/downloads.cgi adresinden en son sürümü indirebilirsiz. Paketler .tar.gz, .tar.bz2, .zip biçiminde temin edilebilir. Tar paketlerini RPM haline getirdikten sonrada kurulum yapmayı tercih edebilirsiniz. .tar.gz paketi için,
rpmbuild -tb Mail-SpamAssassin-3.0.2.tar.gz
.tar.bz2 paketi için,
rpmbuild -tb --define "srcext .bz2" Mail-SpamAssassin-3.0.2.tar.bz2
ile RPM paketini oluşturduktan sonra
rpm -ivh paketismi.rpm
Ya da tar paketini açıp;
tar -zxvf Mail-SpamAssassin-3.0.2.tar.gz
paketin açıldığı dizine geçip;
perl Makefile.PL
make
su -c 'make install'
komutları ile kurulumu gerçekleştirebilirsiniz. spamassassin Perl dilinde yazılmıştır.Bu yüzden sistemde perl kurulu olmalıdır. Perl modüllerinin bağımlılıklarıyla uğraşmak istemiyorsanız ve de sisteminizde apt-get kurulu ise:
apt-get install spamassassin
komutuyla kurulumu yapabilirsiniz. Böylece paket bağımlılıkları ile uğraşmak zorunda kalmazsınız. apt-get gerekli olan tüm paketleri bağımlılıklarına bakarak sisteminize kurar. Kurulumdan hemen sonra spamassassin'i sınayabilirsiniz. Sınamak için ornek.txt adlı boş bir dosya oluşturun ve aşağıdaki komutu kullanın.
spamassassin -t < ornek.txt > ornek.out
Uyarı
spamassassin'in 2.6x serisi bir sürümünü kullanıyorsanız apt-get kullanarak en çok 2.64 sürümünü yükleyebilirsiniz. Eğer spamassassin'i 3.x sürümüne yükseltmek istiyorsanız 2.64 sürümünü kaldırmanız gerekir:
rpm -e spamassassin
Daha sonra spamassassin'in 3.02 sürümünü yükleyebilmek için ilk önce perl-mail-spamassassin paketini yüklemeleyiz:
rpm -ivh perl-mail-spamassassin-3.0.2.1.i386.rpm
rpm -ivh spamassassin-3.0.2.1.i386.rpm
Şimdi spamassassin hizmetini başlatabirsiniz. Eğer perl ile derleyerek kurmak istiyorsanız, yine işe 2.6 sürümünü kaldırmakla başlayın. spamassassin 3.x sürümüyle bazı yeni yetenekler kazanmış ve 2.6x sürümünde kullandığı bazı özellikleri değiştirmiştir. Biz her iki sürümün ortak özelliklerinden de bahsetmeye çalışacağız. Daha ayrıntılı bilgi için http://spamassassin.apache.org/full/3.0.x/dist/UPGRADE adresine bakın.
Kurulum sonrasında spamassassin'in yapılandırma dosyası /etc/mail/spammassassin dizininin altında bulunur. Bu dosyanın adı local.cf'dir. Örnek bir local.cf oluşturmak için http://www.yrex.com/spam/spamconfig.php adresinde bir yazılım mevcuttur. Yanlız bu yazılım spamassassin'in 2.5 serisi için yapılandırma dosyası üretmektedir. Üretilen local.cf dosyaları 2.6 ve 3.0 sürümlerinde doğru çalışmayabilir. spamassassin'in ayarlarını şu şekilde sınayabilirsiniz:
spamassassin --lint -D
Bu komut local.cf dosyasındaki kabul edilmeyen girdileri bize listeler. Bu şekilde yapılandırmamızı sınayabiliriz. -D seçeneği hata ayıklama yapabilmeyi sağlar. Aşağıda spamassassin'in 3.x sürümü için bir local.cf örneği verilmiştir.
# Bu dosya 3.x versiyonu için düzenlenmiştir.
# Kullandığınız Spamassassin versiyonuna ve sisteminizin durumuna
# göre yapılması gereken değişiklikler olabilir.

# How many hits before a message is considered spam. required_hits 5.0
# Text to prepend to subject if rewrite_subject is used
rewrite_header Subject ****SPAM(_SCORE_)****
# Encapsulate spam in an attachment
report_safe 1
# Enable the Bayes system
use_bayes 1
# Enable Bayes auto-learning
bayes_auto_learn 1
# Enable or disable network checks
skip_rbl_checks 0
use_razor2 1
use_pyzor 1
# Allows users to create rules
allow_user_rules 1
# Mail using languages used in these country codes will not be marked
# as being possibly spam in a foreign language.
ok_languages all
# Mail using locales used in these country codes will not be marked
# as being possibly spam in a foreign language.
ok_locales all
Şimdi yapılandırma dosyasından bazı satırları açıklamaya çalışalım:
required_hits 5.0
Bir iletini 5.0 puanı aştıktan sonra spam olarak değerlendirileceği anlamına gelir. Bu sayıyı arttırmak spam yakalama ihtimalini azaltır.
rewrite_header Subject ****SPAM(_SCORE_)****
Spam olarak işaretlenen iletinin konu kısmına spam skoru ile birlikte spam yazar. _SCORE_ özelliği 3.0 sürümü ile birlikte gelmiştir. Bu özellik iletinin kaç puanla spam olarak işaretlendiğini belirtir. Daha önceki sürümlerde bu özellik kullanılamaz. Daha önceki sürümlerde bu satırın yerine
rewrite_subject 1
subject_tag ****SPAM****
satırları vardı.
report_safe 1
Eğer ileti spam olarak işaretlenmişse, orjinal iletinin kullanıcıya bir eklenti olarak gönderilmesini sağlar. Bu özellik kullanıcının iletiyi doğrudan görmesini engeller.
use_bayes 1
bayes_auto_learn 1
Bu iki satır Bayes öğrenme yöntemi ile ilgili olan satırlardır. Temeli Thomas Bayesian adlı matamatikçi tarafından geliştirilren bu yöntem, eğer spam olan bir ileti içerisindeki karakterler ve işaretler bir başka ileti içerisinde de geçiyorsa muhtemelen o ileti de spamdır, ilkesine göre çalışır. Bu yöntem daha önce gelen iletileri esas alarak, olasılık hesaplarıyla, bir sonraki iletinin spam olup olmadığını tahmin ederek işler.
skip_rbl_checks 0
use_razor2 1
use_pyzor 1
Bu satırlar daha sonra ayrıntılı olarak değineceğimiz, spamassassin'in razor, pyzor ve dcc gibi uygulamalarla bir bütünlük içinde çalışmasını sağlıyacak satırlardır.
skip_rbl_checks değerini 1 yaparsanız karaliste (RBL) denetimi yapılmaz.
allow_user_rules 1
Bu satır kullanıcıların kendilerine özel kurallar oluşturmalarına izin verir. Bu kurallar kullanıcıların ev dizini altındaki ~/.spamassassin/user_prefs adlı dosyada tutulmalıdır. Kullanıcılara özel kurallar uygulamak istiyorsanız bu dosyayı muhakkak oluşturmanız gerekir. Bu dosyanın içeriği de local.cf dosyası gibi olacaktır.
ok_languages all
ok_locales all
Bu satırlarda ise belirtilen diller ve karakter kümeleri iel yazılmış iletilerin spam potansiyeli taşımadığını belirtiyoruz. Örneğin ok_languages turkish yazmış olsaydık, türkçe olan iletilerin spam olamayacağını belirtmiş olurduk. ok_locales chinese yazarsak çince karakter içeren iletiler spam değildir demiş oluruz. Öntanımlı olarak tüm diller ve karakter kümeleri seçilmiştir.
Şimdi bazı ek özelliklerede göz atabiliriz. Bir alan adından gelen tüm iletileri spam olarak işaretlemek istiyorsak,
blacklist_from *@spamcı.dom
blacklist_from *@budaspamcı.dom
satırlarını eklemeliyiz. Benzer bir şekilde yukarıdaki adreslerden gelen iletilerin hiçbir zaman spam olarak değerlendirilmemelerini istiyorsak,
whitelist_from *@spamcı.dom
whitelist_from *@budaspamcı.dom
satırlarını eklemeliyiz. Bir iletinin içine kullanıcıları bilgilendirmek amacı ile ileti ekleyebiriz. Bu ileti özgün iletiye eklenir. Bunu için yine local.cf dosyasına aşağıdaki satırları eklememiz gerekir.
clear_report_template
report bu ileti  spam olabilir.
report eger spam olmadıgını düsünüyorsanız
report [email protected] adresine iletiniz.
Anlaşılacağı üzere report deyimi ekleyeceğimiz iletiyi satırlar halinde oluşturmamızı sağlıyor. Bir de bu özelliğin etkin olabilmesi için yukarıdaki satırlara ek olarak report_safe 0 satırı
report_safe 1
haline getirilmelidir.
sa-learn Komutu ile Postaların Spamassassin'e Öğretilmesi
Kullanıcılar sa-learn komutunu kullanarak gelen iletileri sisteme spam ya da spam değil (ham) diyerek tanıtabilirler. Bu özellik, o zamana kadar spamassasin'e tanıtılan iletileri temel alarak, daha sonra gelecek olan iletilerin değerlendirilmesinde yardımcı olur.
sa-learn --ham "iletilerin_bulunduğu_dizin_veya_dosya"
Bu komut ile spamassassin'e, bu dizin ya da dosyada bulunan ileti ya da iletilerin spam olmadığını bildiriyoruz. Sisteme bildirdiğimiz iletilerin benzerleri alındığında spam olarak algılanmıyacaklardır.
sa-learn --spam "iletilerin_bulunduğu_dizin_veya_dosya"
Bu komut ile spamassassin'e, bu dizin ya da dosyada bulunan ileti ya da iletilerin spam olduğunu bildiriyoruz. Sisteme bildirdiğimiz iletilerin benzerleri alındığında spam olarak algılanacaklardır.
Örnek:
$ sa-learn --spam –mbox /root/evolution/local/Spam/mbox
Learned from 6 message(s) (7 message(s) examined).
--box seçeneği bu dosyanın bir mailbox olduğunu bildiriyor.
$ sa-learn --ham --mbox /root/evolution/local/Sent/mbox
Learned from 42 message(s) (43 message(s) examined).
Gerçekte spam olan fakat spamassassin tarafından bazı iletilerin spam olarak algılanmadığı ya da gerçekte spam olmayan fakat spammassassin tarafından spam olarak algılanan iletilerin varlığı durumunda kullanılması çok etkilidir. Belli bir zaman sonra, postalar spamassassin'e tanıdıldıkça spamassassin çok daha verimli bir şekilde çalışmaya başlıyacaktır.
SpamAssassin ve ProcMail
Procmail ve Maildrop Linux dünyasının en popüler eposta süzücüleridir. Eposta süzücüler daha önceden belirlediğimiz kriterlere göre epostalar teslim edilmeden önce onlar üzerinde işlem yapabilmemize olanak veririler. Örneğin, ileti boyutu bizim belirlediğimiz sınırın üzerinde ise reddedilsin ya da bir kullanıcıya gelen ileti bir başka kullanıcıya yönlendirilsin ya da iletinin gövde ya da konu kısmında kriterlere uyan anahtarlar varsa ileti silinsin gibi. Spamassassin bir iletiyi spam sınamasından geçirir fakat sonuç ne olursa olsun o ileti üzerinde kendi başına işlem yapamaz. Bunun için bir eposta süzücüsüne ihtiyaç duyar, dolayısıyla SpamAssassin'i bir eposta süzücüsüyle çalışacak şekilde yapılandırmalıyız. Bunun için ProcMail'i tercih ediyorum. Dilerseniz MailDrop ile de yapabilirsiniz. SpamAssassin'i ProcMail ile çalışacak şekilde ayarlamak için
/etc/procmailrc dosyasının içine aşağıdaki satırları yazmanız gerekir.
DROPPRIVS=yes
:0fw
| /usr/bin/spamassassin
Bu satırlar ProcMail'e SpamAssasin'le birlikte çalışması gerektiğini söyleyecektir. Peki daha fazla ne yapabiliriz. Örneğin konu kısmında *****SPAM***** olan iletilerin tümünü silebiliriz. Bunun için aşağıdaki satırları procmailrc dosyasına eklemeliyiz.
:0w
* ^Subject:.*\*\*\*\*SPAM\*\*\*\*\*
/dev/null
Fakat bu durumda silinen iletileri geri getirmenin bir yolu yoktur. Bu yapılandırmanın tehlikeli olduğu açıktır, spam olmayan iletiler silinebileceği gibi ileti kayıplarına da sebep olabilir. Spam iletileri bir dosyaya da taşıyabiliriz bunun için procmailrc dosyasına,
:0w
* ^Subject:.*\*\*\*\*SPAM\*\*\*\*\*
/Spam/mbox
eklemeliyiz. Anadizin altında /Spam/mbox adlı spam dosyada spam iletileri biriktirebiliriz.
Önceki Üst Ana Başlık Sonraki
Giriş Başlangıç Razor
Bir Linux Kitaplığı Sayfası