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邮件

本文链接: https://jianz.xyz/index.php/archives/153/

1 + 4 =
快来做第一个评论的人吧~