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