本文目的: 使用Mailx
在一台Linux服务器上测试STMP
服务、或者在机器上有定时发送邮件的需求
系统相关:CentOS 8.X
,基于端口:25
操作步骤:
1、先安装Mailx
服务
sudo yum install mailx -y
2、配置/etc/mail.rc
文件
通过修改配置文件/etc/mail.rc
可以使用外部SMTP服务器,从而实现在Linux端发邮件功能。
使用sudo vim /etc/mail.rc
进入编辑模式,在配置文件顶部插入邮件配置信息:
# SMTP Config
set nss-config-dir=/etc/pki/nssdb/
set smtp-use-starttls
set smtp_sasl_auth_enable=yes
set ssl-verify=ignore
set bsdcompat
set sendcharsets=iso-8859-1,utf-8
#set smtp-auth=plain
set from=sekito@bluetata.com
set smtp=smtp://172.0.0.1
set smtp-auth-user=bluetata@server.com
#set smtp-auth-password=P@ssord123
解释说明:
- 如果是使用的163网易、qq邮箱等,需要打开上述配置文件中的注释部分,既:
set smtp-auth=plain
和set smtp-auth-password=
且在set smtp-auth-password=
中需要填入密码
或者授权码
,但是一般企业级SMTP服务器一般是直接加入IP白名单,不需要密码/授权码授权,这样直接按照上述配置即可,需要将set smtp-auth=plain
和set smtp-auth-password=
注释掉,这样就不需要输入密码了。
3、测试邮件发送
直接执行如下管道命令即可,之后查收是否接收到测试邮件。
sudo echo "这是一封SMTP测试邮件,请无视!" | mailx -s "TESTING SMTP SERVER" bluetata@csdn.net
mailx测试时参数说明
可以使用mailx --help
来查看mailx的相关参数
[root@bluetatasub bin]$ mailx --help
mailx: illegal option -- -
Usage: mailx -eiIUdEFntBDNHRVv~ -T FILE -u USER -h hops -r address -s SUBJECT -a FILE -q FILE -f FILE -A ACCOUNT -b USERS -c USERS -S OPTION users
-s
:主题
-c
:抄送(或主送),多人用,隔开(博主测试使用空格分割也可以)
-b
:密送
-a
:附件
多人发送邮件:
sudo echo "这是一封SMTP测试邮件,请无视!" | mailx -s "TESTING SMTP SERVER" sekito1991@bluetata.com sekito1992@bluetata.com
基于端口465
进行配置
如果你使用的是某些国内的云ECS服务器,比如阿里云,腾讯云等,这些厂商默认把25端口封掉,所以此方法使用如下配置
1、创建SSL
证书
mkdir -p /root/.certs/
echo -n | openssl s_client -connect smtp.163.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs/qq.crt # 如果是126或者qq邮箱,把smtp.163.com:465中的163改掉即可
certutil -A -n "GeoTrust Global CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt
certutil -L -d /root/.certs
# 信任证书
cd /root/.certs
certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ./ -i qq.crt
2、证书配置好后,更改/etc/mail.rc
配置文件
set from=bluetata@163.com
set smtp=smtp.163.com
set smtp-auth-user=bluetata@163.com
set smtp-auth-password=你自己163客户端授权密码,不是你邮箱登陆密码
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/root/.certs
3、登陆到云服务器中,发送测试邮件
echo "这是一封SMTP测试邮件,请无视!" | mailx -s "163 mail 测试" sekito@bluetata.com
↗ ☆★ ↙ 1024 ↗☆★ ↙ 1024 ↗☆★ ↙ 1024 ↗ ☆ ** 这是一条分割线 ** ★ ↙ 1024 ↗ ☆★ ↙ 1024 ↗☆★ ↙ 1024 ↗☆★ ↙
Trouble shooting:
-
如果出现:
could not initiate SSL/TLS connection: error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed
错误
解决办法:需要在/etc/mail.rc
配置文件中加入:set ssl-verify=ignore
-
如果出现:
smtp-server: 503 5.5.1 Error: authentication not enabled
解决办法:1. 检查用户名密码是否正确。2、如果是企业SMTP服务,没有用户名密码或无授权码,需要按照上述描述去掉/注释掉set smtp-auth=plain
和set smtp-auth-password=
-
如果你用的是云服务器,并且使用了mailx作为
zabbix
告警媒介,如果zabbix
不能通过mailx正常告警,但你又坚信自己zabbix配置没问题,那接受不到邮件应该是mailx的问题,修改mailx的配置如下:
配置文件中的
#set nss-config-dir=/root/.certs #注释掉改行,改成下面一行
#set nss-config-dir=/etc/pki/nssdb
#最终配置如下:
set from=bluetata@163.com
set smtp=smtp.163.com
set smtp-auth-user=bluetata@163.com
set smtp-auth-password=你自己163客户端授权密码,不是你邮箱登陆密码
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb
注:本文原创由
bluetata
发布于: https://bluetata.blog.csdn.net/ 转载请务必注明出处。