我在一台运行着 Ubuntu 20.04.4 LTS 的服务器上安装了 Postfix 邮件服务器蚂蚁纳米设备。Postfix 是作为邮件系统软件包,它预装了大量其他邮件实用程序,如 Amavisd、Dovecot 和 Fail2Ban,以帮助像我这样的 Linux 新手快速拥有一个功能齐全、可靠且相对安全的邮件服务器。当我最初设置好一切时,一切似乎都运行得非常完美。
但是,今天我尝试从 Gmail 帐户向我域的 Postfix 服务器发送一封电子邮件,但邮件从未到达我的收件箱。查看日志后,似乎尝试传递邮件的 Gmail 邮件服务器的 IP 地址已列在 上dbl.spamhaus.org
,因此服务器拒绝了它:
Jul 30 18:57:59 smtp postfix/postscreen[7559]: CONNECT from [209.85.216.48]:36792 to [XX.XX.XX.XX]:25
Jul 30 18:57:59 smtp postfix/dnsblog[7561]: addr 209.85.216.48 listed by domain zen.spamhaus.org as 127.255.255.254
Jul 30 18:58:05 smtp postfix/postscreen[7559]: PASS NEW [209.85.216.48]:36792
Jul 30 18:58:05 smtp postfix/smtpd[7563]: connect from mail-pj1-f48.google.com[209.85.216.48]
Jul 30 18:58:06 smtp postfix/smtpd[7563]: Anonymous TLS connection established from mail-pj1-f48.google.com[209.85.216.48]: TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256
Jul 30 18:58:06 smtp postfix/smtpd[7563]: NOQUEUE: reject: RCPT from mail-pj1-f48.google.com[209.85.216.48]: 554 5.7.1 Service unavailable; Sender address [[email protected]] blocked using dbl.spamhaus.org; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<mail-pj1-f48.google.com>
Jul 30 18:58:39 smtp postfix/smtpd[7563]: disconnect from mail-pj1-f48.google.com[209.85.216.48] ehlo=2 starttls=1 mail=1 rcpt=0/1 bdat=0/1 rset=1 quit=1 commands=6/8
我知道合法的邮件服务器通常会被 DNSBL/RBL 服务临时列出,因为垃圾邮件发送者会使用它们来兜售他们的商品,但当邮件是从完全合法的来源发送时,我特别不想面对这个问题。
当我研究这个问题时,我在 HowToForge 上看到了一个帖子,标题是Postfix 白名单如何将 gmail 添加到白名单。建议的答案是使用 Postscreen 而不是显式 DNSBL 过滤垃圾邮件,因为 Postscreen 基本上对此类事情“更加宽容”。
根据 iRedMail 文档启用 Postscreen,与以下文档交叉引用启用 DNSBL 服务,我查看了一下我的邮箱,/etc/postfix/master.cf
以确保我没有设置过分严格的垃圾邮件过滤规则。然而,我发现似乎表示我已经“只是”使用 Postscreen:
如果启用了 Postfix,iRedMail 应该执行以下操作:
# ==========================================================================
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (no) (never) (100)
# ==========================================================================
#smtp inet n - - - - smtpd
smtp inet n - - - 1 postscreen
smtpd pass - - n - - smtpd
我的master.cf
smtp inet n - y - 1 postscreen
smtpd pass - - y - - smtpd
dnsblog unix - - y - 0 dnsblog
tlsproxy unix - - y - 0 tlsproxy
关于启用 DNSBL 的信息表明应该有一个类似于这样的块master.cf
:
smtpd_recipient_restrictions =
...
reject_unauth_destination
reject_rbl_client zen.spamhaus.org=127.0.0.[2..11]
reject_rbl_client b.barracudacentral.org=127.0.0.2
但我没有这样的块。它还说,如果我正在运行 Postscreen,应该有一个这样的块:
postscreen_dnsbl_sites =
zen.spamhaus.org=127.0.0.[2..11]*3
b.barracudacentral.org=127.0.0.2*2
但是,我的master.cf
又不包含任何这样的块。当然,现在我甚至更多的感到困惑,因为如果不是应该使用 DNSBL 过滤,为什么 Gmail 邮件被拒绝?
如上所述,在 *nix 环境方面,我基本上是个“新手”,所以我不确定下一步该去哪里。我可以只是尝试将我自己的 Gmail 地址列入白名单,但我更愿意找到一个不那么具体的解决方案。
我是否朝着正确的故障排除方向前进,或者我是否忽略了一些东西(当然不是不可能)?
答案1
运行:“grep -ris spamhaus /etc”
您的配置中可能包含“reject_rbl_client zen.spamhaus.org”(不包含“=127...”部分),因此当 DNS 解析为 127.255.255.254 时,邮件会被拒绝,这反过来表明您在邮件服务器上使用了公共解析器