如何在Ubuntu 14.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解决方案。基本上,这意味着您将获得电子邮件(包括SPF和DKIM记录)的复杂DNS记录,而无需手动研究和设置它们。您可以根据需要调整DNS设置,但默认设置应该适用于托管自己邮件的大多数用户。

本教程介绍如何在运行Ubuntu 14.04 x86-64的腾讯云CVM上设置Mail-in-a-Box。

准备

Mail-in-a-Box非常关注可用的资源。具体来说,它需要:

  • 一个Ubuntu 14.04 x86-64 腾讯云CVM
  • 服务器必须至少有768 MB的RAM(建议1 GB)
  • 一台已经设置好可以使用sudo命令的非root账号的Ubuntu服务器,并且已开启防火墙。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器
  • 设置腾讯云CVM时,名称应设置为box.example.com。设置主机名将在本教程后面讨论
  • 我们稍后会详细介绍,但您的域名注册商需要支持设置自定义域名服务器和粘合记录,以便您可以在腾讯云CVM上托管自己的DNS; 术语虚荣名称服务器经常被使用
  • (可选)使用SSL证书代替自签名证书:如何设置此证书取决于你是否拥有可解析该服务器的域名。

在RAM要求中,如果不满足RAM要求,安装脚本将使用以下输出中止:

Your 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文件以匹配。

从此处开始,假设您已登录到您的腾讯云帐户,并使用以下方式通过SSH以sudo用户身份登录服务器:

ssh sammy@your_server_ip

正式地,建议将服务器的主机名设置为box.example.com。这也应该是您在腾讯云仪表板上显示的腾讯云CVM的名称。如果腾讯云CVM的名称仅设置为域名,请通过单击腾讯云CVM的名称重命名,然后单击设置>重命名

按照建议设置腾讯云CVM的名称后,/etc/hostname通过键入以下命令验证它与文件中显示的名称是否匹配:

hostname

输出应该是这样的:

box.example.com

如果输出与腾讯云仪表板上显示的名称不匹配,请键入以下内容进行更正:

sudo echo "box.example.com" > /etc/hostname

第2步 - 修改/ etc / hosts文件

需要修改该/etc/hosts文件以将主机名与服务器的IP地址相关联。要编辑它,请使用nano或您喜欢的编辑器打开它:

sudo nano /etc/hosts

修改IPv4地址,使其读取:

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时需要设置胶水记录。使用粘合记录可以更安全,更正确地设置服务器的电子邮件。使用此方法时,将所有 DNS职责委派给Mail-in-a-Box服务器非常重要,即使有使用目标域的活动网站也是如此。

如果您的域中有活动网站,请确保在Mail-in-a-Box服务器上设置适当的其他DNS记录。否则,您的域名将无法解析为您的网站。您可以复制现有的DNS记录,以确保一切正常。

设置粘合记录(也称为私有名称服务器虚荣名称服务器子名称服务器)必须在您的域名注册商处完成。

要设置粘合记录,必须完成以下任务:

  1. 设置胶水记录本身。这涉及创建自定义名称服务器地址,该地址将服务器的完全限定主机名以及ns1ns2前缀与其IP地址相关联。这些应该如下:
  • ns1.box。example.com 你的服务器 ip
  • ns2.box。example.com 你的服务器 ip
  1. 将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帐户,本教程中使用的步骤和图像与您将找到的完全相同。如果您使用的是其他注册商,请致电他们的技术支持或浏览他们的知识库,以了解如何创建胶水记录。

登录后,找到您管理的域列表,然后单击目标域; 也就是说,您将用于设置邮件服务器的那个。

查找允许您修改其名称服务器地址信息的菜单项。在Namecheap仪表板上,该菜单项在“ 高级选项”菜单类别下称为“名称服务器注册 ” 。你应该得到一个如下所示的界面:

我们将为服务器设置两个粘合记录:

  • ns1.box.example.com
  • ns2.box.example.com

由于只提供了一个自定义字段,因此必须按顺序进行配置。如下图所示,键入出现数字1的ns1.box,然后在“IP地址”字段中键入Mail-in-a-Box服务器的IP地址(由数字2表示)。最后,单击Add Nameservers按钮添加记录(编号3)。

对其他记录重复此操作,确保使用ns2.box以及相同的域名和IP地址。

创建两个记录后,查找另一个菜单条目,其中显示将DNS传输到Webhost。你应该得到一个看起来像下图所示的窗口。选择自定义DNS选项,然后键入前两个字段:

  • ns1.box.example.com
  • ns2.box.example.com

单击以应用更改。

注意:您在此处键入的自定义DNS服务器应与您刚为Nameserver注册指定的服务器相同。

对DNS的更改需要一些时间来传播。这可能需要长达24小时,但测试域的更改只需要大约15分钟即可传播。

您可以通过访问whatsmydns.net来验证是否已传播DNS更改。搜索目标域的AMX记录。如果它们与您在此步骤中设置的匹配,则可以继续执行步骤4.否则,请再次执行此步骤或联系您的注册商以获取帮助。

第4步 - 安装Mail-in-a-Box

在此步骤中,您将运行脚本以在腾讯云CVM上安装Mail-in-a-Box。Mail-in-a-Box安装脚本会安装运行完整电子邮件服务器所需的每个软件包,因此您只需运行一个简单的命令并按照提示操作即可。

假设您仍然登录到服务器,请移至您的主目录:

cd ~

安装Mail-in-a-Box:

curl -s https://mailinabox.email/bootstrap.sh | sudo bash

该脚本将在下图中提示您介绍性消息。按ENTER

现在,系统将提示您创建第一个电子邮件地址,稍后您将使用该电子邮件地址登录系统。您可以在您的域中输入contact@example.com或其他电子邮件地址。接受或修改建议的电子邮件地址,然后按ENTER。之后,系统将提示您指定并确认电子邮件帐户的密码。

电子邮件设置完成后,系统将提示您确认服务器的主机名。它应该与您在步骤1中设置的匹配,在此示例中为box.example.com。按ENTER

接下来,系统会提示您选择您所在的国家/地区。使用箭头键向上或向下滚动选择它。在做出正确选择后按ENTER

在某些时候,你会得到这个提示:

Okay. 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界面管理员帐户。

安装成功完成后,您应该看到一些安装后的输出,其中包括:

mail 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的管理界面,并了解您的新电子邮件服务器。要访问管理界面,请使用安装后输出中提供的URL。这应该是:

  • https://your_server_ip/admin#

由于使用了HTTPS和自签名证书,因此您将在浏览器窗口中收到安全警告。您必须创建安全例外。如何完成取决于您正在使用的浏览器。

例如,如果您使用的是Firefox,则会出现一个浏览器窗口,其中包含下一张图片中显示的熟悉警告。

要接受证书,请单击“ 了解风险”按钮,然后单击“ 添加例外”按钮。

在下一个屏幕上,您可以验证证书指纹是否与安装后输出中的指纹匹配,然后单击“ 确认安全例外”按钮。

创建例外后,使用安装期间创建的电子邮件帐户的用户名和密码登录。请注意,用户名是完整的电子邮件地址,例如contact@example.com.

登录时,将启动系统状态检查。Mail-in-a-Box将检查服务器的所有方面,包括胶水记录,是否已正确配置。如果为true,您应该看到绿色海(和一些黄绿色)文本,除了与SSL证书有关的部分,它将是红色的。您可能还会看到有关重启的消息,您可以使用该消息。

注意:如果有关于配置域的错误DNS MX记录的红色输出,则步骤3未正确完成。重新访问该步骤或联系您的注册商技术支持团队寻求帮助。

如果您看到的唯一红色文本是因为SSL证书,恭喜!您现在已经使用Mail-in-a-Box成功设置了自己的邮件服务器。

如果要重新访问此部分(例如,在等待DNS传播之后),则它位于“ 系统”>“状态检查”下

第6步 - 访问Webmail和发送测试电子邮件

要访问Webmail界面,请单击顶部导航栏中的“ 邮件”>“说明 ”,然后访问该页面上提供的URL。它应该是这样的:

  • https://box.example.com/mail

使用您之前设置的电子邮件地址(包括@ example.com部分)和密码登录。

Mail-in-a-box使用Roundcube作为其网络邮件应用程序。尝试将测试电子邮件发送到外部电子邮件地址。然后,回复或发送新邮件到您的Mail-in-a-Box服务器管理的地址。

应该几乎立即收到外发电子邮件,但由于灰名单在Mail-in-a-Box服务器上生效,因此在收到的电子邮件显示之前大约需要15分钟。

如果未正确设置DNS,则无法使用此功能。

如果您既可以发送和接收测试消息,那么您现在正在运行自己的电子邮件服务器。恭喜!

(可选)步骤7 - 安装SSL证书

默认情况下,Mail-in-a-box会生成自己的自签名证书。如果要在生产环境中使用此服务器,我们强烈建议您安装官方SSL证书。

然后,从Mail-in-a-Box管理仪表板中,从顶部导航菜单中选择系统> SSL证书

从那里,使用相应域或子域旁边的“ 安装证书”按钮。将证书和任何链证书复制并粘贴到提供的文本字段中。最后单击Install按钮。

现在,您和您的用户应该能够在没有浏览器警告的情况下访问webmail和管理面板。

结论

您可以轻松地将域和其他电子邮件地址添加到Mail-in-a-Box服务器中。要在新域或现有域中添加新地址,只需在管理仪表板中的“ 邮件”>“用户”中添加另一个电子邮件帐户即可。如果电子邮件地址位于新域,则“邮箱”将自动为其添加适当的新设置。

如果您要添加新域名,请确保在您的域名注册商处将域名的名称服务器设置为ns1.box.example.comns2.box.example.com(我们之前为第一个域设置的名称)。您的腾讯云CVM将处理新域的所有DNS。

要查看当前的DNS设置,请访问系统>外部DNS。要添加自己的条目,请访问系统>自定义DNS

Mail-in-a-Box还提供超出本文范围的功能。它可以作为托管联系人和日历管理器由ownCloud提供。它还可以用于托管静态网站。

有关Mail-in-a-Box的更多信息,请访问项目主页

更多Ubuntu教程请前往腾讯云+社区学习更多知识。


参考文献:《How To Run Your Own Mail Server with Mail-in-a-Box on Ubuntu 14.04》

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏java架构师

Hadoop添加节点datanode

1.部署hadoop 和普通的datanode一样。安装jdk,ssh 2.修改host 和普通的datanode一样。添加namenode的ip 3.修改na...

29260
来自专栏计算机视觉

Automatic Photo Adjustment Using Deep Neural Networks 论文实验训练测试部分

安装双系统ubuntu和cuda和 dl_image_enhance安装部分教程,这个小哥哥写的很好 我写下安装cuda_convent_plus和训练测试...

352100
来自专栏Netkiller

软件架构师面试题(持续更新中)

软件架构师 插件的实现原理 插件有几部分组成 如何实现插件安装,卸载,启用,禁用? 安装,卸载,启用,禁用怎样实现不停机,不关闭服务的情况进行? 口述如何设计一...

37550
来自专栏马涛涛的专栏

Cookie与Session、LocalStorage与Sessionstorage 对比

SessionStorage 在用户关闭页面(准确的来说是会话(Session)结束)后就失效。其余的和localstorage一样

23120
来自专栏有刻

Nginx 原理解析和配置摘要

43690

Kafka体系结构:日志压缩

这篇文章是从我们介绍Kafka 体系结构的一系列文章中获得的启发,包括Kafka topic架构,Kafka生产者架构,Kafka消费者架构和Kafka生态系统...

32230
来自专栏撸码那些事

使用缓存的正确姿势

缓存是现在系统中必不可少的模块,并且已经成为了高并发高性能架构的一个关键组件。这篇博客我们来分析一下使用缓存的正确姿势。

52760
来自专栏撸码那些事

使用缓存的正确姿势

14870
来自专栏phodal

如何以“正确的姿势”阅读开源软件代码

之前想过写这篇文章,但是没有想到一个好的内容、好的突破点。在《GitHub 漫游指南》指南里,我们提到过《如何在GitHub“寻找灵感(fork)”》,但是并不...

216100

使用Logwatch查看系统日志

Logwatch是一个日志解析程序,可以分析并生成有关系统活动的每日报告。Logwatch不提供实时警报,而是创建系统运行状态的摘要,以便于查看。更高级的用户还...

10530

扫码关注云+社区

领取腾讯云代金券