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
【完】
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了