这个PR修复了两个Bug,一是部分SMTP服务器会发送多行超长的欢迎信息,现在的代码不能处理这种情况,会将超长信息的后半部分视作AUTH的回复导致误认为AUTH失败,这里加了个循环来“吃掉”超长信息。二是根据RFC2821标准,SMTP必须使用CRLF来分行,但是现在的代码允许用户使用其他换行方法。这里我们让使用其他换行方法的配置仅针对原生sendmail有效,SMTP全部强制使用CRLF。

同时我们也做了其他的一些修改来提高邮件送达率,避免被打低分判断成SPAM。首先是当遇到非预期回复时发送一个QUIT主动断开连接,以避免占用服务器连接数导致被服务器拒绝。同时按约定俗称的规范将HOST作为SMTP HELO的Hostname,并且将Sender设置为Discuz!。我们也规范了message-id的域名,使用邮箱地址的域名而不是HOST。