# Bu erişim denetim listesi gelen bir SMTP aktarımında ileti verisi
# tamamen alındıktan sonra kullanılır. Bu sınamalar alıcı adresi
# kabul ya da red edilinceye kadar sırayla yapılır.
acl_data:
# Bazı başlık satırlarını günlüğe kaydedelim.
warn
logwrite = Subject: $h_Subject:
# İleti kendi konaklarımızdan alınmış ve Message-ID başlığını
# içermiyorsa, onu biz ekleyeceğiz.
warn
condition = ${if !def:h_Message-ID: {1}}
hosts = +relay_from_hosts
message = Message-ID: <E$message_id@$primary_hostname>
# Posta yerel SMTP üzerinden alınmışsa (yani, TCP/IP bağlantısı
# ile gelmiyorsa), kabul ediyoruz. Bunu boş bir konak alanını
# sınayarak yapacağız. Ayrıca, postalarını rölelediğimiz
# konaklardan gelen postaları da kabul edeceğiz.
#
accept
hosts = : +relay_from_hosts
# İleti, kimlik kanıtlaması yapılan bir bağlantı üzerinden
# geliyorsa kabul ediyoruz.
#
accept
authenticated = *
# 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}{false}}
delay = 20s
# İleti uzunluğu sınırlamasını devreye sokalım.
#
deny
message = Message size $message_size is larger than limit of \
MESSAGE_SIZE_LIMIT
condition = ${if >{$message_size}{MESSAGE_SIZE_LIMIT}{yes}{no}}
# Başlıktaki adreslerin sözdizimi hatalıysa reddediyoruz.
#
deny
message = Your message does not conform to RFC2822 standard
log_message = message header fail syntax check
!verify = header_syntax
# Message-ID:, Date: veya Subject: başlıklarından biri olmayan bir
# ileti dışardan gelmişse reddetmek için aşağıdaki satırları devreye alın.
#
# Bazı özelleştirilmiş posta aktarımcılarının, örneğin posta listesi
# sunucularının boş gönderici adresi ile gönderdikleri postalara
# kendiliklerinden bir Message-ID üretmedikleri bilinmektedir;
# böyle durumlar için boş bir gönderici adresin varlığına da bakacağız.
#
#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}}
# "Sender:", "Reply-To:" veya "From:" satırlarından en azından birindeki
# gönderici adres doğrulanabilir değilse, bir uyarı veriyoruz.
#
warn
message = X-Sender-Verify-Failed: No valid sender in message header
log_message = No valid sender in message header
!verify = header_sender
# --------------------------------------------------------------------
# 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.
#
# Bu deyimi devreye almadan önce "greylistd" kurmuş olmalısınız.
# Bkz: http://packages.debian.org/unstable/main/greylistd
#
#defer
# message = $sender_host_address is not yet authorized to send \
# delivery status reports to <$recipients>. \
# Please try later.
# log_message = greylisted.
# senders = : postmaster@*
# condition = ${if !eq {$acl_m0}{accept}{true}}
# 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}}
# delay = 20s
# --------------------------------------------------------------------
# --- EXISCAN yapılandırmasının BAŞLANGICI ---
# Birtakım MIME hataları olan iletileri reddedeceğiz.
#
deny
message = Serious MIME defect detected ($demime_reason)
demime = *
condition = ${if >{$demime_errorlevel}{2}{1}{0}}
# MIME taşıyıcıyı aç ve kurtlar tarafından kullanılan dosya uzantıları
# varsa reddet. Bu çağrılar tekrar demime uygulayacaktır, ama sonuçlar
# arabellekli olarak dönecektir. Uzantı listesinin eksik olabileceğini
# unutmayın.
#
deny
message = We do not accept ".$found_extension" attachments here.
demime = bat:btm:cmd:com:cpl:dll:exe:lnk:msi:pif:prf:reg:scr:vbs:url
# İletinin boyutu MESSAGE_SIZE_SPAM_MAX'dan büyükse spam veya virüs
# taraması yapmaksızın kabul ediyoruz.
accept
condition = ${if >{$message_size}{MESSAGE_SIZE_SPAM_MAX} {true}}
logwrite = :main: Not classified \
(message size larger than MESSAGE_SIZE_SPAM_MAX)
# --------------------------------------------------------------------
# Antivirüs taraması
# Ana bölümde bir 'av_scanner' tanımı yapmış olmanız gerekir.
#
#deny
# message = This message contains a virus ($malware_name)
# demime = *
# malware_name = */defer_ok
# --------------------------------------------------------------------
# $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.
#
# İleti spam olarak tasnif edilmişse ve evvelce $acl_m0'ı iletiyi ne
# olursa olsun kabul edeceğimizi belirtecek şekilde ayarlamamışsak,
# iletiyi reddetmiş gibi yapacağız.
#
warn
set acl_m9 = ham
# ------------------------------------------------------------------
# SpamAssassin için kullanıcı bazında ayarların kullanımını mümkün
# kılmak için aşağıdaki satırı devreye alıp "spam = mail" satırını
# iptal ediniz.
# 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.
#
# spam = ${lc:${extract{1}{=@}{$recipients}{$value}{mail}}}
# ------------------------------------------------------------------
spam = mail
set acl_m9 = spam
condition = ${if !eq {$acl_m0}{accept}{true}}
control = fakereject
logwrite = :reject: Rejected spam (score $spam_score): $spam_report
# İletinin başlığına bir X-Spam-Status: satırı ekleyelim.
#
warn
message = X-Spam-Status: \
${if eq {$acl_m9}{spam}{Yes}{No}} (score $spam_score)\
${if def:spam_report {: $spam_report}}
logwrite = :main: Classified as $acl_m9 (score $spam_score)
# --- EXISCAN yapılandırmasının SONU ---
# İletiyi kabul ediyoruz.
#
accept