我每次尝试使用 php 发送邮件时都会收到网络不可达的错误。
alt2.gmail-smtp-in.l.google.com [2a00:1450:4010:c03::1a] Network is unreachable
alt3.gmail-smtp-in.l.google.com [2607:f8b0:400e:c03::1a] Network is unreachable
我尝试研究问题可能出在哪里,似乎启用 ipv6 会导致一些问题。因此,我尝试通过执行以下操作在服务器上禁用 ipv6:
我将这些行添加到 sysctl.conf
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
net.ipv6.conf.eth0.disable_ipv6 = 1
并在 /etc/hosts 文件中注释掉 ipv6 地址
我不太确定我是否还遗漏了什么,因为它似乎不起作用!希望有人能帮我解决这个问题!
更新:ifconfig -a
eth0 Link encap:Ethernet HWaddr 42:01:0a:f0:64:e1
inet addr:10.240.100.225 Bcast:10.240.100.225 Mask:255.255.255.255
UP BROADCAST RUNNING MULTICAST MTU:1460 Metric:1
RX packets:2491 errors:0 dropped:0 overruns:0 frame:0
TX packets:2594 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:301672 (294.6 KiB) TX bytes:356294 (347.9 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
更新:
我在尝试发送新邮件时也遇到了其他连接超时错误。但邮件并未到达目标收件人。
eforward3.registrar-servers.com [38.101.213.206] Connection timed out
更新:
traceroute -n -T -p 80 38.101.213.206
traceroute to 38.101.213.206 (38.101.213.206), 30 hops max, 60 byte packets
1 64.233.174.176 136.720 ms 136.710 ms 136.668 ms
2 64.233.174.176 136.673 ms 136.670 ms 136.679 ms
3 64.233.174.176 136.681 ms 136.675 ms 209.85.242.89 136.661 ms
4 64.233.174.176 136.644 ms 209.85.242.89 136.615 ms 64.233.174.176 136.646 ms
5 209.85.242.89 163.646 ms 64.233.174.176 136.619 ms 209.85.242.89 163.611 ms
6 64.233.174.176 136.617 ms 136.493 ms 209.85.242.89 180.663 ms
7 209.85.242.89 180.643 ms 64.233.174.176 136.448 ms 136.437 ms
8 64.233.174.176 136.425 ms 136.325 ms 136.310 ms
9 209.85.242.89 180.503 ms 180.487 ms 64.233.174.176 136.277 ms
10 209.85.242.89 180.106 ms 64.233.174.176 136.159 ms 136.115 ms
11 209.85.242.89 153.688 ms 64.233.174.176 136.423 ms 178.986 ms
12 64.233.174.176 178.866 ms 178.866 ms 178.939 ms
13 64.233.174.205 136.899 ms 136.894 ms 136.714 ms
14 154.54.27.161 154.155 ms 209.85.250.62 136.623 ms 154.54.27.161 153.607 ms
15 209.85.249.4 139.747 ms 139.370 ms 209.85.249.2 136.117 ms
16 38.88.224.5 139.138 ms 139.234 ms 139.170 ms
17 154.54.45.30 197.888 ms 154.54.6.105 137.433 ms 154.54.28.62 196.700 ms
18 154.54.27.237 150.673 ms 154.54.27.169 149.094 ms 149.232 ms
19 154.54.5.65 195.015 ms 154.54.7.53 195.410 ms 154.54.5.65 194.558 ms
20 154.54.29.221 196.056 ms 195.939 ms 196.722 ms
21 154.54.28.62 197.622 ms * *
22 * * 38.20.62.218 196.091 ms
23 38.20.62.218 195.919 ms 38.122.18.154 199.002 ms 38.20.62.222 195.254 ms
24 38.122.18.154 198.058 ms 38.101.213.206 197.167 ms 195.442 ms
traceroute -n -T -p 25 38.101.213.206
traceroute to 38.101.213.206 (38.101.213.206), 30 hops max, 60 byte packets
1 * * *
2 * * *
3 * * *
4 * * *
5 * * *
6 * * *
7 * * *
8 * * *
9 * * *
10 * * *
11 * * *
12 * * *
13 * * *
14 * * *
15 * * *
16 * * *
17 * * *
18 * * *
19 * * *
20 * * *
21 * * *
22 * * *
23 * * *
24 * * *
25 * * *
26 * * *
27 * * *
28 * * *
29 * * *
30 * * *
Telnet:我想我还没有安装它。我需要它吗?
答案1
在我管理的一台仅支持 IPv4 的服务器上,我总是在 中看到相同的错误消息/var/log/exim4/mainlog
。但这些错误消息是无害的。Exim 意识到该地址不起作用,并在不到一秒钟的时间内切换到使用 IPv4 地址。
托管服务提供商是否首先宣传支持 IPv6?如果没有,您可能根本没有 IPv6 连接。如果 exim 立即切换到 IPv4,邮件仍会顺利送达。
如果您的服务器还没有 IPv6,您可能需要考虑获取它,但这是另一个问题。
但是,您的两个 traceroute 输出指向了真正的问题,它与 IPv6 无关。问题是传出的 SMTP 被阻止,并且在第一跳就被阻止,这意味着它要么被您机器上的防火墙规则阻止,要么被第一个路由器阻止。
端口 80 跟踪路由显示网络行为有些奇怪,因为前 11 个跳数只是重复的两个相同的 IP 地址。这两个 IP 地址属于 Google,所以我猜想如何从 Google Compute 实例发送电子邮件可能和你有关。
答案2
如果您没有 ipv6 连接,则不应允许 exim 尝试使用 ipv6。在您的全局配置部分中,基本上在 ACL 开始之前的任何位置,添加以下内容:
disable_ipv6 = true
相关文件: http://www.exim.org/exim-html-current/doc/html/spec_html/ch-main_configuration.html#SECTalomo 向下搜索disable_ipv6;它们是按字母顺序排列的。
答案3
如果你真的在 Google Compute Engine 上运行,正如@kasperd 在你的问题中添加的那样,那么你应该能够发送电子邮件 -但仅限于 Google 服务器且仅通过 SSL(或者通过 Google 合作伙伴服务,正如 kasperd 的答案中的链接所解释的那样)。
- 所有到端口 25 (SMTP) 的传出流量均被阻止。
- 大多数到端口 465 或 587(通过 SSL 的 SMTP)的传出流量都被阻止。除了已知的Google IP 地址
- 所有使用 TCP、UDP 和 ICMP 以外的协议的流量都会被阻止。