我想使用 PHP 中的 mail() 函数。为了做到这一点,我安装了 postfix。我正在 Ubuntu 18.04 上运行。
我的问题是我无法发送邮件,因为我有“连接被拒绝”输出。
在终端中,我尝试:
echo "这是电子邮件的正文" | mail -s“这是主题行” [email protected]
我在 mail.log 中得到了这个输出
1 月 11 日 01:14:39 AiliganonPC postfix/pickup[9411]: 207FE16016CD: uid=0 from=1 月 11 日 01:14:39 AiliganonPC postfix/cleanup[12552]: 207FE16016CD: message-id=<[email protected]> 1 月 11 日 01:14:39 AiliganonPC postfix/qmgr[9412]:207FE16016CD:from= ,size=370,nrcpt=1(队列活动) Jan 11 01:14:39 AiliganonPC postfix/smtp[12554]:连接到 gmail-smtp-in.l.google.com[2a00:1450:4010:c0e::1a]:25:网络无法访问 Jan 11 01:14:39 AiliganonPC postfix/smtp[12554]:连接到 gmail-smtp-in.l.google.com[74.125.131.27]:25:连接被拒绝 Jan 11 01:14:39 AiliganonPC postfix/smtp[12554]:连接到 alt1.gmail-smtp-in.l.google.com[2404:6800:4008:c13::1a]:25:网络无法访问 1 月 11 日 01:14:39 AiliganonPC postfix/smtp[12554]:连接到 alt1.gmail-smtp-in.l.google.com[142.250.157.27]:25:连接被拒绝 Jan 11 01:14:39 AiliganonPC postfix/smtp[12554]:连接到 alt2.gmail-smtp-in.l.google.com[2607:f8b0:400e:c06::1b]:25:网络无法访问 1 月 11 日 01:14:39 AiliganonPC postfix/smtp[12554]:207FE16016CD:to= ,中继=无,延迟=0.28,延迟=0.02/0.01/0.24/0,dsn=4.4.1,状态=延迟(连接到 alt2.gmail-smtp-in.l.google.com[2607:f8b0:400e:c06::1b]:25:网络无法访问)
此外,以下命令的输出:
telnet alt2.gmail-smtp-in.l.google.com 25
是
正在尝试 108.177.98.26... 尝试 2607:f8b0:400e:c06::1b... telnet:无法连接到远程主机:网络无法访问
我尝试过的:
验证我的端口 25 已打开并且未被防火墙阻止:
须藤 lsof -i:25
命令 PID 用户 FD 类型 设备大小/关闭 节点名称 主控 12899 根 13u IPv4 4027269 0t0 TCP *:smtp(监听) 主控 12899 根 14u IPv6 4027270 0t0 TCP *:smtp(监听)
禁用我的防火墙
我还尝试过使用不同的邮件地址(不在 gmail 上)并获得相同的输出。
在 /etc/postfix/main.cf 中,我将 inet_protocols 从 all 更改为 ipv4,然后将其恢复为“all”。
这是我的文件的配置:
smtpd_relay_restrictions=permit_mynetworkspermit_sasl_authenticated defer_unauth_destination 我的主机名 = example.com alias_maps = 哈希:/etc/aliases alias_database = 哈希:/etc/aliases mydestination = $myhostname、ailiganonpc、AiliganonPC、localhost.localdomain、localhost 中继主机 = mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 邮箱大小限制 = 0 收件人分隔符 = + inet_interfaces = 全部 inet_协议 = 全部
不确定为什么会出现错误,但这里有一些故障排除提示可能有助于解决此问题。
您的 DNS 似乎正常工作,但您的网络中的某些内容导致了问题,您可以 ping 通 Google 服务器吗?您的 ISP 是否可能出于某种原因阻止端口 25?
netstat -tuplen
的输出是什么?
您的后缀似乎正在运行,您是否尝试过远程登录到自己?
我敢打赌,您的 ISP 会像大多数 ISP 一样阻止端口 25。 您可以解除此限制,具体取决于您的提供商。
谢谢你,
kewwwa
我发现 AT&T 阻止来自我的主机的端口 25 连接,但允许连接到我的主机上的端口 25。他们将根据要求移除该块。
您的 IP 的 rDNS 必须可解析为您的 MX。如果(例如)AT&T 是您的提供商,他们可以在其末端添加一条 DNS 记录来执行此操作。
一些电子邮件提供商希望在您的域名注册中看到 SPF、DMARC 和 DKIM 规范。互联网上有很多关于如何执行此操作的帖子。
您可以感谢垃圾邮件发送者使这一切变得必要。