我按照此处的教程在 Amazon AWS 上设置了一个 EC2 实例并安装了 LAMP 堆栈:
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/install-LAMP.html
我为我的实例分配了一个弹性(即静态)IP 地址,并将我拥有的域名指向它(通过我的域名注册商处理的 DNS 记录,不是 AWS)。当我浏览我的域时,我可以看到我的 index.html 文件 - 到目前为止一切正常。
我想设置一些电子邮件地址,这些地址会自动转发到现有的 Gmail 帐户。假设我的域名是mydomain.com
- 我想要设置[email protected]
,并且每当有人向此地址发送电子邮件时,我希望它会自动转发到(例如)[email protected]
。
设置它最简单的方法是什么?我想知道 AWS 是否有我可以遵循的教程。
答案1
最简单的方法是完全不让服务器参与邮件。这是一项低价值服务,涉及垃圾邮件和投递的复杂性,涉及 SPF、DKIM 等相关技术。
我建议您使用托管电子邮件提供商 - 有很多,包括 Google for Business、Office 365、Fastmail 等。将您的 DNS MX 记录指向该提供商,进行配置,然后使用 IMAP/Web 邮件检查电子邮件。如果您愿意,这些平台还允许您配置邮件转发。
更新:我在 Google 上搜索了“免费电子邮件转发”,结果发现ImprovMX和ForwardMX(不免费)。我对他们一无所知,但他们可以做你想做的事 - 设置你的 MX 记录,然后将其转发到你的电子邮件。请注意,两者都可以阅读你的电子邮件。ImprovMX 没有隐私政策。ForwardMX 有隐私政策,并且收取相对较少的转发费用。
免费解决方案:如果你想从你的服务器设置邮件转发,这只会花费你的带宽,你可以使用这个答案来自 Server Fault。看上去相当简单。
答案2
谢谢@Tim 链接的另一个问题,我得到了正确的方向并解决了这个问题。
另一个问题描述了我遇到的相同问题。那里的主要答案(至少到目前为止)建议使用 Postfix 来做事情。另一个答案建议使用 Sendmail。我决定尝试 Sendmail 建议,因为它看起来非常简单,并且默认情况下 Sendmail 安装在我的 EC2 实例上,而 Postfix 没有。事情并不像答案所暗示的那么简单,但我通过执行以下操作使其正常工作:
- 首先,您需要确保 DNS 记录正确无误,以便世界各地的邮件服务器知道将发送到某个
@mydomain.com
地址的电子邮件定向到哪里。在我的域的 DNS 记录中,我有一个MX
指向的记录mydomain.com.
,然后我有一个指向我的 EC2 实例的弹性(即静态)IP 地址的记录。这告诉邮件服务器将此域的电子邮件定向到记录A
指示的 IP 地址,即我的 EC2 实例。A
mydomain.com
现在需要配置 Sendmail 来监听传入的电子邮件,并根据需要转发。我找到了一个关于如何实现这一点的教程这里。步骤如下:
系统需要知道它作为哪个域的邮件服务器 - 否则 Sendmail 将不会转发这些电子邮件。编辑
/etc/mail/local-host-names
并添加相应的域名:# local-host-names - include all aliases for your machine here. mydomain.com myotherdomain.com
编辑
/etc/mail/access
以告知 Sendmail 为您的域中继邮件。此文件用于安全。添加:mydomain.com RELAY
默认情况下,Sendmail 不会监听外部传入邮件。
/etc/mail/sendmail.mc
其中有一行告诉 Sendmail 只监听 IPv4 环回地址 127.0.0.1,而不监听任何其他网络设备。删除环回地址限制以接受来自互联网的电子邮件。改变
DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
到
DAEMON_OPTIONS(`Port=smtp, Name=MTA')dnl
现在我们需要设置“虚拟用户”,即要自动转发的电子邮件地址。下面这行应该在 中
sendmail.mc
;如果没有,请添加:FEATURE(`virtusertable', `hash -o /etc/mail/virtusertable.db')dnl
这告诉 Sendmail 在文件(编译版本)中查找
virtusertable
要自动转发的地址以及应转发到的位置。在文件中virtusertable
,添加以下内容:[email protected] [email protected]
我相信您还需要在 中添加一行
sendmail.mc
,以告诉 Sendmail 适用于哪个域virtusertable
。因此,还请添加以下行:VIRTUSER_DOMAIN_FILE(`/etc/mail/virtual-domains')dnl
并在 中
virtual-domains
添加以下内容:mydomain.com
Sendmail 不会直接读取所有这些配置文件 - 它们需要经过编译。在目录
make
中运行/etc/mail
。您需要sendmail-cf
安装软件包才能运行此功能。重新启动 Sendmail:
sudo service sendmail restart
此时我认为一切都应该正常工作……但事实并非如此。我忽略了它几天,考虑到我可能会再次尝试使用 Postfix,然后我才想起一些事情……AWS 应用安全规则来阻止/允许某些网络流量。邮件服务器通过 SMTP 监听新邮件,但我没有设置规则以允许端口 25 上的传入流量。因此,在 AWS 管理控制台中,请确保在应用于 EC2 实例的安全组中打开入站 TCP 端口 25。一旦我这样做,一切都立即开始按预期工作。发送到的电子邮件[email protected]
现在正在(通过我的 EC2 实例上的 Sendmail)传递到[email protected]
。