mailx基于465端口发送邮件

需求

阿里云环境,写了一个日志监控脚本,本意通过微信进行推送告警,结果找了很多开源项目,微信都不允许再使用网页的方式登录微信,随即作罢。转而先使用邮件的方式推送告警信息。

实现过程

注意:

  • 阿里云默认禁用25邮件端口,需要启动465端口加密进行邮件发送;
  • 确保邮箱开启SMTP服务,POP3,并申请了密码;
  • 确保已经安装mailx,sendmaill,dos2unix

请求数字证书

mkdir -pv /root/.certs/	# 创建目录用来存放数字证书
echo -n | openssl s_client -connect smtp.126.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs/126.crt	# 向126请求数字证书
certutil -A -n "GeoTrust SSL CA" -t "C,," -d ~/.certs -i ~/.certs/126.crt	# 添加一个证书到证书数据库中
certutil -A -n "GeoTrust Global CA" -t "C,," -d ~/.certs -i ~/.certs/126.crt	# 添加一个证书到证书数据库中
certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ./ -i ~/.certs/126.crt	# 添加一个证书到证书数据库中
certutil -L -d /root/.certs	# 列出目录下证书

开启SMTP/IMAP 授权

记录自己设置的授权码

配置mail.rc

[root@localhost ~]# vim /etc/mail.rc
...
set from=xxx@126.com	# 发送邮件的邮箱
set smtp=smtps://smtp.126.com:465	# 发送邮件邮箱的SMTP服务器
set smtp-auth-user=xxx@126.com	# 邮箱认证的用户名
set smtp-auth-password=123456	# 邮箱认证的用户名
set smtp-auth=login	# smtp验证方式
set ssl-verify=ignore # 忽视 ssl 验证
set nss-config-dir=/root/.certs	# # 证书目录
...

发送邮件验证

### 虽然这里报错了,但是邮件已收到
### 送完邮件还有报错:证书不被信任,且命令行就此卡住,需要按键才能出现命令提示符
mail -s 'passwd' xxxxx@qq.com < /etc/passwd

### 解决办法
cd ~/.certs/
certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ./ -i 126.crt 

【完】

posted @   hukey  阅读(224)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示