Linux通过配置第三方smtp来发送邮件

近期折腾Centos7,搞了个脚本,自动备份mysql数据库,并发送邮件到我的邮箱,网上很多教程,装sendmail、mutt、msmtp之类的,其实Centos7可以简单的配置一下smtp,就可以使用第三方邮箱发送邮件。

  1. 编辑/etc/mail.rc文件:
1
vim /etc/mail.rc
  1. 添加以下第三方邮箱的smtp配置:
1
2
3
4
5
6
7
8
set from=your@mail.com #发送邮箱
set smtp=“smtps://smtp.qq.com:465 #465端口为 smtps://, 587端口为 smtp://
set smtp-auth-user=your@mail.com #邮箱
set smtp-auth-password=authpassword #邮箱密码授权
set smtp-auth=login

#set nss-config-dir=/etc/pki/nssdb #设置证书路径
set nss-config-dir=/etc/certs

获取邮件服务器证书方法:

465端口:

1
  echo -n "" | openssl s_client -connect smtp.qq.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /etc/certs/qq.crt

587端口:

1
 echo -n | openssl s_client -starttls smtp -connect smtp.qq.com:587 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /etc/certs/qq.crt

查看证书签名信息:

1
certutil -L -d /etc/mail/certs
  1. 然后可以试试可否发送邮件了,可以使用以下命令:
1
echo "hello" | mail -s "title"  tosomeone@mail.com

若想发送附件,命令如下:

1
echo "hello" | mail -s "title" -a path/to/file.zip tosomeone@mail.com

注意:如果编辑/etc/mail.rc文件时该文件不存在,或是执行发送邮件命令时提示:

1
-bash: mail: command not found

这是没有安装mailx引起,请安装即可:

1
yum install mailx