greylistd

Bu, belgenin yazarı tarafından bir Python gerçeklenimi olarak geliştirilmiş bir grilisteleme gerçeklenimidir. (Doğal olarak, bu gerçeklenim Tamamlanmış ACL'ler bölümünde uygulanacak.) Tek başına bir artalan süreci olarak çalışır ve herhangi bir veritabanını kullanmaz. Grilesteleme verisi verimlilik açısından 32 bitlik basit bir çırpı olarak saklanır.

Paketi http://packages.debian.org/unstable/mail/greylistd adresinde bulabilirsiniz. Debian kullanıcıları APT ile kolayca kurabilir:

# apt-get install greylistd

greylistd'yi devreye sokmak için, acl_rcpt_to ACL'sinde sonuncu accept deyiminden hemen önceye iki deyim ekleyeceğiz.

  # Belli bir sunucu/gönderici/alıcı üçlüsü için grilisteleme durumunu
  # belirleyecek "greylistd"'yi devreye sokacağız.
  #
  # Grilisteleme iletilerini bir boş gönderici için yapmıyoruz, çünkü
  # boş gönderici adresli varlık doğrulaması işimize yaramaz (gerçek
  # göndericinin varlığını sınamak için bir konağa posta gönderemeyiz).
  #
  defer
    message     = $sender_host_address is not yet authorized to deliver mail \
                  from <$sender_address> to <$local_part@$domain>. \
                  Please try later.
    log_message = greylisted.
    domains     = +local_domains : +relay_to_domains
    !senders    = : postmaster@*
    set acl_m9  = $sender_host_address $sender_address $local_part@$domain
    set acl_m9  = ${readsocket{/var/run/greylistd/socket}{$acl_m9}{5s}{}{}}
    condition   = ${if eq {$acl_m9}{grey}{true}{false}}

Hatalı teslimat durum bildirimlerini engellemek için zarf gönderici imlerini kullanmıyorsanız, bunun benzeri bir deyimi acl_data ACL'sine ayrıca boş göndericili grilisteleme iletileri olarak ekleyebilirsiniz.

Grilistelemenin amaçlarına uygun olarak veriyi burada yukarıdakinden biraz farklı olarak kullanıyoruz. Boş olan $sender_address'e ek olarak, bu noktada ne $local_part ne de $domain tanımlıdır. Ancak, $recipients, tüm alıcı adreslerinin virgüllerle ayrılmış bir listesini içerir. Meşru teslimat durum bildirimleri için bu değişken sadece bir adres içermelidir.

  # Burada, zarf gönderici adresi olmayan iletilere grilisteleme
  # uygulayacağız. Bunları RCPT TO:'dan sonra grilistelemeye konu
  # etmeyeceğiz, çünkü gönderici varlık doğrulamaları yaparken
  # karşı konaklarla olumsuz etkileşime girilebilir.
  #
  defer
    message     = $sender_host_address is not yet authorized to send \
                  delivery status reports to <$recipients>. \
                  Please try later.
    log_message = greylisted.
    senders     = : postmaster@*
    set acl_m9  = $sender_host_address $recipients
    set acl_m9  = ${readsocket{/var/run/greylistd/socket}{$acl_m9}{5s}{}{}}
    condition   = ${if eq {$acl_m9}{grey}{true}{false}}