我在任何地方都找不到关于在现代 Fedora 系统上安装 spamassassin 的帮助。所有建议都很陈旧,而且不适用 - 至少就我所找到的而言。官方文档与 Fedora 无关 - 它太过笼统,缺少重要的 Fedora 实现细节。
而且,它是如何完成的还不够直接,我不知道该怎么做!最重要的缺失环节似乎是我告诉如何Postfix
调用spamassassin
。然而,配置选项在哪里定义也完全不清楚。
接下来还有更多内容,但也许这一切都归结为没有人愿意提供有关 Postfixsmtpd_milter
条目应该是什么的适当信息。而且,我尝试的条目基于在“/usr/share/doc/spamass-milter-postfix”中找到的数据,该文件显示正确的值是 unix:/run/spamass-milter/postfix/sock,但虽然目录存在,但套接字条目不存在,并返回下面引用的错误消息。
...好吧,故事讲得更长一些:
我已经安装了这些版本:
spamass-milter-0.4.0-1.fc21.x86_64
spamass-milter-postfix-0.4.0-1.fc21.noarch
spamassassin-3.4.0-13.fc21.x86_64
再次强调,这是 Fedora 21。安装的 Postfix 是:
postfix-2.11.3-1.fc21.x86_64
当我运行“man spamassassin”时,它指向了/var/lib/spammassassin/3.004000
,其中包含 'updates_spamassassin_org.cf 和一个同名的子目录(没有 .cf),而这个子目录又包含大量 (65) 个 .cf 文件。手册页还指向了 ,而这个/usr/share/spamassassin
子目录又包含大量 (63) 个名称相似但并不完全相同的 .cf 文件。
我真希望我不必学习所有这些知识才能让 spamassassin 正常工作!谢天谢地 - 但还不够 - 手册页还向我指出了/etc/mail/spamassassin
其中包含一个名为的文件local.cf
。在那里我找到了一个关于如何安装和集成 spamassassin 与 postfix 的页面链接 - 这里 (),但那个建议不够充分,而且似乎不太有用。例如,它建议的第一件事是创建一个名为“ spamfilter
”的组和用户帐户,当然,默认安装yum
已经创建了帐户sa-milt
,其条目似乎是正确的:
sa-milt:x:982:477:SpamAssassin Milter:/var/lib/spamass-milter:/sbin/nologin
我认为需要在 Postfix 的 main.cf 中创建一个条目,以创建或添加一个名为的条目,smtpd_milters
其中包含告诉 Postfix 如何调用 spamassassin 所需的任何链接。目前我有一个条目openDKIM
:
# This is for openDKIM - missing are clamav and spamassassin:
smtpd_milters = inet:localhost:8891
因此,我认为创建这些用户帐户是错误的。另外,如果确实需要这些帐户,为什么安装脚本还没有创建用户和组?此外,它还谈到使用“ service
”来启动 spamassassin,但是,正如任何有能力的 Fedora 21 系统管理员都知道的那样,您不能使用“服务”,而应该使用systemctl
!
...忽略这一点...
该服务确实启动并保持运行,使用:
systemctl start spamassassin
但是,它不起作用。
具体来说,我认为显然需要在 postfix 中有一个钩子,但非 Fedora 21 策略显然会失败。我们被指示更新 Postfix 的 main.cf smtpd_milters 条目 - 以下是他们的建议:
# First entry is for openDKIM
smtpd_milters = inet:localhost:8891, unix:/run/spamass-milter/postfix/sock
但问题是,这不起作用。我们在日志文件中看到以下内容:
postfix/smtpd[18151]: warning: connect to Milter service unix:/run/spamass-milter/postfix/sock: No such file or directory
然而,我似乎找不到smtpd_milters
此版本组合的正确条目!
显然应该有安装说明,但我找到的这些版本均不适用。请告诉我应该如何操作,或者告诉我哪里可以找到适用的合格文章!特别是,什么是合适的条目,或者smtpd_milters
,如何创建有效的配置组合(smtpd_milters/spamassassin 配置)?
答案1
经过一番苦恼之后,我发现我安装了一个软件包,据我所知,没有人提到过它。它叫做spamass-milter-root
。
因此,在检查了我能想到的所有内容之后,我想,为什么不呢?...(“#”是系统根帐户的 CLI 提示符。)
# systemctl enable spamass-milter-root.service
Created symlink from /etc/systemd/system/multi-user.target.wants/spamass-milter-root.service to /usr/lib/systemd/system/spamass-milter-root.service.
# systemctl status spamass-milter-root.service -;
● spamass-milter-root.service - Mail filter for SpamAssassin
Loaded: loaded (/usr/lib/systemd/system/spamass-milter-root.service; disabled)
Active: active (running) since Fri 2015-04-17 15:53:41 PDT; 1min 3s ago
Process: 2353 ExecStartPre=/bin/chown -R root /run/spamass-milter (code=exited, status=0/SUCCESS)
Main PID: 2356 (spamass-milter)
CGroup: /system.slice/spamass-milter-root.service
├─2356 /usr/sbin/spamass-milter -g postfix -p /run/spamass-milter/...
└─2370 /usr/bin/spamc
Apr 17 15:53:41 ms1 spamass-milter[2356]: spamass-milter 0.4.0 starting
Apr 17 15:54:00 ms1 spamass-milter[2356]: Could not retrieve sendmail mac...s
而且,当我打开tail -f /var/log/maillog
一个窗口时,我震惊了,突然间(!!)一切都开始工作了,数百封邮件就在spamd
我眼前被处理了!好极了!
现在还有其他的担忧,比如,这些信息的分析会产生什么影响……
为了清楚起见,这里有两个解决问题的命令...请记住,这是在完成所有其他配置工作的情况下完成的:
# systemctl enable spamass-milter-root.service
# systemctl start spamass-milter-root.service
完毕。
答案2
答案3
使用默认配置,postfix 无法连接到 spamass-milter,因为它无法访问/run/spamass-milter/spamass-milter.sock
要允许其连接:
- 添加
SOCKET_OPTIONS='-g mail'
(/etc/sysconfig/spamass-milter
这使得套接字由组拥有mail
) - 呼叫
usermod -a -G mail sa-milt
(sa-milt
在邮件组中并且可以将该组设置为所有者) - 重新启动服务:
systemctl restart spamass-milter.service
答案4
我不会通过 milter 使用 spamassassin。我觉得 amavisd 是一个更好的选择(例如:它借助 clamav 提供防病毒保护)。
这里您可以找到一些针对 RedHat/CentOS 的集成步骤;对于 Fedora,它们应该相对相似。