如何使用iRedMail在Ubuntu20.04上轻松设置完整的邮件服务器

  • 技术文档
  • 2022.03.24
  • 浏览:127

在Linux上从头开始设置自己的电子邮件服务器是一个漫长而乏味的过程,如果你不是高级用户,这将是一个痛苦的过程。本教程将向您展示如何使用iRedMail在Ubuntu20.04上快速设置一个功能齐全的邮件服务器,为您节省大量时间和麻烦。

什么是iRedMail?

iRedMail是一个shell脚本,可以在Linux/BSD服务器上自动安装和配置所有必要的邮件服务器组件,从而消除手动安装和配置。使用iRedMail,您可以在基于web的管理面板中轻松创建无限邮箱和无限邮件域。邮箱可以存储在MariaDB/MySQL、PostgreSQL数据库或OpenLDAP中。以下是iRedMail将自动安装和配置的开源软件列表。

  • 后缀SMTP服务器
  • Dovecot IMAP服务器
  • Nginx web服务器为管理面板和webmail提供服务
  • 用于存储用户信息的OpenLDAP、MySQL/MariaDB或PostgreSQL
  • 一个用于DKIM签名和验证的新版本
  • SpamAssassin用于反垃圾邮件
  • ClamAV用于抗病毒
  • Roundcube网络邮件
  • SOGo群件,提供网络邮件、日历(CalDAV)、联系人(CardDAV)、任务和ActiveSync服务。
  • 用于保护SSH的Fail2ban
  • 邮件列表管理器
  • Netdata服务器监控
  • iRead Postfix策略服务器用于GreyList

第一步:选择合适的主机提供商并购买域名

要使用iRedMail设置一个功能齐全的电子邮件服务器,您需要一个至少有3GB内存的服务器,因为安装后,您的服务器将使用超过2GB的内存。

强烈建议您在Ubuntu 20.04服务器的干净安装上安装iRedMail。

本教程是在每月9美元的Kamatera VPS(虚拟专用服务器)上完成的,该服务器具有1个CPU和3GB RAM。他们提供30天的免费试用期。

Kamatera是运行邮件服务器的一个非常好的选择,因为

  • 它们不会阻止端口25,因此您可以发送无限量的电子邮件(事务性电子邮件和时事通讯),而无需在SMTP中继服务上花钱。Kamatera没有任何SMTP限制。你每天可以发送一百万封电子邮件。
  • IP地址不在任何电子邮件黑名单上。(至少对我来说是这样。我选择了达拉斯数据中心。)你肯定不想被列入可怕的微软Outlook IP黑名单或spamrats黑名单。有些黑名单会屏蔽整个IP范围,你无法从此类黑名单中删除你的IP地址。
  • 您可以编辑PTR记录以提高电子邮件的可交付性。
  • 它们允许你向你的电子邮件订阅者发送时事通讯,而不受每小时或每天的限制。
  • 您可以为一台服务器订购多个IP地址。这对需要发送大量电子邮件的人非常有用。您可以在多个IP地址上传播电子邮件流量,以实现更好的电子邮件交付。

其他VPS提供商,如DigitalOcean阻止了端口25。DigitalOcean不会解锁端口25,因此您需要设置SMTP中继以绕过阻止,这可能会增加您的费用。如果您使用Vultr VPS,则默认情况下端口25被阻止。如果您打开支持票证,他们可以解除阻止,但如果他们决定不允许您的电子邮件发送活动,他们可能会在任何时候再次阻止。如果你使用他们的服务器发送时事通讯,Vultr实际上可能会重新阻止它。

转到Kamatera网站创建帐户,然后在帐户仪表板中创建服务器。

kamatera server types

我建议遵循下面链接的教程,在Kamatera上正确设置Linux VPS服务器。

  • 如何在Kamatera上创建Linux VPS服务器

创建服务器后,Kamatera将向您发送一封包含服务器SSH登录详细信息的电子邮件。要登录到服务器,可以使用SSH客户端。如果您在计算机上使用Linux或macOS,只需打开一个终端窗口并运行以下命令即可登录服务器。将12.34.56.78替换为服务器的IP地址。

ssh [email protected]

系统将要求您输入密码。

你还需要一个域名。我从namescape注册了我的域名,因为价格低廉,而且他们终身免费保护whois的隐私。

第2步:创建DNS MX记录

MX记录指定哪个或多个主机处理特定域名的电子邮件。例如,为linuxbabe处理电子邮件的主机。com是邮件。利努克斯宝贝。通用域名格式。如果拥有Gmail账户的人向发送电子邮件,Gmail服务器将查询linuxbabe的MX记录。通用域名格式。当它发现那封邮件。利努克斯宝贝。com负责接收电子邮件,然后查询邮件记录。利努克斯宝贝。com获取IP地址,从而可以发送电子邮件。

你需要去你的DNS托管服务(通常是你的域名注册)创建DNS记录。在DNS管理器中,为域名创建MX记录。在名称字段中输入@代表主域名,然后输入mail。你的领域。com在值字段中。

iredmail email server create MX record

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

DNS管理员可能会要求您输入首选项值(也称为优先级值)。它可以是0到65356之间的任何数字。小数字的优先级高于大数字。建议将该值设置为0,以便此邮件服务器具有接收电子邮件的最高优先级。创建MX记录后,还需要为邮件创建一个记录。你的领域。com,以便将其解析为IP地址。如果您的服务器使用IPv6地址,请确保添加AAAA记录。

提示:如果使用Cloudflare DNS服务,则在创建邮件记录时不应启用CDN功能。你的领域。通用域名格式。Cloudflare不支持SMTP代理。

第3步:配置主机名

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

sudo apt update  sudo apt upgrade -y

在升级过程中,它可能会问您以下问题。如果要继续使用端口6543进行SSH,请选择保持当前安装的本地版本。如果您想将端口22用于SSH,那么选择install the package maintainer's version(安装软件包维护者版本)。

scalahosting configure openssh server

我强烈建议创建一个sudo用户来管理服务器,而不是使用默认的root用户。运行以下命令创建用户。将用户名替换为首选用户名。

adduser username

adduser scalahosting

然后将用户添加到sudo组。

adduser username sudo

切换到新用户。

su - username

接下来,使用以下命令为服务器设置完全限定的域名(FQDN)。

sudo hostnamectl set-hostname mail.your-domain.com

我们还需要使用命令行文本编辑器(如Nano)更新/etc/hosts文件。

sudo nano /etc/hosts

像下面那样编辑它。(使用箭头键在文件中移动光标。)

127.0.0.1       mail.your-domain.com localhost

保存并关闭文件。(要在Nano文本编辑器中保存文件,请按Ctrl+O,然后按Enter确认。要关闭文件,请按Ctrl+X。)

要查看更改,请重新登录,然后运行以下命令查看主机名。

hostname -f

第4步:使用iRedMail在Ubuntu20.04上设置邮件服务器

运行以下命令从其Github存储库下载最新版本的iRedMail脚本安装程序。

wget https://github.com/iredmail/iRedMail/archive/1.5.0.tar.gz

提取存档文件。

tar xvf 1.5.0.tar.gz

然后将cd放入新创建的目录中。

cd iRedMail-1.5.0/

向iRedMail添加可执行权限。sh脚本。

chmod +x iRedMail.sh

接下来,使用sudo权限运行Bash脚本。

sudo bash iRedMail.sh

邮件服务器安装向导将出现。使用Tab键选择Yes,然后按Enter键。

ubuntu-20.04-iredmail-server

下一个屏幕将要求您选择邮件存储路径。您可以使用默认路径:/var/vmail,只需按Enter键即可。

iredmail-server-default-storage-path

然后选择是否要运行web服务器。强烈建议您选择运行web服务器,因为您需要基于web的管理面板来添加电子邮件帐户。此外,它还允许您访问Roundcube网络邮件。默认情况下,Nginx web服务器处于选中状态,因此只需按Enter键即可。(星号表示该项目已被选中。)

iredmail-nginx-web-server

然后为电子邮件帐户选择存储后端。选择一个你熟悉的。本教程选择了MariaDB。按向上和向下箭头键,然后按空格键进行选择。

ubuntu-20.04-email-server

如果选择了MariaDB或MySQL,则需要设置MySQL根密码。

ubuntu-20.04-mail-server

接下来,输入您的第一个邮件域。您可以稍后在基于web的管理面板中添加其他邮件域。本教程假设您想要一个像这样的电子邮件帐户。在这种情况下,你需要进入你的域名。com在这里,没有子域。不要在域名后按空格键。我认为iRedMail会将空格字符与域名一起复制,这可能会导致安装失败。

set-up-mail-server-on-ubuntu-20.04

接下来,为邮件域管理员设置密码。

ubuntu-20.04-email-server-step-by-step

选择可选组件。默认情况下,选择4个项目。如果您想使用SOGo群件(网络邮件、日历、通讯簿、ActiveSync),请按向下箭头键和空格键进行选择。按Enter键进入下一个屏幕。

iredmail-optional-components-sogo-groupware

现在,您可以查看您的配置。键入Y开始安装所有邮件服务器组件。

ubuntu iredmail config review

在安装结束时,选择y以使用iRedMail提供的防火墙规则并重新启动防火墙。

iredmail-firewall-rules-fail2ban

现在iRedMail安装完成了。您将收到webmail的URL、web管理面板和登录凭据的通知。iRedMail。提示文件包含有关iRedMail服务器的重要信息。

iredmail-full-featured-mail-server-setup-complete

重新启动Ubuntu 20.04服务器。

sudo shutdown -r now

服务器重新联机后,您可以访问web管理面板。

https://mail.your-domain.com/iredadmin/

注意,在上面的URL中,访问管理面板的子目录是/IREDAMIN/,而不是/iredmail/。因为它使用的是自签名TLS证书,所以需要在web浏览器中添加安全异常。

步骤5:安装Let's Encrypt TLS证书

由于邮件服务器正在使用自签名TLS证书,桌面邮件客户端用户和webmail客户端用户都将看到警告。为了解决这个问题,我们可以获得并安装免费的Let's Encrypt TLS证书。

获取证书

首先,通过SSH再次登录服务器,并运行以下命令在Ubuntu 20.04上安装Let's Encrypt(certbot)客户端。

sudo apt install certbot

iRedMail已经在默认的Nginx虚拟主机中配置了TLS设置,因此我建议使用webroot插件而不是Nginx插件来获取证书。运行以下命令。用实际数据替换红色文本。

sudo certbot certonly --webroot --agree-tos --email  -d mail.your-domain.com -w /var/www/html/

当它询问您是否希望接收EFF的通信时,您可以选择否。

iredmail letsencrypt

如果一切顺利,您将看到以下文本,表明您已成功获得TLS证书。您的证书和链已保存在/etc/letsencrypt/live/mail。你的领域。com/directory。

iredmail certbot

未能获得TLS证书

如果certbot无法获得TLS证书,可能是因为您的DNS记录没有传播到Internet。根据您使用的域注册器,您的DNS记录可能会立即传播,或者传播可能需要24小时。你可以去https://dnsmap.io,输入邮件服务器的主机名(mail.your domain.com)以检查DNS传播。

如果certbot无法获取证书,并且您看到以下消息,

Failed authorization procedure. mail.linuxbabe.com (http-01): urn:ietf:params:acme:error:connection :: The server could not connect to the client to verify the domain :: Fetching : Timeout during connect (likely firewall problem)

这可能是因为你创造了AAAA的邮件记录。你的领域。com,但Nginx web服务器不监听IPv6地址。要修复此错误,请编辑/etc/nginx/sites enabled/00默认值。配置文件

sudo nano /etc/nginx/sites-enabled/00-default.conf

找到下面这行。

#listen [::]:80;

删除#字符以为此Nginx虚拟主机启用IPv6。

listen [::]:80;

保存并关闭文件。然后编辑SSL虚拟主机/etc/nginx/sites enabled/00默认SSL。形态。

sudo nano /etc/nginx/sites-enabled/00-default-ssl.conf

添加以下行。

listen [::]:443 ssl http2;

iredmail certbot renew

保存并关闭文件。然后测试Nginx配置。

sudo nginx -t

如果测试成功,请重新加载Nginx以使更改生效。

sudo systemctl reload nginx

再次运行以下命令以获取TLS证书。用实际数据替换红色文本。

sudo certbot certonly --webroot --agree-tos --email  -d mail.your-domain.com -w /var/www/html/

现在您应该能够成功获得TLS证书。

在Nginx中安装证书

获得TLS证书后,让我们配置Nginx web服务器以使用它。编辑SSL模板文件。

sudo nano /etc/nginx/templates/ssl.tmpl

找到下面两行。

ssl_certificate /etc/ssl/certs/iRedMail.crt; ssl_certificate_key /etc/ssl/private/iRedMail.key;

替换为:

ssl_certificate /etc/letsencrypt/live/mail.your-domain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/mail.your-domain.com/privkey.pem;

保存并关闭文件。然后测试nginx配置并重新加载。

sudo nginx -t  sudo systemctl reload nginx

再次访问iRedMail管理面板,您的web浏览器将不再警告您,因为Nginx现在使用的是有效的TLS证书。

iredadmin

在Postfix和Dovecot中安装TLS证书

我们还需要配置Postfix SMTP服务器和Dovecot IMAP服务器来使用Let's Encrypt颁发的证书,这样桌面邮件客户端就不会显示安全警告。编辑Postfix的主配置文件。

sudo nano /etc/postfix/main.cf

找到下面三行。(第95、96、97行)。

smtpd_tls_key_file = /etc/ssl/private/iRedMail.key smtpd_tls_cert_file = /etc/ssl/certs/iRedMail.crt smtpd_tls_CAfile = /etc/ssl/certs/iRedMail.crt

替换为:

smtpd_tls_key_file = /etc/letsencrypt/live/mail.your-domain.com/privkey.pem smtpd_tls_cert_file = /etc/letsencrypt/live/mail.your-domain.com/cert.pem smtpd_tls_CAfile = /etc/letsencrypt/live/mail.your-domain.com/chain.pem

保存并关闭文件。然后重新加载后缀。

sudo systemctl reload postfix

接下来,编辑Dovecot的主配置文件。

sudo nano /etc/dovecot/dovecot.conf

好的,下面两行。(第47、48行)

ssl_cert = </etc/ssl/certs/iRedMail.crt ssl_key = </etc/ssl/private/iRedMail.key

替换为:

ssl_cert = </etc/letsencrypt/live/mail.your-domain.com/fullchain.pem ssl_key = </etc/letsencrypt/live/mail.your-domain.com/privkey.pem

保存并关闭文件。然后重新装好多佛科特。

sudo systemctl reload dovecot

从现在起,桌面邮件用户将不会看到安全警告。

第6步:发送测试电子邮件

使用邮政局长邮件帐户()登录iredadmin面板。在“添加”选项卡中,可以添加其他域或电子邮件地址。

add email addresses in iredadmin

如果您看到“无控制域”错误,请参阅本文。

创建用户后,您可以访问Roundcube webmail地址,并使用新的邮件用户帐户登录。

https://mail.your-domain.com/mail/

iredmail roundcube webmail

现在,您可以测试电子邮件的发送和接收。请注意,您可能需要等待几分钟才能收到电子邮件,因为iRedMail默认情况下会启用灰色列表,这是一种通知其他发送SMTP服务器在几分钟后重试的方式。邮件日志文件/var/log/mail中的以下行。日志表明已启用灰色列表。

Recipient address rejected: Intentional policy rejection, please try again later;

添加交换空间

ClamAV用于扫描电子邮件中的病毒。ClamAV可以使用相当数量的RAM。如果您的服务器上没有足够的RAM,ClamAV将无法正常工作,这将阻止您的邮件服务器发送电子邮件。您可以向服务器添加交换文件,以增加服务器上的总RAM。(请注意,在服务器上使用交换空间会降低服务器性能。如果希望获得更好的性能,应升级物理RAM,而不是使用交换空间。)

要在服务器上添加交换空间,首先,使用fallocate命令创建一个文件。例如,在根文件系统中创建一个名为swapfile、容量为1G的文件:

sudo fallocate -l 1G /swapfile

然后确保只有root用户可以读写它。

sudo chmod 600 /swapfile

将其格式化为交换:

sudo mkswap /swapfile

输出:

Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes) no label, UUID=0aab5886-4dfb-40d4-920d-fb1115c67433

启用交换文件

sudo swapon /swapfile

要在系统启动时装载交换空间,请编辑/etc/fstab文件。

sudo nano /etc/fstab

在该文件底部添加以下行。

/swapfile    swap    swap     defaults    0   0

保存并关闭文件。然后重新加载systemd并重新启动ClamAV。

sudo systemctl daemon-reload  sudo systemctl restart clamav-daemon

步骤7:检查端口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

在这种情况下,您的Postfix无法向其他SMTP服务器发送电子邮件。请您的ISP/主机提供商为您打开它。如果他们拒绝您的请求,您需要设置SMTP中继以绕过端口25阻塞。

还是不能发邮件?

如果端口25(出站)未被阻止,但您仍然无法从自己的邮件服务器向Gmail等其他电子邮件地址发送电子邮件,那么您应该检查邮件日志(/var/log/mail.log)。

sudo nano /var/log/mail.log

例如,有些人可能会在文件中看到以下几行。

host gmail-smtp-in.l.google.com[2404:6800:4003:c03::1b] said: 550-5.7.1 [2a0d:7c40:3000:b8b::2] Our system has detected that 550-5.7.1 this message does not meet IPv6 sending guidelines regarding PTR 550-5.7.1 records and authentication. Please review 550-5.7.1  for more information

这意味着您的邮件服务器正在使用IPv6发送电子邮件,但您没有设置IPv6记录。你应该去你的DNS管理员那里,为邮件设置AAAA记录。你的领域。com,那么您应该为IPv6地址设置PTR记录,这将在步骤9中讨论。

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

启动你的桌面电子邮件客户端,比如Mozilla Thunderbird,并添加一个邮件帐户。

  • 在“传入服务器”部分,选择IMAP协议,输入mail。你的领域。com作为服务器名,选择端口143和STARTTLS。选择普通密码作为身份验证方法。
  • 在“发送”部分,选择SMTP协议,输入mail。你的领域。com作为服务器名,选择端口587和STARTTLS。选择普通密码作为身份验证方法。

ubuntu postfix dovecot letsencrypt https

故障2阻止您自己的IP地址

如果您犯了一个错误,多次登录邮件服务器失败,那么邮件服务器上的Fail2ban服务可能会阻止您的IP地址。你可以通过编辑监狱将你的IP地址添加到白名单中。本地文件。

sudo nano /etc/fail2ban/jail.local

将您自己的IP地址添加到忽略列表中,如下所示。将12.34.56.78替换为您的真实IP地址。

ignoreip = 12.34.56.78 127.0.0.1 127.0.0.0/8 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16

保存并关闭文件。然后重启Fail2ban。

sudo systemctl restart fail2ban

第9步:提高电子邮件交付能力

为了防止您的电子邮件被标记为垃圾邮件,您应该设置PTR、SPF、DKIM和DMARC记录。

PTR记录

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

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

dig -x IP-address +short

host IP-address

PTR记录不由您的域注册器管理。它由提供IP地址的组织管理。因为您从主机提供商或ISP获得IP地址,而不是从域注册商获得,所以您必须在主机提供商的控制面板中为您的IP设置PTR记录,或者询问ISP。它的值应该是邮件服务器的主机名:mail。你的领域。通用域名格式。如果您的服务器使用IPv6地址,请确保也为您的IPv6地址添加PTR记录。

要编辑Kamatera VP的反向DNS记录,请登录Kamatera客户端区域,然后打开支持票证,告诉他们为服务器IP地址添加PTR记录,以将IP地址指向邮件。你的领域。通用域名格式。你可能会想,这并不方便,但这是为了让垃圾邮件发送者远离平台,因此像我们这样的合法电子邮件发送者将拥有良好的IP声誉。

SPF记录

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

modoboa spf record

说明:

  • TXT表示这是一条TXT记录。
  • 在名称字段中输入@代表主域名。
  • v=spf1表示这是一条SPF记录,版本为spf1。
  • mx意味着mx记录中列出的所有主机都被允许为您的域发送电子邮件,而所有其他主机都被禁止。
  • ~all表示来自您域的电子邮件应该只来自SPF记录中指定的主机。来自其他主机的电子邮件将被标记为伪造。

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

dig your-domain.com txt

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

DKIM记录

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

iRedMail脚本会自动为服务器配置DKIM。唯一要做的就是在DNS管理器中创建DKIM记录。运行以下命令以显示DKIM公钥。

sudo amavisd-new showkeys

DKIM公钥在括号中。

iredmail amavis dkim

然后在DNS管理器中,创建一个TXT记录,输入dkim_名称字段中的domainkey。复制括号中的所有内容并粘贴到值字段中。删除所有双引号和换行符。

amavisd-new ubuntu

保存更改后,运行以下命令测试DKIM记录是否正确。

sudo amavisd-new testkeys

如果DKIM记录正确,测试将通过。

TESTING#1 linuxbabe.com: dkim._domainkey.linuxbabe.com => pass

请注意,您的DKIM记录可能需要一些时间才能传播到Internet。根据您使用的域注册器,您的DNS记录可能会立即传播,或者传播可能需要24小时。你可以去https://www.dmarcanalyzer.com/dkim/dkim-check/,输入dkim作为选择器,并输入您的域名以检查dkim记录传播。

DMARC记录

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

要创建DMARC记录,请转到DNS管理器并添加TXT记录。在名称字段中,输入_dmarc。在“值”字段中,输入以下内容。(您应该创建电子邮件地址。)

v=DMARC1; p=none; pct=100; rua=mailto:

create dmarc record txt

上述DMARC记录是一个安全的起点。如果你想阅读DMARC的完整解释,请查看以下文章。请注意,这是可选的。

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

第10步:测试电子邮件分数和位置

创建PTR、SPF、DKIM记录后,转到https://www.mail-tester.com.你会看到一个独特的电子邮件地址。从你的域名发送电子邮件到此地址,然后检查你的分数。如你所见,我得了满分。在测试结果中,您应该检查您的PTR记录、SPF和DKIM记录是否有效。

Testing Email Score and Placement 邮件测试员。com只能显示发件人分数。还有另一个名为GlockApps的服务,可以让你检查你的电子邮件是否被放在收件人的收件箱或垃圾邮件文件夹中,或者被直接拒绝。它支持许多流行的电子邮件提供商,如Gmail、Outlook、Hotmail、YahooMail、iCloud mail等。

glockapps-email-placement-test-scalahosting-vps

如果你的电子邮件仍被标记为垃圾邮件呢?

在这篇文章中,我有更多提示:如何阻止你的电子邮件被标记为垃圾邮件。虽然这需要一些时间和精力,但在应用这些技巧后,你的电子邮件最终会被放入收件箱。

如果您的电子邮件被Microsoft邮箱拒绝怎么办?

微软似乎正在使用一个内部黑名单来屏蔽许多合法的IP地址。如果您的电子邮件被Outlook或Hotmail拒绝,您需要提交发件人信息表。之后,Outlook/Hotmail将接受您的电子邮件。

添加多个邮件域

我写这篇文章是为了向您展示如何在iRedMail中添加多个邮件域。

如何禁用灰色列表

默认情况下,iRedMail已启用GreyList,这会告诉其他发送SMTP的服务器在几分钟后重试。这主要有助于阻止垃圾邮件,但也会降低用户体验。如果您希望禁用灰色列表,请按照以下说明操作。

向/opt/iredapd/settings添加写入权限。py文件。

sudo chmod 600 /opt/iredapd/settings.py

然后编辑配置文件。

sudo nano /opt/iredapd/settings.py

找到下面这行。

plugins = ["reject_null_sender", "wblist_rdns", "reject_sender_login_mismatch", "greylisting", "throttle", "amavisd_wblist", "sql_alias_access_policy"]

从列表中删除“灰色列表”。保存并关闭文件。然后重新启动iRedApp。

sudo systemctl restart iredapd

将配置文件更改回只读模式。

sudo chmod 400 /opt/iredapd/settings.py

启用SMTPS端口465

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

故障排除

首先,请使用至少4GB内存的VPS。在1GB RAM VPS上运行iRedMail会导致数据库、SpamAssassin或ClamAV因内存不足而被终止。如果你真的想使用1GB内存的VPS,你会丢失收到的电子邮件,并有其他不良后果。

如果无法访问iRedMail web界面,如502网关错误,则应检查/var/log/Nginx/目录中的Nginx日志以找到线索。您可能还需要检查邮件日志/var/log/mail。日志

检查各种服务是否正在运行。

systemctl status postfix  systemctl status dovecot  systemctl status nginx  systemctl status mariadb  systemctl status clamav-daemon  systemctl status amavis

如果启用了防火墙,则应在防火墙中打开以下端口。

HTTP port:  80 HTTPS port: 443 SMTP port:  25 Submission port: 587 (and 465 if you are going to use Microsoft Outlook mail client) IMAP port:  143 and 993

如果你想使用UFW防火墙,请查看我的指南:Debian和Ubuntu上的UFW防火墙入门。

如何更新TLS证书

让我们加密颁发的TLS证书仅在90天内有效,设置Cron作业以自动续订证书非常重要。您可以运行以下命令来续订证书。

sudo certbot renew -w /var/www/html/

您可以使用--dry run选项来测试更新过程,而不是进行真正的更新。

sudo certbot renew -w /var/www/html/ --dry-run

如果在续订TLS证书时看到以下错误。

The client lacks sufficient authorization :: Invalid response

然后需要创建隐藏目录。

sudo mkdir -p /var/www/html/.well-known/acme-challenge

并将www数据设置为webroot的所有者。

sudo chown www-data:www-data /var/www/html/ -R

另外,编辑SSL虚拟主机/etc/nginx/sites enabled/00默认SSL。conf.添加以下行。

location ~ /.well-known/acme-challenge {      root /var/www/html/;      allow all; }

iredmail letsencrypt renew

保存并关闭文件。测试Nginx配置并重新加载。

sudo nginx -t sudo systemctl reload nginx

创建Cron作业

如果现在试运行成功,您可以创建Cron作业来自动续订证书。只需打开root用户的crontab文件。

sudo crontab -e

然后在文件底部添加以下行。

@daily certbot renew -w /var/www/html/ --quiet && systemctl reload postfix dovecot nginx

重新加载Postfix、Dovecot和Nginx是使这些程序获取新证书和私钥所必需的。

设置备份邮件服务器

主邮件服务器有时可能会关闭。如果您将邮件服务器托管在数据中心,那么停机时间非常短,因此您不必担心丢失入站邮件。如果您在家中托管邮件服务器,则无法预测停机时间,因此在数据中心运行备份邮件服务器是一种很好的做法,以防止丢失入站邮件。备份邮件服务器只需要512MB内存即可运行。请在下面的文章中查看全部细节。

  • 如何在Ubuntu上设置带有后缀的备份电子邮件服务器(完整指南)

面向高级用户

iRedMail不包括DMARC验证服务,您可以查看以下教程来设置OpenDMARC以阻止电子邮件欺骗。

  • 在Ubuntu上安装带有后缀的OpenDMARC,以阻止电子邮件欺骗/垃圾邮件

您可能需要自定义SpamAssassin内容过滤器,以便更好地检测垃圾邮件。

  • 通过检查Postfix/SpamAssassin中的标题和正文来阻止垃圾邮件

如果您的网站和邮件服务器运行在两个不同的VP(虚拟专用服务器)上,您可以在网站和邮件服务器之间设置SMTP中继,以便您的网站可以通过邮件服务器发送电子邮件。请参阅下面的文章。

  • 如何在Ubuntu上的两个Postfix SMTP服务器之间设置SMTP中继

收尾

就这样!我希望本教程能帮助你用iRedMail在Ubuntu20.04上安装邮件服务器。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?