# 邮件接收者在最近升级后失去主机名解析IP，导致反垃圾邮件措施失效

**URL:** <https://meta.discourse.org/t/mail-receiver-loses-ip-to-hostname-resolution-after-recent-upgrade-and-prevents-anti-spam-measures-from-working/205003>\
**Category:** Support\
**Created:** [2021年十月1日 19:18 UTC](https://meta.discourse.org/t/mail-receiver-loses-ip-to-hostname-resolution-after-recent-upgrade-and-prevents-anti-spam-measures-from-working/205003 "2021-10-01T19:18:21Z")\
**Posts on this page:** 1\
**Showing post:** 1

<div class="post-metadata">

**Author:** ![md-misko](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/md-misko/32/126315_2.png) [@md-misko](https://meta.discourse.org/u/md-misko)\
**Post date:** [2021年十月1日 19:18 UTC](https://meta.discourse.org/t/mail-receiver-loses-ip-to-hostname-resolution-after-recent-upgrade-and-prevents-anti-spam-measures-from-working/205003/1 "2021-10-01T19:18:21Z")

</div>

似乎最新的 [Self-hosted mail-receiver update following Let's Encrypt root certificate change](https://meta.discourse.org/t/self-hosted-mail-receiver-update-following-lets-encrypt-root-certificate-change/204924/1) 邮件接收器更新不再将 IP 地址解析为主机名。这导致之前正常工作的 Postfix 客户端访问限制出现问题，该限制是通过在 mail-receiver.yml 中添加以下行启用的：

```plaintext
  POSTCONF_smtpd_client_restrictions: 'regexp:/etc/postfix/shared/client_access_regex'

```

以下是邮件接收器日志中的一段片段，显示了一个入站连接：

```plaintext
Oct 01 17:38:11 discourse-mail-receiver postfix/master[1]: reload -- version 3.5.6, configuration /etc/postfix
Oct 01 17:41:58 discourse-mail-receiver postfix/smtpd[151]: connect from unknown[167.71.160.115]
Oct 01 17:41:59 discourse-mail-receiver postfix/smtpd[151]: disconnect from unknown[167.71.160.115] ehlo=2 starttls=1 mail=1 quit=1 commands=5

```

原本应解析为发起客户端主机名 `www11-do.checktls.com[167.71.160.115]` 的内容，现在无法解析并被标记为 `unknown[167.71.160.115]`。

这与 `client_access_regex` 文件中的正则表达式条目产生冲突，该文件旨在拒绝所有没有有效 PTR 记录的主机（基本上是所有垃圾邮件中继），以及所有来自动态 IP 范围的主机（主要是虚拟主机，也基本上是所有垃圾邮件中继）。

由于没有任何 IP 被解析为主机名，所有规则都失效了。更糟糕的是，`/unknown/ REJECT` 这一行现在阻断了所有入站邮件。我不得不暂时禁用该规则以使入站连接成为可能，而其他所有规则也因解析问题而失效，这导致服务器再次面临垃圾邮件威胁（在实施这些规则之前，我的论坛曾被垃圾邮件淹没；实施之后，我几乎没再收到过任何垃圾邮件）。

由于 Let’s Encrypt 相关问题，我无法回退到旧版本作为临时解决方案，而新版本又重新打开了垃圾邮件泛滥的大门。因此，我非常希望能得到修复（我曾尝试研究如何在 Docker 镜像中手动启用 DNS 解析，但未能成功）。

以下是 `client_access_regex` 文件供参考，如果您也遇到类似的重复性垃圾邮件问题并希望尝试使用（请使用 [Customize direct-delivery Postfix configuration](https://meta.discourse.org/t/customising-direct-delivery-postfix-configuration/118759/1) 来配置 `/etc/postfix/shared` 和 `mail-receiver.yml`）：

```plaintext
# regex dns: ([a-zA-Z0-9]+(-[a-zA-Z0-9]+)*\\.)+[a-zA-Z]{2,}
# regex ip: ((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)
#
# dyn-ip-dns:
/((\\.|-|x)(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){2}((\\.|-)[a-zA-Z0-9]+)+\\.[a-zA-Z]{2,}/ REJECT
/unknown/ REJECT
/sample-spam\\.domain\\.com/ REJECT

```

---

_[View the full topic](https://meta.discourse.org/t/mail-receiver-loses-ip-to-hostname-resolution-after-recent-upgrade-and-prevents-anti-spam-measures-from-working/205003)._
