如何为Docker部署的WordPress配置MailDev邮件测试环境?
排查WordPress容器邮件无法送达MailDev的问题
我来帮你一步步拆解这个问题,毕竟容器环境下的邮件测试很容易踩网络或配置的坑😉
1. 先确认MailDev的可达性与运行状态
首先得确保WordPress容器能和MailDev容器正常通信:
- 检查MailDev是否在运行:执行
docker ps,确认MailDev容器处于Up状态,并且SMTP端口(默认1025)配置正常。 - 从WP容器内部测试连通性:进入WP容器
docker exec -it <你的WP容器名称> bash,然后用nc -zv <MailDev容器名> 1025(比如MailDev容器叫maildev,就输nc -zv maildev 1025)。如果提示Connection succeeded说明网络通;如果连不上,大概率是两个容器不在同一个Docker网络里,解决方法是把它们加入同一个自定义网络:
之后再测试连通性,应该就能连上了。# 创建自定义网络 docker network create mail-test-network # 把WP容器加入网络 docker network connect mail-test-network <你的WP容器名> # 把MailDev容器加入网络 docker network connect mail-test-network <你的MailDev容器名>
2. 检查WP Mail SMTP的核心配置(这是最容易错的点!)
你选了“其他SMTP”选项,这些配置项绝对不能错:
- SMTP主机:别填
localhost!WP容器的localhost是它自己,不是MailDev。要填MailDev的容器名称(比如你启动时用了--name maildev,就填maildev),或者MailDev容器的IP(用docker inspect maildev | grep IPAddress查看)。 - SMTP端口:必须填MailDev默认的
1025,别填25、465这些常用端口。 - 加密方式:选
无,因为MailDev默认不开启SMTP加密。 - SMTP认证:关掉这个选项!MailDev不需要用户名密码认证,开了反而会报错。
- 发件人邮箱:随便填一个(比如
wp-test@example.com)就行,MailDev会接收任何发件人的邮件。
3. 停用sendmail,避免冲突
你在WP容器里装了sendmail,但WP Mail SMTP配置SMTP后,应该绕过sendmail直接发送。sendmail可能会把邮件留在本地队列,或者干扰SMTP连接:
- 临时停用sendmail:在WP容器里执行
service sendmail stop,然后再发测试邮件试试。 - 彻底卸载(如果不需要的话):
apt-get remove -y sendmail sendmail-bin mailutils,彻底消除干扰。
4. 查看日志找线索
如果前面的步骤都没解决,就看日志定位问题:
- WP Mail SMTP日志:在WP后台的「WP Mail SMTP」→「日志」里开启日志,发测试邮件后查看有没有报错(比如“连接超时”“认证失败”)。
- MailDev日志:执行
docker logs <你的MailDev容器名>,看有没有收到WP容器的连接请求,或者有没有报错信息。 - WP容器邮件日志:如果sendmail还在运行,查看
/var/log/mail.log或/var/log/mail.err,有没有邮件发送失败的记录。
5. 用命令行直接测试,排除插件问题
在WP容器里用命令行发邮件,验证是否能到达MailDev,排除插件的问题:
- 先装
swaks(一个好用的SMTP测试工具):apt-get install -y swaks - 执行测试命令:
swaks --to test@example.com --from wp-test@example.com --server <MailDev容器名>:1025
如果这个命令发送后,MailDev里能收到邮件,那就是WP Mail SMTP的配置还有问题;如果还是收不到,那就是容器网络或MailDev本身的问题。
内容的提问来源于stack exchange,提问作者neuroine
相关产品推荐
相关产品推荐

