使用特定 IP 地址上的 postfix 发送电子邮件失败。Gmail 出现错误 81126

使用特定 IP 地址上的 postfix 发送电子邮件失败。Gmail 出现错误 81126

最近,我开始收到来自 Gmail 的错误:

主机 gmail-smtp-in.l.google.com[142.250.110.27] 表示:550-5.7.25 [XXXX] 发送此邮件的 IP 地址未设置 550-5.7.25 PTR 记录,或者相应的正向 DNS 条目未指向发送 IP。根据政策,Gmail 不接受来自缺少 PTR 记录的 IP 的邮件 550-5.7.25。有关更多信息,请转到 550-5.7.25 https://support.google.com/mail/answer/81126#ip-practices 550-5.7.25 要了解有关 Gmail 发件人政策的更多信息,请转到 550 5.7.25 https://support.google.com/mail/answer/81126. r9-20020a0560001b8900b0033b09244271si4920918wru.914 - gsmtp(回复DATA命令结束)

我查看了这一点,意识到运行在 IP YYYY 上的邮件服务器实际上是从 IP 地址 XXXX 发送电子邮件。我的服务器有两个面向公众的 IP 地址。其中一个 - YYYY - 是配置了 PTR 记录和反向 DNS 和 A 记录的 IP 地址。XXXX 用于不相关的服务。

现在 PTR 记录和反向 DNS 都已正确设置。我想知道的是,为什么 postfix 选择在 IP XXXX 上发送大多数电子邮件,而它实际上应该在 YYYY 上发送?这将解决 Gmail 报告的错误。

我之前看过这个问题 -如何让 Postfix 使用另一个 IP 地址?- 我已经按照说明设置了绑定地址,但这似乎并没有解决问题。Postfix 当然在这个 IP 上,但它似乎并不影响电子邮件的发送地址。

此邮箱会向各种虚拟域发送电子邮件,而不仅仅是分配给该邮箱的域。例如,该邮箱本身有域名 abc.com 和电子邮件,例如[电子邮件保护]发送成功。但是,邮件服务器也会发送邮件[电子邮件保护]。这些电子邮件通过 IP 地址 XXXX 发出,这导致了所有麻烦。我怀疑 postfix 出于某种原因认为这一定是 def.com 的正确 IP。

我正在尝试让 postfix 始终在 YYYY ip 上发送。我查看了 sender_dependent_default_transport_maps 以了解不同域的不同选项。这似乎也不起作用。

这是我的master.cf

smtp    unix    -   -   n   -   -   smtpd
   -o smtp_bind_address=Y.Y.Y.Y
   -o myhostname=mail.abc.com

Y.Y.Y.Y:smtp      inet  n       -       n       -       -       smtpd
   -o smtp_bind_address=Y.Y.Y.Y
   -o myhostname=mail.abc.com

domain3   unix  -       -       n       -       -       smtp
   -o smtp_bind_address=Y.Y.Y.Y
   -o smtp_helo_name=mail.abc.com

submission inet n       -       n       -       -       smtpd
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtp_bind_address=Y.Y.Y.Y
  -o smtp_helo_name=abc.com
  -o myhostname=abc.com

pickup    unix  n       -       n       60      1       pickup
cleanup   unix  n       -       n       -       0       cleanup
qmgr      unix  n       -       n       300     1       qmgr
tlsmgr    unix  -       -       n       1000?   1       tlsmgr
rewrite   unix  -       -       n       -       -       trivial-rewrite
bounce    unix  -       -       n       -       0       bounce
defer     unix  -       -       n       -       0       bounce
trace     unix  -       -       n       -       0       bounce
verify    unix  -       -       n       -       1       verify
flush     unix  n       -       n       1000?   0       flush
proxymap  unix  -       -       n       -       -       proxymap
proxywrite unix -       -       n       -       1       proxymap
smtp      unix  -       -       n       -       -       smtp
relay     unix  -       -       n       -       -       smtp
showq     unix  n       -       n       -       -       showq
error     unix  -       -       n       -       -       error
retry     unix  -       -       n       -       -       error
discard   unix  -       -       n       -       -       discard
local     unix  -       n       n       -       -       local
virtual   unix  -       n       n       -       -       virtual
lmtp      unix  -       -       n       -       -       lmtp
anvil     unix  -       -       n       -       1       anvil
scache    unix  -       -       n       -       1       scache

spamassassin   unix   -     n       n      -       -       pipe
       user=spamd argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}

dovecot   unix  -       n       n       -       -       pipe
       flags=DRhu user=vmail:vmail argv=/usr/bin/spamc -f -u spamd -e /usr/lib/dovecot/dovecot-lda -f ${sender} -d ${recipient}

policy-spf unix    -       n       n       -       0     spawn
      user=nobody argv=/usr/bin/policyd-spf

domain3 在 /etc/postfix/sender_transport 中设置

@def.com domain3:

在 main.cf 中我们有以下内容:

sender_dependent_default_transport_maps = hash:/etc/postfix/sender_transport

由于某种原因,来自[电子邮件保护]没问题 - 它选择了正确的 IP YYYY 此 IP 地址也恰好与盒子的 A 记录匹配。第二个 IP XXXX 用于其他不相关的服务,那么为什么 postfix 坚持选择 XXXX 来发送任何非 abc.com 域名的电子邮件?我显然错过了一些关于虚拟邮箱和别名的重要信息?我应该注意到,在添加第二个公共 IP 之前,一切都运行良好。

我也尝试过设置 smtp 绑定地址

http://www.postfix.org/postconf.5.html#smtp_bind_address

smtp_bind_address = Y.Y.Y.Y
inet_interfaces = all

我尝试将 inet_interfaces 设置为各种设置,但都无济于事。

我如何才能强制 postfix 在 YYYY 上发送电子邮件,并且只在那个 IP 地址上发送电子邮件。谢谢大家!:)

答案1

好的,我找到了问题。事实证明,smtp_bind_address 和 inet_interfaces 字段中的单个 IP 地址确实有效。

问题在于 wireguard 接口设置的 iptables 规则不正确,同样在该盒子上,使用了 XXXX ip。删除该规则后,postfix 会通过正确的 IP 发送出去。

谢谢评论 :)

相关内容