centos 7 邮件发送
背景:最近服务器老是磁盘报警,网上搜了一下centos7发送邮件的技巧,在此总结一下自己猜的坑。
安装参考:https://blog.51cto.com/13043516/2139030
实验环境
centos7
一、安装(共两步)
步骤一:安装sendmail
yum -y install sendmail
步骤二:安装mailx
yum -y install mailx
二、测试(两种方式)
方式一:通过文件内容发送
1)创建报警文件 vi test.txt
2)发送测试邮件 mail -s '主题' 邮箱 < test.txt
注:文件需要提前创建,内容就是报警提示,必须是文件的绝对路径!
3)查看邮箱是否收到测试邮件
方式二:通过管道符直接发送
1)echo '报警提示' | mail -s '主题' 邮箱
2)查看邮箱是否收到测试邮件
三、设置发件人信息
配置sendmail配置文件 vi /etc/mail.rc
set from=邮箱
set smtp=指定邮箱使用的协议
set smtp-auth-user=用户名
set smtp-auth-password=密码
set smtp-auth=login
注:默认在centos7上/etc/mail.rc下没有这些,那可能有童鞋会问,那你写这个干嘛用?问的好,其实呢!我们不写就可以直接使用,但是对于一些比较特殊的邮箱使用的协议不一样,而我们这默认用的是SMTP协议;例如QQ邮箱他默认协议不一样,所以会直接丢到垃圾桶不会给我们提示信息,而我们做这一步的主要作用是,指定一下邮箱具体使用,如:邮箱账户、邮箱使用协议、账户名和密码等等。这样呢,当邮箱收到邮件后会提示你有未查看的邮件,不会像之前一样不提示直接丢到垃圾桶,总之一句话,要想用起来减少问题更好用,尽量添加以上这些指定信息!
四、查看队列
使用命令查看队列 mailq
注:从上边的队列信息上可以看出暂时没有邮件发送任务!
五、查看日志
查看sendmail日志信息
tail -f /var/log/maillog
六:下面说说我踩过的坑:
按照以上步骤在实际操作中,到了第三步碰到了问题:
问题1:邮箱不可用 550 User has no permission
解决方法:见下图,登陆设置的邮箱,在‘设置’-‘客户端授权密码’-开启,然后使用设置授权码替代邮箱密码,即可解决该问题。
问题2:Error in certificate: Peer's certificate issuer is not recognized
解决方法:运行以下命令生成一个证书即可。
mkdir -p /root/.certs/
echo -n | openssl s_client -connect smtp.qq.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs/qq.crt
certutil -A -n "GeoTrust SSL CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt
certutil -A -n "GeoTrust Global CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt
certutil -L -d /root/.certs
生成完成之后,修改 mail.rc 邮件配置,修改 nss-config-dir 为上面命令生成的 /root/.certs,保存即可。
但是,即使有了证书依然出现“Error in certificate: Peer's certificate issuer is not recognized.”提示。证书并没有得到认可,需要再运行一下如下命令:
certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ./ -i qq.crt
说明:先找到证书位置,在运行"certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ./ -i qq.crt " 。
至此,在测试发送邮件,成功发送。