centos使用mailx告警邮件配置

今天为大家介绍一个可以直接在 Linux 上使用 SMTP 发送邮件的程序:Mailx,这个程序可以帮助我们让服务器直接支持邮件发送,不用再在每个站点上都设置了。

centos配置自带邮件服务器mailx发件配置

安装mailx程序

1
yum -y install mailx

🌟 安装之前,建议移除不再需要且可能会引起冲突的 postfix 或 sendmail 程序。

修改发件人设置

1
2
3
4
5
6
7
8
9
10
$ vim + /etc/mail.rc 
set nss-config-dir=/root/.certs
set smtp="smtps://smtp.163.com:465"

set from="[email protected]"
set smtp-auth=login
set smtp-auth-user="[email protected]"
# 不是密码,不是密码!!!获取网易163设置的客户端授权密码。
set smtp-auth-password="xxxxxx"
set ssl-verify=ignore

💡 一般邮件服务器会提供 smtp、smtps 和 smtp starttls 服务来发送邮件。smtp 最简单的,也最不安全的,不建议使用,最好使用 smtps 或者 smtp starttls 来发送邮件。

测试发送

可以发送出邮件,但是会报错,如下面这种情况。需要生成证书来解决此问题。

1
2
$ echo "TEST" | mail -s "Title" "[email protected]"
$ Error in certificate: Peer's certificate issuer is not recognized.

生成证书

在本地新建目录生成证书

1
2
3
4
5
6
7
8
$ mkdir /root/.certs/
$ echo -n | openssl s_client -connect smtp.163.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs/163.crt
$ certutil -A -n "GeoTrust SSL CA" -t "C,," -d ~/.certs -i ~/.certs/163.crt
$ certutil -A -n "GeoTrust Global CA" -t "C,," -d ~/.certs -i ~/.certs/163.crt
$ certutil -L -d /root/.certs
# 信任证书
$ cd .certs
$ certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ./ -i 163.crt

💡 参考上面的设置(如果要用qq邮箱,可以把所有的生成证书的163改为qq),同样可以使用 126,163 等邮箱在服务器上通过 SMTP 发送邮件。设置成功以后,服务器上的所有站点,或者其他程序、其他语言开发的站点,都可以直接发送邮件了,是不是很方便?

再次修改mail.rc

1
2
$ vim /etc/mail.rc
$ set nss-config-dir=/root/.certs/

测试发送

1
2
3
# mail -s发送邮件 -v可以显示发件的详细信息
$ echo "邮件正文" | mail -s "标题" "[email protected]"
$ mail -s "xxxx" [email protected] < /root/cpu.sh

参考链接:

使用 Mailx 通过 SMTP 在 Centos 上发送邮件,解决 WordPress 发送邮件问题

mialx配置qq邮箱发送邮件

如何开启客户端授权码?