SpamAssassin
SpamAssassin 是一个用于识别垃圾邮件的邮件过滤器。
安装
安装 spamassassin 包。
在 /etc/mail/spamassassin 中创建一个 sa-update-keys 目录,并更改其所有者和组。
# mkdir -p /etc/mail/spamassassin/sa-update-keys /etc/mail/sa-update-keys # chown -R spamd:spamd /etc/mail/spamassassin /etc/mail/sa-update-keys # chmod 755 /etc/mail/spamassassin # chmod 700 /etc/mail/spamassassin/sa-update-keys
接下来 启动/启用 spamassassin.service。
用法
检查 /etc/mail/spamassassin/local.cf 文件并根据您的需求进行配置。
更新规则
更新 SpamAssassin 的匹配模式并对其进行编译。
[spamd]$ /usr/bin/vendor_perl/sa-update && /usr/bin/vendor_perl/sa-compile
您需要定期运行此命令,最好的方法是设置一个 systemd timer。
创建以下服务,它将运行这些命令:
/etc/systemd/system/spamassassin-update.service
[Unit] Description=spamassassin housekeeping stuff After=network.target [Service] User=spamd Group=spamd Type=oneshot ExecStart=/usr/bin/vendor_perl/sa-update SuccessExitStatus=1 ExecStart=/usr/bin/vendor_perl/sa-compile ExecStart=!/usr/bin/systemctl -q --no-block try-restart spamassassin.service # uncomment the following ExecStart line to train SA's bayes filter # and specify the path to the mailbox that contains spam email(s) #ExecStart=/usr/bin/vendor_perl/sa-learn --spam <path_to_your_spam_mailbox>
然后创建 timer,它将每天执行上一个服务:
/etc/systemd/system/spamassassin-update.timer
[Unit] Description=spamassassin house keeping [Timer] OnCalendar=daily Persistent=true [Install] WantedBy=timers.target
现在您可以 启动 和 启用 spamassassin-update.timer。
设置扫描的最大尺寸
默认的最大扫描尺寸为 500 KB(请参阅 spamc(1p))。您可以进行修改:创建 spamc 配置文件。例如:
/etc/mail/spamassassin/spamc.conf
# spamc global configuration file # max message size for scanning = 1Mo -s 1000000
使用 SQL 数据库
SpamAssassin 可以从 SQL 数据库加载用户偏好、贝叶斯过滤器数据和自动白名单。这对于虚拟用户邮件设置特别有用,因为在这种设置下,用户没有 $HOME/.spamassassin 目录来存储 SpamAssassin 数据。
MySQL
安装 perl-dbd-mysql。然后,创建数据库。
$ mysql -u root -p
CREATE DATABASE <db_name>; GRANT ALL ON <db_name>.* TO '<db_user>'@'localhost' IDENTIFIED BY '<password>';
Git 克隆 SpamAssassin 源码。在 sql/ 目录下,您将找到创建数据库表所需的*.sql 文件。请注意,在较新版本的 MySQL 中,TYPE 已被替换为 ENGINE,因此如果需要,请相应地替换使用的*.sql 文件中的内容。
分别创建用户偏好、贝叶斯过滤器数据和 TxRep 的表。
$ mysql -u root -p <db_name> < userpref_mysql.sql $ mysql -u root -p <db_name> < bayes_mysql.sql $ mysql -u root -p <db_name> < txrep_mysql.sql
TxRep 是可选的,如果您不使用它,请跳过。如果您想使用它但尚未配置,请参考 Mail::SpamAssassin::Plugin::TxRep(3)。
确保在您的配置文件中包含以下内容:
/etc/mail/spamassassin/local.cf
## MySQL database setup # User scores user_scores_dsn DBI:mysql:<db_name>:localhost user_scores_sql_username <db_user> user_scores_sql_password <password> # Bayesian filter bayes_store_module Mail::SpamAssassin::BayesStore::MySQL bayes_sql_dsn DBI:mysql:<db_name>:localhost bayes_sql_username <db_user> bayes_sql_password <password> # TxRep plugin txrep_factory Mail::SpamAssassin::SQLBasedAddrList user_awl_dsn DBI:mysql:<db_name>:localhost user_awl_sql_username <db_user> user_awl_sql_password <password>
最后,重启 spamassassin.service。
插件
ClamAV
按照 ClamAV 中的说明安装和配置 clamd。
按照上面的说明之一,从您的邮件系统中调用 SpamAssassin。
安装 perl-cpanplus-dist-archAUR 包。然后安装 ClamAV perl 库,如下所示:
# /usr/bin/vendor_perl/cpanp -i File::Scan::ClamAV
将来自 https://wiki.apache.org/spamassassin/ClamAVPlugin 的 2 个文件放入 /etc/mail/spamassassin/。编辑 /etc/mail/spamassassin/clamav.pm 并更新 $CLAMD_SOCK 以指向您的 Clamd 套接字位置(默认是 /run/clamav/clamd.ctl)。
最后,重启 spamassassin.service。
Razor
Vipul's Razor 是一个分布式、协作式的垃圾邮件检测和过滤网络。
请确保您已先安装 SpamAssassin,然后:
注册 Razor。
# mkdir /etc/mail/spamassassin/razor # chown spamd:spamd /etc/mail/spamassassin/razor [spamd]$ cd /etc/mail/spamassassin/razor [spamd]$ /usr/bin/vendor_perl/razor-admin -home=/etc/mail/spamassassin/razor -register [spamd]$ /usr/bin/vendor_perl/razor-admin -home=/etc/mail/spamassassin/razor -create [spamd]$ /usr/bin/vendor_perl/razor-admin -home=/etc/mail/spamassassin/razor -discover
要让 SpamAssassin 了解 Razor,请将以下行添加到 /etc/mail/spamassassin/local.cf:
razor_config /etc/mail/spamassassin/razor/razor-agent.conf
要让 Razor 了解自身,请将以下行添加到 /etc/mail/spamassassin/razor/razor-agent.conf:
razorhome = /etc/mail/spamassassin/razor/
最后,重启 spamassassin.service。
技巧与提示
维护 TxRep SQL 表
为了性能和存储原因,建议定期清除 TxRep SQL 表中的过期数据。以下是一个可以在定期计划中运行的示例查询:
DELETE FROM txrep WHERE last_hit <= (now() - INTERVAL 120 day);