腾讯云服务器优惠活动华纳云香港服务器

Linux下利用mailx结合QQ邮箱发送系统邮件提醒等

使用阿里云 ECS 服务器的站长们应该都知道阿里云 ECS 为了防止其服务器被当做垃圾邮件发送服务器禁止了邮件端口 25 的使用,这就造成系统级的提醒邮件无法发送,类似 Fail2ban、DDoS Deflate 的暴力破解、DDOS 攻击提醒邮件有时候还是很重要的,错过了会给我们的服务器运维工作带来被动的,所以明月一直在谋求 Linux 系统邮件发送的问题解决。

Linux下利用mailx结合QQ邮箱发送系统邮件提醒等-第1张-boke112百科(boke112.com)

还好在【笛声】博客里发现了【mailx 配置 TSL 发送邮件】这篇文章就是让 Linux 系统的 mailx 结合 QQ 邮箱发送邮件的,照着此文的指导,终于可以收到邮件了,哈哈!

但是有个小瑕疵就是每次发送完邮件后,在命令行里会提示“Error in certificate: Peer’s certificate issuer is not recognized.”这样的证书没有获得认可的警告提示,虽然并不影响邮件的发送,但总是有“不科学”的感觉呀?还好有万能的度娘和谷姐,一番搜寻后终于完美解决了,下面就将所有的步骤一一列出来分享给大家,也算是自己折腾的一次学习记录了:

安装和配置系统的 mailx

这里以服务器首选的 Linux 发行版 CentOS 为例(好像默认都已经集成了 mailx 的,至于说 sendmail,明月感觉效能差,就不做参考了)。

运行命令:

  1. yum -y install mailx

即可自动安装 mialx 了。安装完成后,编辑 /etc/mail.rc 文件配置 mailx 使用 QQ 邮箱作为发送邮件邮箱。

在配置文件最后添加如下 QQ 邮箱配置即可(记得保存更新哦):

  1. set [email protected]
  2. set smtp=smtps://smtp.qq.com:465
  3. set [email protected]
  4. set smtp-auth-password=你的 QQ 邮箱授权码
  5. set smtp-auth=login
  6. #set smtp-use-starttls 这里是不需要配置的,很多地方没说明,配置了反而会验证失败,所以我注释掉;
  7. set ssl-verify=ignore
  8. set nss-config-dir=/root/.certs

记得要用到QQ邮箱的授权码哦,可以提前复制填到标注的对应位置即可!

因为阿里云 ECS 封禁了 25 端口,所以我们只能使用 TLS 方式(TSL 也就是使用 SSL 加密的方式,使用 465 或者其他端口来发送邮件)绕过 25 端口需求来发送邮件,所以必须先获得邮箱的 SSL 证书并存放到本地,最后一行的 nss-config-dir 就是制定的存放 QQ 邮箱 SSL 证书的位置。

因为需要 QQ 邮箱的 SSL 证书,所以我们还需要手动的获取 QQ 邮箱的证书保存到本地指定的目录里以备调用和验证,具体命令如下:

  1. mkdir -p /root/.certs/
  2. echo -n | openssl s_client -connect smtp.qq.com:465 | sed -ne ‘/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p’ > ~/.certs/qq.crt
  3. certutil -A -n “GeoTrust SSL CA” -t “C,,” -d ~/.certs -i ~/.certs/qq.crt
  4. certutil -A -n “GeoTrust Global CA” -t “C,,” -d ~/.certs -i ~/.certs/qq.crt
  5. certutil -L -d /root/.certs

为了防止出现前文所说的发送邮件警告提示,还需要进入邮箱 SSL 证书存放目录 /root/.certs 里执行如下命令:

  1. certutil -A -n “GeoTrust SSL CA – G3” -t “Pu,Pu,Pu” -d ./ -i qq.crt

返回如下提示即可:

  1. **Notice: Trust flag u is set automatically if the private key is present.**

这是为了信任证书的标记操作。

至此,已经完成了 mailx 结合 QQ 邮箱发送系统邮件的部署了,通过命令行发送测试邮件试试吧:

  1. mailx -s “邮箱测试” [email protected] < message_file.txt

命令行解读:发送主题为“邮箱测试”,内容为当前目录下 message_fiel.txt 文件内容到 [email protected] 邮箱。

测试邮件一旦成功,收件箱会马上收到邮件,如果没有收到,则等一会可以看到 shell 界面的错误提示;反正明月照着上述设置后是成功收到邮件了,祝大家一次配置成功!

赞 (0) 打赏
版权声明:本文为投稿文章,感谢 明月登楼 的投稿,版权归原作者所有!发布此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请联系我们,确认后马上更正或删除,谢谢!
wu