如何使用Mailjet在CentOS上设置Postfix SMTP中继
本教程将向您展示如何在CentOS / RHEL上使用Mailjet设置Postfix SMTP中继。 Postfix是一种流行的开源SMTP服务器。 之前,我写过一篇文章,介绍如何使用Modoboa在CentOS / RHEL上轻松设置功能完备的电子邮件服务器,这有助于许多读者运行自己的电子邮件服务器。
但是,一些读者告诉我,托管提供商或ISP阻止了端口25,作为控制电子邮件垃圾邮件的一种方式,因此它们无法发送电子邮件。 如果您要求Vultr取消阻止端口25,并且Hostwinds根本不会阻止端口25,因此我建议使用Hostwinds VPS。 其他一些托管提供商或ISP(例如DigitalOcean)将拒绝解除对端口25的阻止。
SMTP中继救援
您可以绕过端口25,并使用SMTP中继将电子邮件发送到外界,因为它使用端口587。使用SMTP中继,您自己的电子邮件服务器不会直接将电子邮件发送到目标电子邮件地址。 而是有一个中间邮件服务器,也称为智能主机或中继主机,可以代表您发送电子邮件。 您的电子邮件服务器在端口587上与中继主机进行通信,然后中继主机在端口25上与收件人的邮件服务器进行通信。
如果您的IP地址由于某种原因而被列入黑名单,则SMTP中继还可以帮助您避开反垃圾邮件黑名单。 收件人的邮件服务器对照公共反垃圾邮件黑名单而不是您的服务器IP地址检查中继主机的IP地址,并且由于SMTP中继服务保持良好的IP信誉,因此您的电子邮件可以通过IP黑名单获取。
使用Mailjet每天免费发送200封电子邮件
有几个电子邮件服务提供商(ESP)可以充当中继主机。 有些收取少量费用,有些每月提供免费配额。 在本文中,我想向您展示如何使用Mailjet,这是一个电子邮件服务提供商,允许您每天免费发送200封电子邮件。
Mailjet的优点在于,使用免费的SMTP中继服务时,不需要您输入信用卡详细信息。 还有其他ESP每月提供免费配额,但是需要您输入信用卡详细信息。 (我知道当您没有信用卡时会感到多么沮丧。)与其他ESP相比,Mailjet的设置也更容易。
在mailjet.com上创建一个帐户。 然后,在仪表板上,您可以看到需要做的三件事。
- 设定SMTP
- 管理发件人地址
- 设置域身份验证(SPF和DKIM)
步骤1:在CentOS / RHEL上设置Postfix SMTP中继
首先,让我们使用以下命令在CentOS / RHEL上安装Postfix SMTP服务器。 如果Postfix已经在您的服务器上运行,则跳过安装Postfix。
sudo dnf install postfix
您需要安装以下两个软件包才能使用SMTP中继。
sudo dnf install cyrus-sasl-plain cyrus-sasl-md5
默认情况下, relayhost
Postfix中的参数未设置,可以看到:
postconf relayhost
输出:
relayhost =
您需要从您的mailjet帐户获取中继主机地址。 在mailjet仪表板中,单击 setup my SMTP
。
您将看到SMTP服务器地址和SMTP凭据。
运行以下命令来设置 relayhost
至 in-v3.mailjet.com:587
。
sudo postconf -e "relayhost = in-v3.mailjet.com:587"
使用命令行文本编辑器(例如Nano)编辑Postfix主配置文件。
sudo nano /etc/postfix/main.cf
向下滚动文件的末尾。 (在Nano中,您可以通过按 Ctrl+W
, 然后 Ctrl+V
。)在此文件的末尾添加以下行。
# outbound relay configurations smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_sasl_security_options = noanonymous header_size_limit = 4096000
保存并关闭文件。 要在Nano文本编辑器中保存文件,请按 Ctrl+O
,然后按 Enter
确认。 要退出,请按 Ctrl+X
。
然后创建 /etc/postfix/sasl_passwd
文件。
sudo nano /etc/postfix/sasl_passwd
如下所示,将SMTP中继主机和SMTP凭据添加到此文件。 更换 api-key
和 secret-key
使用真正的Mailjet API密钥和秘密密钥。
in-v3.mailjet.com:587 api-key:secret-key
保存并关闭文件。 然后使用以下命令创建相应的哈希数据库文件 postmap
。
sudo postmap /etc/postfix/sasl_passwd
现在您应该有一个文件 /etc/postfix/sasl_passwd.db
。 重新启动Postfix,以使更改生效。
sudo systemctl restart postfix
默认, sasl_passwd
和 sasl_passwd.db
文件可以由服务器上的任何用户读取。 将权限更改为600,以便只有root可以读写这两个文件。
sudo chmod 0600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db
从现在开始,Postfix将通过mailjet发送电子邮件。
步骤2:添加发件人地址
您需要添加发件人域或发件人地址,才能通过mailjet发送电子邮件。 在mailjet仪表板中,单击 manage sender addresses
。 您可以验证整个域或特定的电子邮件地址。
步骤3:设定网域验证
在此步骤中,我们需要设置SPF和DKIM记录,如果您希望电子邮件进入收件人的收件箱而不是垃圾邮件文件夹,则强烈建议您这样做。
- SPF:发件人策略框架。 这是一条DNS记录,用于指定允许哪些IP地址从您的域发送电子邮件。
- DKIM:域密钥标识的邮件。 Mailjet将使用私钥对您的电子邮件进行数字签名。 DKIM记录包含一个公共密钥,使收件人的电子邮件服务器可以验证签名。
在mailjet仪表板中,单击 setup domain authentication
。 默认情况下,SPF状态和DKIM状态均为错误。 请点击 manage
按钮,然后按照说明添加SPF和DKIM记录。
创建SPF和DKIM记录后,请稍等片刻并刷新mailjet网页。 您的新DNS记录可能需要一些时间才能在Internet上传播,具体取决于您的DNS托管服务。 如果正确设置了SPF和DKIM记录并完成了传播,mailjet会告诉您SPF和DKIM记录是好的。
发送测试电子邮件
现在,我们可以发送测试电子邮件了 mailx
命令如下。
sudo dnf install mailx echo "this is a test email." | mailx -r from-address -s hello to-address
您还可以从Webmail客户端或桌面邮件客户端发送测试电子邮件。 在https://www.mail-tester.com上测试您的电子邮件分数也是一个好主意。 如您所见,我得到了满分。
故障排除
如果您的电子邮件没有发送,并且您在邮件日志中找到了以下消息(/var/log/maillog
),
Relay access denied (in reply to RCPT TO command))
那么您可能需要编辑 /etc/postfix/sasl_passwd
文件,并删除主机名后面的端口号,如下所示。
in-v3.mailjet.com api-key:secret-key
保存并关闭文件。 然后再次构建索引文件。
sudo postmap /etc/postfix/sasl_passwd
重新启动Postfix,以使更改生效。
sudo systemctl restart postfix
现在,您可以刷新电子邮件队列(尝试传递以前的电子邮件)。
sudo postqueue -f
添加其他域
如果您在新计算机上为新域名设置邮件服务器,并且要为此新域名设置SMTP中继,请执行以下步骤:
- 配置Postfix SMTP中继设置
- 在Mailjet仪表板中验证新域名
- 设置SPF和DKIM验证
包起来
而已! 我希望本教程可以帮助您在CentOS / RHEL上设置Postfix SMTP中继以绕过端口25或IP黑名单。 与往常一样,如果您发现这篇文章很有用,请订阅我们的免费新闻通讯以获取更多提示和技巧。 照顾自己。