如何在 Debian 10 上使用 ISPConfig 安装电子邮件服务器
本教程使用单个服务器设置作为示例。 ISPConfig 3.1 安装在 Debian 10.0, Buster 上(请参阅 ISPConfig Perfect Server 安装教程以了解实际的服务器安装),本指南的目的是向您展示安装初始服务器后为您自己的工作邮件系统设置工作邮件系统的步骤域名。在测试本教程期间,我将 ISPConfig 升级到 3.1.15。
需要什么
要将本教程成功用于正常工作的电子邮件服务器,您需要
- 安装 ISPConfig(和操作系统)的主机
- 我推荐 2 GB 内存和 4 GB 交换空间,对于邮件服务器应该足够了。
- 主机必须有 Internet 连接,端口 25 双向打开
- 主机有一个固定的IP地址
- 主机的 IP 地址必须有 A 记录(如果使用 IPv6,则为 AAAA)
- 您必须为主机的 DNS 名称服务创建 MX 记录
- 您必须获得与主机 FQDN 匹配的主机反向 DNS 名称服务 PTR 记录
内存要求用于 SPAM 过滤器。如果有 4 GB 交换空间以避免内存不足的情况,即使运行 SPAM 过滤器,您也可以使用 1 GB 内存。
打开端口
邮件服务器必须打开传入和传出端口 25。在您的主机上设置电子邮件服务器之前,请确保您的主机确实打开了该端口。
即使端口 25 未打开,也有一些方法可以使电子邮件正常工作,但它涉及通过另一台主机发送电子邮件,该主机确实打开了端口 25。在另一台主机上安装电子邮件服务器可能更有意义,就电子邮件而言,完全忘记第一个服务器。
DNS 名称服务条目
邮件服务器需要一个 FQDN,完全合格的域名(从维基百科阅读:FQDN)。在此示例中,域名为 taleman.ovh。为了显示邮件服务器主机名不必是邮件,我们使用 posti 作为主机名。所以 FQDN 是 posti.taleman.ovh。
该主机安装在服务提供商系统上,他们提供注册域、名称服务和反向名称服务。我用过那些。
IP 地址为 178.33.154.66。我做了以下事情:
- 注册了域名 taleman.ovh
- 将此 IP 地址作为 A 记录添加到名称为 posti.taleman.ovh 的 DNS 名称服务
- 为域 taleman.ovh 添加了值为 posti.taleman.ovh 的 MX 记录
- 为该 IP 地址添加反向名称服务 PTR 记录,指向 posti.taleman.ovh
MX 记录是为电子邮件域创建的。所以我为 taleman.ovh 创建了它,它指向 posti.taleman.ovh,即接收该域的电子邮件的电子邮件服务器。
反向名称服务
从名称服务教程中阅读有关反向名称服务的信息。在此示例中,反向名称服务必须返回 posti.taleman.ovh。
我的服务提供商在添加相应的 PTR 之前检查了 A 记录的存在,在我认为这就是添加失败的原因之前我遇到了一些问题。
测试名称服务
现在最好测试名称服务,因为如果名称服务设置不正确,将无法发送和接收电子邮件。如果您的工作站是 Windows 而不是 Linux 或 Unix,请使用命令 nslookup 而不是主机。
$ host taleman.ovh
taleman.ovh has address 188.165.143.5
taleman.ovh mail is handled by 10 posti.taleman.ovh.
上面的结果显示域名确实有一个关联的 IP 号(在这种情况下与电子邮件服务器的 IP 号不同,但不影响电子邮件),并且有一个 MX 记录指向posti.taleman.ovh。 “邮件处理者”部分来自 MX 记录。如果要在 posti.taleman.ovh 接收发送到 @taleman.ovh 地址的电子邮件,则需要此 MX 记录。
然后检查邮件服务器 FQDN(在本例中为 posti.taleman.fi)的名称服务条目是否为 A 记录并指向正确的 IP 号码。
$ dig posti.taleman.ovh |grep "ANSWER SECTION" --after-context=3
;; ANSWER SECTION:
posti.taleman.ovh. 3600 IN A 178.33.154.66
;; Query time: 56 msec
最后检查反向名称服务将 IP 号码解析回邮件服务器的 FQDN。
$ host 178.33.154.66
66.154.33.178.in-addr.arpa domain name pointer posti.taleman.ovh.
除了命令 host 和 dig,您还可以使用测试名称服务的网页。我知道 MXToolbox。
如果您无法使上述测试成功,您可以尝试此设置名称服务教程。
安装操作系统
我使用 Debian 版本 10 Buster,所以我遵循本教程:
用您的值替换 IP 号、主机名和域名。
由于我用英语编写本教程,因此我选择英语作为语言,但芬兰作为国家/地区,United_Kingdom en_GB.UTF-8 作为区域设置。
:/tmp# cat /etc/debian_version 10.0
:~# cat /etc/timezone
Europe/Helsinki
验证您是否已正确设置主机名。如果主机名错误,邮件系统配置 ISPConfig 将无法工作。
:~#
安装 ISPConfig
我选择安装 Apache 作为 Web 服务器,因此对于 Debian Buster,我遵循这个完美的服务器指南。
我在主机上安装了 openssh-server 并使用 ssh 密钥设置 root 登录,所以我可以直接以 root 身份通过 ssh 连接到主机。使用 SSH 安全无密码登录。
:/tmp# free -h

比起 nano,我更喜欢 Emacs 风格的编辑器,所以我现在安装 jed 来让编辑文件更愉快。
我在操作系统安装后正确设置了 /etc/host 和 /etc/hostname,所以我只是按照 Perfect Server Guide 验证它们是正确的。注意主机名和 FQDN,如果弄乱了它们,您最终会发现您的电子邮件服务器无法正常工作。损坏可以修复,但从一开始就更容易纠正。
:/tmp# hostname -f
posti.taleman.ovh
其余的,我只是按照完美服务器指南。请注意,您主要可以将指南中的命令剪切并粘贴到命令行。
我没有安装 Mailman,我不打算在此主机上使用 Mailman。同样,我省略了安装 BIND DNS 服务器、Webalizer、AWStats。我确实安装了 Roundcube Webmail,因为这个主机变成了一个电子邮件服务器。
在第 18 章(安装 PHPMyAdmin 数据库管理工具)中,我使用了命令
/usr/bin/apg -m 32 -x 32
生成 32 个字符长的河豚秘密。
使用系统
创建电子邮件域和邮箱
现在我以管理员身份登录到 ISPConfig 并
- 添加新客户
- 添加新域(电子邮件域!),并填写表格
- 添加新邮箱
按图像中编号的顺序单击按钮,创建 DKIM 密钥并进行录制。您可以在维基百科中阅读有关 DKIM 的信息。

图 1:创建邮件域
然后等待两分钟或直到ISPConfig 面板上部带有数字的红球消失。
作为第一个测试,使用上面创建的邮箱登录到 Roundcube Webmail,并向同一地址发送电子邮件。 ISPConfig 向每个创建的邮箱发送一条欢迎消息,因此那里应该已经有一条消息。使用撰写按钮并编写一条简短的测试消息。

图 2:Roundcube 网络邮件

图 3:从 Roundcube 发送
该消息应该很快就会出现在邮箱中。
然后测试将电子邮件发送到您拥有的其他邮箱,并可以检查邮件是否到达那里。下一个测试你可以从其他地方发送到上面创建的邮箱。
请注意,如果您为邮箱启用了灰名单,则从您的服务器外部发送的电子邮件不会立即到达邮箱。但是,您应该立即在邮件日志中看到尝试传递的条目,以便您看到邮件可以到达您的服务器。文件 /var/log/mail.log 中的灰名单条目如下所示:
Aug 29 19:08:42 posti postfix/smtpd[16911]: NOQUEUE: reject:
RCPT from mta-out1.inet.fi[62.71.2.194]: 450 4.2.0
<>: Recipient address rejected: Greylisted,
see http://postgrey.schweikert.ch/help/taleman.ovh.html;
from=<****@*****.***> to=<> proto=ESMTP
helo=<******.****.***>
您可以像这样在终端窗口中监视邮件日志,例如:
tail -f /var/log/mail.log
或者使用这些命令,如果您只对灰名单条目感兴趣:
tail -f /var/log/mail.log | grep Greylisted
或者
grep Greylisted /var/log/mail.log
灰名单只会延迟从同一发件人到同一收件人的第一封电子邮件。收到第一封电子邮件后,后续电子邮件将立即送达。
就我而言,第一次尝试时一切正常。这说明ISPConfig完美服务器指南确实有效。
连接电子邮件客户端
使用 Thunderbird 作为示例邮件客户端。其他邮件客户端应用程序以类似的方式工作。
ISPConfig 使帐户名成为电子邮件地址。

图 4:Thunderbird 帐户设置

图 5:Thunderbird 服务器设置
连接安全性 STARTTLS 意味着连接开始不受保护,然后如果双方都支持加密则切换到加密。 SSL/TSL 意味着会话从一开始就被加密。 SSL/TSL 可能稍微更安全一些,所以请尝试您的客户端是否使用它。

图 6:Thunderbird 传出服务器设置
使用防晒指数
从维基百科阅读有关发件人政策框架的信息。最初 SPF 代表 Sender Permitted From,这很容易记住它的意思。阅读 SPF 后,您可以自己创建记录,检查您的名称服务提供商是否可以生成 SPF 记录或使用 Internet 搜索引擎
SPF wizard
查找为您创建 SPF 名称服务记录的网站。然后将记录剪切并粘贴到您的名称服务。添加 TXT 记录,或者在某些 DNS 系统上添加 SPF 记录。
检查 SPF 在名称服务中的样子,就像这样
$ dig taleman.ovh -t TXT | grep spf
taleman.ovh. 3000 IN TXT "v=spf1 mx ~all"
或者像这样:
$ dig +short taleman.ovh TXT
"v=spf1 mx ~all"
"1|www.taleman.ovh"
使用 DKIM
从维基百科阅读有关域名密钥识别邮件的信息。 ISPConfig 在创建电子邮件域时为您创建了 DKIM 密钥(如果您记得勾选 DKIM 框)。将作为 TXT 记录的公共密钥的 DNS 记录剪切并粘贴到您的名称服务中。您的名称服务提供商可能会提供一种工具来简化创建 DKIM 记录的过程。对 DKIM 私钥保密。
检查 DKIM 在名称服务中的样子,如下所示:
$ host -t txt default._domainkey.taleman.ovh.
default._domainkey.taleman.ovh descriptive text "v=DKIM1;h=sha256;s=*;p=MIIB(I cut long string shorter)0rp" "sTGLXyK(cut shorter)B;t=s;"
如果是 ISPConfig 创建了 DKIM 密钥,私钥将被复制到 amavis 设置中的正确位置。
有一个网站 mail-tester.com 可用于检查 SPF 和 DKIM 是否正常工作。转到该网站,它会提供一个电子邮件地址,您可以从您的服务器向该网站发送一封电子邮件。然后稍等片刻,再次检查该网站。
创建证书
ISPConfig 可以创建自签名证书,这些证书是在 ISPConfig 安装期间创建的,除非您选择不创建。即使您创建了这些自签名证书,也最好创建浏览器、电子邮件程序和其他电子邮件服务器信任的适当证书。
有一个很好的教程:Securing ISPConfig with a free Lets Encrypt SSL Certificate
按照该教程,我注意到创建的网站显示了 Debian 默认网页,直到我为该网站创建了 LE 证书。 ISPConfig Panel 也很不稳定,我相信是因为它有自签名证书,现在这个新证书或根本没有证书。在浏览器中刷新页面解决了这个问题。
设置好证书后,在浏览器中输入服务器的https地址。使用其他鼠标按钮单击浏览器地址栏左侧的图标可显示有关证书的信息。
转到 ISPConfig 面板系统选项卡、界面主配置和邮件选项卡。有设置
Use SSL/TLS encrypted connection for SMTP
到 SSL。
可以使用网站上的工具进一步测试证书,使用 Internet 搜索引擎
ssl testing
作为搜索词。这些工具通常测试网站,在测试电子邮件服务器拥有的证书时,搜索
ssl testing mail server
ISPConfig Roundcube 插件
这些插件对网络邮件用户很有用。例如,它们允许在 Roundcube 中更改电子邮件密码。其他一些设置也可以在 Roundcube 中修改。它们都可以在 ISPConfig 面板中修改,但一些电子邮件用户可能不想使用该面板。
我在 Debian 9 上使用教程 ISPConfig 3 Roundcube 插件安装了 ISPConfig Rouncube 插件。教程完全适用于 Debian 10 Buster,除了现在 ispconfig3_account/config/config.inc.php 多了一行:
$config['soap_validate_cert'] = true;
这可以保持值为 true,因为证书已在本教程的前一章中正确设置和测试。但是,如果主机没有有效证书,请将此设置更改为 false。
我有一个问题。帐户部分中的某些项目弹出错误消息
An error occurred.
Soap Error: The login is not allowed from <host ip-number>
我通过勾选远程访问并为我按照教程创建的 rcmail-remote 用户编写 posti.taleman.ovh 来解决这个问题。教程关于不需要勾选“远程访问”似乎是错误的。现在在我看来,单服务器设置和带有单独电子邮件服务器的 ISPConfig 多服务器设置都需要它。
进一步使用
现在您可以创建另一个电子邮件域。请记住为该域创建 MX 记录,并将其指向您的电子邮件服务器。您可以为您创建的所有电子邮件域使用相同的电子邮件服务器。这是通常的做法,因为为每个电子邮件域创建一个单独的电子邮件服务器是相当浪费的。
故障排除
按照本教程,我新设置的电子邮件服务器可以正常工作。如果您的方法不起作用,请检查您是否遵循了本教程并且没有跳过某些步骤。
阅读论坛表明,导致电子邮件服务器无法正常工作的常见方法是主机名和主机名 -f 的错误设置和/或文件 /etc/postfix/main.cf 中的错误。
如果您怀疑 DNS 名称服务有问题,请使用 ISPConfig -tutorial 检查 DNS 问题。有检查 DNS 的网站工具,如 intodns.com、dnschecker.com、mxtoolbox.com。
如果未收到或未发送电子邮件,则执行这些功能的是 postfix,并将它们记录到 /var/log/mail.log。也一样
tail -f /var/log/mail.log | grep postfix to see what happens when mail is being received or sent.
如果您在连接电子邮件客户端(例如 Thunderbird)时遇到问题,请使用此命令查看会发生什么:
tail -f /var/log/mail.log | grep dovecot
如果某封电子邮件有问题,您可以使用该电子邮件的 ID 查找邮件日志条目。例如:
Sep 23 14:19:34 posti postfix/smtps/smtpd[10260]: A9F2880C76:
client=dsl-tkubng21-58c1ce-191.dhcp.inet.fi[99.99.99.99],
sasl_method=PLAIN,
该电子邮件的 ID 是 A9F2880C76。您可以使用以下方法找到该电子邮件的日志条目
# grep A9F2880C76 /var/log/mail.log
命令 mailq 显示后缀延迟队列中的电子邮件。即,那些尚未送达的电子邮件。那里有一些最近的条目是正常的,电子邮件不能总是立即发送。您可以使用队列 ID 查看这些电子邮件的内容,如下所示:
# postcat /var/spool/postfix/deferred/A/A9F2880C76
Howtoforge 有 ISPConfig 论坛,在那里寻求建议。