# Bu erişim denetim listesi gelen bir SMTP aktarımında RCPT
# komutu için kullanılır. Bu sınamalar alıcı adresi kabul
# ya da red edilinceye kadar sırayla yapılır.
acl_rcpt_to:
# Posta yerel SMTP üzerinden alınmışsa (yani, TCP/IP bağlantısı
# ile gelmiyorsa) kabul et. Bunu boş bir konak alanını
# sınayarak yapacağız. Ayrıca, postalarını rölelediğimiz
# konaklardan gelen postaları da kabul edeceğiz.
#
# Alıcı doğrulamasını burada atlıyoruz, çünkü çoğu durumda
# istemciler kullanıcıların posta istemcileridir ve SMTP
# hata iletileri ile ne yapacaklarını bilmezler.
#
accept
hosts = : +relay_from_hosts
# İleti, kimlik kanıtlaması yapılan bir bağlantı üzerinden
# geliyorsa kabul ediyoruz. Yine, bu iletiler kullanıcıların posta
# istemcilerinden geldiklerinden alıcı doğrulaması yapmıyoruz.
#
accept
authenticated = *
# Yerel kısım @ % / | ! karakterlerinden birini içeriyorsa,
# iletiyi reddediyoruz. Bunlar normal yerel kısımlarda çok nadir
# görülür, çoğunlukla röleleme sınırlamalarını aşmaya çalışanlarca
# kullanılır.
#
# Ayrıca, yerel kısım bir nokta ile başlıyorsa da reddediyoruz.
# Boş bileşenler RFC 2822'de kuraldışıdır, fakat Exim bu yaygın
# olduğundan bunlara izin verir. Buna rağmen, bir nokta ile
# başlayan bir yerel kısım bir dosya ismi olarak kullanılmışsa
# (örneğin, bir posta listesi), sorunlara yol açabilir.
#
deny
local_parts = ^.*[@%!/|] : ^\\.
# Eğer $acl_m0'da kayıtlı bir sebep varsa, göndericiyi 20 saniye
# beklettikten sonra reddediyoruz.
#
deny
message = $acl_m0
log_message = $acl_m1
condition = ${if and {{def:acl_m0}{def:acl_m1}} {true}}
delay = 20s
# Alıcı adres bizim postalarını kabul ettiğimiz alanlardan birine
# ait değilse, göndericiyi 20s beklettikten sonra reddediyoruz.
#
deny
message = relay not permitted
!domains = +local_domains : +relay_to_domains
delay = 20s
# Alıcı adres bizim postalarını kabul ettiğimiz alanlardan birine
# ait fakat geçersizse, göndericiyi beklettikten sonra reddediyoruz.
#
deny
message = unknown user
!verify = recipient/callout=20s,defer_ok,use_sender
delay = ${if def:sender_address {1m}{0s}}
# Zarf göndericisi adresi boş fakat postanın birden fazla alıcısı
# varsa, bağlantıyı kesiyoruz. Meşru teslimat durum bildirimleri
# asla bir defada birden fazla alıcıya gönderilmez.
#
drop
message = Legitimate bounces are never sent to more than one \
recipient.
senders = : postmaster@*
condition = $recipients_count
delay = 5m
# --------------------------------------------------------------------
# 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
# --------------------------------------------------------------------
# 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 =
# 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 =
# --------------------------------------------------------------------
# Zarf Gönderici İmlemesinin Sınanması.
# Bu kısım öntanımlı olarak iptal edilmiştir, çünkü 'transports' ve
# 'routers' bölümlerindeki yapılandırmanın da değiştirilmesi gerekir.
#
# Kendine özgü imlemesini içeriyorsa, alıcı adresini kabul ediyoruz.
# Bu, teslimatın, daha önce bizden gönderilmiş bir postanın teslimat
# durum bildirimi olduğunu gösterir.
#
#accept
# domains = +local_domains
# condition = ${if and {{match{${lc:$local_part}}{^(.*)=(.*)}}\
# {eq{${hash_8:${hmac{md5}{SECRET}{$1}}}}{$2}}}\
# {true}{false}}
#
# Aksi takdirde, posta boş gönderici adresli ise ama alıcı, imlemeli zarf
# gönderici adresi şemasını seçenlerden biri ise postayı reddediyoruz.
#
#deny
# message = This address does not match a valid, signed \
# return path from here.\n\
# You are responding to a forged sender address.
# log_message = bogus bounce.
# senders = : postmaster@*
# domains = +local_domains
# set acl_m9 = /home/${extract{1}{=}{${lc:$local_part}}}/.return-path-sign
# condition = ${if exists {$acl_m9}{true}}
# --------------------------------------------------------------------
# --------------------------------------------------------------------
# Eğer gönderici adresi boşsa, bir posta kutusu olmayan kullanıcılara
# (örn, postmaster, webmaster, v.s.) gelen postayı reddediyoruz.
# Bu kullanıcılar posta göndermezler, dolayısıyla onlara bir posta
# (teslimat durum bildirimi) dönemez.
#
# BİLGİ: Bu kısım öntanımlı olarak iptal edilmiştir, çünkü uygulanacak
# kural yerel postanın teslimat biçimine özeldir. Bu sınamayı
# etkinleştirmek isterseniz, aşağıdaki kurallardan size uygun
# olan birini (ama sadece birini) devreye sokun.
#
#deny
# message = This address never sends outgoing mail. \
# You are responding to a forged sender address.
# log_message = bogus bounce for system user <$local_part@$domain>
# senders = : postmaster@*
# domains = +local_domains
# set acl_m9 = ${extract{1}{=}{${lc:$local_part}}}
#
# --- Alıcıların yerel hesapları varsa, bu iki satırı devreye alın:
# set acl_m9 = ${extract{2}{:}{${lookup passwd {$acl_m9}{$value}}}{0}}
# !condition = ${if and {{>={$acl_m9}{500}} {<${acl_m9}{60000}}} {true}}
#
# --- Posta teslimatını Cyrus yapıyorsa bu satırı devreye alın:
# condition = ${run {/usr/sbin/mbpath -q -s user.$acl_m9} {true}}
# --------------------------------------------------------------------
# Gönderici adresinin alanadı için varsa, SPF kayıtlarını sorgulayalım.
# Gönderici konak bu alanadı için yetkilendirilmişse teslimatı kabul
# yoksa red edeceğiz.
#
deny
message = [SPF] $sender_host_address is not allowed to send mail \
from $sender_address_domain
log_message = SPF check failed.
spf = fail
# İleti başlığına bir SPF-Received: satırı ekleyelim.
warn
message = $spf_received
# --------------------------------------------------------------------
# Belli bir sunucu/gönderici/alıcı üçlüsü için grilisteleme durumunu
# sınayacağız. Bu satırları devreye almadan önce "greylistd"'yi
# kurmuş olmanız gerekir.
# Bkz: http://packages.debian.org/unstable/main/greylistd
#
# 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}}
# delay = 20s
# --------------------------------------------------------------------
# Alıcıyı kabul ediyoruz.
accept