如何让 spamassassin 与 postfix 协同工作

如何让 spamassassin 与 postfix 协同工作

我正在尝试让 spamassassin 在 Ubuntu 16.04 上使用 postfix 运行。

接收邮件时,我在日志中收到类似以下内容的消息:

Jun 11 14:29:47 myhost postfix/smtpd[2387]: connect from mail-oi0-f54.google.com[209.85.218.54]
Jun 11 14:29:47 myhost spamd[2349]: spamd: got connection over /var/spool/postfix/spamassassin/spamd.sock
Jun  11 14:30:17 myhost postfix/smtpd[2387]: warning: milter unix:/spamassassin/spamd.sock: unreasonable packet length: 1397768525 > 1073741823
Jun 11 14:30:17 myhost postfix/smtpd[2387]: warning: milter unix:/spamassassin/spamd.sock: read error in initial handshake
Jun 11 14:30:17 myhost spamd[2349]: spamd: timeout: (30 second socket timeout reading input from client)

我认为这有两个问题:

  1. 数据包长度不合理问题
  2. 读取输入时读取套接字超时

我安装了以下相关软件包:

  • 后缀 3.1.0-3
  • spamassassin 3.4.1-3
  • spamass-milter 0.3.2-1

我的 /etc/default/spamass-milter 仅包含

OPTIONS="-u spamass-milter -i 127.0.0.1 -m -I -- --socket=/var/spool/postfix/spamassassin/spamd.sock"

/etc/default/spamassassin 包含

SAHOME="/var/lib/spamassassin"
SAGLOBALCFGPATH="/etc/spamassassin"
ENABLED=1
OPTIONS="-x --max-children 5 --helper-home-dir /var/lib/spamassassin -u  debian-spamd -g debian-spamd --siteconfigpath /etc/spamassassin --socketpath=/var/spool/postfix/spamassassin/spamd.sock --socketowner=debian-spamd --socketgroup=debian-spamd --socketmode=0660"
PIDFILE="/var/run/spamd.pid"
CRON=1

在 /etc/postfix/main.cf 中,我有以下与 milter 相关的行:

milter_default_action = accept
milter_connect_macros = j {daemon_name} v {if_name} _
non_smtpd_milters = $smtpd_milters
smtpd_milters = unix:/spamassassin/spamd.sock unix:/opendkim/opendkim.sock

套接字上的权限良好,并且它们位于 chroot 中 postfix 所需的位置,并且 postfix 用户位于 debian-spamd 组中。

$ ls -l /var/spool/postfix/spamassassin/spamd.sock
srw-rw----  1 debian-spamd debian-spamd    0 Jun 11 14:21 spamd.sock

任何帮助将非常感激:

答案1

结论:您的 postfix 正在连接到 spamd 的套接字,但应该连接到 spamass-milter 的套接字,该套接字位于两者之间。请在 spamass-milter 配置/启动 (/etc/init.d/spamass-milter) 脚本中查找第二个套接字的定义。

解释(根据我的 Gentoo 配置,/etc/conf.d/ 与 /etc/default/ 类似):链如下所示:

POSTFIX >spamass-milter.sock> MILTER >spamd.sock> SPAMD

  • /etc/postfix/main.cf

    unix:/var/run/milter/spamass-milter.sock

  • /etc/conf.d/spamass-milter

    SOCKET=/var/run/milter/spamass-milter.sock OPTIONS="-i 127.0.0.1 -m -I -- --socket=/var/spool/postfix/spamassassin/spamd.sock"

  • /etc/conf.d/spamd

    --socketpath=/var/spool/postfix/spamassassin/spamd.sock

PS 感谢使用 postfix 调试 spamassassin

答案2

我已阅读这篇文章并发现它适用于 Debian,但也可能适用于 Ubuntu。http://www.stefan-seelmann.de/wiki/mailserver-postfix-dovecot

相关内容