[Linux] 使用 Mailx 发送测试(邮件基于25、465端口配置,云服务器)

本文介绍了如何在CentOS8系统上使用Mailx配置SMTP服务进行邮件发送,包括通过25端口和465端口的设置。涉及到的配置包括SMTP服务器地址、认证信息、SSL证书等,并提供了遇到如SSL验证失败、认证未启用等问题的解决方法。
摘要由CSDN通过智能技术生成

本文目的: 使用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=plainset smtp-auth-password=
    且在 set smtp-auth-password=中需要填入密码或者授权码,但是一般企业级SMTP服务器一般是直接加入IP白名单,不需要密码/授权码授权,这样直接按照上述配置即可,需要将set smtp-auth=plainset 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:

  1. 如果出现:could not initiate SSL/TLS connection: error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed错误
    解决办法:需要在/etc/mail.rc配置文件中加入:set ssl-verify=ignore

  2. 如果出现:smtp-server: 503 5.5.1 Error: authentication not enabled
    解决办法:1. 检查用户名密码是否正确。2、如果是企业SMTP服务,没有用户名密码或无授权码,需要按照上述描述去掉/注释掉set smtp-auth=plainset smtp-auth-password=

  3. 如果你用的是云服务器,并且使用了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/ 转载请务必注明出处。


评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bluetata

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值