目录
- 需求
- 环境
- 总体步骤梳理
- 详细步骤
- 1. 安装`mailx`软件包(centos默认安装,openEuler不默认安装)
- 2. 检查是否能ping得到smtp服务器
- 3. 在qq邮箱开启smtp设置
- 4. 修改`/etc/mail.rc`文件
- 5. 测试
- 可能遇到的问题
需求
希望检查每日的备份和系统运行记录,通过邮件发送到自己的邮箱
环境
Host:Ctyun云主机
OS:OpenEuler 22.03 SP2
#Services
mail: mailx
SMTP: smtp.qq.com:465
总体步骤梳理
- 安装
mailx
服务 - 检查服务连通性(以qq邮箱做演示)
- 在qq邮箱进行设置(开启smtp功能)
- 修改
/etc/mail.rc
文件,以支持发送邮件功能 - 测试
详细步骤
1. 安装mailx
软件包(centos默认安装,openEuler不默认安装)
# 检查是否有这个包
rpm -qa|grep mailx
# 没有就安装
yum install -y mailx
2. 检查是否能ping得到smtp服务器
[root@ecm-98ce ~]# nslookup smtp.qq.com
Server: 114.114.114.114
Address: 114.114.114.114#53
Non-authoritative answer:
Name: smtp.qq.com
Address: 183.47.101.192
Name: smtp.qq.com
Address: 240e:ff:f100:1009::120
3. 在qq邮箱开启smtp设置
点击账号与安全
点击安全设置
,在POP3/SMTP这点击开启服务
进行验证后,会提供一个授权码
,这个授权码非常重要且只会出现一次,请提前复制出来,待会要用。(若没有保存,可以重新生成)
在配置SMTP/IMAP方法
中,可以查看到具体的一些内容
4. 修改/etc/mail.rc
文件
#vim进入该文件,在文件底部添加以下内容
vim /etc/mail.rc
#加密发送邮件,使用SSL,端口号465或587
set from=xxxx@qq.com # 对方收到邮件时显示的发件人
set smtp=smtps://smtp.qq.com:465 #不需要改变,qq邮箱的第三方发送邮件的地址,这里使用465端口
set smtp-auth-user=xxxx@qq.com # 邮箱账号
set smtp-auth-password=yyyyyyyyyyy # 邮箱的授权码,这个不是邮箱的密码,授权码是之前步骤3中提示需要保存的
#配置加密内容,一般默认即可
set smtp-auth=login # smtp的认证方式,默认就是login,也可以改成CRAM-MD5或PLAIN方式
set ssl-verify=ignore # 忽略验证
set nss-config-dir=/etc/pki/nssdb # 证书文件目录
5. 测试
测试方式:
mail -s “标题” 邮件地址 < File # 先读取File中的内容当作邮箱正文发送
# mail常用参数:
-s:指定邮件标题
-c:可以指定抄送人
-a:后面跟文件作为附件发送
-v:可以显示详细的参数
发送一个带附件的邮件尝试一下:
mail -s 'testtest' -a /tmp/sys_info_check.info 147xxxxxxx@qq.com < /tmp/sys_info_check.info
可能遇到的问题
- 如果遇到
Error in certificate: Peer’s certificate issuer is not recognized.
。这意味着可能是没配置证书
echo -n | openssl s_client -connect smtp.qq.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ./test.crt
certutil -A -n "GeoTrust SSL CA" -t "C,," -d ../certs -i ./test.crt
certutil -A -n "GeoTrust Global CA" -t "C,," -d ../certs -i ./test.crt
# 修改配置文件
- 公有云服务器是否需要放行端口?
- 不需要。邮件转发服务是qq邮箱提供的smtp,端口为465。
- 如果想自建smtp服务的话,就需要放行smtp的465或587端口。
- smtp的25端口大部分公有云厂商均禁用,因为是不加密的。