Я искал помощи в настройке Spammassassin и ClamAV с Exim (на ubuntu-16.04), но все руководства ужасно устарели. Кто-нибудь может поделиться своими настройками, пожалуйста?
Руководство может быть довольно старым, но процесс настройки на самом деле не изменился. Спецификация Exim4 включает главу Сканирование содержимого во время ACL, которую следует начать. Я считаю, что вам нужно установить exim4-daemon-heavy
, чтобы сканирование заработало.
- это нетронутая моя конфигурация. Я удалил некоторые исследовательские функции.
После установки clamav
вам нужно снять комментарий со строки в основном считывании конфигурации:
av_scanner = clamd:/var/run/clamav/clamd.ctl
Это будет в /etc/exim4/conf.d/main/02_exim4-config_options
, если вы используете сплит-конфигурацию, или /etc/exim4/exim4.conf.template
, если вы используете опцию с одним конфигурационным файлом.
Самый простой способ сканирования - создание локальных данных acl /etc/exim4/acls/40_local-config_check-data
подобным образом.
# --------------------------------------------------------------------
# Anti-Virus scanning
# This requires an 'av_scanner' setting in the main section.
# Defer if we find malware
defer
malware = */defer_ok retry=60
# --- BEGIN EXISCAN configuration ---
# Invoke SpamAssassin to obtain $spam_score and $spam_report.
# SA: log messages emulate sa-exim output for eximstats
#
# If the message is classified as spam, and we have not previously
# set $acl_m_sa to indicate that we want to accept it anyway,
# reject it.
# Add a spam flag
warn
spam = mail:true
add_header = X-Spam-Connect-Host: $sender_fullhost
add_header = X-Spam-Mail-From: $sender_address
add_header = X-Spam-Recipients: $recipients
add_header = X-Spam-Flag: ${if >= {$spam_score_int}{SPAM_LIMIT}{YES}{NO}}
add_header = X-Spam-Level: ${tr{$spam_bar}{+}{*}}
# Add headers for data we will be reporting
warn
condition = ${if >= {$spam_score_int}{SPAM_REPORT}}
add_header = X-Spam-Report: $spam_report
# New Subject for BACN and SPAM
warn
condition = ${if >= {$spam_score_int}{SPAM_IS_HAM}}
add_header = X-Spam-Subject: $h_Subject
remove_header = Subject
add_header = Subject: ${if < {$spam_score_int}{SPAM_IS_BACN} \
{BACN}{SPAM}} $spam_score: $h_Subject
# Blackhole serious Spam
discard
condition = ${if eq {$acl_m_sa}{canreject}}
condition = ${if >= {$spam_score_int}{SPAM_BLACKHOLE}}
message = Discard recipients for this message spam $spam_score.
logwrite = SA: Action: Blackholed message: score=$spam_score. \
From \<$sender_address\> $sender_fullhost for $recipients
# Deny Spam
deny
condition = ${if eq {$acl_m_sa}{canreject}}
condition = ${if >= {$spam_score_int}{SPAM_REJECT}}
message = This message looks like spam $spam_score.
logwrite = SA: Action: permanently rejected message: score=$spam_score. \
From \<$sender_address\> $sender_fullhost for $recipients
Вам нужно будет определить значения для ограничения спама. Они идут в /etc/exim4/conf.d/main/00_local_macros
или /etc/exim4/exim4.conf.localmacros
в зависимости от используемого метода конфигурационного файла.
# Spamassassin
SPAM_REPORT = -10
SPAM_IS_HAM = 25
SPAM_LIMIT = 35
SPAM_IS_BACN = 50
SPAM_REJECT = 100
SPAM_BLACKHOLE = 200
Переменная acl_m_sa
устанавливается, чтобы указать, является ли это постмастер/сообщение о злоупотреблении или оно отправляется пользователю. Это записано в примечаниях к пакету sa-exim
. Вы можете предпочесть использовать sa-exim
, а не EXISCAN
часть ACL, указанную выше.
# order of lines matters
warn
spam = nobody:true #this line needed to define spam_score_int
condition = ${if >{$spam_score_int}{60}{true}{false}}
add_header = X-Spam_score: $spam_score #this line must be after
# to ensure X-Spam_score is only added when the condition is met
# (lines before the condition are not subject to the condition)
add_header = X-Spam_bar: $spam_bar # this line subject to condition
# spam_score_int = spam_score * 10 so 60 above corresponds to 6.0