问题描述
我对 DKIM 和 Altermime/免责声明有疑问。 在 DKIM 创建 DKIM-Siganture 后,Altermime 修改标头,因此 DKIM 失败。 我修复了它,更改了配置中的一些内容:
/etc/postfix/main.cf
non_smtpd_milters = inet:localhost:8891
#[REMOVE] smtpd_milters = inet:localhost:8891
/etc/postfix/master.cf
smtp inet n - n - - smtpd
-o content_filter=dfilt:
然后就可以了,因为 DKIM 在 Altermime 修改标头后签名。 在这种情况下,SpamAssassin 会检查 DKIM 签名(已删除 smtpd_milters)
但是当我安装 opendmarc 时,此配置将不起作用。 因为如果失败或通过,opendmarc 将需要有关 DKIM 的信息。 而且 DKIM 在 opendmarc 之后被 spamassassin 检查,所以在这种情况下它没有意义。
如何解决这个问题?也许使用 amavis ?
解决方法
好的,我解决了这个问题。所以我们需要像这样的 amavisd-milter 和适当的配置:
main.cf:
# PORTS -> amavisd-millter: 10029,opendmarc: 54321,dkim: 8891
smtpd_milters = inet:localhost:10029 inet:localhost:54321
non_smtpd_milter = inet:localhost:8891
master.cf:
# name of our filter: dflit
submission inet n - y - - smtpd
-o content_filter=dfilt:
/etc/amavis/conf.d/50-user
enable_dkim_verification = 1;
重要提示:请记住,如果您在 master.cf 中禁用提交过滤器,则不会创建 dkim 签名!!!
,第二个简单选项:
main.cf
### 8891 (opendkim) 54321 (opendmarc)
smtpd_milters = inet:localhost:8891 inet:localhost:54321
master.cf
submission inet n - y - - smtpd
-o content_filter=dfilt:
-o smtpd_milters=
-o non_smtpd_milters=inet:localhost:8891
content_filter 使用 sendmail 命令行将过滤后的邮件注入 postfix,然后激活 non_smtpd_milters 并且邮件已由 dkim 签名。 结论:在 main.cf 中,dkim 的 milters 设置将检查 dkim 签名,签名将在 587 提交端口上进行。 记住不要在 master.cf 中使用 no_milters 来取货:
pickup fifo n - y 60 1 pickup
-o content_filter=
-o receive_override_options=no_header_body_checks,[if you have remove: no_milters option !]