
非常好!错误日志已经明确指出了问题的根源:Gerrit 服务器无法解析 SMTP 服务器的主机名 smtp.163.com。
这是一个典型的网络连接/DNS 解析问题。错误堆栈显示 Gerrit 在尝试连接 SMTP 服务器时,无法将域名 smtp.163.com 解析为 IP 地址。
解决方案
1. 测试 DNS 解析(立即验证)
在 Gerrit 服务器上执行以下命令,检查是否能正常解析 SMTP 服务器域名:
# 测试域名解析
nslookup smtp.163.com
# 或者使用
dig smtp.163.com
# 测试网络连通性
ping smtp.163.com
2. 如果解析失败,可能的解决方式
选项 A:配置正确的 DNS 服务器
编辑 /etc/resolv.conf 文件,添加可靠的 DNS 服务器:
sudo vim /etc/resolv.conf
添加以下内容:
nameserver 8.8.8.8 # Google DNS
nameserver 114.114.114.114 # 国内常用 DNS
选项 B:使用 IP 地址替代域名(临时解决方案)
如果 DNS 问题一时难以解决,可以查找 smtp.163.com 的 IP 地址,然后在 gerrit.config 中直接配置 IP:
nslookup smtp.163.com
# 记下解析出的 IP 地址,然后在 gerrit.config 中替换
3. 修改 Gerrit 配置
编辑 gerrit.config 文件:
cd ~/gerrit_site
vim etc/gerrit.config
检查并确保 sendemail 段落的 smtpServer 配置正确:
[sendemail]
smtpServer = smtp.163.com # 或者使用 IP 地址
smtpServerPort = 465 # 或 587,根据 163 邮箱要求
smtpEncryption = ssl # 或 tls
sslVerify = true # 如果使用自签名证书可设为 false
smtpUser = your-email@163.com
smtpPass = your-authorization-code # 注意:163 邮箱需要使用授权码,不是登录密码
4. 重启 Gerrit 服务
# 进入 Gerrit 安装目录执行
./bin/gerrit.sh restart
# 或者使用
java -jar gerrit.war daemon -d ~/gerrit_site
5. 验证修复
重启后,执行以下操作验证:
- 重新尝试在 Gerrit 网页界面添加邮箱
- 同时监控错误日志,确认
UnknownHostException是否消失:tail -f ~/gerrit_site/logs/error_log
额外检查项
如果上述方法仍不奏效,检查:
-
服务器网络连接:
# 检查服务器是否能访问外网 ping 8.8.8.8 -
防火墙设置:
# 检查是否屏蔽了 SMTP 端口(465/587) iptables -L -
/etc/hosts 文件(一般不推荐修改):
cat /etc/hosts
总结
根本原因:Gerrit 服务器无法解析 smtp.163.com 域名。
解决优先级:
- ✅ 首先测试 DNS 解析(
nslookup smtp.163.com) - ✅ 配置可靠的 DNS 服务器
- ✅ 重启 Gerrit 服务验证修复

被折叠的 条评论
为什么被折叠?



