跳转至内容

Amavis

来自 ArchWiki

来自 Amavis 的网站

amavisd-new 是邮件传输代理 (MTA) 和内容检查器(病毒扫描器和/或 SpamAssassin)之间的高性能接口。它使用 Perl 编写,易于维护,且速度没有明显下降。它通过 (E)SMTP 或 LMTP,或使用辅助程序与 MTA 通信。与 Postfix 配合最佳,双 sendmail 设置和 Exim v4 也很不错,可以使用 sendmail/milter,或作为 SMTP 中继与任何 MTA 协同工作。

安装与设置

在本设置中,假定您使用 ClamAV 作为反病毒扫描器。

  • 安装 amavisd-new。建议也安装 optdepends,例如 7zipunrar,这样您的过滤器才能真正看到压缩文件内部。
  • 安装 clamav

基本配置

如果您的主机名不是 FQDN,则必须在 /etc/amavisd/amavisd.conf 中相应地设置 $myhostname$mydomain

您可以通过注释掉以下行来启用 ClamAV 支持(别忘了使用与 /etc/clamav/clamd.conf 中相同的 clamd.sock

/etc/amavisd/amavisd.conf
# ### http://www.clamav.net/
['ClamAV-clamd',
   \&ask_daemon, ["CONTSCAN {}\n", "/var/lib/clamav/clamd.sock"],
   qr/\bOK$/m, qr/\bFOUND$/m,
   qr/^.*?: (?!Infected Archive)(.*) FOUND$/m ],
# # NOTE: run clamd under the same user as amavisd - or run it under its own
# #   uid such as clamav, add user clamav to the amavis group, and then add
# # NOTE: match socket name (LocalSocket) in clamav.conf to the socket name in
# #   this entry; when running chrooted one may prefer a socket under $MYHOME.

在该行添加注释以启用反病毒扫描

# @bypass_virus_check_maps = (1);  # controls running of anti-virus code

之后,将 clamav 用户添加到 amavis 用户组以避免权限问题。

最后重启服务

使用以下命令检查错误

# systemctl status amavisd
# journalctl -u amavisd

测试

要测试新配置,只需 telnet 到 amavisd 的默认监听端口

$ telnet 127.0.0.1 10024

您应该会看到类似如下内容

Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'
220 [127.0.0.1] ESMTP amavisd-new service ready

输入 ehlo 127.0.0.1

EHLO localhost
250-[127.0.0.1]
250-VRFY
250-PIPELINING
250-SIZE
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-DSN
250 XFORWARD NAME ADDR PORT PROTO HELO IDENT SOURCE

现在只需输入 quit 即可退出。

与 Postfix 集成

快速入门

要为 Postfix 配置 amavis,请将以下内容添加到 /etc/postfix/master.cf

#
# anti spam & anti virus section
#
amavisfeed      unix  -    -       n       -       2       smtp
 -o smtp_data_done_timeout=1200
 -o smtp_send_xforward_command=yes
 -o disable_dns_lookups=yes
 -o max_use=20
127.0.0.1:10025 inet n  -       y       -       -       smtpd
 -o content_filter=
 -o smtpd_delay_reject=no
 -o smtpd_client_restrictions=permit_mynetworks,reject
 -o smtpd_helo_restrictions=
 -o smtpd_sender_restrictions=
 -o smtpd_recipient_restrictions=permit_mynetworks,reject
 -o smtpd_data_restrictions=reject_unauth_pipelining
 -o smtpd_end_of_data_restrictions=
 -o smtpd_restriction_classes=
 -o mynetworks=127.0.0.0/8
 -o smtpd_error_sleep_time=0
 -o smtpd_soft_error_limit=1001 
 -o smtpd_hard_error_limit=1000
 -o smtpd_client_connection_count_limit=0
 -o smtpd_client_connection_rate_limit=0
 -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks,no_milters
 -o local_header_rewrite_clients=

在此配置中,我们假定 postfix 和 Amavis 运行在同一台机器上(即 127.0.0.1)。如果不是这种情况,请编辑 /etc/amavisd/amavisd.conf 并相应地调整前面的 Postfix 条目。

Postfix 将监听端口 10025,以便 Amavis 可以将已检查的电子邮件发送回该端口。

您还必须在您的 smtpsubmission 部分添加其他配置

-o content_filter=amavisfeed:[127.0.0.1]:10024

使用这些选项意味着 Postfix 将在端口 10024 上将电子邮件发送到 Amavis,以便进行检查。如果邮件通过检查,则会按前面所述发送到端口 10025

现在我们可以重启 postfix.serviceamavisd.service

要检查 Postfix 是否正在监听端口 10025,请执行与端口 10024 情况相同的操作。

SpamAssassin 支持

本文章或章节需要扩充。

原因:待办(请在 Talk:Amavis 中讨论)

安装 spamassassin

Spamassassin 已集成到 Amavis 中,因此您无需启动 spamassassin.service。要启用 Spamassassin 支持,请像这样注释掉 /etc/amavis/amavis.conf 中的以下行

# @bypass_spam_checks_maps = (1);  # controls running of anti-spam code

根据您的需求编辑 SpamAssassin 配置

$sa_tag_level_deflt  = 1.0;  # add spam info headers if at, or above that level
$sa_tag2_level_deflt = 1.0;  # add 'spam detected' headers at that level
$sa_kill_level_deflt = 5.0;  # triggers spam evasive actions (e.g. blocks mail)
$sa_dsn_cutoff_level = 8;   # spam level beyond which a DSN is not sent
# $sa_quarantine_cutoff_level = 25; # spam level beyond which quarantine is off
$penpals_threshold_high = $sa_kill_level_deflt;  # do not waste time on hi spam
$bounce_killer_score = 100;  # spam score points to add for joe-jobbed bounces

重启 amavisd 服务之前,运行 sa-update

最终测试

本文章或章节需要扩充。

原因:待办(请在 Talk:Amavis 中讨论)

检查一切是否按预期工作

  • 发送一封普通电子邮件。
  • 发送一封带有 EICAR 测试文件作为附件的电子邮件。
  • 发送一封会被判定为垃圾邮件的电子邮件。
  • 检查 Postfix 和 Amavis 的日志。

参见

© . This site is unofficial and not affiliated with Arch Linux.

Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.