跳转至内容

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 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 数据。

注意 由于 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 克隆 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

注意 上一个版本发布于 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);

© . 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.