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高很多。