
在使用 独角数卡(Dujiaoka) 时,如果你部署在 只有 IPv6 的 VPS,可能会在发送邮件时遇到以下报错:
`Connection could not be established with host smtp.gmail.com
stream_socket_client(): Unable to connect to ssl://smtp.gmail.com:465 (Connection timed out)
`
这说明你的服务器无法通过 IPv6 连接 Gmail SMTP,而 Gmail SMTP 是优先支持 IPv4 的,IPv6-only 的环境下会失败。
✅ 一、安装 Cloudflare WARP(添加 IPv4 出口)#
WARP 可以为你的 IPv6-only VPS 提供一个免费的 NAT IPv4 出口,非常适合发邮件、访问 IPv4-only 的服务。
安装 WARP 一键脚本:#
`wget -N https://gitlab.com/fscarmen/warp/-/raw/main/menu.sh && bash menu.sh
`
运行后选择:
`4. 为 IPv6-only VPS 添加 IPv4 出口(WARP)
`
✅ 二、配置 Warp 策略路由(让邮件走 IPv4 出口)#
1️⃣ 查看 warp 接口 IP(一般是 172.16.0.2):#
`ip addr show dev warp
`
2️⃣ 添加路由表和规则(仅需一次):#
`echo "100 warp" >> /etc/iproute2/rt_tables
ip route add default dev warp table warp
ip rule add from 172.16.0.2 table warp
`
3️⃣ (可选)只让 Gmail SMTP 流量走 Warp:#
`iptables -t mangle -A OUTPUT -p tcp -d smtp.gmail.com --dport 587 -j MARK --set-mark 66
iptables -t mangle -A OUTPUT -p tcp -d smtp.gmail.com --dport 465 -j MARK --set-mark 66
ip rule add fwmark 66 table warp
`
这样其他流量仍使用 IPv6,不走 Warp,仅 Gmail SMTP 流量使用 IPv4。
三、增强:手动添加 DNS 和邮件服务器路由(可选但推荐)#
为了确保系统能够解析域名并正常连接邮件服务器,建议添加以下路由:
添加 DNS 服务器路由:#
`ip route add 8.8.8.8 dev warp
ip route add 8.8.4.4 dev warp
ip route add 1.1.1.1 dev warp
ip route add 1.0.0.1 dev warp
`
为 Gmail SMTP 添加专门路由:#
`ip route add 172.217.0.0/16 dev warp
ip route add 142.250.0.0/15 dev warp
ip route add 173.194.0.0/16 dev warp
ip route add 74.125.0.0/16 dev warp
`
为常用国内邮件服务器添加路由:#
`ip route add 163.177.90.0/24 dev warp # 163邮箱
ip route add 58.251.149.0/24 dev warp # QQ邮箱
`
四、测试网络和 SMTP 连通性#
测试 IPv4 出口是否通:#
`curl -4 --connect-timeout 10 ifconfig.me
`
测试 Gmail SMTP 是否能连通:#
`curl -4 --connect-timeout 10 telnet://smtp.gmail.com:465
`
使用 ping 测试连通性(如支持):#
ping -4 -c 3 8.8.8.8
✅ 五、测试网络和 SMTP 连接#
查看 IPv4 出口是否通:#
`curl -4 ifconfig.me
`
应显示 Cloudflare 的 IP(如 104.28.x.x)。
测试 Gmail SMTP 是否能连通:#
`# 测试端口 587(推荐)
curl -4 -v --connect-timeout 10 smtp.gmail.com:587`# 或使用 openssl 更直观
openssl s_client -connect smtp.gmail.com:587 -4
看到 220 smtp.gmail.com ESMTP ... 就说明连接成功。
✅ 六、修改 /etc/gai.conf 优先使用 IPv4#
编辑配置文件:
`nano /etc/gai.conf
`
找到这行(大概在54行):
#precedence ::ffff:0:0/96 100
改为:
`precedence ::ffff:0:0/96 100
`
取消注释并将优先级改为 100,保存并退出。此操作会让系统优先使用 IPv4 地址连接服务。
七、测试邮件发送#
独角数卡后台 → 配置 → 邮件测试,里面发送,这下应该会显示发送成功了。
最后持久化方法:写入 systemd 自定义服务#
由于ip route add 路由规则、ip rule add 策略路由、iptables 标记规则在系统重启后会恢复原样,所以需要持久化,持久化方法。``
1️⃣ 创建脚本文件 /usr/local/bin/warp-route.sh#
`nano /usr/local/bin/warp-route.sh
`
``
粘贴以下内容(按你实际 IP 情况可以自行修改):
#!/bin/bash
设置默认路由表\#
ip route add default dev warp table warp
ip rule add from 172.16.0.2 table warp
添加 DNS 路由\#
ip route add 8.8.8.8 dev warp
ip route add 8.8.4.4 dev warp
ip route add 1.1.1.1 dev warp
ip route add 1.0.0.1 dev warp
Gmail SMTP 路由\#
ip route add 172.217.0.0/16 dev warp
ip route add 142.250.0.0/15 dev warp
ip route add 173.194.0.0/16 dev warp
ip route add 74.125.0.0/16 dev warp
常用国内邮箱\#
ip route add 163.177.90.0/24 dev warp
ip route add 58.251.149.0/24 dev warp
iptables 规则(可选)\#
iptables -t mangle -A OUTPUT -p tcp -d smtp.gmail.com –dport 465 -j MARK –set-mark 66
iptables -t mangle -A OUTPUT -p tcp -d smtp.gmail.com –dport 587 -j MARK –set-mark 66
ip rule add fwmark 66 table warp
``
保存并退出。
然后给脚本添加执行权限:
``
`chmod +x /usr/local/bin/warp-route.sh
`
``
``
2️⃣ 创建 Systemd 启动服务 /etc/systemd/system/warp-route.service#
``
`nano /etc/systemd/system/warp-route.service
`
``
粘贴以下内容:
\[Unit\]
Description=WARP 路由规则设置
After=network.target
Type=oneshot
ExecStart=/usr/local/bin/warp-route.sh
RemainAfterExit=true
WantedBy=multi-user.target
保存并退出。
---
``
### 3️⃣ 启用并启动服务
`systemctl daemon-reexec
systemctl daemon-reload
systemctl enable warp-route.service
systemctl start warp-route.service``
`
``
你可以验证是否执行成功:
`systemctl status warp-route.service
`
``
如果看到 `Active: active (exited)` 就代表**已执行成功并常驻**。