под нагрузкой все это не взлетит.1) лишние лукапы на пустом месте
domainlist local_domains = @:mysql;SELECT domain from domains where domain='$domain'
smtp_banner = ${lookup mysql{select host from domains where ip = '$interface_address'}{$value}{$primary_hostname} } ESMTP Sendmail 8.14.3/8.14.3; $tod_full
2) очень умный кондишн, да.
deny message = You host use dynamic address
log_message = SPAM remote host use dynamic address
condition = \
${if \
match{$sender_host_name}\
{\
^.*([.-]\\d\{1,3\})([.-]\\d\{1,3\}).*|\
^.*([.-]\\d\{1,3\}).*client.*|\
^.*client.*([.-]\\d\{1,3\}).*|\
^.*dial(up|in).*([.-]\\d\{1,3\}).*|\
^.*(\\d\{1,3\}[.-]?).*dial(up|in).*|\
^.*(\\d\{1,3\}[.-]?).*dsl.*|\
^.*dsl.*(\\d\{1,3\}[.-]?).*|\
^.*dhcp.*(\\d\{1,3\}[.-]?).*|\
^.*(\\d\{1,3\}[.-]?).*dhcp.*|\
^.*(\\d\{1,3\}[.-]?).*ppp.*|\
^.*ppp.*(\\d\{1,3\}[.-]?).*|\
^.*(\\d\{1,3\}[.-]?).*pool.*|\
^.*pool.*(\\d\{1,3\}[.-]?).*\
}\
{yes}{no}\
3) helo_allow_chars = :_
тоже правильно дорогой идете
4) зачем
warn verify = reverse_host_lookup
message = DNS-Warning: Reverse DNS lookup failed for host $sender_host_address
если вы это нигде потом неиспользуете?
5) очевидно что наполнять эти таблицы руками удобно, бо нигде не сказано зачем и почему они
deny message = You domain is in a blacklist.
log_message = Remote domain in the blacklist
condition = ${lookup mysql{select domain from spam_domains where domain='$sender_address_domain'}{true}{false}}
deny message = You address is in a blacklist.
log_message = Address is in the blacklist
condition = ${lookup mysql{select sender from spam_emails where sender='$sender_address'}{true}{false}}
deny message = You host is in a blacklist.
log_message = Host is in the blacklist
condition = ${lookup mysql{select ip from spam_ip_senders where ip='$sender_host_address'}{true}{false}}
6) как уже отметили тупо давать update, drop, delete права при отсутвии использования quote_mysql. да и вообще моветон отсутвие оного
7) за такое системы контентной фильтрации бьют по лицу, мягко говоря
replace_header:
driver = dnslookup
domains = !+local_domains
transport = remote_smtp
headers_remove = \
${if \
def:h_RelayHost: \
{}\
{\
Date : \
X-MimeOLE : \
X-Mailer : \
X-MSMail-Priority : \
User-Agent\
}\
}\
: RelayHost : Received
headers_add = \
${if \
def:h_RelayHost: \
{} \
{\
Date: $tod_full\n\
User-Agent: Mozilla Thunderbird 2.0.0.22\
}\
}
no_more
8) тоже очень удобно - держать кучу .forward при использовании sql, тоже самое касается autoreplay
userforward:
driver = redirect
file = ${lookup mysql{select maildir from accounts where login = '${quote_mysql:$local_part@$domain}'}{$value}fail}/.forward
9) автоответ, кстати, тоже работать не будет - нигде не дефайнена AUTOREPLYPATH
10) квота так работает черз жопу, очень скоро очередь будет забита говном из баунсов
quota = ${lookup mysql{select mailquota from accounts where login = '${quote_mysql:$local_part@$domain}'}{$value}fail}M
quota_warn_message = "\
To: $local_part@domain\n\
Subject: Your maildir is going full\n\
This message is automaticaly gnerated by your mail server.\n\
This means, that your mailbox is 75% full. If you would \n\
override this limit new mail would not be delivered to you!\n"
quota_warn_threshold = 75%
11) авторизация так работать не будет
lookup_cram:
driver = cram_md5
public_name = CRAM-MD5
server_secret = ${lookup mysql {select password from accounts where login='$1'}{$value}fail}
server_set_id = $1
login:
driver = plaintext
public_name = LOGIN
server_prompts = Username:: : Password::
server_condition = ${lookup mysql {select login from accounts where login='$1' and password='$2'}{yes}{no}}
server_set_id = $1
итог - в реальности это все понадерганное из разных чужих конфигов без указания авторства работать не будет.