检测到您启用了Adblock等屏蔽广告扩展,导致正常的内容图片无法显示,为了不影响阅读体验,建议您将www.xiaoz.me加入白名单。

Linux安装mailx配置SMTP发送邮件

mail命令是Linux环境下电子邮件发送和接收工具,默认情况下mail会调用sendmail发信,但sendmail很容易被视作垃圾邮件。推荐使用STMP服务替代sendmail发信,这样更加稳定。

安装mail

默认情况下可能并未内置mail命令,直接输入下面的命令安装:


#CentOS
yum install -y mailx
#Debian or Ubuntu(未测试)
apt-get -y install mailx

配置STMP

不修改任何配置的情况下mail命令会调用系统内置sendmail发信,以下使用SMTP服务替代sendmail


#修改配置文件
vi /etc/mail.rc
#在末尾追加如下内容并保存
set from=service@xiaoz.me
set smtp=smtp.exmail.qq.com
set smtp-auth-user=service@xiaoz.me
set smtp-auth-password=35******3N
set smtp-auth=login
  • set from:设置发件人
  • set smtp:设置外部STMP服务器
  • set smtp-auth-user:设置STMP用户名(一般为完整邮箱地址)
  • set smtp-auth-password:设置SMTP密码

发信测试


echo "this is my test mail" | mail -s 'mail test' xxx@qq.com
#或者
mail -s 'mail test' xxx@qq.com < test.txt

使用SSL/TLS

上述配置邮件内容是明文方式,存在安全隐患,再加上Gmail/Zoho等邮箱强制要求使用SSL/TLS加密,为了提高安全性推荐发送邮件的时候使用SSL或TLS,请继续往下看。

先找到本地nssdb证书路径,输入下面的命令:


[root@ultravps ~]# find / -name "cert*.db"
/etc/pki/nssdb/cert8.db
/etc/pki/nssdb/cert9.db

修改mail配置文件,并使用SSL加密:


#修改配置文件
vi /etc/mail.rc
#末尾追加如下内容
set from=service@xiaoz.org
set smtp=smtps://smtp.zoho.com:465
set nss-config-dir=/etc/pki/nssdb/
set ssl-verify=ignore
set smtp-auth-user=service@xiaoz.org
set smtp-auth-password=htH*****T8
set smtp-auth=login
  • set nss-config-dir:指定本地证书路径
  • set smtp=smtps://smtp.zoho.com:465 设置SMTP地址及端口,注意smtps说明启用了SSL加密
  • set ssl-verify:忽略证书错误

如果您想启用TLS加密,追加一行内容,并设置正确的TLS端口,如下:


#设置正确的地址及端口,注意这次是smtp不是smtps
set smtp=smtp://smtp.zoho.com:587
#追加一行,启用TLS
set smtp-use-starttls=yes

总结

mail命令配置外部SMTP邮件服务,可以帮助shell自动化的时候实现任务通知,到达率也比自带sendmail高很多。

此文部分内容参考与:
centos 7 配置mailx发送zoho mail邮件
Mailx and Gmail nss config dir

3 Comments

发表评论

电子邮件地址不会被公开。 必填项已用*标注