SpamAssassin

出自 ArchWiki

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 定时器

创建以下服务,它将运行这些命令

/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>

然后创建定时器,它将每天执行之前的服务

/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 数据库加载用户首选项、贝叶斯过滤器数据和自动白名单。 这对于虚拟用户邮件设置特别有用,在虚拟用户邮件设置中,用户没有带有 SpamAssassin 数据的 $HOME/.spamassassin 目录。

注意: 由于 TxRep 插件Auto-WelcomelistAuto-Whitelist 的更新和增强的替代品,因此本文涵盖此实现

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-clone SpamAssassin 的源代码。 在 sql/ 目录下,您将找到创建数据库表所需的文件。 请注意,TYPE 在最近的 MySQL 版本中已被 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-arch 软件包。 然后按如下方式安装 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

注意: 最后一个版本于 2008 年发布。[1]

Vipul's Razor 是一个分布式的、协作的垃圾邮件检测和过滤网络。

确保您首先安装了 SpamAssassin,然后

安装 razor 软件包。

注册 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);