在 Fedora 21 上使用 Postfix 配置 spamassassin

在 Fedora 21 上使用 Postfix 配置 spamassassin

我在任何地方都找不到关于在现代 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

您还需要启动 spamass 服务。

systemctl start spamass-milter

并验证了它的工作原理

systemctl status spamass-milter

netstat -an | grep spamass-milter

默认情况下,spamassassin 仅附带二进制spamd文件spamc。Do 守护进程包含在软件包中。这就是为什么您需要使用集成器,例如bash 脚本amavisd或 spamass-milter (如本例)

答案3

使用默认配置,postfix 无法连接到 spamass-milter,因为它无法访问/run/spamass-milter/spamass-milter.sock

要允许其连接:

  1. 添加SOCKET_OPTIONS='-g mail'/etc/sysconfig/spamass-milter这使得套接字由组拥有mail
  2. 呼叫usermod -a -G mail sa-miltsa-milt在邮件组中并且可以将该组设置为所有者)
  3. 重新启动服务:systemctl restart spamass-milter.service

答案4

我不会通过 milter 使用 spamassassin。我觉得 amavisd 是一个更好的选择(例如:它借助 clamav 提供防病毒保护)。

这里您可以找到一些针对 RedHat/CentOS 的集成步骤;对于 Fedora,它们应该相对相似。

相关内容