多域场景下 dkimproxy 的有效配置

多域场景下 dkimproxy 的有效配置

我有一个 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定义中。

相关内容