我有一个 postfix/dkimproxy 设置,但它不能按照我喜欢的方式工作。
我exampledomain.org
使用 SPF 仅允许来自server.exampledomain.org
(rDNS 映射正确)的邮件,该邮件也以 为别名smtp.exampledomain.org
。
目前,服务器上运行的 Web 应用程序sendmail
在发送出站电子邮件时使用 Postfix 的内置命令。这些电子邮件来自[email protected]
并且经过了正确的 DKIM 签名。这是正确的!
当用户@exampledomain.org
(我!!)从 Outlook 发送邮件时,它会连接到该邮件smtp.exampledomain.org
并在STARTTLS
命令后进行身份验证。不幸的是,电子邮件未经过 DKIM 签名。日志显示电子邮件会自动中继,不会通过dkimproxy
。dkimproxy 配置如下
# specify what address/port DKIMproxy should listen on
listen 127.0.0.1:10027
# specify what address/port DKIMproxy forwards mail to
relay 127.0.0.1:10028
# specify what domains DKIMproxy can sign for (comma-separated, no spaces)
domain server.exampledomain.org,exampledomain.org
# specify what signatures to add
signature dkim(c=simple)
signature domainkeys(c=nofws)
# specify location of the private key
keyfile /etc/ssl/private/dkim_server/dkim_server.key
# specify the selector (i.e. the name of the key record put in DNS)
selector server
DNS TXT 记录已设置。
Postfix 配置了一个很大的 master.cf 文件,我不会完整地粘贴它。相关行如下
#
# modify the default submission service to specify a content filter
# and restrict it to local clients and SASL authenticated clients only
#
submission inet n - n - - smtpd
-o smtpd_etrn_restrictions=reject
-o smtpd_sasl_auth_enable=yes
-o content_filter=dksign:[127.0.0.1]:10027
-o receive_override_options=no_address_mappings
-o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
#
# specify the location of the DomainKeys signing filter
#
dksign unix - - n - 10 smtp
-o smtp_send_xforward_command=yes
-o smtp_discard_ehlo_keywords=8bitmime,starttls
#
# service for accepting messages FROM the DomainKeys signing filter
#
127.0.0.1:10028 inet n - n - 10 smtpd
-o content_filter=
-o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
-o smtpd_helo_restrictions=
-o smtpd_client_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks=127.0.0.0/8
-o smtpd_authorized_xforward_hosts=127.0.0.0/8
问题是
为什么来自外部的邮件不会被 dkimproxy 处理?
答案1
您需要确保 Outlook 连接到提交端口(端口 587),而不是端口 25。这是因为 Postfix 配置通过对端口 587 上收到的邮件(即从您的客户端发送外发邮件)进行签名,但不对端口 25 上收到的邮件进行签名(因为这是其他 MTA 发送到您的服务器的邮件)。这是由content_filter
中的行实现的main.cf
,您会注意到它存在于submission inet
定义中,但不存在于smtp inet
定义中。