Office365 SMTP发送邮件

页面海报

1.前言

  Mailx是一个智能邮件处理系统,提供POSIX mailx命令功能,提供MIME、IMAP、POP3、SMTP和S/MIME扩展,通过调用sendmail来发送邮件。

2.安装mailx

yum install mailx

3.使用SMTP发送邮件

使用Office365 SMTP发送邮件,当使用外部SMTP服务器时,需用-S设定SMTP参数:

echo "Hello COCO" | mail -r "发件office365邮箱" -s "Hello COCO" -S smtp="smtp.office365.com:587" -S smtp-use-starttls -S smtp-auth=login -S smtp-auth-user="发件office365邮箱" -S smtp-auth-password="发件office365邮箱密码" -S ssl-verify=ignore -S nss-config-dir=~/.certs 收件人邮箱

4.创建证书和密钥数据库

mkdir ~/.certs
certutil -N -d ~/.certs

5.获取office 365证书

echo -n | openssl s_client -starttls smtp -showcerts -crlf -connect smtp.office365.com:587 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs/office365.crt

运行以上命令会得到两个证书,修改一下只保留第二个CA证书,然后将CA证书导入:

certutil -A -n "DigiCert Global Root CA" -t "C,P,C" -d ~/.certs -i ~/.certs/office365.crt

6.检查证书

certutil -L -d ~/.certs

7.发送邮件

再次执行如下命令将完全正常的发送邮件:

echo "Hello COCO" | mail -r "发件office365邮箱" -s "Hello COCO" -S smtp="smtp.office365.com:587" -S smtp-use-starttls -S smtp-auth=login -S smtp-auth-user="发件office365邮箱" -S smtp-auth-password="发件office365邮箱密码" -S ssl-verify=ignore -S nss-config-dir=~/.certs 收件人邮箱

如果报如下错误,是证书没有获得认可:

Error in certificate: Peer's certificate issuer is not recognized.

解决办法:

certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu"  -d ./ -i office365.crt

8.配置mail.rc

如发送邮件时每次都配置SMTP参数,比较繁琐,可以在文件/etc/mail.rc设置默认值,在其末尾添加如下内容:

set from=office365邮箱
set smtp=smtp.office365.com:587
set smtp-auth=login
set smtp-auth-user=office365邮箱
set smtp-auth-password=发件office365邮箱密码
set smtp-use-starttls
set ssl-verify=ignore
set nss-config-dir=~/.certs

9.测试发送

echo "Hello COCO" | mail  -s "Hello COCO" 收件人邮箱
教程运维

我来吐槽

*

*