如果我使用SSL连接到端口143上的邮件客户端上的Postfix,则通过此连接从虚拟域发送的邮件将通过smtpd_sender_restrictions
,从而启用将其路由到amavis以在传输之前添加其DKIM签名的筛选器。
到目前为止这么好,但…
但是,如果我使用与上面相同的用户@ virtual_domain生成一封电子邮件,那么直接从Drupal(或运行authentication用户的Roundcube)运行在与Postfix相同的服务器上,则该电子邮件不会通过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 Adminpipe理多个虚拟域,并在此列出允许的发件人:
virtual_mailbox_domains = mysql:/etc/postfix/sql/virtual_domains_maps.cf
我有smtpd_recipient_restrictions
来防止任意打开中继。
在我的Exim MTA上,我签署了每封邮件。 我可以看到Postfix的smtpd_sender_resrictions
的点,但我似乎无法让他们做我想在这里。
我能够通过pickup
队列将消息引导到端口10026上的amavis,让他们对DKIM进行签名。
这些消息是由我的服务器上的Drupal网站(由我信任)以及用户login到其Roundcubenetworking邮件生成的。
我只是将这两个参数添加到/etc/postfix/master.cf
的现有pickup
传输中:
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
队列master.cf
的消息使用。
我花了一段时间才意识到这些消息是通过拾取队列进入的,因此不会受到我原来问题中的smtpd_sender_restrictions
。 为了实现这个错误,我必须感谢Postfix体系结构的非常清晰的解释 。