邮箱地址无效导致群发邮件失败

这个问题十分的讨厌啊,Bi大数据部会群发报表邮件,但是如果有某位员工离职了,邮件地址被清理掉不存在了,那么群发邮件的时候会导致群发失败。

网上搜索了一圈,阿里有篇文章是同样问题:

https://blog.csdn.net/javaee_sunny/article/details/114836546

解决方法是修改发送程序,剔除掉失效的邮件地址再发。

这个方法在我们这里是行不通的,因为发送程序没人维护了,无法修改。

那就只能曲线救国了:建立一个转发服务器,把群发邮件变成一封一份单独发,那么偶尔一份失败就失败了,不会导致整个群发的失败。

搭建一个Postfix relay转发服务器:

 1vi /etc/postfix/main.cf
 2
 3relayhost = [smtp.qiye.aliyun.com]:587
 4smtp_sasl_auth_enable = yes
 5smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
 6smtp_sasl_security_options = noanonymous
 7smtp_use_tls = yes
 8smtp_tls_CAfile = /etc/pki/tls/certs/ca-bundle.crt
 9smtp_sender_dependent_authentication = yes
10smtp_destination_recipient_limit = 1
11message_size_limit=102400000

解释:转发到阿里邮件服务器的标准配置,网络上已经有很多教程了。然后关键就一条smtp_destination_recipient_limit = 1,这个就会把群发的邮件拆成单独的一封一封发送,发不出去的会回到queue尝试不断发送,最后失败drop掉。

另外postfix缺省发送邮件的大小是10M,阿里邮局缺省是50M,我们需要修改一下,message_size_limit=102400000改成100M的限制。

最后生成一下邮件用户的hash库:

1vi /etc/postfix/sasl_passwd
2[smtp.qiye.aliyun.com]:587  report@ddky.com:xxxxxxxx
3
4postmap /etc/postfix/sasl_passwd

那么发邮件的时候指定这台服务器,用户名是 report@ddky.com , 密码是xxxxxxxx就可以了

补充,需要安装缺少的库,否则登录阿里邮局过不去,还需要打开服务器的允许网段列表,mynetwork

1yum install -y cyrus-sasl-plain

Voip的lsusb检测华为猫棒usb地址来回跳动
阿里云DMS管理数据库变更审批流
comments powered by Disqus