husonet | Tarih: 08.09.2014
SpamAssassin konfigürasyonu
Mail sunucu için spam filtre konfügürasyonu
Bütün kurulumlarınızı yaptıktan sonra spam filtre özelliğimizi kullanabiliriz.
#spamc paketini kuralım.
aptitude install spamc
Öncelikle işlemlerimizi yaptıracağımız kullanıcı ve grubumuzu oluşturalım.
Sonrasında postfix için master.cf konfigürasyonumuzu yapalım
Filter bash scriptimizi yazalım.
Basit
vim /usr/bin/spamfilter.sh
chown spamd:spamd /usr/bin/spamfilter.sh
chmod 755 /usr/bin/spamfilter.sh
SpamAssassin Konfigürasyonu. 3.x versiyonunu kullandığım için baz olarak 3.x alınmıştır.
vim /etc/spamassassin/local.cf
# Spam olarak belirlenen mailin konu kısmına SPAM yazdırılır versiyon 3.0 dan itibaren SCORE etiketide eklenmiştir.
rewrite_header Subject *****SPAM***** (_SCORE_)
# İleti spam olarak etiketlenmiş ise, orjinal iletinin kullanıcıya eklenti olarak gönderilir. Bu tanım ile kullanıcının iletiyi doğrudan görmesini engellenir.
report_safe 1
# Her ileti için tekrar eden mail sayısına göre puanlama yapılır bu belirtilen puan ile spam olarak yakalama işlemi yapılır. Bu sayıyı arttırmamaya dikkat etmek lazım spam yakalama zorlaşabilir.
required_score 3.0
# içeriye dayalı spam tespit etmeyi aktifleştirir. Thomas Bayesian adlı matamatikçi tarafından geliştirilen bir yöntemdir, spam olan bir ileti içerisindeki karakterler ve işaretler bir başka mail içerisinde de geçiyorsa muhtemelen o ileti de spamdır, mantığına 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.
use_bayes 1
bayes_auto_learn 1
skip_rbl_checks 0
use_razor2 0
use_dcc 0
use_pyzor 0
Spam olan mailleri kullanıcıların spam klasörüne taşıyan betiğimizi yazalım.
vim /root/scripts/spammove.sh
Bunuda istediğimiz bir zaman diliminde çalışacak bir cron a ekleyebiliriz. Ben her 3 dakika da bir çalışsın istedim.
*/3 * * * * sh /root/scripts/spammove.sh
Kaynaklar: http://belgeler.org/howto/antispam-spamassasin.html
#spamc paketini kuralım.
aptitude install spamc
Öncelikle işlemlerimizi yaptıracağımız kullanıcı ve grubumuzu oluşturalım.
# groupadd spamd
# useradd -g spamd -s /bin/false -d /var/log/spamassassin spamd
# mkdir /var/log/spamassassin
# chown spamd:spamd /var/log/spamassassin
Sonrasında postfix için master.cf konfigürasyonumuzu yapalım
smtp inet n - n - - smtpd -o content_filter=spamfilter
587 inet n - n - - smtpd -o content_filter=spamfilter
# spammasssin
spamfilter unix - n n - - pipe
flags=Rq user=spamd argv=/usr/bin/spamfilter.sh -oi -f ${sender} ${recipient}
Filter bash scriptimizi yazalım.
Basit
vim /usr/bin/spamfilter.sh
#!/bin/bash
#
# spamfilter.sh
#
# Simple filter to plug SpamAssassin into the Postfix MTA
#
# Modified by Jeremy Morton
#
# This script should probably live at /usr/bin/spamfilter.sh
# ... and have 'chown root:root' and 'chmod 755' applied to it.
#
# For use with:
# Postfix 20010228 or later
# SpamAssassin 2.42 or later
# Note: Modify the file locations to suit your particular
# server and installation of SpamAssassin.
# File locations:
# (CHANGE AS REQUIRED TO SUIT YOUR SERVER)
SENDMAIL=/usr/sbin/sendmail
SPAMASSASSIN=/usr/bin/spamc
logger <<<"Spam filter piping to SpamAssassin, then to: $SENDMAIL $@"
${SPAMASSASSIN} | ${SENDMAIL} "$@"
exit $?
chown spamd:spamd /usr/bin/spamfilter.sh
chmod 755 /usr/bin/spamfilter.sh
SpamAssassin Konfigürasyonu. 3.x versiyonunu kullandığım için baz olarak 3.x alınmıştır.
vim /etc/spamassassin/local.cf
# Spam olarak belirlenen mailin konu kısmına SPAM yazdırılır versiyon 3.0 dan itibaren SCORE etiketide eklenmiştir.
rewrite_header Subject *****SPAM***** (_SCORE_)
# İleti spam olarak etiketlenmiş ise, orjinal iletinin kullanıcıya eklenti olarak gönderilir. Bu tanım ile kullanıcının iletiyi doğrudan görmesini engellenir.
report_safe 1
# Her ileti için tekrar eden mail sayısına göre puanlama yapılır bu belirtilen puan ile spam olarak yakalama işlemi yapılır. Bu sayıyı arttırmamaya dikkat etmek lazım spam yakalama zorlaşabilir.
required_score 3.0
# içeriye dayalı spam tespit etmeyi aktifleştirir. Thomas Bayesian adlı matamatikçi tarafından geliştirilen bir yöntemdir, spam olan bir ileti içerisindeki karakterler ve işaretler bir başka mail içerisinde de geçiyorsa muhtemelen o ileti de spamdır, mantığına 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.
use_bayes 1
bayes_auto_learn 1
skip_rbl_checks 0
use_razor2 0
use_dcc 0
use_pyzor 0
Spam olan mailleri kullanıcıların spam klasörüne taşıyan betiğimizi yazalım.
vim /root/scripts/spammove.sh
#!/bin/sh
SPAMFILE=$(find /var/spool/postfix/virtual/ -regextype posix-extended -regex '.*/[a-zA-Z0-9.-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9.-]+/cur.*' -name '*' -type f -exec grep -l 'X-Spam-Flag: YES' {} \;)
for file_name in $SPAMFILE
do
directory=$(echo $file_name | sed 's/cur.*/\.Junk/g')
directory_root=$(echo $file_name | sed 's/cur.*//g')
if ! [ -d "$directory" ]; then
maildirmake $directory
chown spamd:spamd $directory
chmod 777 -Rf $directory
echo INBOX.Junk >> $directory_root/courierimapsubscribed
fi
echo $file_name >> $directory/courierimapuiddb
#echo "$file_name"
target=$(echo $file_name | sed 's/cur/\.Junk\/cur/g')
#echo "$target"
mv $file_name $target
done
Bunuda istediğimiz bir zaman diliminde çalışacak bir cron a ekleyebiliriz. Ben her 3 dakika da bir çalışsın istedim.
*/3 * * * * sh /root/scripts/spammove.sh
Kaynaklar: http://belgeler.org/howto/antispam-spamassasin.html