Kiwi-TCMS邮件通知配置报错[Errno 99]无法分配请求地址
KiwiTCMS邮件通知报错[Errno 99]的排查方案
检查容器内SMTP服务器地址配置
如果你的SMTP服务器部署在本地主机而非公网,不要用localhost或127.0.0.1——容器的localhost指向自身而非宿主机。换成宿主机的内网IP(比如192.168.x.x),或者Docker网桥的网关地址(默认是172.17.0.1),再重新执行测试命令。同步代理配置到容器
宿主机的代理配置不会自动传递给Docker容器,需要手动注入代理环境变量:- 编辑KiwiTCMS的
docker-compose.yml文件,在kiwi_web服务的environment段添加:- HTTP_PROXY=http://你的代理地址:端口 - HTTPS_PROXY=http://你的代理地址:端口 - NO_PROXY=localhost,127.0.0.1,宿主机内网IP段 - 重启容器:
sudo docker-compose down && sudo docker-compose up -d - 再次执行测试命令。
- 编辑KiwiTCMS的
验证容器网络连通性
先进入容器内部测试SMTP服务器的连通性:sudo docker exec -it kiwi_web ping 你的SMTP服务器地址 sudo docker exec -it kiwi_web telnet 你的SMTP服务器地址 端口号如果ping或telnet失败,说明容器到SMTP服务器的网络不通,排查宿主机防火墙(UFW/iptables)是否允许容器出站连接,或者SMTP服务器是否限制了来源IP。
核对邮件配置参数
再次检查common.py里的配置项:- 确认
EMAIL_HOST是正确的SMTP服务器域名/IP,无拼写错误 EMAIL_PORT要和加密方式匹配:TLS用587,SSL用465,不要混用EMAIL_USE_TLS和EMAIL_USE_SSL只能二选一,不要同时设为True- 确认
EMAIL_HOST_USER和EMAIL_HOST_PASSWORD与Windows测试时的凭据完全一致
- 确认
尝试切换Docker网络模式
如果上述方法都无效,可将容器网络模式改为host,让容器直接使用宿主机的网络栈:
在docker-compose.yml的kiwi_web服务里添加:network_mode: host重启容器后再测试,注意这种模式下容器端口会直接占用宿主机端口,需避免端口冲突。
内容的提问来源于stack exchange,提问作者Mijje
相关产品推荐
相关产品推荐

