使用docker-mailserver发送邮件失败,报错:Error: queue file write error
嗨,我来帮你分析这个问题!先理清楚你的场景:你用docker-mailserver的Compose部署方案搭建邮件服务,通过SMTP 587端口+STARTSSL发送邮件时,客户端收到了Error: queue file write error的报错,但从你提供的服务器日志来看,前面的连接建立、TLS握手都正常,SASL认证的流程也已经启动了(日志虽然截断了,但能看出来没在这一步卡壳)。
针对这个报错,我整理了几个常见的排查方向,你可以逐一试试:
检查Postfix队列目录的权限:Postfix需要对队列目录有读写权限才能创建队列文件。你可以进入容器查看
/var/spool/postfix的权限配置,确认所属用户是postfix:docker exec -it <你的邮件容器名称> ls -ld /var/spool/postfix如果权限不对,可能是挂载宿主机目录时权限没同步,你可以尝试重启容器,或者手动在容器内调整权限(不过容器重启后可能会重置,最好从Compose配置的卷权限入手)。
排查磁盘空间是否充足:如果宿主机或者容器挂载的磁盘已满,Postfix就无法写入队列文件。你可以分别检查宿主机和容器内的磁盘使用情况:
- 宿主机执行:
df -h - 容器内执行:
docker exec -it <你的邮件容器名称> df -h
- 宿主机执行:
检查安全模块的限制:如果你的宿主机开启了SELinux或者AppArmor,可能会阻止Postfix写入队列目录。你可以临时关闭这些模块测试(注意这只是临时排查,长期运行要配置正确的规则),或者查看相关安全日志是否有拒绝记录。
验证Postfix的队列目录配置:进入容器查看
/etc/postfix/main.cf里的queue_directory参数,确认路径指向的是存在且有权限的目录,避免配置错误导致无法写入。
另外,你提供的服务器日志片段我整理在这里,方便后续排查参考:
mailserver_arti | 2024-07-25T10:16:10.192362+00:00 mail postfix/submission/smtpd[1041]: connect from unknown[172.24.0.1] mailserver_arti | 2024-07-25T10:16:10.233814+00:00 mail postfix/submission/smtpd[1041]: Anonymous TLS connection established from unknown[172.24.0.1]: TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256 mailserver_arti | 2024-07-25T10:16:10.267889+00:00 mail postfix/submission/smtpd[1041]: 3FF4539F00000003F745: client=unknown[172.24.0.1], sasl_me...
备注:内容来源于stack exchange,提问作者Raul Lapeira Herrero

