Linux服务器有在运维时有时候会有需要进行外部邮件的发送,比如监控服务器项目是否正常运行/CPU使用率过高等等,本次教程使用的是163邮箱进行发送,注意:阿里云出于安全考虑,默认封禁了TCP 25端口出方向的访问流量,所以用户无法使用25号端口邮件服务。

1、关闭其他邮件

systemctl stop sendmail
systemctl stop postfix

2、安装mailx

yum install mailx

3、开启smtp

4、配置/etc/mail.rc

vi /etc/mail.rc

set smtp="smtps://smtp.163.com:465"               # 这里填入smtp地址
set smtp-auth=login                             # 认证方式
set smtp-auth-user=xxxx@163.com         # 这里输入邮箱账号
set from=xxx@163.com                   # 设置发信人邮箱和昵称
set smtp-auth-password=xxx         # 这里填入密码
set ssl-verify=ignore                           # 忽略证书警告
set nss-config-dir=/root/.certs                   # 证书所在目录

5、生成数字证书

# 创建证书存放文件夹
mkdir -p /root/.certs/

# 赋予权限
chmod -R 777 /root/.certs

# 生成crt证书
echo -n | openssl s_client -connect smtp.163.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /root/.certs/163.crt

# 将证书添加到受信任列表
certutil -A -n "GeoTrust SSL CA" -t "C,," -d /root/.certs -i /root/.certs/163.crt
certutil -A -n "GeoTrust Global CA" -t "C,," -d /root/.certs -i /root/.certs/163.crt
certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d /root/.certs/./ -i /root/.certs/163.crt

# 出现以下信息为成功
Notice: Trust flag u is set automatically if the private key is present.

# 查看证书
[root@izx3v1789homjcjl1sgkvyz ~]# certutil -L -d /root/.certs
Certificate Nickname                                         Trust Attributes
                                                             SSL,S/MIME,JAR/XPI
GeoTrust SSL CA                                              P,P,P

6、发送邮件

# 普通邮件发送
echo '邮件内容' | mail -s '邮件标题' 收件人邮箱

# 带附件的邮件
mail -s '邮件标题' 收件人邮箱 < 邮件内容.txt

mail命令的选项非常丰富,具体可查看其文档。
传送