如何配置Postfix使用163代发邮件?

Postfix

1 前言

笔者需要使用服务器需要发送通知,由于想要简单,不想搭建mail服务器,所以使用Postfix的中继功能发送邮件,于是有了以下的配置。

2 实践部分

2.1配置环境

系统环境:CentOS 7.3 x86_64
邮箱类型:163.com
目标邮件地址:will@cmdschool.org
邮箱服务器地址:smtp.163.com

2.2 配置代发邮件

2.2.1 安装基础软件包

yum install -y postfix mailx cyrus-sasl-plain nss-tools

2.2.2 创建证书目录

mkdir ~/.certs

2.2.3 获取服务器端证书

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

你可以使用如下命令查看生成的证书,

cat ~/.certs/smtp.163.com.crt

可见如下显示,

-----BEGIN CERTIFICATE-----
MjIGkjCCBXqgAwIBAgIQA0EbRBbf3u9NDAIagGzNezANBgkqhkiG9w0BAQsFADBe
[...]
0hQDr9J5
-----END CERTIFICATE-----

注:“[…]”表示省略

2.2.4 将证书添加到数据库

certutil -A -n "GeoTrust SSL CA" -t "C,," -d ~/.certs/ -i ~/.certs/smtp.163.com.crt
certutil -A -n "GeoTrust Global CA" -t "C,," -d ~/.certs/ -i ~/.certs/smtp.163.com.crt

– 参数“-i”指定导入的证书文件
– 参数“-A”表示将现有证书添加到数据库,如果数据库不存在,则自动创建
– 参数“-n”表示修改或验证证书或秘钥的昵称字符串
– 参数“-t”指定要创建或修改现有证书的信任属性,详细的参数如下,
— 参数“p”声明有效的同伴
— 参数“P”声明信任的同伴(暗示p)
— 参数“c”声明有效的CA
— 参数“C”声明可信的CA(暗示c)
— 参数“T”声明用于客户端认证的可信CA(仅限ssl服务器)
— 不同类别的属性需要使用逗号分隔
— 整体的属性需要包含在引号内
— 属性声明的范例如下,

-t “TC,C,T”

添加完毕后,你可以使用如下指令检查,

certutil -L -d ~/.certs/

另外,为了防止发邮件时的警告,还需设置以下标记,

cd ~/.certs/
certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ./ -i smtp.163.com.crt

可见如下提示,

Notice: Trust flag u is set automatically if the private key is present.

2.2.5 创建主配置文件

cp -a /etc/mail.rc /etc/mail.rc.default
egrep -v '^#|^&' /etc/mail.rc.default > /etc/mail.rc
vim /etc/mail.rc

加入如下配置:

set from=tanzhenchao@163.com
set smtp.163.com
set smtp-auth-user=tanzhenchao
set smtp-auth-password=xxxx
set smtp-auth=login
set smtp-use-starttls
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb/

– 参数”from“声明在收件方显示的发件人
– 参数”smtp“声明使用SMTP协议发送邮件所需的服务器地址
– 参数”set smtp-auth-user“声明使用SMTP协议进行身份认证所需的用户名
– 参数”set smtp-auth-password“声明使用SMTP协议进行身份认证所需的密码(某些邮箱填是授权码)
– 参数”smtp-auth“声明使用SMTP协议进行身份认证的方式(可选值包括login、CRAM-MD5和PLAIN,login为默认值)

2.2.6 启动服务并配置自启动

systemctl start postfix
systemctl enable postfix

2.2.7 测试邮件发送

echo 'This is a test mail' | mail -s 'This is a test mail' will@cmdschool.org

2.3 邮件拍错

2.3.1 排错涉及的日志

cat /var/log/maillog

2.3.2 设置白名单

tail -f /var/log/maillog

如果遇到如下日志提示,

Aug 12 13:59:20 mosquitto postfix/qmgr[17976]: 0F59C100195: from=, size=459, nrcpt=1 (queue active)
Aug 12 13:59:21 mosquitto postfix/smtp[18056]: 0F59C100195: to=, relay=mxbiz1.qq.com[183.57.48.34]:25, delay=1.1, delays=0.02/0.01/0.08/0.96, dsn=5.0.0, status=bounced (host mxbiz1.qq.com[183.57.48.34] said: 550 Mail content denied. http://service.exmail.qq.com/cgi-bin/help?subtype=1&&id=20022&&no=1000726 (in reply to end of DATA command))

可通过登录邮箱“will@cmdschool.org”的管理界面设置白名单处理以上问题,方法如下
单击【设置】->【反垃圾邮件】->【设置白名单】
在“设置邮件白名单”中填入“root@mosquitto.cmdschool.org”并单击【添加到白名单】即可
注:不同的邮箱可能有差异,以上已腾讯企业邮为范例

参阅文档
=====================
https://blog.51cto.com/ygtq666/2164919

没有评论

发表回复

Postfix
如何指定PostFix的默认下一跳地址?

1 前言 一个问题,一篇文章,一出故事。 笔者想要指定邮件的默认下一跳地址,以便邮件可以被送到特定的 …

Postfix
如何实现监视PostFix的延迟邮件警告?

1 前言 一个问题,一篇文章,一出故事。 笔者生产中有一套PostFix集群,最近经历了一次邮件延迟 …

Postfix
如何优化PostFix?

1 前言 一个问题,一篇文章,一出故事。 笔者最近生产服务器遇到队列问题,因此需要通过优化PostF …