如果我使用带有 SSL 的端口 143 上的邮件客户端连接到我服务器上的 Postfix,那么通过此连接从虚拟域发送的邮件将通过,smtpd_sender_restrictions
从而使将其路由到 amavis 的过滤器在传输之前添加其 DKIM 签名。
到目前为止一切都很好,但是...
但是,如果我生成一封电子邮件来自同一个用户@virtual_domain如上所述,直接从与 Postfix 在同一服务器上运行的 Drupal(或为经过身份验证的用户运行的 Roundcube)发送的电子邮件不会通过,smtpd_sender_restrictions
因此不会到达 amavis 并获得其 DKIM 签名。
我该怎么做才能允许我的本地(程序生成的)电子邮件通过smtpd_sender_restrictions
?我似乎看不到任何条件在手册中我可以添加哪些内容来放宽规则?下面是我使用的规则/etc/postfix/main.cf
:
##################
# SASL Settings and DKIM Settings
# See http://gogs.info/books/debian-mail/chunked/postfix.sasl.html
# See http://gogs.info/books/debian-mail/chunked/antispam.dkim.html
##################
smtpd_sender_restrictions =
# If mail is coming from mynetwork or from authenticated users use amavis filtering on port 10026 (DKIM signing)
check_sender_access regexp:/etc/postfix/amavis/tag_as_originating.re
permit_mynetworks
permit_sasl_authenticated
permit_tls_clientcerts
# For other mail use amavis filtering on port 10024 (skips DKIM signing)
check_sender_access regexp:/etc/postfix/amavis/tag_as_foreign.re
我使用 Post Admin 管理 m 个虚拟域,允许的发件人列在这里:
virtual_mailbox_domains = mysql:/etc/postfix/sql/virtual_domains_maps.cf
我必须smtpd_recipient_restrictions
防范任意的开放中继。
在我的 Exim MTA 上,我会对每封发出的消息进行签名。我明白 Postfix 的意义smtpd_sender_resrictions
,但我似乎无法让它们在这里做我想做的事情。
答案1
我能够将通过队列进入的消息直接发送pickup
到 amavis 的 10026 端口,以便对它们进行 DKIM 签名。
这些消息要么是由我服务器上的 Drupal 网站(我信任)生成的,要么由登录其 Roundcube 网络邮件的用户生成。
我刚刚将这两个参数添加到了现有的pickup
传输中/etc/postfix/master.cf
:
pickup fifo n - - 60 1 pickup
-o smtpd_tls_security_level=encrypt
-o content_filter=smtp-amavis:[127.0.0.1]:10026
(谢谢blog.purrdeta.com用于指针)
传输smtp-amavis
已在队列中定义master.cf
并被传入的消息使用smtpd
。
我花了一段时间才意识到这些消息是通过接收队列传入的,因此不会受到smtpd_sender_restrictions
我最初问题的影响。为了意识到这个错误,我必须感谢非常清楚Postfix 架构说明。