如何处理 Microsoft Outlook IP 黑名单

在之前的教程中,我解释了如何使用 iRedMail 或 Modoboa 轻松设置自己的邮件服务器,并分享了一些将 IP 地址从黑名单中删除的技巧。 然而,有些人很难下车 Microsoft Outlook IP 黑名单,由 Outlook.com、hotmail.com、live.com 和 msn.com 邮件服务器使用。

如果您的 IP 地址被阻止,Microsoft Outlook 通常会发回以下消息。

host eur.olc.protection.outlook.com[104.47.22.161] said: 550 5.7.1 Unfortunately, messages from [xx.xx.xx.xx] weren't sent. Please contact your Internet service provider since part of their network is on our block list (S3150). You can also refer your provider to https://mail.live.com/mail/troubleshooting.aspx#errors. [DB8EUR06FT013.eop-eur06.prod.protection.outlook.com] (in reply to MAIL FROM command) 

如您所见,整个 IP 范围都被阻止了。 就我个人而言,由于对合法发件人造成的附带损害,我认为不应该使用这种反垃圾邮件技术。 相比之下,Gmail 在处理 IP 声誉方面要智能得多。 您可以提交发件人信息表来解决此问题。 有时 Microsoft 会解锁您的 IP 地址,有时您的请求会被拒绝。

将您的 IP 地址从 Outlook 黑名单中删除的可靠方法是让您的邮件服务器通过 Return Path 进行认证。 然而,它非常昂贵。 您需要一次性支付 200 美元的申请费和每年至少 1,375 美元的许可费。 我将向您展示一种绕过 Outlook IP 黑名单的免费方法。

使用 SMTP 中继服务绕过 Microsoft Outlook IP 黑名单

您可以将邮件服务器配置为通过 SMTP 中继服务中继电子邮件。 他们保持良好的 IP 声誉,因此您的电子邮件可以通过 IP 黑名单。 有许多 SMTP 中继服务。 有些收取一点费用,有些每月提供免费配额。

您不必配置邮件服务器来中继所有电子邮件。 我将向您展示如何配置 Postfix SMTP 服务器以中继仅发送到 Outlook.com、hotmail.com、live.com 和 msn.com 电子邮件地址的电子邮件,这样您就不会很快用完免费配额。 现在使用微软邮箱的人并不多。 我的订阅者中只有 6.5% 使用 hotmail、outlook、live 和 msn 电子邮件地址。

这里我推荐 SendinBlue SMTP 中继服务,它可以让您免费发送 9,000 封电子邮件/月。 不需要信用卡。

配置 SendinBlue SMTP 中继

在 SendinBlue 创建一个免费帐户。 完成用户配置文件后,单击 transactional 选项卡,您将获得 SMTP 设置。

请注意,您可能需要联系 Sendinblue 客户服务以激活交易电子邮件服务。

SSH 到您的邮件服务器并安装 libsasl2-modules 包,这是 SASL 身份验证所必需的。

sudo apt install libsasl2-modules

如果您使用 CentOS/Rocky Linux/Alma Linux,请安装以下软件包。

sudo dnf install cyrus-sasl-plain cyrus-sasl-md5

接下来,使用命令行文本编辑器(如 Nano)打开 Postfix 主配置文件。

sudo nano /etc/postfix/main.cf

在此文件的末尾添加以下行。

transport_maps = regexp:/etc/postfix/transport.microsoft

暗示

如果你使用 红邮,你可以找到 transport_maps 参数并添加正则表达式行。

transport_maps =     regexp:/etc/postfix/transport.microsoft     proxy:mysql:/etc/postfix/mysql/transport_maps_user.cf     proxy:mysql:/etc/postfix/mysql/transport_maps_maillist.cf     proxy:mysql:/etc/postfix/mysql/transport_maps_domain.cf 

如果你使用 摩多巴,你可以找到 tranport_maps 参数并添加正则表达式行。

transport_maps =         regexp:/etc/postfix/transport.microsoft         proxy:mysql:/etc/postfix/sql-transport.cf         proxy:mysql:/etc/postfix/sql-spliteddomains-transport.cf 

然后将以下行添加到此文件的末尾。

# outbound relay configurations smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_sasl_security_options = noplaintext, noanonymous smtp_tls_security_level = may header_size_limit = 4096000

Save 和 close 文件。 接下来,创建 /etc/postfix/transport.microsoft 文件。

sudo nano /etc/postfix/transport.microsoft

在此文件中添加以下行。 如果收件人是 Microsoft 邮箱用户,这会告诉 Postfix 使用 Sendinblue SMTP 中继。

/.*@(outlook|hotmail|live|msn)..*/i             relay:[smtp-relay.sendinblue.com]:587 

Save 和 close 文件。 创建 .db 文件。

sudo postmap /etc/postfix/transport.microsoft

接下来,创建 /etc/postfix/sasl_passwd 文件。

sudo nano /etc/postfix/sasl_passwd

将 SMTP 中继主机和 SMTP 凭据添加到此文件中,如下所示。 代替 smtp_usernamesmtp_password 使用 SendinBlue 提供的您自己的用户名和密码。 请注意,用户名和密码之间有一个冒号。

[smtp-relay.sendinblue.com]:587            smtp_username:smtp_password

Save 和 close 文件。 然后创建相应的哈希数据库文件 postmap.

sudo postmap /etc/postfix/sasl_passwd

现在你应该有一个文件 /etc/postfix/sasl_passwd.db. 重新启动 Postfix 以使更改生效。

sudo systemctl restart postfix

默认情况下, sasl_passwdsasl_passwd.db 服务器上的任何用户都可以读取文件。 将权限更改为 600,以便只有 root 可以读写这两个文件。

sudo chmod 0600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db

从现在开始,Postfix 将使用 Sendinblue SMTP 中继向 Microsoft 邮箱用户发送电子邮件。 您可以向 hotmail.com、outlook.com、live.com 或 msn.com 电子邮件地址发送测试电子邮件。
请注意,您需要单击 发件人和 IP 选项卡在您的帐户仪表板中添加您的域。