实验室服务器群发邮件问题解决

4月份mails的邮件系统升级后, 班级网页上利用perl写的CGI群发代码就工作不正常了,大部分信都发送不出去, 察看badmail得到一下出错信息:
出错信息如果是from是填mails的邮箱就会有
Final-Recipient: rfc822;XXXXX@ mails.tsinghua.edu.cn
Action: failed
Status: 5.5.0
Diagnostic-Code: smtp;553 From <XXXXXX@mails.tsinghua.edu.cn>, message blocked,
you are not authorized to send mail, authentication is required.
如果不是mails的邮箱如gmail会有:
Final-Recipient: rfc822;XXXX@mails.tsinghua.edu.cn
Action: failed
Status: 5.5.0
Diagnostic-Code: smtp;554 Connection refused(domain). MAIL FROM [ xxxxxxxx@gmail.
com] mismatches client IP [166.111.X.X].
还有提示发送过多的问题
Final-Recipient: rfc822;xxxxxxxx@mails.tsinghua.edu.cn
Action: failed
Status: 5.5.0
Diagnostic-Code: smtp;553 Too much sessions in a connection.
初步推断是两个问题造成的, 一是mails的服务器增加了垃圾邮件检测机制,会把from域的邮件地址的后部分和发送服务器的IP进行匹配,如果不匹配认为是垃圾邮件.二是一次connection发送数量有上限.
针对第一个问题,采取了一种折中的措施,把from域填入一个假的email地址,后面部分和机器的IP能够匹配,但保留replyto还是实际的email地址以便可以回复,很顺利,第一个问题解决;  第二个问题绕了一些弯路,首先尝试改动了CGI的发送代码,把群发列表分为几次分开发送,结果总是有近三十封左右的badmail,这时候想到了IIS的smtp服务, 发现其属性中有一项一次连接发送的邮件数,默认值是2000,尝试改为150,问题得到解决.应该是IIS的smtp服务会把短时间内的发往同一服务器的邮件整理一次连结发送的,这样做是有道理的.现在只有4个badmail了,其中有3个的确是不可用的email,还有一个是发给假邮件地址造成的,找到对应的代码注释掉发给from的邮件,同时从群发列表中删去3个不可用的email.问题解决!

Leave a Reply