我是 SMTP 服务器的新手,我感到很困惑,因为在 EC2 实例上安装 SMTP 服务器后,我能够从非我的域发送电子邮件。以下是我所做的:
- 启动免费的 Amazon Micro EC2 实例 - Windows Server 2008R2
- 安装 SMTP 功能并配置连接和中继以仅允许列表中的我自己的服务器(127.0.0.1),还将身份验证设置为匿名。
- 测试从 EC2 实例向我的个人 @gmail 帐户发送电子邮件。
请注意,这是一个具有公共 IP 的单个 EC2 实例,我尚未注册任何域名。此时,我手动将 .txt 文件复制到“mailroot\pickup”文件夹中,即可收到电子邮件,没有任何错误。
我尝试过更改“发件人”地址(在 .txt 文件中),它们适用于我没有注册的测试域名,我甚至尝试发送一个已知域名,例如“[电子邮件保护]“并且它确实起作用了,尽管我的服务器与coursera.org域没有任何关系。我有几个问题:
- 我怎么可能代表另一个域名发送电子邮件?难道不应该有一个 DNS 服务器能够识别我的服务器 IP 不属于“coursera.org”的“A”记录或类似的东西吗?
使用收到的电子邮件中的“显示原始”选项,我注意到了以下文字:Received-SPF:失败(google.com:域名[电子邮件保护]未指定 [MY.Server.IP.Address] 为允许的发件人)
购买域名后,如何将域名附加到我设置的 SMTP 服务器?是在托管平台上创建 A 记录并将其指向 EC2 实例的 IP 地址吗?或者我需要“A”和“MX”记录,它们都指向 EC2 实例的 IP?我是否还要在我这边配置“SPF”记录?
如果我还想从我的域名地址回复,例如“[电子邮件保护]“,我是否还需要设置邮件服务器(例如Exchange)?或者域名注册商授予我一个电子邮件服务器?
在此先感谢任何回复,此时我已使 SMTP 工作正常,但我想了解 SMTP 的工作原理。
在收到反对票后,我想澄清一下,我使用@coursera.org 作为示例,并且一直使用我自己的@gmail 帐户来测试我的 SMTP 服务器,我并没有尝试设置这个 SMTP 来发送垃圾邮件或造成伤害。
答案1
关于 SPF 的问题:
SMTP 最初的设计目的并不是防止人们发送声称来自不属于自己的域名的电子邮件。
这发件人策略框架 (SPF)旨在解决这一问题。SPF 是一个简单的文本字段,您可以将其添加到域的 DNS 记录中,它指定允许从您的域发送邮件的邮件服务器的名称/IP 地址。例如,如果您针对我的域 bitcrazed.com 执行 nslookup,您将看到返回以下突出显示的记录:
nslookup -type=txt bitcrazed.com
...
bitcrazed.com text =
"v=spf1 mx a ~all"
这会告诉任何接收来自 bitcrazed.com 的电子邮件的人,如果它是由我的邮件交换器或具有域的服务器以外的任何服务器发送的bitcrazed.com
,那么它很可能是垃圾邮件。
关于设置 SMTP 服务器:因为您需要保护代表您的域发送的电子邮件,并且需要声明服务器的 IP 地址或 DNS 名称,所以您需要将您的 SMTP 服务器托管在静态公共 IP 地址或 DNS 名称上,该名称会在您的 Windows 实例的 IP 地址发生变化时自动更新,这很可能发生在云中托管时。一些云托管服务也运营 DNS 服务,以使您的域记录与您的托管 VM、网站等保持同步。请向 AWS 咨询此事。
一旦你搞定了这些,你就可以发送 SMTP 邮件了。但是,正如你开始意识到的那样,可靠且安全地处理电子邮件就像是雷区。我强烈建议你使用 MailChimp 等服务,而不是运行自己的服务器,它们可以以合理的价格为你完成所有繁重的工作。
嗨嗨。