Kullanıcı verileri ve ayarları

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.

Exim'e "her teslimatı sadece bir alıcı için kabul et" demek istersek

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

SpamAssassin'e alıcının kullanıcı isminin aktarılması

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'de kullanıcı verilerinin ve ayarlarının etkinleştirilmesi

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:

  • Debian'da /etc/default/spamassassin dosyasının OPTIONS= satırını düzenleyerek.

  • Red Hat'ta /etc/sysconfig/spamassassin dosyasının SPAMDOPTIONS= satırını düzenleyerek.

  • Diğerlerini siz bulun.

Gereken seçenekler:

  • -u kullanıcı - spamd'nin hangi kullanıcının (örn. mail) aidiyetinde çalışacağı belirtilir.

  • -x - kullanıcıların ev dizinlerindeki yapılandırma dosyalarına bakılmaz.

  • --virtual-config-dir=/var/lib/spamassassin/%u - kullanıcı verilerinin ve ayarlarının yeri belirtilir. “%u” SpamAssassin tarafından kullanıcı ismi ile değiştirilerek kullanılır. spamd bu dizini oluşturmaya veya bu dizinde değişiklik yapmaya yetkili olmalıdır:

    # 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.



[34] Her ne kadar Bayes eğiticisi işleyiş olarak kullanıcıya özel ise de SpamAssassin'in Bayes eğiticisi naçizane fikrime göre herhalükarda o kadar da parlak değildir. Örnek olarak spam göndericiler sözlükten rasgele seçilmiş kelimeler ve öykülerle bu tür sistemleri tohumlayarak alt edebilmektedir.