| |||||||
Kullanıcılarınızın bazıları kişisel SpamAssassin tercihlerini belirtebilmek isteyebilirler; örneğin, spam eşiği, posta kabul ettikleri diller ve karakter kümeleri, kara ve ak listeli kullanıcılar, vs. Hatta, SpamAssassin'in yerleşik Bayes derecelendirmesini kullanmanın bile mümkün olmasını isteyebilirler (bunun anlamlı olacağını düşünmesem de[34]).
Bu belgede evvelce Kullanıcı Verileri ve Ayarları bölümünde açıklandığı gibi, bunu yapmanın bir yolu vardır. Gelen her teslimattaki alıcı sayısını bir ile sınırlandırmamız gerekir. İlk RCPT TO: komutunu kabul ettikten sonra diğerlerini bir 451 SMTP yanıtı ile erteleriz. Grilisteleme Desteğinin Eklenmesinde olduğu gibi, eğer bağlanan posta aktarımcısı işini iyi bilen bir yazılımsa, bu yanıtın nasıl yorumlanacağını bilecek ve teslimatı yineleyecektir.
acl_rcpt_to ACL'sinde, alıcı adresi doğrulandıktan sonra ve uzak konaklardan yerel kullanıcılara kimlik kanıtlamasız gelen bağlantılar için bir accept deyiminin öncesine (yani, grilistelemeyi ve zarf gönderici imlerini sınamadan önceye) aşağıdaki deyimi yerleştireceğiz:
# Kullanıcı verilerini ve ayarlarını (Spamassasin gibi) destekleyebilmek
# için gelen her iletinin alıcı sayısını bir ile sınırlayalım.
#
# BİLGİ: Çok sayıda kullanıcınıza gönderilmiş bir postanın yerine
# ulaşması her alıcı için 30 dakika veya daha fazla olmak
# üzere katlanarak gecikecektir. Bu, özellikle zamanın kritik
# önemde olduğu durumlarda sorunlara yol açacaktır.
#
defer
message = We only accept one recipient at a time - please try later.
condition = $recipients_count
|
acl_data ACL'sinde, evvelce bahsettiğimiz spam kuralını değiştirerek, alıcı adresindeki yerel kısımda belirtilmiş kullanıcı ismini SpamAssassin'e aktaracağız.
# $spam_score ve $spam_report'a veri sağlamak için SpamAssassin'i
# çağıracağız. Tasnife bağlı olarak, $acl_m9 "ham" veya "spam"
# değerini alacak.
#
# Alıcı adresinin kullanıcı adını SpamAssassin'e aktaralım.
# Bunun için adresin '=' veya '@' karakterinden önceki kısmını
# küçük harfe dönüştüreceğiz. Evvelce bir defadaki alıcı sayısını
# önceden bir ile sınırladığımızdan çok sayıda alıcı olmayacak.
#
# İleti spam olarak tasnif edilmişse, reddetmiş gibi yapacağız.
#
warn
set acl_m9 = ham
spam = ${lc:${extract{1}{=@}{$recipients}{$value}{mail}}}
set acl_m9 = spam
control = fakereject
logwrite = :reject: Rejected spam (score $spam_score): $spam_report
|
Dikkat ederseniz, Exim'in ${local_part:...} işlevini kullanmak yerine “@” veya “=” karakterinden önceki kısmı kendimiz ayırdık. Bunun sebebi, ileride zarf gönderici imlemesi için “=” karakterini kullanacak olmamızdır.
SpamAssassin'e tekrar bakalım. Herşeyden önce, yapılandırma dosyasına evvelce yerleştirdiğimiz use_bayes 0 atamasını silebilirsiniz. Bu durumda, her kullanıcı kendi ayarlarını belirtebilme ayrıcalığına kavuşacaktır.
Eğer sisteminizdeki posta kutularının isimleri yerel UNIX hesaplarına göre açılmışsa bu mümkün olur. Öntanımlı olarak SpamAssassin artalan süreci, kendisine aktarılan kullanıcı ismine önce bir setuid() uygular ve kullanıcının verilerini ve ayarlarını kullanıcının ev dizinine kaydeder.
Eğer yapınız bu işleme uygun değilse (örneğin, posta hesaplarınız Cyrus SASL veya başka bir sunucu tarafından yönetiliyordur), SpamAssassin'e kullanıcı tercihlerini ve verilerini içeren dosyaları nerede bulacağını belirtmeniz gerekir. Ayrıca, spamd'nin mevcut olmayan bir kullanıcıya setuid() yapmasını önlemek için onun belli bir yerel kullanıcı adıyla çalışmasını sağlamanız gerekir.
Biz bu seçenekleri spamd'yi başlatırken belirteceğiz:
Gereken seçenekler:
# mkdir /var/lib/spamassassin # chown -R mail:mail /var/lib/spamassassin |
Bu kadar, bu değişiklikleri yaptıktan sonra spamd'yi yeniden başlatmanız yetecektir.
|
| ||||||||||