/ 分享 / 96 浏览

解决独角数卡在纯IPv6环境下 Gmail SMTP 无法发送邮件的问题(WARP出口方案)

dujiaoka
在使用 独角数卡(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

[Service]
Type=oneshot
ExecStart=/usr/local/bin/warp-route.sh
RemainAfterExit=true

[Install]
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) 就代表已执行成功并常驻

如何限制liunx服务器systemd日志大小到100M
如何限制liunx服务器systemd日志大小到100M
新到手的vps必须设置的几个重要设置
新到手的vps必须设置的几个重要设置
摩尔多瓦Moldtelecom Prepaid eSIM 一年保号仅需0.8RMB
摩尔多瓦Moldtelecom Prepaid eSIM 一年保号仅需0.8RMB
Typecho默认的文章地址带有index.php,怎么去掉
Typecho默认的文章地址带有index.php,怎么去掉
购买VPS后必须要做的4件事情,很重要!
购买VPS后必须要做的4件事情,很重要!
独角数卡安装出问题:发生错误undefined、此路由不支持 POST 方法
独角数卡安装出问题:发生错误undefined、此路由不支持 POST 方法

0

  1. 此文章暂无评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注