-
如何使用Nginx在iRedMail中托管多个邮件域
本教程将向您展示如何使用iRedMail设置多个电子邮件域(虚拟主机),这是一种设置您自己的电子邮件服务器的简单方法。 先决条件 为了学习本教程,假设 您已经用一个域设置了一个iRedMail服务器。 您使用的是iRedMail 0.9.8或更高版本,它使用Nginx来服务webmail。版本0.9.8中删除了对Apache web服务器的支持。 你需要做什么 如果你想托管多个邮件域,那么你需要 在iRedMail管理面板中添加新的邮件域和用户。 为新邮件域创建MX、A和SPF记录。 为其他域设置DKIM签名 为新域设置DMARC记录。 为多个域设置RoundCube Webmail、Postfix和Dovecot 反向DNS检查用于检查发送方的IP地址是否与HELO主机名匹配。添加新邮件域时,无需添加其他PTR记录。 步骤1:在iRedMail管理面板中添加其他域 使用邮局主管帐户登录iRedMail管理面板。(https://mail.your-domain.com/iredadmin)然后在添加选项卡中添加域。 接下来,在新域下添加一个用户。 步骤2:为新邮件域创建MX、A和SPF记录 在DNS管理器中,为新域添加MX记录,如下所示。 Record Type Name Value MX @ mail.domain2.com A记录指向邮件服务器的IP地址。 Record Type Name Value A mail IP-address-of-mail-server 如果您的服务器使用IPv6地址,请确保添加AAAA记录。 然后创建SPF记录,以允许MX主机为新邮件域发送电子邮件。 Record Type Name Value TXT @ v=spf1 mx ~all 步骤3:为新域设置DKIM签名 你需要告诉amavisd为新邮件域的每封发送邮件签名。编辑/etc/amavis/conf.d/50-user文件。 sudo nano /etc/amavis/conf.d/50-user 找到下面一行, dkim_key('domain1.com', 'dkim', '/var/lib/dkim/domain1.com.pem'); 添加另一行以指定第二个域的私钥的位置。 dkim_key('domain2.com', 'dkim', '/var/lib/dkim/domain2.com.pem'); 在@dkim_signature_options_bysender_maps部分,添加以下行。 "domain2.com" => { d => "domain2.com", a => 'rsa-sha256', ttl => 10*24*3600 }, 保存并关闭文件。然后为第二个域生成私钥。 sudo amavisd-new genrsa /var/lib/dkim/domain2.com.pem 2048 重启阿玛维斯。 sudo systemctl restart amavis 显示公共密钥。 sudo amavisd-new showkeys 将显示所有公钥。我们需要第二个域的公钥,它在括号中。 在DNS管理器中,为第二个域创建一个TXT记录。进入dkim_名称字段中的domainkey。复制括号中的所有内容并粘贴到值字段中。删除所有双引号。(您可以先将其粘贴到文本编辑器中,删除所有双引号,然后将其复制到DNS管理器。DNS管理器可能会要求您删除其他无效字符,例如回车符。) 保存更改后。用这个命令检查TXT记录。 dig TXT dkim._domainkey.domain2.com 现在,您可以运行以下命令来测试您的DKIM DNS记录是否正确。 sudo amavisd-new testkeys 如果DNS记录正确,测试将通过。 TESTING#1 domain1.com: dkim._domainkey.domain1.com => pass TESTING#2 domain2.com: dkim._domainkey.domain2.com => pass 请注意,您的DKIM记录可能需要一些时间才能传播到Internet。根据您使用的域注册器,您的DNS记录可能会立即传播,或者传播可能需要24小时。你可以去https://www.dmarcanalyzer.com/dkim/dkim-check/,输入dkim作为选择器,并输入您的域名以检查dkim记录传播。 步骤4:为新域设置DMARC记录 要创建DMARC记录,请转到DNS管理器并添加TXT记录。在名称字段中,输入_dmarc。在“值”字段中,输入以下内容: v=DMARC1; p=none; pct=100; rua=mailto:[email protected] 上述DMARC记录是一个安全的起点。要查看DMARC的完整解释,请查看以下文章。 创建DMARC记录以保护您的域名免受电子邮件欺骗 第5步:为多个域设置RoundCube、Postfix和Dovecot 让第一个域的用户使用邮件是有道理的。域1。com和第二个域的用户使用邮件。域2。com使用RoundCube webmail时。 将工作目录更改为/etc/nginx/。 cd /etc/nginx/ 在/etc/nginx/sites enabled/目录中为第二个域创建一个空白服务器块文件。 sudo touch sites-enabled/mail.domain2.com.conf 将默认HTTP站点配置复制到该文件。 cat sites-enabled/00-default.conf | sudo tee -a sites-enabled/mail.domain2.com.conf 将默认SSL站点配置复制到该文件。 cat sites-enabled/00-default-ssl.conf | sudo tee -a sites-enabled/mail.domain2.com.conf 编辑虚拟主机文件。 sudo nano sites-enabled/mail.domain2.com.conf 找到下面这行。 server_name _; 我们需要将服务器名称更改为mail。域2。com,因为稍后我们需要使用Certbot生成新的tls证书。 server_name mail.domain2.com; 服务器名称有两个实例,您需要同时更改这两个实例。保存并关闭文件。然后测试Nginx配置。 sudo nginx -t 如果测试成功,请重新加载Nginx以使更改生效。 sudo systemctl reload nginx 现在,使用Certbot webroot插件为所有邮件域获取TLS证书,这样您将拥有一个包含多个域名的TLS证书,邮件客户端将不会抛出安全警告。 sudo certbot certonly --webroot --agree-tos -d mail.domain1.com,mail.domain2.com --cert-name mail.domain1.com --email your-email-address -w /var/www/html 请注意,在上面的命令中,我们使用第一个邮件域指定了证书名,该域将在文件路径中使用,因此您不必在Postfix或Dovecot配置文件中更改文件路径。 当它询问您是否要更新现有证书以包含新域时,回答U并按Enter键。 现在您应该会看到以下消息,这表明已成功获取多域证书。 如果遇到以下错误, Detail: Invalid response from [xx.xx.xx.xx]: 404 然后需要使用certbot nginx插件来获取TLS证书。 sudo apt install python3-certbot-nginx sudo certbot certonly -a nginx --agree-tos -d mail.domain1.com,mail.domain2.com --cert-name mail.domain1.com --email your-email-address 获得TLS证书后,重新加载Nginx以获取新证书。 sudo systemctl reload nginx 您现在应该可以使用不同的域来访问RoundCube webmail。此外,您还需要重新加载Postfix SMTP服务器和Dovecot IMAP服务器,以便让它们获取新证书。 sudo systemctl reload postfix dovecot 在计算机或移动设备上使用邮件客户端 启动你的桌面电子邮件客户端,比如Mozilla Thunderbird,并添加第二个域的邮件帐户。 在“传入服务器”部分,选择IMAP协议,输入mail。域2。com作为服务器名,选择端口143和STARTTLS。选择普通密码作为身份验证方法。 在“发送”部分,选择SMTP协议,输入mail。域2。com作为服务器名,选择端口587和STARTTLS。选择普通密码作为身份验证方法。 提示:您还可以将端口993用于IMAP的SSL/TLS加密,将端口465用于SMTP的SSL/TLS加密。您不应该使用端口25作为SMTP端口来提交发送的电子邮件。 虽然Postfix SMTP服务器和Dovecot IMAP服务器在与其他服务器通信时使用第一个邮件域(mail.domain1.com)的主机名,但它们现在使用的是多域证书,因此邮件客户端不会显示证书警告。 SPF和DKIM检查 现在,您可以使用桌面电子邮件客户端或webmail客户端向[email ;protected]发送测试电子邮件,并获得免费的电子邮件身份验证报告。这是我从25号端口收到的报告。通用域名格式 别忘了在网上测试你的电子邮件分数https://www.mail-tester.com还可以使用GlockApps测试电子邮件的放置。 如果DKIM检查失败,您可以转到https://www.dmarcanalyzer.com/dkim/dkim-check/查看您的DKIM记录是否有任何错误。 如果你的电子邮件仍被标记为垃圾邮件呢? 在这篇文章中,我有更多的建议:7个有效的建议来阻止你的电子邮件被标记为垃圾邮件。虽然这需要一些时间和精力,但在应用这些技巧后,你的电子邮件最终会被放入收件箱。 多个邮件域的RDN? 反向DNS(RDN),又名PTR记录,用于检查发送方的IP地址是否与HELO主机名匹配。添加新邮件域时,无需添加其他PTR记录。您的RDN应该只设置一个主机名,即Postfix中设置的主机名,可以通过以下命令显示。 postconf myhostname rDNS是IP地址的记录。这不是域名的记录。如果只有一个IP地址,那么只需要一条指向一个主机名的rDNS记录。反向DNS检查不会验证发件人:域在您的电子邮件中,只要您的IP地址有rDNS记录,并且主机名可以解析回相同的IP地址,您就可以通过反向DNS检查。 此外,在一台服务器上托管多个域时,不需要在Postfix中更改以下设置。 我的主机名 肌动蛋白 我的目的地 托管电子邮件服务,如G Suite和Microsoft Exchange Online,都使用一个主机名作为服务器,为客户发送电子邮件。G套件用户发送的电子邮件都使用谷歌。主机名中的com和Microsoft Exchange Online用户发送的电子邮件都使用outlook。主机名中的com。对于其他电子邮件服务提供商,如Mailchimp、SendinBlue、SendPluse等,情况也是如此。它们都为单个服务器使用一个主机名,而一个IP地址只有一个RDN记录。 就这样!我希望本教程能帮助您使用iRedMail托管多个电子邮件域。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?