使用Modoboa在Debian 9 Stretch上快速设置邮件服务器

从头开始在Linux上设置邮件服务器是一件令人头疼的事。本教程将向您展示如何使用Modoboa在Debian 9 Stretch上快速设置自己的电子邮件服务器,从而节省了很多时间和头痛。免费和开源的邮件托管和管理平台,旨在与Postfix SMTP服务器和Dovecot IMAP / POP3服务器配合使用。

Modoboa用Python编写,根据ISC许可条款发布。在撰写本文时,最新版本为v1.14.0,于2019年7月5日发布。Modoboa的主要功能如下:

  • 默认情况下,Modoboa使用Nginx Web服务器为Webmail客户端和基于Web的管理面板提供服务。
  • 与Postfix和Dovecot兼容。
  • 支持MySQL / MariaDB和PostgreSQL数据库。
  • 轻松地 创建无限的邮箱和无限的邮件域 在基于Web的管理面板中。
  • 在基于Web的管理面板中轻松创建电子邮件别名。
  • Webmail客户端提供了易于使用的邮件过滤器,可帮助您将邮件组织到不同的文件夹中。
  • 它可以通过监视电子邮件黑名单并生成DMARC报告来帮助保护您的域声誉,因此您的电子邮件更有机会进入收件箱而不是垃圾邮件文件夹。
  • 包括amavis前端,可阻止垃圾邮件并检测电子邮件中的病毒。
  • 日历和通讯录。
  • 与Let's Encrypt集成以获得有效的SSL / TLS证书。
  • 包括AutoMX,使最终用户可以轻松地在台式机或移动邮件客户端中配置邮件帐户。

注意:Modoboa安装程序当前与Debian 10 Buster不兼容。

步骤1:选择合适的托管服务提供商并购买域名

要使用Modoboa设置完整的电子邮件服务器,您需要一台至少具有2GB RAM的服务器,因为安装后,该服务器将使用1GB以上的RAM。本教程在每月10美元的Vultr VPS(虚拟专用服务器)上完成)。我建议使用Vultr,因为它允许您通过端口25发送电子邮件,因此您可以发送无限制的电子邮件(交易电子邮件和新闻通讯),而无需在SMTP中继上花钱。

其他VPS提供商(例如DigitalOcean会阻塞端口25)。DigitalOcean不会取消阻塞端口25,因此您将需要设置SMTP中继来绕过阻塞,这可能会增加您的费用。

在Vultr上创建一个帐户,然后在Vultr Web控制面板中创建一个服务器实例并在其上安装Debian9。Vultr中有4种类型的服务器。在这里,我们将选择$ 10 /月的计划 云计算,其费用低于其他三种类型,足以运行Modoboa。

建议您在全新安装的Debian 9 OS上遵循以下说明。

您还需要一个域名。我从NameCheap注册了我的域名,因为价格低廉,并且终身免费提供whois隐私保护。

另外,请确保您的服务器IP地址未在任何电子邮件黑名单中列出。您可以转到mxtoolbox.com和dnsbl.info检查服务器IP地址。如果该文件位于黑名单中,则可以在Vultr和由于Vultr使用按小时计费的模式,因此不会按月计费,而是按使用的小时数计费,这使您随时可以删除服务器实例。

步骤2:在DNS中创建MX记录和A记录

该示例记录了处理特定域名电子邮件的主机。 linuxbabe.commail.linuxbabe.com如果拥有Gmail帐户的人向发送电子邮件 (email protected),则Gmail服务器将查询linuxbabe.com的MX记录。 mail.linuxbabe.com 负责接受电子邮件,然后查询的A记录 mail.linuxbabe.com 获取IP地址,从而可以发送电子邮件。

您可以登录到域名注册商的网站(例如NameCheap)来创建DNS记录。

在您的DNS管理器中,为您的域名创建MX记录。 @ 在“名称”字段中代表主要域名,然后输入 mail.your-domain.com 在值字段中。

Modoboa Web界面

注意:MX记录的主机名不能是其他名称的别名。此外,强烈建议您使用主机名,而不要使用裸IP地址记录MX记录。

您的DNS管理员可能会要求您输入首选项值(即优先级值)。它可以是0到65,356之间的任何数字。小数字的优先级高于大数字。您可以为电子邮件服务器输入0,也可以接受默认值。

创建MX记录后,您还需要为 mail.your-domain.com ,以便可以将其解析为IP地址。如果您的服务器使用IPv6地址,请确保添加AAAA记录。

如果使用Cloudflare DNS服务,则在为邮件服务器创建A记录时不应启用CDN功能。Cloudflare不支持SMTP代理。

步骤3:使用Modoboa安装程序在Debian 9 Stretch上设置邮件服务器

通过SSH登录到服务器,然后运行以下命令以更新现有软件包。

sudo apt update

sudo apt upgrade

Debian 9默认带有Exim SMTP服务器,由于Modoboa将使用Postfix SMTP服务器,因此我们需要删除Exim。

sudo apt remove exim4 exim4-base exim4-daemon-light

从Github下载modoboa安装程序。

sudo apt install git

git clone https://github.com/modoboa/modoboa-installer

Modoboa用Python编写。运行以下命令以安装必需的Python软件。

sudo apt-get install python-virtualenv python-pip

然后导航到 modoboa-installer 目录并创建配置文件。 example.com 用您自己的域名。

cd modoboa-installer

sudo ./run.py --stop-after-configfile-check example.com

使用Modoboa在Debian 9 Stretch上快速设置邮件服务器 1

编辑配置文件 installer.cfg 使用命令行文本编辑器(例如nano)。

sudo nano installer.cfg

要从“加密”中获取邮件服务器的有效TLS证书,请在 (certificate) 部分,将type的值从 self-signedletsencrypt

type = letsencrypt

并从更改电子邮件地址 (email protected) 到您的真实电子邮件地址,该地址将用于帐户恢复和重要通知。

modoboa安装程序

默认情况下,Modoboa安装程序将安装PostgreSQL数据库服务器,如配置文件中的以下几行所示。

(database)
engine = postgres
host = 127.0.0.1
install = true

如果您想使用MariaDB数据库服务器,请从以下位置更改引擎 postgresmysql(Modoboa将安装MariaDB而不是MySQL。)

modoboa mariadb数据库

要在Nano文本编辑器中保存文件,请按 Ctrl+O,然后按Enter确认。 Ctrl+X 退出。现在运行以下命令开始安装。

sudo ./run.py --interactive example.com

安装modoboa debian 9 Stretch

安装过程可能会花费一些时间。在我的Vultr服务器上花费了10分钟。如果在安装过程中遇到错误,则可以使用 --debug 选项以查看更详细的输出。

sudo ./run.py --interactive --debug example.com

Modoboa完成安装后,您可以使用用户名登录管理面板 admin 和密码 password

modoboa-邮件服务器-debian 9

登录后,您应该转到 Admin -> Settings -> Profile 更改密码。

modoboa安装

步骤4:在Modoboa管理面板中添加邮箱

请注意,默认 admin 帐户不是电子邮件帐户。只能用于管理邮件服务器。要发送电子邮件,您需要在邮箱中添加 admin 帐户。

前往 Domains 标签并点击 Add 按钮添加新域。

Modoboa评论

然后是“名称”字段中的主要域名。强烈建议您启用DKIM签名,这有助于提高域名信誉。 Key selector 提起诉讼,您可以输入一个随机词,例如 modoboa。选择2048作为密钥长度。

在modoboa中添加域名

SMTP协议要求邮件服务器应具有(受电子邮件保护的)地址。

modoboa邮件管理员帐户

单击提交按钮,您的域名将添加到Modoboa中。

要添加电子邮件地址,请转到 Domains 标签,然后单击您的域名。

在modoboa中添加邮箱

然后单击邮箱。

在modoboa中添加电子邮件地址

请点击 Add 按钮并选择 Account

modoboa别名

然后选择 Simple user 作为角色。在“用户名”字段中输入电子邮件地址,然后输入密码。

快速设置电子邮件服务器modoboa

在下一个屏幕中,您可以选择为此电子邮件地址创建别名。

在modoboa中创建别名

单击提交按钮后,将创建电子邮件地址。

步骤5:发送测试电子邮件

要登录网络邮件,您需要先注销管理员帐户,然后输入用户凭据。

modoboa登录

登录到Modoboa网络邮件后,您可以从私人电子邮件服务器向您的其他电子邮件地址发送测试电子邮件,反之亦然。

modoboa网络邮件

入站电子邮件将延迟几分钟,因为默认情况下,Modoboa启用了灰名单功能,该功能会告诉其他发送SMTP服务器在几分钟后重试。这对于阻止垃圾邮件很有用。 /var/log/mail.log 表示已启用灰名单。

postfix/postscreen(20995): NOQUEUE: reject: RCPT from (34.209.113.130):36980: 450 4.3.2 Service currently unavailable;

步骤6:为您的Vultr服务器解除阻塞端口25

您的ISP或托管服务提供商不会阻止与服务器端口25的传入连接,这意味着您可以接收来自其他邮件服务器的电子邮件。但是,许多ISP /托管服务提供商可能会阻止与其他邮件服务器的端口25的传出连接,这意味着您无法发送电子邮件。

如果您的电子邮件没有到达其他电子邮件地址(如Gmail),请在邮件服务器上运行以下命令,以检查端口25是否被阻止。

telnet gmail-smtp-in.l.google.com 25

如果未阻止,则您会看到类似以下的消息,表明已成功建立连接。(提示:输入 quit 然后按Enter键以关闭连接。)

Trying 74.125.68.26...
Connected to gmail-smtp-in.l.google.com.
Escape character is '^)'.
220 mx.google.com ESMTP y22si1641751pll.208 - gsmtp

如果端口25被阻塞,您将看到类似以下内容:

Trying 2607:f8b0:400e:c06::1a...
Trying 74.125.195.27...
telnet: Unable to connect to remote host: Connection timed out

如果您的Vultr服务器上的输出连接被阻止了端口25,那么您应该在Vultr帐户中打开支持凭单。它们将为您取消阻止端口25。这就是我对支持人员所说的话。

Hi

I'm setting up a mail server. Looks like port 25 is blocked on this server. Please open it for me.

Thanks :)

支持人员很快答复:

Hello XIAO GUO AN,

Thank you for your SMTP unblock request!

In order to combat spam and spam-like activities, we will need to review some additional information prior to removing the SMTP filter.

Please reply to this ticket with the following information:

1. The business name and organization URL(s) under which you offer services.
2. Describe, in as much detail as possible, the nature of the emails you intend to send.
3. The volume of email that you plan to deliver on a daily/monthly basis.

We need to know this in order to make an informed decision regarding your account settings and resource limits to ensure the integrity of our network/systems/online reputation.

John Doe
www.vultr.com

因此,您只需要回答3个简单的问题。您可以将以下内容用作模板。

Hi

My business name is LinuxBabe and website is https://www.linuxbabe.com,

I'm setting up this mail server for my website, so I would be able to send registration emails and notifications emails to my users.

The volume of outgoing email is below 50 emails per day.

Thanks.

然后这些东西回答:

Hello,

Thank you for the information provided!

We have removed the default SMTP block on your account. Please restart any active instances via https://my.vultr.com for the change to take effect (restarting via the server itself _will_not_ work).

Also, keep in mind that marketing and bulk email is restricted in our platform. For reference, our ANTI-SPAM policy is listed here: https://www.vultr.com/legal/antispam_policy.php

If you have any additional questions our team is happy to assist you further. Thank you for choosing Vultr!

Kind Regards,
Customer Support

一旦他们删除了您帐户上的SMTP阻止,您就需要通过Vultr控制面板重新启动服务器,以使更改生效。请注意,您可以使用Vultr服务器,以便在接收者订阅时发送新闻通讯,但是您可以不允许发送垃圾邮件。

如果您的ISP或托管提供商(例如DigitalOcean)拒绝取消阻止端口25,那么您将无法直接发送电子邮件,则还需要设置SMTP中继来解决此问题。

步骤7:在计算机或移动设备上使用邮件客户端

启动您的桌面电子邮件客户端(例如Mozilla Thunderbird)并添加一个邮件帐户。

  • 在“传入服务器”部分中,选择“ IMAP协议”,输入 mail.your-domain.com 作为服务器名称,选择端口143和STARTTLS。 normal password 作为身份验证方法。
  • 在“传出”部分中,选择“ SMTP协议”,输入 mail.your-domain.com 作为服务器名称,选择端口587和STARTTLS。 normal password 作为身份验证方法。

使用Modoboa在Debian 9 Stretch上快速设置邮件服务器 2

您还可以将端口993上的IMAP与SSL / TLS加密一起使用。

步骤8:提高电子邮件服务器的声誉

为了防止您的电子邮件被标记为垃圾邮件,您应该设置 PTRSPFDKIMDMARC 记录。

PTR记录

指针记录或PTR记录将IP地址映射到FQDN(完全限定域名),它与A记录对应,用于反向DNS查找,这有助于阻止垃圾邮件发送者。许多SMTP服务器拒绝电子邮件找不到发送服务器的PTR记录。

要检查PTR记录中的IP地址,请运行以下命令:

dig -x IP-address +short

host IP-address

由于您是从托管服务提供商或ISP获取IP地址,而不是从域名注册商获取IP地址,因此您必须在托管服务提供商的控制面板中设置IP的PTR记录,或询问您的ISP。其值应为邮件服务器的主机名: mail.your-domain.com如果您的服务器使用IPv6地址,请确保也为您的IPv6地址添加一个PTR记录。

要编辑Vultr服务器的反向DNS记录,请登录Vultr控制面板,选择服务器,然后选择 settings 选项卡,然后可以编辑IPv4和IPv6地址的反向DNS记录。

modoboa邮件服务器PTR记录

SPF记录

SPF (发件人策略框架)记录指定允许哪些主机或IP地址代表域发送电子邮件。应仅允许您自己的电子邮件服务器或ISP的服务器为您的域发送电子邮件。在DNS管理界面中,创建一个新的TXT记录如下。

modoboa spf记录

说明:

  • TXT 表示这是TXT记录。
  • 进入 @ 在名称字段中代表主要域名。
  • v = spf1 表示这是SPF记录,版本为SPF1。
  • MX 表示MX记录中列出的所有主机都被允许为您的域发送电子邮件,而所有其他主机均被禁止。
  • 〜全部 表示来自您域的电子邮件应仅来自SPF记录中指定的主机。来自其他主机的电子邮件将被标记为伪造。

要检查您的SPF记录是否传播到公共Internet,可以在Linux计算机上使用dig实用程序,如下所示:

dig your-domain.com txt

txt 选项告诉 dig 我们只想查询TXT记录。

DKIM记录

DKIM (DomainKeys Identified Mail)使用私钥对从您的域发送的电子邮件进行数字签名。接收SMTP服务器使用在DNS DKIM记录中发布的公钥来验证签名。

当我们之前在Moboboa管理面板中添加域名时,我们启用了DKIM签名,因此签名部分得到了照顾。唯一要做的就是在DNS管理器中创建DKIM记录。首先转到Modoboa管理面板 admin 用户并选择您的域名。在DNS部分中,点击 Show key 按钮。

Modoboa Dkim签名

公钥将被公开,有两种格式,我们只需要Bind / named格式。

Modoboa Dkim公钥

转到您的DNS管理员,创建TXT记录,输入 modoboa._domainkey (回想一下,在管理面板中添加域名时,我们使用modoboa作为选择器。)复制括号中的所有内容并粘贴到value字段中。删除所有双引号。您的DNS管理器可能会要求您删除其他内容无效字符,例如回车符。

Modoboa DKIM格式

对于有兴趣的人,Modoboa使用OpenDKIM为您的域密钥生成私钥并验证入站电子邮件的签名。

DMARC记录

DMARC代表基于域的邮件身份验证,报告和一致性。DMARC可以帮助接收电子邮件服务器来识别合法电子邮件,并防止电子邮件欺骗使用您的域名。

要创建DMARC记录,请转到您的DNS管理器并添加一个 TXT 在名称字段中,输入 _dmarc在值字段中,输入以下内容:

v=DMARC1; p=none; pct=100; rua=mailto:(email protected)

创建dmarc记录txt

上面的DMARC记录是一个安全的起点。要查看DMARC的完整说明,请查看以下文章。

  • 创建DMARC记录以保护您的域名免遭电子邮件欺骗

步骤9:测试电子邮件分数和位置

创建PTR,SPF,DKIM记录后,转到 https://www.mail-tester.com您将看到一个唯一的电子邮件地址。从您的域向该地址发送一封电子邮件,然后检查您的分数。如您所见,我的分数很理想。

提高电子邮件服务器的信誉

Mail-tester.com只能向您显示发件人分数。另一项名为GlockApps的服务可让您检查电子邮件是放置在收件人的收件箱或垃圾邮件文件夹中还是被彻底拒绝,它支持许多受欢迎的电子邮件提供商,例如Gmail,Outlook ,Hotmail,YahooMail,iCloud邮件等

glockapps电子邮件放置测试

自动续订让我们加密TLS证书

Modoboa将最新版本的Let's Encrypt客户端(certbot)安装为 /opt/certbot-auto让我们的TLS加密证书有效期为90天。要自动续订该证书,请编辑root用户的crontab文件。

sudo crontab -e

在此文件的末尾添加以下行。

@daily /opt/certbot-auto renew -q && systemctl reload nginx postfix dovecot

这告诉Cron每天运行certbot renew命令。如果证书还有30天,则certbot将对其进行更新。有必要重新加载Nginx Web服务器,Postfix SMTP服务器和Dovecot IMAP服务器,以便他们可以选择新证书。

启用S​​MTPS端口465

如果要使用Microsoft Outlook客户端,则需要在Postfix SMTP服务器中启用SMTPS端口465。

(可选)设置自动发现和自动配置以自动执行邮件客户端配置

通过自动发现和自动配置,可以轻松配置台式机或移动邮件客户端。最终用户只需输入名称,电子邮件地址和密码即可设置其邮件帐户,而无需输入SMTP或IMAP服务器详细信息。受Microsoft Outlook邮件客户端支持,并且Mozilla Thunderbird邮件客户端支持AutoConfig。

Modoboa使用AutoMX在邮件服务器上实现此功能。我们现在要做的就是在DNS中添加CNAME记录。在您的DNS管理器中,创建两个CNAME记录。

autoconfig.yourdomain.com       CNAME         mail.yourdomain.com
autodiscover.yourdomain.com     CNAME         mail.yourdomain.com

转到 Domains 标签,如果您的 autoconfig 呈绿色,表示您的CNAME记录正确(Modoboa每30分钟检查一次邮件服务器的DNS记录,因此您可能需要等待一段时间才能使自动配置变为绿色。)

Modoboa Automx

将CNAME记录传播到Internet后,在Microsoft Outlook和Mozilla Thunderbird中设置邮件帐户时,您无需输入SMTP或IMAP服务器详细信息。

在Modoboa中托管多个域

请参阅以下文章:

  • 如何在Modoboa邮件服务器中托管多个域

总结

我希望本教程可以帮助您在使用Modoboa的Debian 9 Stretch上设置邮件服务器。与往常一样,如果您发现此帖子很有用,请订阅我们的免费时事通讯以获取更多提示和技巧。