Jinnrry / PMail

Private EMail Server
GNU General Public License v2.0
1.49k stars 142 forks source link

发送139邮箱报错,控制台没有输出,找不到日志文件在哪里 #125

Closed Mcdull0921 closed 5 months ago

Mcdull0921 commented 5 months ago

请说明问题 / Describe the bug 发送139邮箱报错,控制台没有输出详细内容,找不到日志文件在哪里,试过163,126,qq邮箱都是成功的

如何复现 / To Reproduce 收件人选择任何一个139邮箱,比如12312341234@139.com

image

Jinnrry commented 5 months ago

排查了一下,目前定位到是与139服务端执行STARTLS后,后续通信就会中断,原因未知。

我改了下策略,当使用TLS连接发送失败时降级为普通连接,我拿 12312341234@139.com 这个地址测试,对方服务器会返回用户不存在的提示,邮箱地址如果存在的话,降级后应该是能够发送成功的

https://github.com/Jinnrry/PMail/releases/tag/v2.4.8

针对这个问题新发了一个版本,可以试试这个版本

Jinnrry commented 5 months ago

我本人对TLS相关的问题也不是太了解,特别是STARTLS、SMTPS这些协议中使用的TLS就更加不了解了。目前PMail里面的TLS相关代码基本上都copy自golang官方的smtp库,但是这个库非常简陋,官方几乎不维护相关代码,存在非常多的问题。

如果有对这方面了解的朋友欢迎帮忙review https://github.com/Jinnrry/PMail/blob/master/server/utils/smtp/smtp.go 这个文件。这个文件copy至golang的net.smtp包,我在原代码基础上修复了部分tls错误以及支持了smtps协议

Mcdull0921 commented 5 months ago

试过了,这个版本可以,感谢大佬

Mcdull0921 commented 5 months ago

还想补充一个问题,我本地运行,打开浏览器完成配置后,再次访问页面就会得到403,无法获得首页使用release版本一样的效果 image

image

是哪个地方配置有问题吗?

Jinnrry commented 5 months ago

1、你服务器上面有nginx之类的网关吗?感觉是流量被哪里拦截了 2、确定流量打到PMail了?PMail里面应该没有地方用http 403 3、你证书不对,如果证书是PMail自动生成的话,是不是有中间人拦截请求到其他地方去了? 4、cn域名,你域名备案了吗?是不是未备案拦截?

Mcdull0921 commented 5 months ago

应该是证书问题,不过没关系了,我这边只要发邮件就行,不需要web页面,感谢答疑

chaohua27 commented 5 months ago

我本人对TLS相关的问题也不是太了解,特别是STARTLS、SMTPS这些协议中使用的TLS就更加不了解了。目前PMail里面的TLS相关代码基本上都copy自golang官方的smtp库,但是这个库非常简陋,官方几乎不维护相关代码,存在非常多的问题。

如果有对这方面了解的朋友欢迎帮忙review https://github.com/Jinnrry/PMail/blob/master/server/utils/smtp/smtp.go 这个文件。这个文件copy至golang的net.smtp包,我在原代码基础上修复了部分tls错误以及支持了smtps协议

可以去看看hmailserver(https://github.com/hmailserver/hmailserver/)的代码,或许有解决方案