如何在Ubuntu14.04上使用Mail-in-a-Box运行您自己的邮件服务器
介绍
Mail-in-a-Box 是一个开源软件包,可轻松将您的 Ubuntu 服务器转变为适用于多个域的全栈电子邮件解决方案。
为了保护服务器,Mail-in-a-Box 使用 Fail2ban 和 SSL 证书(默认为自签名)。 它自动配置打开所有必需端口的 UFW 防火墙。 它的反垃圾邮件和其他安全功能包括灰名单、SPF、DKIM、DMARC、机会性 TLS、强密码、HSTS 和 DNSSEC(使用 DANE TLSA)。
Mail-in-a-Box 旨在处理 SMTP、IMAP/POP、垃圾邮件过滤、网络邮件,甚至 DNS 作为其一体化解决方案的一部分。 由于服务器本身正在处理您的 DNS,因此您将获得针对邮件优化的现成 DNS 解决方案。 基本上,这意味着您将获得电子邮件的复杂 DNS 记录(包括 SPF 和 DKIM 记录),而无需手动研究和设置它们。 之后您可以根据需要调整 DNS 设置,但对于大多数托管自己邮件的用户来说,默认值应该可以很好地工作。
本教程展示了如何在运行 Ubuntu 14.04 x86-64 的 DigitalOcean Droplet 上设置 Mail-in-a-Box。
先决条件
Mail-in-a-Box 非常注重可用的资源。 具体来说,它要求:
- 一个 Ubuntu 14.04 x86-64 Droplet
- 服务器必须至少有 768 MB 的 RAM(推荐 1 GB)
- 确保已按照 本教程 中给出的行设置服务器,包括添加 sudo 用户和禁用 root 用户的密码 SSH 访问(如果设置了 SSH 密钥,可能还有所有用户)
- 设置 DigitalOcean Droplet 时,名称应设置为 box.example.com。 设置主机名将在本教程后面讨论
- 我们稍后会详细介绍,但您的域名注册商需要支持设置自定义名称服务器和粘合记录,以便您可以在 Droplet 上托管自己的 DNS; 经常使用术语 vanity nameservers
- (可选)购买SSL证书代替自签名证书使用; 推荐用于生产环境
在 RAM 要求上,如果不满足 RAM 要求,安装脚本将中止并显示以下输出:
ErrorYour Mail-in-a-Box needs more memory (RAM) to function properly. Please provision a machine with at least 768 MB, 1 GB recommended. This machine has 513 MB memory
在开始之前,请确保您有一个具有 1 GB RAM 的 Ubuntu 服务器。
对于本文,我们假设您要为其设置电子邮件服务器的域是 example.com。 当然,您应该将其替换为您的真实域名。
第 1 步 — 配置主机名
在此步骤中,您将学习如何正确设置主机名(如果尚未设置)。 然后您将修改 /etc/hosts
文件以匹配。
从这里开始,假设您已登录到您的 DigitalOcean 帐户,并且还使用 SSH 以 sudo 用户身份登录到服务器:
ssh sammy@your_server_ip
官方建议将服务器的主机名设置为 box.example.com
。 这也应该是出现在 DigitalOcean 仪表板上的 Droplet 的名称。 如果 Droplet 的名称设置为仅域名,请通过单击 Droplet 的名称对其进行重命名,然后单击 设置 > 重命名 。
按照建议设置 Droplet 的名称后,通过键入以下命令验证它是否与 /etc/hostname
文件中显示的名称匹配:
hostname
输出应该是这样的:
Outputbox.example.com
如果输出与 DigitalOcean 仪表板上显示的名称不匹配,请键入以下内容进行更正:
sudo echo "box.example.com" > /etc/hostname
第 2 步 — 修改 /etc/hosts 文件
需要修改 /etc/hosts
文件以将主机名与服务器的 IP 地址相关联。 要编辑它,请使用 nano 或您喜欢的编辑器打开它:
sudo nano /etc/hosts
修改 IPv4 地址,使其变为:
/etc/hosts
127.0.0.1 localhost.localdomain localhost your_server_ip box.example.com box
您可以精确复制 localhost.localdomain localhost
行。 在第二行使用您自己的 IP 和域。
保存并关闭文件。
第 3 步 — 创建胶水记录
虽然可以让外部 DNS 服务(如您的域注册商提供的服务)来处理服务器的所有 DNS 解析,但强烈建议将 DNS 职责委派给 Mail-in-a-Box 服务器。
这意味着您在使用 Mail-in-a-Box 时需要设置 胶水记录 。 使用粘合记录可以更轻松地安全、正确地设置电子邮件服务器。 使用此方法时,将 all DNS 职责委派给 Mail-in-a-Box 服务器非常重要,即使存在使用目标域的活动网站也是如此。
如果您的域中确实有一个活动网站,请确保在您的 Mail-in-a-Box 服务器上设置适当的附加 DNS 记录。 否则,您的域将无法解析到您的网站。 您可以复制现有的 DNS 记录以确保一切正常。
必须在您的域注册商处设置粘合记录(也称为 私有名称服务器 、 虚名称服务器 和 子名称服务器 )。
要设置粘合记录,必须完成以下任务:
- 自己设置胶水记录。 这涉及创建自定义名称服务器地址,将服务器的完全限定主机名以及 ns1 和 ns2 前缀与其 IP 地址相关联。 这些应该如下:
- ns1.box.example.com your_server_ip
- ns2.box.example.com your_server_ip
- 将 DNS 职责转移到 Mail-in-a-Box 服务器。
- example.com NS ns1.box.example.com
- example.com NS ns2.box.example.com
注意:两项任务都必须正确完成。 否则,服务器将无法用作邮件服务器。 (或者,您可以在不同的名称服务器上设置所有适当的 MX、SPF、DKIM 等记录。)
此过程中涉及的确切步骤因域注册商而异。 如果本文中给出的步骤与您的不符,联系您的域名注册商的技术支持团队 寻求帮助。
示例:名称便宜
首先,登录您的域名注册商的帐户。 您的域名注册商的帐户仪表板的外观取决于您使用的域名注册商。 该示例使用 Namecheap,因此本教程中使用的步骤和图像与您在拥有 Namecheap 帐户时所找到的完全相同。 如果您使用不同的注册商,请致电他们的技术支持或浏览他们的知识库以了解如何创建粘合记录。
登录后,找到您管理的域列表,然后单击目标域; 也就是说,您将要使用它来设置邮件服务器。
查找允许您修改其名称服务器地址信息的菜单项。 在 Namecheap 仪表板上,该菜单项在 高级选项 菜单类别下称为 Nameserver Registration。 您应该得到一个如下所示的界面:
我们将为服务器设置两个粘合记录:
- ns1.box.example.com
- ns2.box.example.com
由于只提供了一个自定义字段,因此必须按顺序对其进行配置。 如下图所示,在出现数字 1 的地方键入 ns1.box,然后在 IP 地址字段中键入 Mail-in-a-Box 服务器的 IP 地址(由数字 2 表示)。 最后点击Add Nameservers按钮添加记录(编号3)。
重复其他记录,确保使用 ns2.box 以及相同的域名和 IP 地址。
创建两条记录后,查找另一个菜单条目,显示 Transfer DNS to Webhost。 您应该会看到一个类似于下图所示的窗口。 选择自定义 DNS 选项,然后在前两个字段中键入:
- ns1.box.example.com
- ns2.box.example.com
单击以应用更改。
注意: 您在此处键入的自定义 DNS 服务器应该与您刚刚为 Nameserver Registration 指定的那些相同。
对 DNS 的更改需要一些时间才能传播。 最长可能需要 24 小时,但传播对测试域所做的更改只需大约 15 分钟。
您可以通过访问 whatsmydns.net 来验证 DNS 更改是否已传播。 搜索目标域的A和MX记录。 如果它们与您在此步骤中设置的匹配,则您可以继续执行第 4 步。 否则,请再次执行此步骤或联系您的注册商寻求帮助。
第 4 步 — 安装 Mail-in-a-Box
在此步骤中,您将运行脚本以在您的 Droplet 上安装 Mail-in-a-Box。 Mail-in-a-Box 安装脚本会安装运行成熟的电子邮件服务器所需的每个包,因此您只需运行一个简单的命令并按照提示操作即可。
假设您仍然登录到服务器,请移至您的主目录:
cd ~
安装邮箱:
curl -s https://mailinabox.email/bootstrap.sh | sudo bash
该脚本将提示您使用下图中的介绍性消息。 按 ENTER
。
现在将提示您创建第一个电子邮件地址,稍后您将使用该地址登录系统。 您可以输入 contact@example.com 或您域中的其他电子邮件地址。 接受或修改建议的电子邮件地址,然后按 ENTER
。 之后,系统将提示您指定并确认电子邮件帐户的密码。
电子邮件设置完成后,系统会提示您确认服务器的主机名。 它应该与您在第 1 步中设置的匹配,在此示例中为 box.example.com。 按 ENTER
。
接下来,系统将提示您选择您所在的国家/地区。 通过使用箭头键向上或向下滚动来选择它。 做出正确选择后按ENTER
。
在某些时候,您会收到以下提示:
OutputOkay. I'm about to set up contact@example.com for you. This account will also have access to the box's control panel. password:
指定默认电子邮件帐户的密码,该帐户也将是默认的 Web 界面管理员帐户。
安装成功完成后,您应该会看到一些安装后输出,其中包括:
Outputmail user added added alias hostmaster@box.example.com (=> administrator@box.example.com) added alias postmaster@example.com (=> administrator@box.example.com) added alias admin@example.com (=> administrator@box.example.com) updated DNS: example.com web updated alias added added alias admin@box.example.com (=> administrator@box.example.com) added alias postmaster@box.example.com (=> administrator@box.example.com) ----------------------------------------------- Your Mail-in-a-Box is running. Please log in to the control panel for further instructions at: https://your_server_ip/admin You will be alerted that the website has an invalid certificate. Check that the certificate fingerprint matches: 1F:C1:EE:C7:C6:2C:7C:47:E8:EF:AC:5A:82:C1:21:67:17:8B:0C:5B Then you can confirm the security exception and continue.
第 5 步 — 登录 Mail-in-a-Box 仪表板
现在您将登录到 Mail-in-a-Box 的管理界面并了解您的新电子邮件服务器。 要访问管理界面,请使用安装后输出中提供的 URL。 这应该是:
由于使用了 HTTPS 和自签名证书,您将在浏览器窗口中收到安全警告。 您必须创建一个安全例外。 如何完成取决于您使用的浏览器。
例如,如果您使用的是 Firefox,您将看到一个浏览器窗口,其中包含下图中显示的熟悉警告。
要接受证书,请单击 我了解风险 按钮,然后单击 添加例外 按钮。
在下一个屏幕上,您可以验证证书指纹是否与安装后输出中的指纹匹配,然后单击 Confirm Security Exception 按钮。
创建例外后,使用安装期间创建的电子邮件帐户的用户名和密码登录。 请注意,用户名是完整的电子邮件地址,例如 contact@example.com
。
当您登录时,将启动系统状态检查。 Mail-in-a-Box 将检查服务器的所有方面,包括粘合记录,是否已正确配置。 如果为真,您应该会看到一大片绿色(和一些黄绿色)文本,除了与 SSL 证书有关的部分,它将显示为红色。 您可能还会看到有关重新启动的消息,您可以自行处理。
注意: 如果配置域的 DNS MX 记录不正确,红色输出,则说明步骤 3 未正确完成。 重新访问该步骤或联系您的注册商的技术支持团队寻求帮助。
如果您看到的唯一红色文本是因为 SSL 证书,那么恭喜! 您现在已经使用 Mail-in-a-Box 成功设置了自己的邮件服务器。
如果您想重新访问此部分(例如,在等待 DNS 传播之后),它位于 系统 > 状态检查 下。
第 6 步 - 访问 Webmail 并发送测试电子邮件
要访问 webmail 界面,请单击顶部导航栏中的 Mail > Instructions,然后访问该页面上提供的 URL。 它应该是这样的:
使用您之前设置的电子邮件地址(包括 @example.com 部分)和密码登录。
Mail-in-a-box 使用 Roundcube 作为其网络邮件应用程序。 尝试将测试电子邮件发送到外部电子邮件地址。 然后,回复或发送新消息到您的邮箱服务器管理的地址。
外发电子邮件应该会立即收到,但由于灰名单在 Mail-in-a-Box 服务器上生效,因此收到的电子邮件大约需要 15 分钟才能显示出来。
如果 DNS 设置不正确,这将不起作用。
如果您可以发送和接收测试消息,那么您现在正在运行自己的电子邮件服务器。 恭喜!
(可选)第 7 步 — 安装 SSL 证书
默认情况下,Mail-in-a-box 会生成自己的自签名证书。 如果您想在生产环境中使用此服务器,我们强烈建议您安装官方 SSL 证书。
首先,购买您的证书。 或者,要了解如何创建免费签名 SSL 证书,请参阅 如何在 VPS 上使用免费签名 SSL 证书设置 Apache 教程。
然后,从 Mail-in-a-Box 管理仪表板中,从顶部导航菜单中选择 系统 > SSL 证书 。
从那里,使用相应域或子域旁边的 Install Certificate 按钮。 将您的证书和任何链式证书复制并粘贴到提供的文本字段中。 最后点击安装按钮。
现在您和您的用户应该能够在没有浏览器警告的情况下访问网络邮件和管理面板。
结论
向您的 Mail-in-a-Box 服务器添加域和其他电子邮件地址很容易。 要在新域或现有域中添加新地址,只需在管理仪表板的 Mail > Users 中添加另一个电子邮件帐户。 如果电子邮件地址位于新域中,Mail-in-a-box 将自动为其添加适当的新设置。
如果要添加新域,请确保将域的名称服务器设置为 ns1.box.example.com 和 ns2.box.example.com(与我们设置的相同)第一个域)在您的域注册商处。 您的 Droplet 将处理新域的所有 DNS。
要查看当前的 DNS 设置,请访问 系统 > 外部 DNS。 要添加您自己的条目,请访问 系统 > 自定义 DNS。
Mail-in-a-Box 还提供了本文范围之外的功能。 它可以作为 ownCloud 提供的托管联系人和日历管理器。 它还可以用于托管静态网站。
有关 Mail-in-a-Box 的更多信息,请访问 项目的主页 。