Вернее сейчас всё работает в связке Exim + Dbmail + Clamav, хочу ещё Dspam добавить, но не знаю как. Clamav интегрируется в Dspam, соответственно остается в связку Exim + Dbmail интегрировать Dspam.
Вобщем есть такой конфиг:
Код: Выделить всё
begin routers
dnslookup:
driver = dnslookup
domains = ! +local_domains
transport = remote_smtp
ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8 : 172.16.1.0/24
no_more
dbmailuser:
driver = accept
condition = ${lookup mysql{SELECT `alias_idnr` FROM \
`dbmail_aliases` WHERE \
`alias`='${quote_mysql:$local_part@$domain}' OR \
`alias`='${quote_mysql:@$domain}'}{yes}{no}}
transport = dbmail_delivery
begin transports
remote_smtp:
driver = smtp
dbmail_delivery:
driver = pipe
check_string =
command = /usr/local/sbin/dbmail-smtp -d ${pipe_addresses}
group = mail
message_prefix = ""
message_suffix = ""
path="/bin:/sbin:/usr/local/bin:/usr/local/sbin"
address_pipe:
driver = pipe
return_output
address_reply:
driver = autoreply
Тут я полагаю проверяется локальный юзер, а не из мускульной базы дбмейла.
Routers
Код: Выделить всё
dspam_router:
no_verify
check_local_user
# When to scan a message :
# - it isn't already flagged as spam from Spamassassin
# - it isn't already flagged as spam from DSPAM
# - it isn't already scanned
# - it isn't local
# - it isn't from one internal domain user to another
# - it is less than 512k in size
condition = "${if and { \
{!def:h_X-Spam-Flag:} \
{!def:h_X-FILTER-DSPAM:} \
{!eq {$received_protocol}{local}} \
{ <= {$message_size}{512k}} \
}\
{1}{0}}"
headers_add = "X-FILTER-DSPAM: by $primary_hostname on $tod_full"
driver = accept
transport = dspam_spamcheck
# Which users to run dspam for.
#local_parts = /usr/local/etc/exim/dspam-testers
dspam_addspam_router:
driver = accept
local_part_prefix = spam-
transport = dspam_addspam
dspam_falsepositive_router:
driver = accept
local_part_prefix = nospam-
transport = dspam_falsepositive
Код: Выделить всё
dspam_spamcheck:
driver = pipe
command = "/usr/local/bin/dspam --deliver=innocent --user ${lc:$local_part} -f \
'$sender_address' -- %u"
home_directory = "/tmp"
current_directory = "/tmp"
user = exim
group = mail
log_output = true
return_fail_output = true
return_path_add = false
message_prefix =
message_suffix =
dspam_addspam:
driver = pipe
command = "/usr/local/bin/dspam --class=spam --source=error --user \
${lc:$local_part} -f '$sender_address' -- %u"
home_directory = "/tmp"
current_directory = "/tmp"
user = exim
group = mail
log_output = true
return_fail_output = true
return_path_add = false
message_prefix =
message_suffix =
dspam_falsepositive:
driver = pipe
command = "/usr/local/bin/dspam --class=innocent --source=error \
--deliver=innocent,spam --user ${lc:$local_part}\
-f '$sender_address' -- %u"
home_directory = "/tmp"
current_directory = "/tmp"
user = exim
group = mail
log_output = true
return_fail_output = true
return_path_add = false
message_prefix =
message_suffix =
Т.е. сначала обрубаем спам dspam'ом и дальше передаем dbmail'у...