Linux配置mailx发送邮件
一、关闭其他的邮件工具
发送的邮件用到mailx就可以了,其他可以关闭。CentOS6.8默认安装的是postfix。
chkconfig postfix off #关闭开机启动
service postfix stop #关闭服务运行
chkconfig sendmail off
service sendmail stop
二、安装mailx
yum -y install mailx
三、配置mail.rc文件
首先要保证你的邮箱开启了SMTP服务
vim /etc/mail.rc
# Mailx邮箱配置
#设置邮件服务器
set smtp=smtp.qq.com
#设置发件人名称
set from=xxxxx@qq.com
#填写自己邮箱地址
set smtp-auth-user=xxxxx@qq.com
#输入邮箱授权码 非密码
set smtp-auth-password=xxxxxxxxxx
#smtp的认证方式,默认是login
set smtp-auth=login
四、使用命令发送邮件
1、直接发送文本消息
echo "邮件正文" | mail -s "邮件主题" xxx@163.com
2、以文件内容发送
cat file.txt | mail -s "邮件主题" xxx@163.com
或
mail -s "邮件主题" xxx@163.com < file.txt
3、发送带附件的邮件
echo "邮件正文" | mailx -s "邮件主题" -a file.txt xxx@163.com
注意
如果完成了上面的步骤并发送了测试邮件,出现以下报错:
could not connect: 网络不可达
"/root/dead.letter" 11/328
. . . message not sent.
多半原因是因为云服务器关闭了25端口,发送邮件连接不上服务器的缘故,而且官方不允许打开该端口。
解决办法:配置465端口证书发送邮件
1、请求数字证书
# 创建目录,用来存放证书
mkdir -p /root/.certs/
# 向邮件服务器请求证书
echo -n | openssl s_client -connect smtp.qq.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs/qq.crt
# 添加一个SSL证书到证书数据库中
certutil -A -n "GeoTrust SSL CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt
# 添加一个Global 证书到证书数据库中
certutil -A -n "GeoTrust Global CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt
cd /root/.certs/
certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ~/.certs/./ -i qq.crt
# 列出目录下证书
certutil -L -d /root/.certs
2、重新配置mailx邮件
# Mailx邮箱配置
#设置邮件服务器
set smtp=smtps://smtp.qq.com:465
#设置发件人名称
set from=xxxxx@qq.com
#填写自己邮箱地址
set smtp-auth-user=xxxxx@qq.com
#输入邮箱授权码 非密码
set smtp-auth-password=xxxxxxx
#smtp的认证方式,默认是login
set smtp-auth=login
#服务器25端口被屏蔽,配置证书
set ssl-verify=ignore
set nss-config-dir=/root/.certs
3、测试发送邮件
运行发送邮件命令,收到邮件即为成功!
参考
CentOS配置mailx通过465端口发送qq邮件