我在家里运行一个小型 Debian 服务器,它托管两个网站。我还想让这个域名的电子邮件被发送到这个服务器,但发送到我们的真实电子邮件地址。本质上,如果他们发送电子邮件[email protected]
,它会转发到[email protected]
另一个域名上的。这可以做到吗,还是我需要在我的服务器上安装一个完整的电子邮件服务器程序才能做到这一点?
我的注册商是 Canspace.ca,我没有看到任何邮件选项,只能指定我的 MX 记录,我会将其指向我的服务器。目前,没有电子邮件托管在我的服务器上,但目标是任何发往我的域名的电子邮件都会发送到我的常规电子邮件地址。
我给注册商发了电子邮件,他们说除非我购买他们的网站托管包和其他所有东西,否则除了将 MX 记录指向某处外,不提供任何邮件服务。那么,回到最初的问题,我能对我的基于 Debian 的服务器做什么最小的事情才能让发送给它的邮件自动转发到我的主帐户,而不将其存储在我的服务器上?
答案1
有很多方法可以做到这一点。
首先,让我先说以下几点:假定您安装了电子邮件服务,但您没有表明这一点。所有示例都在此处认为确保已安装该服务。还有其他方法不需要完整的电子邮件服务器,但它们是特殊情况,并且通常可以立即交付而无需邮件队列。
Debian 通常已安装邮件传输代理,即某个版本的 Exim(取决于您的 Debian 版本)。您可以选择安装其他 MTA,例如 Sendmail、Qmail 或 Postfix。我最熟悉的是 Postfix,所以我的回答将偏向于使用/配置 Postfix。
.forward 文件
第一个/最简单/最俗气的方法是将一个.forward
文件放在接收电子邮件的帐户的主目录中。该.forward
文件由一行组成,如下所示:
[email protected]
当电子邮件送达时,.forward
会检查文件,如果找到,则使用内容将电子邮件转发到指定的地址。这最初是为了将电子邮件临时转发到新地址,在 Ye Olde Days 中,当时真实的用户托管在真实的 *nix 风格的系统上。对于你的情况,它很可能不起作用,因为 (a) 我怀疑你真的设置了与该地址相对应的用户帐户,(b) “标准”是应该得到所有 MTA 的支持,但没有保证,并且 (b) 网站服务器的地址与电子邮件服务器的地址不匹配,因此存在其他断开连接,阻止顺利过渡。
当然,不用说,任何事物@somedomain.net 不会被转发;它需要一个完整的、可解析的地址。因此,这对你不起作用。
使用 MDA
米艾尔德交付Agents 专门用于将邮件投递到本地邮箱。根据您提供的有限措辞,我只能假设您需要将电子邮件投递到不同的服务器。因此这也不适合你。
使用 MTA
第二种选择是安装米艾尔电视运输Agent,人们通常称之为“电子邮件服务”。其中大多数通常具有根据一系列查找重新路由消息的功能。对于 Postfix,您可以将给定域的所有消息路由到另一个地址。任何符合此规则的消息都会重新注入 Postfix 的管道,从而传递到新地址。您可以通过创建地址到目标地址的映射,然后通知 Postfix 有关更改来执行此操作。
使用 MTA 的另一个优点是邮件将排队等待传送;如果出现某些问题(例如与互联网的连接丢失),MTA 将继续尝试传送,直到邮件被传送,或者达到指定的超时时间,此时邮件将被退回。
我推荐这种方法。 它不仅提供了一点稳健性(使用队列),还提供了灵活性(您可以通过这种方式映射多个域)。
答案2
我已经解决了一半问题。让我来介绍一下我做了什么。
首先,我必须安装一个服务来收到电子邮件;我选择了 Postfix,按照 Avery Payne 的建议。我遵循了指示在 Debian 的网站上安装并运行本地在我的网络内。我能够发送和接收邮件,但不能使用 FQDN。我认为这是 DNS 问题或端口转发问题。
设置 postfix:
apt-get install postfix
cat /var/log/mail.log
postconf -e "myorigin = example.com"
postconf -e "myhostname=server1.example.com"
postconf -e "relay_domains = example.com, example2.com, example3.com"
postfix reload
然后我在本地进行了测试:
$ telnet localhost 25
>Trying 127.0.0.1...
>Connected to localhost.localdomain.
>Escape character is '^]'.
>220 server1.example.com ESMTP Postfix (Debian/GNU)
mail from:<[email protected]>
rcpt to:<[email protected]>
data
To: [email protected]
From: [email protected]
Subject: Hey my first email
This is my first email on debian postfix after installing configuring it.
It was easy.
Enter我按下、.、结束了消息并发送了它Enter。
然后我退出并检查了我的帐户上的邮件:
mail
>You have 1 new mail!
我读了它并删除了它。然后我尝试了上面的说明来转发消息,但它没有发出去。好吧,也许有什么东西被阻止了。我试过了telnet mail.example.com 25
,我可以从我的手机上连接(而不是在 Wifi 上)。所以,我猜 Shaw(我的 ISP)没有阻止它。我向我的地址发送了一封电子邮件,但服务器没有收到。我回到 Wifi 上,它发送了邮件!所以有什么东西阻止了它,但这需要另一个问题了。