为了从 PHP 网站向自己发送 2FA 电子邮件,我设置了 MX 记录覆盖并创建了允许访问目标域的邮件服务器的防火墙规则,但是当我尝试发送时,sendmail
在其日志中写入电子邮件已被接受但从未发送。
为了测试 DNS 名称解析,我运行nslookup
并输入type=MX
命令,但它总是打印:
;; communications error to 10.0.0.1#53: timed out
;; communications error to 10.0.0.1#53: timed out
;; communications error to 10.0.0.1#53: timed out
;; no servers could be reached
当我ping
、telnet
或curl
等操作时,该 DNS 服务器的名称解析工作正常。例如,它可以从 Debian 仓库安装软件包。
sendmail
从我所能吸收的关于 的少量信息来看,听起来它需要传递到 的只是一个指向 的[email protected]
MX 记录。如果我错了,请纠正我。所有这些项目似乎都已到位:在我的 DNS 服务器上有一个 MX 记录;它指向也有一个 A 记录;我正在发送到;有一条防火墙规则允许带有的 Linux 计算机使用 DNS 服务器解析名称;有一条防火墙规则允许带有的 Linux 计算机向 发送电子邮件。所有这些都存在于我的 LAN 中,不需要访问外部 Internet。example.com
smtp.example.com
example.com
smtp.example.com
[email protected]
sendmail
sendmail
smtp.example.com
在这种情况下我应该如何排除邮件发送故障?
编辑:
同时,我发现了失败的根本原因sendmail
:它会在命令行上使用的电子邮件地址前面加上当前登录的用户名(不考虑su
),即如果我的用户名是myusername
,那么它会在第一次尝试和第二次尝试时更改me@mydomain
为。myusername@me@mydomain
myusername@mydomain
缺少了一些东西sendmail.mc
,但是它是什么呢?