Yönlerdirilmiş Postaların Sınama Dışı Tutulması

SMTP aktarımına bu sınamaları ekledikten sonra, kendimizi posta listelerinden veya diğer sitelerin posta hesaplarından yönlendirilmiş postaları reddederek dolaylı spam yapar bir halde bulabiliriz ( Yönlendirilen Postalar bölümüne bakınız). En azından bizim spam ve/veya virüs filtrelemelerimiz sonucunda gönderdikleri postaların reddedilmemesii için bu konakları aklisteye alabilir ve sınamalarımızın dışında tutabiliriz.

Bu örnekte, her RCPT TO: komutuna yanıt verirken iki dosyaya bakıyoruz:

  • Yedek posta alıcılarını ve diğer aklisteli göndericileri içeren genel amaçlı bir ak liste: /etc/mail/whitelist-hosts

  • Yönlendirimiş posta alıcısı olan kullanıcıların postalarını yönlendiren konakları belirttikleri /home/kullanıcı/.forwarders dosyaları.

Eğer posta kullanıcılarınızın yerel hesapları ve ev dizinleri yoksa, bu dosyaların bulunacağı yolları değiştirebilir ve/veya sisteminize uygun bazı arama mekanizmaların kullanılmasını sağlayabilirsiniz (örn, veritabanı veya LDAP sorguları).

Eğer gönderici konak bu aklistelerden birindeyse, Seçimlik Gecikmeler bölümünde anlatıldığı gibi “accept” sözcüğünü $acl_m0 değişkenine kaydedip $acl_m1 değişkeninin içini boşaltacağız. Böylece bu postanın daha sonraki sınamalarda reddedilmesini önlemiş olacağız.

acl_rcpt_to ACL'sinde alıcı adresini doğruladıktan sonraya ve uzak konaklardan yerel kullanıcılara kimlik kanıtlamasız teslimatlarla ilgili accept deyimlerinin öncesine (varsa grilisteleme ve zarf gönderici imlemesi sınamalarının öncesine) aşağıdaki satırları yerleştireceğiz:

  # Gönderici konak genel akliste içindeyse postayı kabul edeceğiz.
  # Geçici olarak $acl_m9 değişkenine bu dosyayı atayacağız.
  # Konak listedeyse, $acl_m0'a bir değer yerleştirip $acl_m1'i
  # temizleyeceğiz, böylece daha sonra bu postayı reddetmeyeceğiz.
  #
  accept
    set acl_m9  = /etc/mail/whitelist-hosts
    hosts       = ${if exists {$acl_m9}{$acl_m9}}
    set acl_m0  = accept
    set acl_m1  =


  # Gönderici konak alıcının ev dizinindeki ".forwarders" dosyasındaysa
  # postayı kabul edeceğiz. Geçici olarak $acl_m9 değişkenine bu dosyayı
  # atayacağız. Konak listedeyse, $acl_m0'a bir değer yerleştirip $acl_m1'i
  # temizleyeceğiz, böylece daha sonra bu postayı reddetmeyeceğiz.
  #
  accept
    domains     = +local_domains
    set acl_m9  = /home/${extract{1}{=}{${lc:$local_part}}}/.forwarders
    hosts       = ${if exists {$acl_m9}{$acl_m9}}
    set acl_m0  = accept
    set acl_m1  =

acl_data ACL'sinin çeşitli deyimlerinde $acl_m0'ın değerine bakarak eğer yukarıdaki gibi boş bırakılmışsa postayı reddetmeyeceğiz. Örneğin, aklisteli konaklardan gelen bir postanın RFC2822 başlığının bulunmayışı sebebiyle reddedilmesini önlemek istersek:

  deny
    message     = Your message does not conform to RFC2822 standard
    log_message = missing header lines
    !hosts      = +relay_from_hosts
    !senders    = : postmaster@*
    condition   = ${if !eq {$acl_m0}{accept}{true}}
    condition   = ${if or {{!def:h_Message-ID:}\
                           {!def:h_Date:}\
                           {!def:h_Subject:}} {true}{false}}

Bu ve ilgili diğer sınamalar sonraki Tamamlanmış ACL'ler bölümünde bulunabilir.