我希望能够测试我的自动发送邮件是否真的发送,但我不希望这些邮件泄漏到现实世界中。有没有办法配置我的邮件设置,以便将我的测试环境发送的所有邮件自动转发到一个邮箱?
我想我可以在配置中配置地址,但是如果我用测试电子邮件替换系统中的每个电子邮件,我将无法清楚地检查是否真的正确创建了邮件。
测试时,我可能会输入现实世界电子邮件地址,但我不想冒险发送给客户的邮件。
安全隔离您的测试环境的一种方法是配置一个邮件服务器,该邮件可以从所有域中捕获所有邮件,并将它们放在一个大收件箱中。如果我在测试环境中配置了该邮件服务器,则所有邮件都是c的。
许多邮件服务器支持此情况。我在Azure VM上使用了开源One,HmailServer。安装步骤:
- 创建一个Azure VM。我使用了标准的DS1 V2,但更轻的版本也可能就足够了。我选择了Windows Server2016。同样,许多其他人也有效。
- 给您的机器一个DNS名称。例如 anymail.yourregion.cloudapp.azure.com
- 在门户中,打开端口 25,143 和 578 for tcp
- 通过远程破坏连接
- 在机器本身上,也打开端口 25,143 和 587 在防火墙设置中
- 启用.NET 3.5。我通过程序和功能=>打开和关闭Windows功能。
- 将HmailServer下载到您的VM D:驱动器(这是临时空间(。您需要将hmailserver.com domain添加到您值得信赖的网站上才能下载。
-
使用默认设置安装它。然后配置它:
-
创建一个域 Anymail
- 在"域"选项卡上高级配置Cathchall-Address:Anymail@Anymail
- 在您的域中创建一个帐户: Anymail@Anymail 并选择一个简单的密码。
- 创建一个规则:从 mailer-daemon@anymail.yourregion.cloudapp.azure.com
- 在设置中-SMTP Enter anymail.yourregion.cloudapp.azure.com 作为本地主机名。设置每次重试的重试和分钟数的数量。
- 在反垃圾邮件白名单中 0.0.0.0 通过 255.255.255.255
- 在高级 - 镜像Enter Anymail@Anymail
- 在高级-IP范围删除Localhost
- 在高级-IP范围内双击 Internet ,然后在"请求SMTP身份验证"之前删除所有复选框"
- 在高级 - Autoban禁用Autoban。
现在一切都应该起作用。您应该能够在配置中配置 anymail.yourregion.cloudapp.azure.com ,也可以在您的邮件程序(例如Outlook(中进行配置。您可以检查是否可以将任何发件人的邮件发送给任何可爱的邮件。测试将邮寄到常规电子邮件地址的邮件不到您的常规邮箱。
诊断
调整设置时,我经常查看状态 ->交货队列。该队列不会自动刷新,因此您需要手动刷新它。您可能需要在测试时清除它。(我经常进入循环,导致许多消息。(