mail命令是Linux环境下电子邮件发送和接收工具,默认情况下mail会调用sendmail发信,但sendmail很容易被视作垃圾邮件。推荐使用STMP服务替代sendmail发信,这样更加稳定。
安装mail
默认情况下可能并未内置mail命令,直接输入下面的命令安装:
代码语言:javascript复制#CentOS
yum install -y mailx
#Debian or Ubuntu(未测试)
apt-get -y install mailx
配置STMP
不修改任何配置的情况下mail命令会调用系统内置sendmail发信,以下使用SMTP服务替代sendmail
代码语言:javascript复制#修改配置文件
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密码
发信测试
代码语言:javascript复制echo "this is my test mail" | mail -s 'mail test' xxx@qq.com
#或者
mail -s 'mail test' xxx@qq.com
使用SSL/TLS
上述配置邮件内容是明文方式,存在安全隐患,再加上Gmail/Zoho等邮箱强制要求使用SSL/TLS加密,为了提高安全性推荐发送邮件的时候使用SSL或TLS,请继续往下看。
先找到本地nssdb证书路径,输入下面的命令:
代码语言:javascript复制[root@ultravps ~]# find / -name "cert*.db"
/etc/pki/nssdb/cert8.db
/etc/pki/nssdb/cert9.db
修改mail配置文件,并使用SSL加密:
代码语言:javascript复制#修改配置文件
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端口,如下:
代码语言:javascript复制#设置正确的地址及端口,注意这次是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