• 国内服务器租用托管机房应该怎么选择

    网站要有优质的服务器做为后盾,才能使得网站能正常运转。而服务器的运转是要让其有良好的机房环境和稳定的网络环境等,才是确保网站正常运转的基础。而用户无论是在选择国内服务器租用,还是国内服务器托管时,都应该想了解一下各类服务商所供给的国内机房的资质、环境、技术支撑究竟怎么样。那究竟该从哪些方面才能选出优质的国内机房呢? 国内服务器租用托管机房如何选择? 1、国内机房环境 机房的环境和所在地理位置是考察的重点之一.服务商提供机房的面积、电力供应、安全保障等都能反映出IDC服务商的实力。而机房所在的位置和是否便捷的交通条件都是在挑选时需要考虑的因素。比如在电力供应方面,有实力的服务器运营商在机房中都会提供双路电力供应,更可配置多个电源备用发电机。而在安全保障中,则需提供7*24不间断的网络监控和技术服务支持,在发现问题后当即警告并通知用户。机房控制中心则也必须要提供恒温,恒湿的环境,自动防火警告和消防等服务。而MMCLOUD的深圳机房,供给双路电力供应,配备多大12个备用电源发电机,时刻能确保充电电源容量。完善的冷热空气优化设计,确保国内机房全年温度都控制在20~30°C之间。 2、国内机房网络资源 查看机房的网络资源是否强大的话能够从带宽资源、物理线路、可拓展性、互联互通功能等指标去考察。 有实力的机房中都采用了千兆级的高速光纤连接骨干网,并由冗余线路确保高速可靠的干线连接。能提供多种灵活带宽资源挑选;能完成高速度,高级别的网络连接。重要额是能与海内外各骨干网进行对等连接。而关键点在于是否具有BGP网络,对于目标客户在中国大陆的企业来说,这是判断国内机房网络资源的重要条件之一。 3、机房技术人员支持 机房人员的技术支持也是考察的重点。优质的国内IDC服务商都会供给7*24小时的人工技术支持和服务,没有这些技术服务会让用户网站正常运转可能得不到保障。比如在托管时服务器需求开关机、重启、重装系统等等,都会需求由人工技术去帮你完成。而如果需求机房技术人员代保护,则技术人员能够协助优化体系、提高功能,以及改进安全性,最终完成安全、稳定、高可用性的系统环境。 MMCLOUD是一家专注于国内外服务器十几年专业的IDC服务商,多样化产品适合多种业务使用,如外贸,网站,棋牌,游戏等等。

    2021.09.03 浏览:541
  • 如何使用Modoboa在Ubuntu18.04上快速设置邮件服务器

    本教程将向您展示如何使用Modoboa在Ubuntu18.04上快速设置自己的电子邮件服务器,这是一个免费的开源邮件托管和管理平台,旨在与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集成。 包括AutoMX,允许最终用户在桌面或移动邮件客户端中轻松配置邮件帐户。 第一步:选择合适的主机提供商并购买域名 要使用Modoboa设置一个完整的电子邮件服务器,您需要一个至少有3GB内存的服务器,因为安装后,您的服务器将使用超过2GB的内存。 强烈建议您在Ubuntu 18.04服务器的干净安装上安装Modoboa。 本教程是在每月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上正确设置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账户的人向[email protected]发送电子邮件,Gmail服务器将查询linuxbabe的MX记录。通用域名格式。当它发现那封邮件。利努克斯宝贝。com负责接收电子邮件,然后查询邮件记录。利努克斯宝贝。com获取IP地址,从而可以发送电子邮件。 在DNS管理器中,为域名创建MX记录。在名称字段中输入@代表主域名,然后输入mail。你的领域。com在值字段中。 注意:MX记录的主机名不能是其他名称的别名。此外,强烈建议您使用主机名,而不是MX记录的裸IP地址。 DNS管理员可能会要求您输入首选项值(也称为优先级值)。它可以是0到65356之间的任何数字。小数字的优先级高于大数字。您可以为电子邮件服务器输入0,或接受默认值。 创建MX记录后,还需要为邮件创建一个记录。你的领域。com,以便将其解析为IP地址。如果您的服务器使用IPv6地址,请确保添加AAAA记录。 如果使用Cloudflare DNS服务,则在为邮件服务器创建记录时不应启用CDN功能。 第3步:使用Modoboa安装程序在Ubuntu18.04上设置邮件服务器 通过SSH登录服务器,然后运行以下命令来更新软件包。 sudo apt update sudo apt upgrade -y 我强烈建议创建一个sudo用户来管理服务器,而不是使用默认的root用户来提高服务器安全性。运行以下命令创建用户。将用户名替换为首选用户名。 adduser username 然后将用户添加到sudo组。 adduser username sudo 切换到新用户。 su - username 从Github下载modoboa安装程序。 git clone https://github.com/modoboa/modoboa-installer Modoboa是用Python编写的。运行以下命令安装必要的Python软件。 sudo apt-get install python3-virtualenv python3-pip 然后导航到modoboa安装程序目录并创建一个配置文件。替换示例。使用你自己的域名。 cd modoboa-installer sudo ./run.py --stop-after-configfile-check example.com 编辑配置文件安装程序。使用命令行文本编辑器,如nano。 sudo nano installer.cfg 要从Let's Encrypt为邮件服务器获取有效的TLS证书,请在[certificate]部分,将type的值从self signed更改为letsencrypt。 type = letsencrypt 并将电子邮件地址从[email protected]更改为您的真实电子邮件地址,用于帐户恢复和重要通知。如果使用默认电子邮件地址,您将无法获取并安装Let's Encrypt certificate。 默认情况下,Modoboa安装程序将安装PostgreSQL数据库服务器,如配置文件中的以下行所示。 [database] engine = postgres host = 127.0.0.1 install = true 如果您想使用MariaDB数据库服务器,那么将引擎从postgres更改为mysql。(Modoboa将安装MariaDB而不是MySQL。) 保存并关闭文件。(要在Nano文本编辑器中保存文件,请按Ctrl+O,然后按Enter确认。要退出,请按Ctrl+X。) 接下来,应该使用完全限定的域名(FQDN)作为邮件服务器(如mail)的主机名。实例通用域名格式。运行以下命令设置主机名。 sudo hostnamectl set-hostname mail.example.com 现在我们需要验证DNS记录是否已传播到Internet。根据您使用的域注册器,您的DNS记录可能会立即传播,或者传播可能需要24小时。你可以去https://dnsmap.io,输入邮件服务器的主机名(mail.example.com)以检查DNS传播。 如果DNS记录已传播,请运行以下命令开始安装。(请用主域名(如linuxbabe.com)替换example.com。不要在此命令中使用mail.example.com这样的子域)。 sudo ./run.py --interactive example.com 安装过程可能需要一段时间。在我的服务器上花了10分钟。如果在安装过程中看到错误,可以使用--debug选项查看更详细的输出。 sudo ./run.py --interactive --debug example.com 在Modoboa完成安装后,您可以使用用户名admin和密码登录管理面板。 登录后,您应该转到管理员->设置->配置文件以更改密码。 第4步:在Modoboa管理面板中添加邮箱 转到“域”选项卡,然后单击“添加”按钮添加新域。 然后在“名称”字段中输入主域名。强烈建议您启用DKIM签名,这有助于提高您的域声誉。在键选择器字段中,您可以输入一个随机单词,如modoboa。选择2048作为密钥长度。 在下一个屏幕中,您可以选择为您的域创建管理员帐户。SMTP协议要求邮件服务器应该有一个[email protected]地址。 点击提交按钮,你的域名将被添加到Modoboa中。 要添加电子邮件地址,请转到“域”选项卡,然后单击您的域名。 然后单击邮箱。 单击添加按钮并选择帐户。 然后选择简单用户作为角色。在用户名字段中输入电子邮件地址,然后输入密码。 在下一个屏幕中,您可以选择为此电子邮件地址创建别名。 单击提交按钮后,将创建电子邮件地址。 第5步:发送测试电子邮件 要登录到网络邮件,您需要先注销管理员帐户,然后输入用户凭据。 登录Modoboa webmail后,您可以将测试电子邮件从您的私人电子邮件服务器发送到其他电子邮件地址,反之亦然。 入站邮件将延迟几分钟,因为默认情况下,Modoboa会启用greylisting,这会告诉其他发送SMTP的服务器在几分钟后重试。这对阻止垃圾邮件很有用。下面的消息位于/var/log/mail中。日志表明已启用灰色列表。 postfix/postscreen[20995]: NOQUEUE: reject: RCPT from [34.209.113.130]:36980: 450 4.3.2 Service currently unavailable; 然而,灰色列表可能相当烦人。您可以通过编辑后缀主配置文件来禁用它。 sudo nano /etc/postfix/main.cf 在文件末尾找到以下几行并注释掉。(在每行开头添加#字符。) postscreen_pipelining_enable = yes postscreen_pipelining_action = enforce postscreen_non_smtp_command_enable = yes postscreen_non_smtp_command_action = enforce postscreen_bare_newline_enable = yes postscreen_bare_newline_action = enforce 保存并关闭文件。然后重新启动Postfix以使更改生效。 sudo systemctl restart postfix 现在你应该可以不用等几分钟就能收到电子邮件了。 添加交换空间 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 步骤6:检查端口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记录,这将在步骤8中讨论。 第7步:在计算机或移动设备上使用邮件客户端 启动你的桌面电子邮件客户端,比如Mozilla Thunderbird,并添加一个邮件帐户。 在“传入服务器”部分,选择IMAP协议,输入mail。你的领域。com作为服务器名,选择端口143和STARTTLS。选择普通密码作为身份验证方法。 在“发送”部分,选择SMTP协议,输入mail。你的领域。com作为服务器名,选择端口587和STARTTLS。选择普通密码作为身份验证方法。 您还可以在端口993上使用带有SSL/TLS加密的IMAP。 第8步:提高电子邮件交付能力 为了防止您的电子邮件被标记为垃圾邮件,您应该设置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记录,如下所示。 说明: 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记录中发布的公钥验证签名。 当我们之前在Moboba管理面板中添加域名时,我们启用了DKIM签名,所以签名部分得到了处理。唯一要做的就是在DNS管理器中创建DKIM记录。首先进入Modoboa管理面板,选择你的域名。在DNS部分,单击显示密钥按钮。 公开密钥将被公开。有两种格式。我们只需要绑定/命名格式。 转到DNS管理器,创建一个TXT记录,输入modoboa_名称字段中的domainkey。(回想一下,在管理面板中添加域名时,我们使用了modoboa作为选择器。)复制括号中的所有内容并粘贴到值字段中。删除所有双引号。DNS管理器可能会要求您删除其他无效字符,例如回车符。 请注意,您的DKIM记录可能需要一些时间才能传播到Internet。根据您使用的域注册器,您的DNS记录可能会立即传播,或者传播可能需要24小时。你可以去https://www.dmarcanalyzer.com/dkim/dkim-check/,输入modoboa作为选择器,并输入您的域名以检查DKIM记录传播。 对于感兴趣的人,Modoboa使用OpenDKIM为您的域密钥生成私钥,并验证入站电子邮件的签名。 DMARC记录 DMARC代表基于域的消息身份验证、报告和一致性。DMARC可以帮助接收电子邮件服务器识别合法电子邮件,并防止电子邮件欺骗使用您的域名。 要创建DMARC记录,请转到DNS管理器并添加TXT记录。在名称字段中,输入_dmarc。在“值”字段中,输入以下内容: v=DMARC1; p=none; pct=100; rua=mailto:[email protected] 上述DMARC记录是一个安全的起点。要查看DMARC的完整解释,请查看以下文章。 创建DMARC记录以保护您的域名免受电子邮件欺骗 第7步:测试电子邮件分数和位置 创建PTR、SPF、DKIM记录后,转到https://www.mail-tester.com.你会看到一个独特的电子邮件地址。从你的域名发送电子邮件到此地址,然后检查你的分数。如你所见,我得了满分。 邮件测试员。com只能显示发件人分数。还有另一个名为GlockApps的服务,可以让你检查你的电子邮件是否放在收件人的收件箱或垃圾邮件文件夹中,或者直接被拒绝。它支持许多流行的电子邮件提供商,如Gmail、Outlook、Hotmail、YahooMail、iCloud mail等 如果你的电子邮件仍被标记为垃圾邮件呢? 在这篇文章中,我有更多提示:如何阻止你的电子邮件被标记为垃圾邮件。虽然这需要一些时间和精力,但在应用这些技巧后,你的电子邮件最终会被放入收件箱。 如果您的电子邮件被Microsoft邮箱拒绝怎么办? 微软似乎正在使用一个内部黑名单来屏蔽许多合法的IP地址。如果您的电子邮件被Outlook或Hotmail拒绝,您需要提交发件人信息表。之后,Outlook/Hotmail将接受您的电子邮件。 自动续订让我们加密TLS证书 Modoboa将最新版本的Let's Encrypt client(certbot)安装为/opt/certbot auto。通过执行以下命令,可以找到certbot二进制文件的位置。 sudo find / -name "*certbot*" 让我们加密TLS证书的有效期为90天。要自动续订证书,请编辑root用户的crontab文件。 sudo crontab -e 在该文件末尾添加以下行。 @daily /opt/certbot-auto renew -q && systemctl reload nginx postfix dovecot 保存并关闭文件。这会告诉Cron每天运行certbot续订命令。如果证书还有30天,certbot将续订证书。有必要重新加载Nginx web服务器、Postfix SMTP服务器和Dovecot IMAP服务器,以便他们能够获取新证书。 启用SMTPS端口465 如果要使用Microsoft Outlook客户端,则需要在Postfix SMTP服务器中启用SMTPS端口465。 故障排除 首先,请使用至少有2GB内存的VPS。在1GB RAM VPS上运行Modoboa会导致数据库、SpamAssassin或ClamAV因内存不足而被终止。如果你真的想使用1GB内存的VPS,你会丢失收到的电子邮件,并有其他不良后果。 如果无法访问Modoboa 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 systemctl status uwsgi systemctl status supervisor 如果启用了防火墙,则应在防火墙中打开以下端口。 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防火墙入门。 自动关机 我发现clamav守护进程服务有一种趋势,即使有足够的RAM,也会在没有明确原因的情况下停止。这将使电子邮件延迟1分钟。我们可以通过systemd服务单元将其配置为在停止时自动重启。将原始服务单元文件复制到/etc/systemd/system/目录。 sudo cp /lib/systemd/system/clamav-daemon.service /etc/systemd/system/clamav-daemon.service 然后编辑服务单元文件。 sudo nano /etc/systemd/system/clamav-daemon.service 在[service]部分添加以下两行。 Restart=always RestartSec=3 这样地: [Service] ExecStart=/usr/sbin/clamd --foreground=true # Reload the database ExecReload=/bin/kill -USR2 $MAINPID StandardOutput=syslog Restart=always RestartSec=3 保存并关闭文件。然后重新加载systemd并重新启动clamav守护进程。服务 sudo systemctl daemon-reload sudo systemctl restart clamav-daemon 抱歉,发生内部错误 如果在尝试登录Modoboa管理面板时看到内部错误消息,请编辑设置。py文件。 sudo nano /srv/modoboa/instance/instance/settings.py 打开调试模式。 DEBUG = True 重新启动uwsgi以使更改生效。 sudo systemctl restart uwsgi 接下来,再次尝试登录Modoboa管理面板。这一次,您将看到确切的内部错误。例如,在我的邮件服务器上 database connection isn't set to UTC

    2022.03.23 浏览:1024
  • 在CentOS 8上设置Postfix仅发送SMTP服务器

    在本文中,我将向您展示如何在CentOS 8上将Postfix设置为仅发送SMTP服务器。我将首先向您展示如何为单个域执行此操作,然后如果需要,您可以为多个域应用这些步骤。 用例 您有一个需要向用户发送事务性电子邮件(如密码重置电子邮件)的网站/web应用程序。最有可能的是,用户不需要回复这些电子邮件,或者如果他们回复,回复电子邮件将被发送到您的专用邮件服务器。在这种情况下,可以使用Postfix(一种流行的SMTP服务器软件)在web服务器上设置只发送SMTP服务器。 先决条件 要从服务器发送电子邮件,端口25(出站)必须打开。许多ISP和托管公司,如DigitalOcean block port 25来控制垃圾邮件。我建议使用ScalaHost,因为它不会阻止端口25(出站)。拥有ScalaHost服务器后,在其上安装CentOS 8,并按照以下说明操作。 为多个域设置Postfix仅发送SMTP服务器实际上并不困难。首先,我们需要为一个域配置它,然后为多个域设置它。 第一步:设置主机名和PTR记录 默认情况下,Postfix在与其他SMTP服务器通信时使用服务器的主机名来标识自身。如果您的主机名无效,某些SMTP服务器将拒绝您的电子邮件。您应该设置一个完整的限定域名(FQDN),如下所示。 sudo hostnamectl set-hostname mta1.yourdomain.com 要检查服务器的主机名,请运行 hostname -f 您需要注销并重新登录,才能在命令提示下看到主机名的更改。这个主机名应该有一个指向服务器IP地址的DNS a记录。 此外,还需要设置一个PTR记录(又名指针记录),将IP地址映射到FQDN。这是A唱片的对应品。如果你的服务器IP地址没有PTR记录,许多SMTP服务器会拒绝你的电子邮件。 因为您从主机提供商或ISP获得IP地址,而不是从域注册商获得,所以您必须在主机提供商的控制面板中为您的IP设置PTR记录,或者询问ISP。例如,在ScalaHost中,您可以通过打开支持票证或使用他们网站上的实时聊天来设置PTR记录。尽管您可以将PTR记录设置为任何主机名,但为了获得最佳实践,您应该使用刚刚设置的FQDN。 要查看PTR记录设置是否正确,请运行以下命令。将12.34.56.78替换为您自己的IP地址。 host 12.34.56.78 请注意,如果服务器使用IPv6地址,最好为FQDN添加AAAA记录,并为IPv6地址设置PTR记录。 第2步:在CentOS 8上安装Postfix 运行以下命令,从默认的CentOS 8存储库安装Postfix。 sudo dnf update sudo dnf install postfix -y 安装后,启动Postfix SMTP服务器。 sudo systemctl start postfix 并在启动时启用自动启动。 sudo systemctl enable postfix 第3步:配置后缀 设置后缀主机名 默认情况下,Postfix SMTP服务器在与其他SMTP服务器通信时使用操作系统的主机名来标识自身。但是,OS主机名可能会更改,因此使用以下命令直接在Postfix配置文件中设置主机名是一种好的做法。 sudo postconf -e "myhostname = mta1.yourdomain.com" 设置$mydomain参数 $mydomain参数指定本地internet域名。默认情况下,使用$myhostname减去第一个组件。您可以通过以下方式显示$mydomain的当前值: postconf mydomain 它应该是你的顶级域名,比如 linuxbabe.com 如果它没有显示您的apex域名,则将$mydomain参数设置为: sudo postconf -e "mydomain = yourdomain.com" 设置$myorigin参数 $myorigin参数指定附加到没有@domain部分的发件人和收件人地址的默认域名。默认设置是使用$myhostname的值,如下所示: postconf myorigin 输出: myorigin = $myhostname 您可以将其值更改为您的域。通用域名格式。 sudo postconf -e "myorigin = yourdomain.com" 重新启动后缀 最后,我们需要重新启动Postfix以使更改生效。 sudo systemctl restart postfix 第4步:在CentOS 8上安装和配置OpenDKIM DKIM代表域密钥识别邮件。你可以在你的服务器上安装OpenDKIM,并使用它为从你的域发送的电子邮件添加签名,使用你的私钥。接收SMTP服务器使用您在DNS中发布的相应公钥验证签名。如果你想让你的邮件进入收件人的收件箱,添加DKIM签名是必须的。 从EPEL(企业Linux的额外软件包)存储库安装OpenDKIM。 sudo dnf install epel-release sudo dnf install opendkim perl-Getopt-Long 编辑OpenDKIM主配置文件。 sudo nano /etc/opendkim.conf 找到下面这行。 Mode v 默认情况下,OpenDKIM以验证模式(v)运行,该模式将验证传入电子邮件的DKIM签名。我们需要对发送的电子邮件进行签名,因此将此行更改为以下内容以启用签名模式。 Mode sv 找到下面一行并注释掉,因为我们将为每个域名使用单独的密钥。 KeyFile /etc/opendkim/keys/default.private 接下来,找到以下4行并取消注释。 # KeyTable /etc/opendkim/KeyTable # SigningTable refile:/etc/opendkim/SigningTable # ExternalIgnoreList refile:/etc/opendkim/TrustedHosts # InternalHosts refile:/etc/opendkim/TrustedHosts 保存并关闭文件。 创建签名表、密钥表和受信任主机文件 编辑签名表文件。 sudo nano /etc/opendkim/SigningTable 在该文件末尾添加以下行。这会告诉OpenDKIM,如果服务器上的发件人正在使用@your域。com地址,则应使用mta1标识的私钥对其进行签名_域名。你的领域。通用域名格式。 *@your-domain.com mta1._domainkey.your-domain.com mta1是DKIM选择器。域名可能有多个DKIM密钥。DKIM选择器允许您选择特定的DKIM键。您可以为DKIM选择器使用任何名称。我认为使用主机名最左边的部分作为DKIM选择器很方便。保存并关闭文件。然后编辑密钥表文件。 sudo nano /etc/opendkim/KeyTable 添加以下行,指定DKIM私钥的位置。 mta1._domainkey.your-domain.com your-domain.com:mta1:/etc/opendkim/keys/your-domain.com/mta1.private 保存并关闭文件。接下来,编辑受信任的主机文件。 sudo nano /etc/opendkim/TrustedHosts 默认情况下,127.0.0.1和::1包含在此文件中。现在添加以下行。这告诉OpenDKIM,如果电子邮件来自您自己的域名,那么OpenDKIM不应该对该电子邮件执行DKIM验证。 *.your-domain.com 保存并关闭文件。 生成私钥/公钥对 由于DKIM用于对发送的邮件进行签名和验证接收的邮件,因此需要生成一个私钥来对发送的电子邮件进行签名,并生成一个公钥来接收SMTP服务器,以验证电子邮件的DKIM签名。公钥将在DNS中发布。 为域创建一个单独的文件夹。 sudo mkdir /etc/opendkim/keys/your-domain.com 使用opendkim genkey工具生成密钥。 sudo opendkim-genkey -b 2048 -d your-domain.com -D /etc/opendkim/keys/your-domain.com -s mta1 -v 上述命令将创建2048位密钥-d(域)指定域-D(目录)指定存储密钥的目录。我使用mta1作为DKIM选择器。命令执行后,私钥将写入mta1。私有文件和公钥将写入mta1。txt文件。 默认情况下,只有root用户可以读取和写入密钥文件。使opendkim成为私钥的所有者。 sudo chown opendkim:opendkim /etc/opendkim/keys/ -R 在DNS记录中发布您的公钥 显示公钥 sudo cat /etc/opendkim/keys/your-domain.com/mta1.txt p参数后面的字符串是公钥。 在DNS管理器中,创建一个TXT记录,输入mta1_名称字段中的domainkey。然后返回终端窗口,复制括号中的所有内容,并将其粘贴到DNS记录的值字段中。您需要删除值字段中的所有双引号和换行符。如果不删除它们,那么下一步中的密钥测试可能会失败。 测试DKIM密钥 在CentOS 8服务器上输入以下命令以测试密钥。 sudo opendkim-testkey -d your-domain.com -s mta1 -vvv 如果一切正常,您将看到键OK消息。 opendkim-testkey: using default configfile /etc/opendkim.conf opendkim-testkey: checking key 'mta1._domainkey.linuxbabe.com' opendkim-testkey: key OK 如果你看到“钥匙不安全”,不要惊慌。这是因为您的域名上未启用DNSSEC。DNSSEC是安全DNS查询的安全标准。大多数域名都没有启用DNSSEC。你可以继续遵循这个指南。 现在我们可以启动opendkim服务了。 sudo systemctl start opendkim 并在启动时启用自动启动。 sudo systemctl enable opendkim OpenDKIM监听127.0.0.1:8891。 第5步:将Postfix连接到OpenDKIM 编辑后缀主配置文件。 sudo nano /etc/postfix/main.cf 在这个文件的末尾添加以下几行,这样Postfix就可以通过milter协议调用OpenDKIM了。请注意,应该使用127.0.0.1作为地址。不要使用localhost。 # Milter configuration milter_default_action = accept milter_protocol = 6 smtpd_milters = inet:127.0.0.1:8891 non_smtpd_milters = $smtpd_milters 保存并关闭文件。然后将postfix用户添加到opendkim组。 sudo gpasswd -a postfix opendkim 重新启动后缀服务。 sudo systemctl restart postfix 步骤6:创建SPF DNS记录 SPF(发件人策略框架)记录指定允许哪些主机或IP地址代表域发送电子邮件。在DNS管理界面中,创建一个新的TXT记录,如下所示。使用您自己的服务器IPv4地址和IPv6地址。 TXT @ v=spf1 mx ip4:12.34.56.78 ip6:2600:3c01::f03c:93d8:f2c6:78ad ~all 第7步:设置发件人地址、发件人名称和返回路径 您可以在网站/web应用程序中设置自定义发件人地址、发件人名称和返回路径。让我们以WordPress为例。您可以在WordPress主题的函数中添加以下行。php文件覆盖默认的发件人地址、发件人名称和返回路径。必要时替换红色文本。 // Function to change From email address function wpb_sender_email( $original_email_address ) { return '[email protected]'; } // Function to change sender name function wpb_sender_name( $original_email_from ) { return 'LinuxBabe'; } // Set return-path the same as From address function fix_my_email_return_path( $phpmailer ) { $phpmailer->Sender = $phpmailer->From; } // Hooking up our functions to WordPress filters add_filter( 'wp_mail_from', 'wpb_sender_email' ); add_filter( 'wp_mail_from_name', 'wpb_sender_name' ); add_action( 'phpmailer_init', 'fix_my_email_return_path' ); 保存文件,就完成了。 步骤8:为发送的电子邮件启用TLS加密 默认情况下,Postfix在发送邮件时不使用TLS加密。要启用TLS加密,请打开/etc/postfix/main。cf文件,并在该文件末尾添加以下两行。 smtp_tls_security_level = may smtp_tls_loglevel = 1 第一行为Postfix SMTP客户端启用TLS加密。第二行将把TLS连接记录在/var/log/maillog文件中,这样您就可以检查TLS加密是否有效。保存并关闭文件。重新启动Postfix以使更改生效。 sudo systemctl restart postfix 由于Postfix不接收传入的电子邮件,因此无需为Postfix SMTP守护程序配置有效的TLS证书。 第9步:测试发送者分数 现在去https://www.mail-tester.com.你会看到一个独特的电子邮件地址。从Postfix SMTP服务器上的网站向此地址发送电子邮件,然后检查您的分数。如你所见,我得了满分。在测试结果中,您应该检查您的PTR记录、SPF和DKIM记录是否有效。 还可以打开/var/log/maillog文件,检查是否使用了TLS加密。例如,下面一行显示了与mail tester的连接。com是加密的。 Anonymous TLS connection established to mail-tester.com[94.23.206.89]:25: TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits) 如果你的电子邮件仍被标记为垃圾邮件呢? 在本文中,我为您提供了更多关于电子邮件可交付性的提示:如何阻止您的电子邮件被标记为垃圾邮件。虽然这需要一些时间和精力,但在应用这些技巧后,你的电子邮件最终会被放入收件箱。 如何为多个域配置Postfix仅发送SMTP服务器 默认情况下,Postfix允许您使用发件人标题和返回路径地址中的任何域名发送电子邮件。如果你的服务器托管多个网站,你只需要为你的其他域创建SPF DNS记录,这很容易做到,并为你的其他域配置OpenDKIM。 要为其他域配置OpenDKIM,需要在签名表、密钥表和可信主机文件中添加其他域,如下所示。 签名表: *@example.com mta1._domainkey.example.com *@example.net mta1._domainkey.example.net 键表: mta1._domainkey.example.com example.com:mta1:/etc/opendkim/keys/example.com/mta1.private mta1._domainkey.example.net example.net:mta1:/etc/opendkim/keys/example.net/mta1.private 受信任的主机: 127.0.0.1 localhost *.example.com *.example.net 然后按照上述步骤为其他域生成DKIM私钥/公钥对,并在DNS中添加DKIM公钥。重新启动OpenDKIM,就完成了。别忘了测试你的发件人分数。 故障排除 如果您的邮件未签名且DKIM检查失败,您可能需要检查postfix日志(/var/log/maillog)以查看配置中的错误。 从另一台服务器发送电子邮件 有两种方法允许其他服务器通过只发送Postfix SMTP服务器发送电子邮件。 在不使用SMTP身份验证的情况下使用端口25:此方法要求其他服务器不阻止端口25(出站)。 将端口587用于SMTP身份验证:如果其他服务器阻止端口25(出站),则可以使用端口587。 没有SMTP身份验证的端口25 默认情况下,CentOS 8上的Postfix仅在本地主机上侦听。您需要将Postfix配置为在0.0.0.0上侦听,以便其他服务器可以连接到仅发送Postfix SMTP服务器。 sudo postconf "inet_interfaces = all" 然后需要将另一台服务器的IP地址添加到Postfix mynetworks参数中。将12.34.56.78替换为实际IP地址。 sudo postconf "$(postconf mynetworks) 12.34.56.78" 重新启动Postfix以使更改生效。 sudo systemctl restart postfix 运行以下命令打开端口25(入站)。 sudo firewall-cmd --permanent --add-port=25/tcp sudo systemctl reload firewalld 现在,您可以将SMTP客户端配置为使用mta1。你的地盘。com和端口25发送电子邮件。您不需要在SMTP客户端中指定用户名/密码。 带有SMTP身份验证的587端口 打开防火墙中的587和80端口。 sudo firewall-cmd --permanent --add-service={smtp-submission,http} sudo systemctl reload firewalld 默认情况下,CentOS 8上的Postfix仅在本地主机上侦听。您需要将Postfix配置为在0.0.0.0上侦听,以便其他服务器可以连接到仅发送Postfix SMTP服务器。 sudo postconf "inet_interfaces = all" 然后,您需要启用Postfix的提交服务,以便电子邮件客户端可以向Postfix SMTP服务器提交电子邮件。编辑母版。cf文件。 sudo nano /etc/postfix/master.cf 在提交部分,取消注释或添加以下行。请在每个-o之前至少允许一个空格(制表符或空格键)。在后缀配置中,前面的空格字符表示此行是前一行的延续。(默认情况下,提交部分被注释掉。您可以复制以下行并将其粘贴到文件中,这样您就不必手动取消注释或添加新文本。) submission inet n - y - - smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_tls_wrappermode=no -o smtpd_tls_loglevel=1 -o smtpd_sasl_auth_enable=yes -o smtpd_relay_restrictions=permit_sasl_authenticated,reject -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject -o smtpd_sasl_type=dovecot -o smtpd_sasl_path=private/auth 上述配置启用Postfix的提交守护程序,并要求对SMTP身份验证进行TLS加密。纯文本身份验证将被拒绝。保存并关闭文件。要启用SMTP身份验证,我们需要在CentOS 8/RHEL 8服务器上安装Dovecot。 sudo dnf install dovecot 启动Dovecot并在启动时启用自动启动。 sudo systemctl start dovecot sudo systemctl enable dovecot 编辑身份验证配置文件。 sudo nano /etc/dovecot/conf.d/10-auth.conf 取消对以下行的注释。 disable_plaintext_auth = yes 当没有SSL/TLS加密时,它将禁用明文身份验证。如果您想使用完整的电子邮件地址([email protected])登录,请在文件中添加以下行。 auth_username_format = %n 否则,您只能使用用户名登录(不使用@your domain.com)。接下来,找到下面这行。 auth_mechanisms = plain 这一行只启用普通身份验证机制。登录是您可能希望添加的另一种身份验证机制,以支持旧的电子邮件客户端。 auth_mechanisms = plain login 保存并关闭文件。然后编辑以下文件。 sudo nano /etc/dovecot/conf.d/10-master.conf 将service auth部分更改为以下内容,以便Postfix可以找到Dovecot身份验证服务器。 service auth {     unix_listener /var/spool/postfix/private/auth {       mode = 0660       user = postfix group = postfix     } } 保存并关闭文件。重新启动Dovecot以使更改生效。 sudo systemctl restart dovecot 接下来,我们需要获得有效的TLS证书。我们可以很容易地从Let's Encrypt获得免费的TLS证书。发出以下命令,从EPEL存储库在CentOS 8/RHEL 8上安装Let's Encrypt client(certbot)。 sudo dnf install certbot 然后使用独立插件获取TLS证书(假设Postfix SMTP服务器上没有运行web服务器)。 sudo certbot certonly --standalone --agree-tos --email [email protected] -d mta1.yourdomain.com 过了一会儿,您应该会看到以下几行,这意味着证书已成功获得。您还可以查看证书存储的目录。 接下来,我们需要运行以下两个命令来指定后缀配置文件中TLS证书和私钥的位置。您的Let's Encrypt证书和私钥存储在/etc/letsencrypt/live/mta1下。你的领域。com/directory。 sudo postconf "smtpd_tls_cert_file = /etc/letsencrypt/live/mta1.your-domain.com/fullchain.pem" sudo postconf "smtpd_tls_key_file = /etc/letsencrypt/live/mta1.your-domain.com/privkey.pem" 重新启动Postfix以使更改生效。 sudo systemctl restart postfix 现在,您可以将SMTP客户端配置为使用mta1。你的地盘。com和端口587发送电子邮件。使用TLS加密类型和普通作为身份验证模式。您需要在SMTP服务器上创建电子邮件帐户。这很简单。使用adduser命令添加用户。 sudo adduser user1 然后为该用户设置密码。 sudo passwd user1 电子邮件地址将为[电子邮件 受保护]。 从邮件头中删除敏感信息 默认情况下,Postfix SMTP服务器将添加一个Received:电子邮件头,记录客户端的IP地址,这可能会泄露您网站的IP地址(如果它位于CDN后面)。你可以告诉Postfix忽略它。创建一个头检查文件。 sudo nano /etc/postfix/smtp_header_checks 将以下行放入文件中。 /^Received:/ IGNORE 保存并关闭文件。然后编辑后缀主配置文件。 sudo nano /etc/postfix/main.cf 在文件末尾添加以下行。 smtp_header_checks = regexp:/etc/postfix/smtp_header_checks 保存并关闭文件。然后运行以下命令重建哈希表。 sudo postmap /etc/postfix/smtp_header_checks 重新加载后缀以使更改生效。 sudo systemctl reload postfix 现在Postfix不会在邮件头中包含这些敏感信息。 自动更新TLS证书 您可以创建Cron作业来自动续订TLS证书。只需打开root用户的crontab文件。 sudo crontab -e 然后添加以下行。 @daily certbot renew --quiet 保存并关闭文件。 发送大量或大量电子邮件 您可以使用此SMTP服务器发送批量或批量电子邮件吗? 是的,但你应该只向合法订户发送批量电子邮件,也就是说,收件人应该已经注册了你的邮件列表。你不应该发送垃圾邮件(未经请求的批量电子邮件),否则你的SMTP服务器肯定会被列入黑名单。在发送大量电子邮件之前,我强烈建议遵循本文中的建议:如何阻止您的电子邮件被标记为垃圾邮件。 必须先发出STARTTLS命令 如果在邮件日志(/var/log/maillog)中看到以下错误,可能是因为在/etc/postfix/main中没有正确指定TLS证书。cf文件。 Must issue a STARTTLS command first (in reply to MAIL FROM command)) 结论 我希望本教程能帮助您在CentOS 8上为多个域设置Postfix仅发送SMTP服务器。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?

    2022.03.24 浏览:726
  • 如何使用iRedMail在Ubuntu20.04上轻松设置完整的邮件服务器

    在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上正确设置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账户的人向[email&#160;protected]发送电子邮件,Gmail服务器将查询linuxbabe的MX记录。通用域名格式。当它发现那封邮件。利努克斯宝贝。com负责接收电子邮件,然后查询邮件记录。利努克斯宝贝。com获取IP地址,从而可以发送电子邮件。 你需要去你的DNS托管服务(通常是你的域名注册)创建DNS记录。在DNS管理器中,为域名创建MX记录。在名称字段中输入@代表主域名,然后输入mail。你的领域。com在值字段中。 注意: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(安装软件包维护者版本)。 我强烈建议创建一个sudo用户来管理服务器,而不是使用默认的root用户。运行以下命令创建用户。将用户名替换为首选用户名。 adduser username 然后将用户添加到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键。 下一个屏幕将要求您选择邮件存储路径。您可以使用默认路径:/var/vmail,只需按Enter键即可。 然后选择是否要运行web服务器。强烈建议您选择运行web服务器,因为您需要基于web的管理面板来添加电子邮件帐户。此外,它还允许您访问Roundcube网络邮件。默认情况下,Nginx web服务器处于选中状态,因此只需按Enter键即可。(星号表示该项目已被选中。) 然后为电子邮件帐户选择存储后端。选择一个你熟悉的。本教程选择了MariaDB。按向上和向下箭头键,然后按空格键进行选择。 如果选择了MariaDB或MySQL,则需要设置MySQL根密码。 接下来,输入您的第一个邮件域。您可以稍后在基于web的管理面板中添加其他邮件域。本教程假设您想要一个像[email&#160;protected]这样的电子邮件帐户。在这种情况下,你需要进入你的域名。com在这里,没有子域。不要在域名后按空格键。我认为iRedMail会将空格字符与域名一起复制,这可能会导致安装失败。 接下来,为邮件域管理员设置密码。 选择可选组件。默认情况下,选择4个项目。如果您想使用SOGo群件(网络邮件、日历、通讯簿、ActiveSync),请按向下箭头键和空格键进行选择。按Enter键进入下一个屏幕。 现在,您可以查看您的配置。键入Y开始安装所有邮件服务器组件。 在安装结束时,选择y以使用iRedMail提供的防火墙规则并重新启动防火墙。 现在iRedMail安装完成了。您将收到webmail的URL、web管理面板和登录凭据的通知。iRedMail。提示文件包含有关iRedMail服务器的重要信息。 重新启动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 [email protected] -d mail.your-domain.com -w /var/www/html/ 当它询问您是否希望接收EFF的通信时,您可以选择否。 如果一切顺利,您将看到以下文本,表明您已成功获得TLS证书。您的证书和链已保存在/etc/letsencrypt/live/mail。你的领域。com/directory。 未能获得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; 保存并关闭文件。然后测试Nginx配置。 sudo nginx -t 如果测试成功,请重新加载Nginx以使更改生效。 sudo systemctl reload nginx 再次运行以下命令以获取TLS证书。用实际数据替换红色文本。 sudo certbot certonly --webroot --agree-tos --email [email protected] -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证书。 在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步:发送测试电子邮件 使用邮政局长邮件帐户([email&#160;protected])登录iredadmin面板。在“添加”选项卡中,可以添加其他域或电子邮件地址。 如果您看到“无控制域”错误,请参阅本文。 创建用户后,您可以访问Roundcube webmail地址,并使用新的邮件用户帐户登录。 https://mail.your-domain.com/mail/ 现在,您可以测试电子邮件的发送和接收。请注意,您可能需要等待几分钟才能收到电子邮件,因为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。选择普通密码作为身份验证方法。 故障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记录,如下所示。 说明: 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公钥在括号中。 然后在DNS管理器中,创建一个TXT记录,输入dkim_名称字段中的domainkey。复制括号中的所有内容并粘贴到值字段中。删除所有双引号和换行符。 保存更改后,运行以下命令测试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。在“值”字段中,输入以下内容。(您应该创建[email&#160;protected]电子邮件地址。) v=DMARC1; p=none; pct=100; rua=mailto:[email protected] 上述DMARC记录是一个安全的起点。如果你想阅读DMARC的完整解释,请查看以下文章。请注意,这是可选的。 创建DMARC记录以保护您的域名免受电子邮件欺骗 第10步:测试电子邮件分数和位置 创建PTR、SPF、DKIM记录后,转到https://www.mail-tester.com.你会看到一个独特的电子邮件地址。从你的域名发送电子邮件到此地址,然后检查你的分数。如你所见,我得了满分。在测试结果中,您应该检查您的PTR记录、SPF和DKIM记录是否有效。 邮件测试员。com只能显示发件人分数。还有另一个名为GlockApps的服务,可以让你检查你的电子邮件是否被放在收件人的收件箱或垃圾邮件文件夹中,或者被直接拒绝。它支持许多流行的电子邮件提供商,如Gmail、Outlook、Hotmail、YahooMail、iCloud mail等。 如果你的电子邮件仍被标记为垃圾邮件呢? 在这篇文章中,我有更多提示:如何阻止你的电子邮件被标记为垃圾邮件。虽然这需要一些时间和精力,但在应用这些技巧后,你的电子邮件最终会被放入收件箱。 如果您的电子邮件被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; } 保存并关闭文件。测试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上安装邮件服务器。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?

    2022.03.24 浏览:1281
  • 在Ubuntu 20.04、18.04、16.04上为多个域设置Postfix仅发送SMTP服务器

    在本文中,我将向您展示如何在Ubuntu20.04、18.04、16.04上将Postfix设置为只发送SMTP服务器。我将首先向您展示如何为单个域执行此操作,然后如果需要,您可以为多个域应用这些步骤。 用例 您有一个需要向用户发送事务性电子邮件(如密码重置电子邮件)的网站/web应用程序。最有可能的是,用户不需要回复这些电子邮件,或者如果他们回复,回复电子邮件将被发送到您的专用邮件服务器。在这种情况下,可以使用Postfix(一种流行的SMTP服务器软件)在web服务器上设置只发送SMTP服务器。 先决条件 要从服务器发送电子邮件,端口25(出站)必须打开。许多ISP和托管公司,如DigitalOcean block port 25来控制垃圾邮件。我建议使用ScalaHost,因为它不会阻止端口25(出站)。一旦你有了ScalaHost服务器,就在上面安装Ubuntu,并按照下面的说明操作。 为多个域设置Postfix仅发送SMTP服务器实际上并不困难。首先,我们需要为一个域配置它,然后为多个域设置它。 第一步:在Ubuntu上安装后缀 运行以下命令从默认的Ubuntu存储库安装Postfix。 sudo apt-get update sudo apt-get install postfix -y 系统将要求您选择邮件服务器配置类型。按Tab键,然后按Enter键。 在下一个屏幕中,按Enter键选择默认选项:Internet站点。 接下来,输入系统邮件名称的域名,即@symbol后面的域名。 第2步:配置后缀 设置后缀主机名 默认情况下,Postfix SMTP服务器在与其他SMTP服务器通信时使用操作系统的主机名来标识自身。但是,操作系统的主机名可能会更改,如果您的主机名无效,一些SMTP服务器将拒绝您的电子邮件。因此,使用以下命令直接在Postfix配置文件中设置主机名是一种很好的做法。 sudo postconf -e "myhostname = sendonly.yourdomain.com" 这个主机名应该有一个指向服务器IP地址的DNS a记录。 设置$mydomain参数 $mydomain参数指定本地internet域名。默认情况下,使用$myhostname减去第一个组件。您可以通过以下方式显示$mydomain的当前值: postconf mydomain 它应该是你的顶级域名,比如 linuxbabe.com 如果它没有显示您的apex域名,则将$mydomain参数设置为: sudo postconf -e "mydomain = yourdomain.com" 设置$myorigin参数 $myorigin参数指定附加到没有@domain部分的发件人和收件人地址的默认域名。默认设置是使用/etc/mailname文件中的值,如下所示: postconf myorigin 输出: myorigin = /etc/mailname 然后可以在/etc/mailname文件中显示该值。 cat /etc/mailname 它的价值应该是你的领域。com没有任何子域。 echo "yourdomain.com" | sudo tee /etc/mailname 重新启动后缀 最后,我们需要重新启动Postfix以使更改生效。 sudo systemctl restart postfix 第三步:设置PTR记录 您需要设置一个PTR记录(又名指针记录),它将IP地址映射到FQDN。这是A唱片的对应品。如果你的服务器IP地址没有PTR记录,许多SMTP服务器会拒绝你的电子邮件。 因为您从主机提供商或ISP获得IP地址,而不是从域注册商获得,所以您必须在主机提供商的控制面板中为您的IP设置PTR记录,或者询问ISP。例如,在ScalaHost中,您可以通过打开支持票证或使用他们网站上的实时聊天来设置PTR记录。尽管您可以将PTR记录设置为任何主机名,但为了获得最佳实践,您应该在步骤2中使用后缀主机名 要查看PTR记录设置是否正确,请运行以下命令。将12.34.56.78替换为您自己的IP地址。 host 12.34.56.78 请注意,如果服务器使用IPv6地址,最好为后缀主机名添加AAAA记录,并为IPv6地址设置PTR记录。 第4步:安装和配置OpenDKIM DKIM代表域密钥识别邮件。你可以在你的服务器上安装OpenDKIM,并使用它为从你的域发送的电子邮件添加签名,使用你的私钥。接收SMTP服务器使用您在DNS中发布的相应公钥验证签名。如果你想让你的邮件进入收件人的收件箱,添加DKIM签名是必须的。 首先从默认的Ubuntu存储库安装OpenDKIM。 sudo apt-get install opendkim opendkim-tools 然后将postfix用户添加到opendkim组。 sudo adduser postfix opendkim 编辑OpenDKIM主配置文件。 sudo nano /etc/opendkim.conf 找到下面几行。 #Canonicalization simple #Mode sv #SubDomains no 取消对它们的注释,并用release/simple替换simple。将模式从sv更改为s,因为没有入站电子邮件来验证签名。 Canonicalization relaxed/simple Mode s SubDomains no 在该文件末尾添加以下行。(在Ubuntu 18.04上,用户ID已经设置为opendkim) #OpenDKIM user # Remember to add user postfix to group opendkim UserID opendkim # Map domains in From addresses to keys used to sign messages KeyTable refile:/etc/opendkim/key.table SigningTable refile:/etc/opendkim/signing.table # A set of internal hosts whose mail should be signed InternalHosts /etc/opendkim/trusted.hosts 保存并关闭文件。 创建签名表、密钥表和受信任主机文件 为OpenDKIM创建目录结构。 sudo mkdir /etc/opendkim sudo mkdir /etc/opendkim/keys 将所有者从root更改为opendkim,并确保只有opendkim用户可以读取和写入密钥目录。 sudo chown -R opendkim:opendkim /etc/opendkim sudo chmod go-rw /etc/opendkim/keys 创建签名表。 sudo nano /etc/opendkim/signing.table 将以下行添加到文件中。这意味着如果电子邮件中的From:标题包含示例。com,然后使用sendonly DKIM选择器。您可以将sendonly更改为首选DKIM选择器名称,并且该名称在DNS中应该是唯一的。 *@example.com sendonly._domainkey.example.com 保存并关闭文件。然后创建键表。 sudo nano /etc/opendkim/key.table 添加以下行。这意味着对于sendonly DKIM选择器,使用保存在/etc/opendkim/keys/example中的私钥。com/sendonly。私人签名邮件。 sendonly._domainkey.example.com    example.com:sendonly:/etc/opendkim/keys/example.com/sendonly.private 保存并关闭文件。接下来,创建受信任的主机文件。 sudo nano /etc/opendkim/trusted.hosts 将以下行添加到新创建的文件中。 127.0.0.1 localhost *.example.com 上述情况意味着来自上述IP地址和域的消息将被信任和签名。 生成私钥/公钥对 我们需要生成一个私钥来签署发送的电子邮件,以及一个用于接收SMTP服务器的公钥来验证DKIM签名。公钥将在DNS中发布。 为域创建一个单独的文件夹。 sudo mkdir /etc/opendkim/keys/example.com 使用opendkim genkey工具生成密钥。 sudo opendkim-genkey -b 2048 -d example.com -D /etc/opendkim/keys/example.com -s sendonly -v 上述命令将创建2048位密钥-d(域)指定域-D(directory)指定存储密钥的目录,我们使用sendonly作为选择器(-s)。执行命令后,私钥将保存在sendonly中。私密且仅限发送。txt将是包含公钥的txt记录。 使opendkim成为私钥的所有者。 sudo chown opendkim:opendkim /etc/opendkim/keys/example.com/sendonly.private 在DNS记录中添加公钥 显示公钥 sudo cat /etc/opendkim/keys/example.com/sendonly.txt p参数后面的字符串是公钥。在DNS管理器中,为第二个域创建一个TXT记录。输入sendonly_名称字段中的domainkey。复制括号中的所有内容并粘贴到值字段中。删除所有双引号。(您可以先将其粘贴到文本编辑器中,删除所有双引号,然后将其复制到DNS管理器。DNS管理器可能会要求您删除其他无效字符,例如回车符。) DNS记录发布后,在Ubuntu服务器上输入以下命令以测试密钥。 sudo opendkim-testkey -d example.com -s sendonly -vvv 如果一切正常,你会看到的 key OK 如果您看到密钥不安全消息,请不要惊慌。这是因为您的域名上未启用DNSSEC。 第5步:用OpenDKIM连接Postfix Postfix可以通过Unix套接字文件与OpenDKIM通信。OpenDKIM使用的默认套接字文件是/var/run/OpenDKIM/OpenDKIM。sock,如/etc/opendkim所示。conf文件。但是Ubuntu附带的postfix SMTP守护程序在chroot监狱中运行,这意味着SMTP守护程序将解析与postfix队列目录(/var/spool/postfix)相关的所有文件名。所以我们需要更改套接字文件。 编辑OpenDKIM主配置文件。 sudo nano /etc/opendkim.conf 找到以下行: Socket local:/var/run/opendkim/opendkim.sock 替换为以下行。(如果找不到上一行,请添加下一行。) Socket local:/var/spool/postfix/opendkim/opendkim.sock 创建一个目录来保存OpenDKIM套接字文件,并且只允许OpenDKIM用户和postfix组访问它。 sudo mkdir /var/spool/postfix/opendkim sudo chown opendkim:postfix /var/spool/postfix/opendkim 如果可以在/etc/default/opendkim文件中找到以下行。 SOCKET="local:/var/run/opendkim/opendkim.sock" 或 SOCKET=local:$RUNDIR/opendkim.sock 换成 SOCKET="local:/var/spool/postfix/opendkim/opendkim.sock" 之后,我们需要编辑Postfix主配置文件。 sudo nano /etc/postfix/main.cf 在该文件末尾添加以下行,以连接Postfix和OpenDKIM。 # Milter configuration milter_default_action = accept milter_protocol = 6 smtpd_milters = local:opendkim/opendkim.sock non_smtpd_milters = $smtpd_milters 保存并关闭文件。重新启动OpenDKIM和Postfix。 sudo systemctl restart opendkim postfix 如果无法重新启动,OpenDKIM将不会生成任何消息。运行以下命令检查其状态。确保它在运行。 systemctl status opendkim 步骤6:创建SPF DNS记录 SPF(发件人策略框架)记录指定允许哪些主机或IP地址代表域发送电子邮件。在DNS管理界面中,创建一个新的TXT记录,如下所示。使用您自己的服务器IPv4地址和IPv6地址。 TXT  @   v=spf1 mx ip4:12.34.56.78 ip6:2600:3c01::f03c:93d8:f2c6:78ad ~all 第7步:设置发件人地址、发件人名称和返回路径 您可以在网站/web应用程序中设置自定义发件人地址、发件人名称和返回路径。让我们以WordPress为例。您可以在WordPress主题的函数中添加以下行。php文件覆盖默认的发件人地址、发件人名称和返回路径。必要时替换红色文本。 // Function to change From email address function wpb_sender_email( $original_email_address ) { return '[email protected]'; } // Function to change sender name function wpb_sender_name( $original_email_from ) { return 'LinuxBabe'; } // Set return-path the same as From address function fix_my_email_return_path( $phpmailer ) { $phpmailer->Sender = $phpmailer->From; } // Hooking up our functions to WordPress filters add_filter( 'wp_mail_from', 'wpb_sender_email' ); add_filter( 'wp_mail_from_name', 'wpb_sender_name' ); add_action( 'phpmailer_init', 'fix_my_email_return_path' ); 保存文件,就完成了。(注意functions.php文件。不要在该文件末尾的?&gt;之后添加空行,否则您的WordPress XML网站地图可能会损坏。) 步骤8:为发送的电子邮件启用TLS加密 默认情况下,Postfix在发送邮件时不使用TLS加密。要启用TLS加密,请打开/etc/postfix/main。cf文件,并在该文件末尾添加以下两行。 smtp_tls_security_level = may smtp_tls_loglevel = 1 第一行为Postfix SMTP客户端启用TLS加密。第二行将TLS连接记录在/var/log/mail中。日志文件,以便检查TLS加密是否正常工作。保存并关闭文件。重新启动Postfix以使更改生效。 sudo systemctl restart postfix 由于Postfix不接收传入的电子邮件,因此无需为Postfix SMTP守护程序配置有效的TLS证书。 某些SMTP服务器要求您使用TLS。如果没有,他们将拒绝您的电子邮件,您将在邮件日志中看到以下错误消息。 Must issue a STARTTLS command first 第9步:测试发送者分数 现在去https://www.mail-tester.com.你会看到一个独特的电子邮件地址。从Postfix SMTP服务器上的网站向此地址发送电子邮件,然后检查您的分数。如你所见,我得了满分。在测试结果中,您应该检查您的PTR记录、SPF和DKIM记录是否有效。 您还可以打开/var/log/mail。用于检查是否使用TLS加密的日志文件。例如,下面一行显示了与mail tester的连接。com是加密的。 Anonymous TLS connection established to mail-tester.com[94.23.206.89]:25: TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits) 如果你的电子邮件仍被标记为垃圾邮件呢? 在本文中,我为您提供了更多关于电子邮件可交付性的提示:如何阻止您的电子邮件被标记为垃圾邮件。虽然这需要一些时间和精力,但在应用这些技巧后,你的电子邮件最终会被放入收件箱。 如何为多个域配置Postfix仅发送SMTP服务器 默认情况下,Postfix允许您使用发件人标题和返回路径地址中的任何域名发送电子邮件。如果你的服务器托管多个网站,你只需要为你的其他域创建SPF DNS记录,这很容易做到,并为你的其他域配置OpenDKIM。 要为其他域配置OpenDKIM,需要在签名表、密钥表和可信主机文件中添加其他域,如下所示。 签名表(/etc/opendkim/Signing.table) *@example.com sendonly._domainkey.example.com *@example.net sendonly._domainkey.example.net 键表(/etc/opendkim/Key.table) sendonly._domainkey.example.com example.com:sendonly:/etc/opendkim/keys/example.com/sendonly.private sendonly._domainkey.example.net example.net:sendonly:/etc/opendkim/keys/example.net/sendonly.private 可信主机(/etc/opendkim/Trusted.hosts) 127.0.0.1 localhost *.example.com *.example.net 然后按照上述步骤为其他域生成DKIM私钥/公钥对,并在DNS中添加DKIM公钥。重新启动OpenDKIM,就完成了。别忘了测试你的发件人分数。 从另一台服务器发送电子邮件 有两种方法允许其他服务器通过只发送Postfix SMTP服务器发送电子邮件。 在不使用SMTP身份验证的情况下使用端口25:此方法要求其他服务器不阻止端口25(出站)。 将端口587用于SMTP身份验证:如果其他服务器阻止端口25(出站),则可以使用端口587。 没有SMTP身份验证的端口25 运行以下命令使Postfix侦听0.0.0.0,以便其他服务器可以连接到仅发送Postfix SMTP服务器。 sudo postconf "inet_interfaces = all" 然后需要将另一台服务器的IP地址添加到Postfix mynetworks参数中。将12.34.56.78替换为实际IP地址。 sudo postconf "$(postconf mynetworks) 12.34.56.78" 重新启动Postfix以使更改生效。 sudo systemctl restart postfix 运行以下命令为另一台服务器打开端口25(入站)。 sudo ufw insert 1 allow in from 12.34.56.78 to any port 25 proto tcp 现在,您可以将SMTP客户端配置为使用mta1。你的地盘。com和端口25发送电子邮件。您不需要在SMTP客户端中指定用户名/密码。 带有SMTP身份验证的587端口 打开防火墙中的587和80端口。 sudo ufw insert 1 allow in from 12.34.56.78 to any port 25 proto tcp sudo ufw allow 80/tcp 运行以下命令使Postfix侦听0.0.0.0,以便其他服务器可以连接到仅发送Postfix SMTP服务器。 sudo postconf "inet_interfaces = all" 然后,您需要启用Postfix的提交服务,以便电子邮件客户端可以向Postfix SMTP服务器提交电子邮件。编辑母版。cf文件。 sudo nano /etc/postfix/master.cf 在提交部分,取消注释或添加以下行。请在-o之前至少允许一个空格(制表符或空格键)。在后缀配置中,前面的空格字符表示此行是前一行的延续。(默认情况下,提交部分被注释掉。您可以复制以下行并将其粘贴到文件中,这样您就不必手动取消注释或添加新文本。) submission inet n - y - - smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_tls_wrappermode=no -o smtpd_sasl_auth_enable=yes -o smtpd_relay_restrictions=permit_sasl_authenticated,reject -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject -o smtpd_sasl_type=dovecot -o smtpd_sasl_path=private/auth 上述配置启用Postfix的提交守护程序,并需要TLS加密。纯文本身份验证将被拒绝。提交守护进程监听TCP端口587。STARTTLS用于加密SMTP客户端和提交守护程序之间的通信。 保存并关闭文件。要启用SMTP身份验证,我们需要安装Dovecot。 sudo apt install dovecot-core 编辑身份验证配置文件。 sudo nano /etc/dovecot/conf.d/10-auth.conf 取消对以下行的注释。 disable_plaintext_auth = yes 当没有SSL/TLS加密时,它将禁用明文身份验证。如果您想使用完整的电子邮件地址([email&#160;protected])登录,请在文件中添加以下行。 auth_username_format = %Ln 否则,您只能使用用户名登录(不使用@your domain.com)。接下来,找到下面这行。 auth_mechanisms = plain 这一行只启用普通身份验证机制。登录是您可能希望添加的另一种身份验证机制,以支持旧的电子邮件客户端。 auth_mechanisms = plain login 保存并关闭文件。然后编辑以下文件。 sudo nano /etc/dovecot/conf.d/10-master.conf 将service auth部分更改为以下内容,以便Postfix可以找到Dovecot身份验证服务器。 service auth {     unix_listener /var/spool/postfix/private/auth {       mode = 0660       user = postfix group = postfix     } } 保存并关闭文件。重新启动Dovecot以使更改生效。 sudo systemctl restart dovecot 接下来,我们需要获得有效的TLS证书。我们可以很容易地从Let's Encrypt获得免费的TLS证书。发出以下命令在Ubuntu上安装Let's Encrypt client(certbot)。 sudo apt install certbot 然后使用独立插件获取TLS证书(假设Postfix SMTP服务器上没有运行web服务器)。 sudo certbot certonly --standalone --agree-tos --email [email protected] -d sendonly.yourdomain.com 过了一会儿,您应该会看到以下几行,这意味着证书已成功获得。您还可以查看证书存储的目录。 接下来,我们需要运行以下两个命令来指定后缀配置文件中TLS证书和私钥的位置。您的Let’s Encrypt证书和私钥存储在/etc/letsencrypt/live/sendonly下。你的领域。com/directory。 sudo postconf "smtpd_tls_cert_file = /etc/letsencrypt/live/sendonly.your-domain.com/fullchain.pem" sudo postconf "smtpd_tls_key_file = /etc/letsencrypt/live/sendonly.your-domain.com/privkey.pem" 重新启动Postfix以使更改生效。 sudo systemctl restart postfix 现在,您可以将SMTP客户端配置为仅使用sendonly。你的地盘。com和端口587发送电子邮件。使用TLS加密类型和普通作为身份验证模式。您需要在SMTP服务器上创建电子邮件帐户。这很简单。使用adduser命令添加用户。 sudo adduser user1 --no-create-home 然后为该用户设置密码。 sudo passwd user1 电子邮件地址将为[电子邮件&#160;受保护]。 故障排除 未经DKIM签名的电子邮件 如果您的邮件未签名且DKIM检查失败,您可能需要检查postfix日志(/var/log/mail.log)以查看配置中的错误。如果您在邮件日志中看到以下消息, warning: connect to Milter service local:opendkim/opendkim.sock: No such file or directory 您可能需要检查opendkim systemd服务是否正在实际运行。 systemctl status opendkim 如果opendkim正在运行,但仍然看到上述错误,则可能需要更改smtpd_milters=local:opendkim/opendkim。sock to smtpd_milters=local:/opendkim/opendkim。插入/etc/postfix/main。cf文件。 必须先发出STARTTLS命令 如果在邮件日志(/var/log/mail.log)中看到以下错误,可能是因为在/etc/postfix/main中没有正确指定TLS证书。cf文件。 Must issue a STARTTLS command first (in reply to MAIL FROM command)) 致命:没有SASL身份验证机制 如果在邮件日志(/var/log/mail.log)中看到以下错误,可能是因为忘记重新启动dovecot(sudo systemctl restart dovecot)。 warning: SASL: Connect to private/auth failed: No such file or directory fatal: no SASL authentication mechanisms 此外,检查Dovecot是否正在运行。 sudo systemctl status dovecot 发送大量或大量电子邮件 您可以使用此SMTP服务器发送批量或批量电子邮件吗? 是的,但你应该只向合法订户发送批量电子邮件,也就是说,收件人应该已经注册了你的邮件列表。你不应该发送垃圾邮件(未经请求的批量电子邮件),否则你的SMTP服务器肯定会被列入黑名单。在发送大量电子邮件之前,我强烈建议遵循本文中的建议:如何阻止您的电子邮件被标记为垃圾邮件。 禁止在Postfix中接收电子邮件 默认情况下,Postfix SMTP服务器侦听计算机上的所有活动接口。由于Postfix SMTP服务器仅用于向用户发送事务性电子邮件,因此您可以阻止到TCP端口25的入站连接,这样坏的参与者就不能向其发送垃圾邮件。由于我们为端口25添加了一个白名单,合法用户不会受到影响。 从邮件头中删除敏感信息 默认情况下,Postfix SMTP服务器将添加一个Received:电子邮件头,记录客户端的IP地址,这可能会泄露您网站的IP地址(如果它位于CDN后面)。你可以告诉Postfix忽略它。创建一个头检查文件。 sudo nano /etc/postfix/smtp_header_checks 将以下行放入文件中。 /^Received:/ IGNORE 保存并关闭文件。然后编辑后缀主配置文件。 sudo nano /etc/postfix/main.cf 在文件末尾添加以下行。 smtp_header_checks = regexp:/etc/postfix/smtp_header_checks 保存并关闭文件。然后运行以下命令重建哈希表。 sudo postmap /etc/postfix/smtp_header_checks 重新加载后缀以使更改生效。 sudo systemctl reload postfix 现在Postfix不会在邮件头中包含这些敏感信息。 自动更新TLS证书 您可以创建Cron作业来自动续订TLS证书。只需打开root用户的crontab文件。 sudo crontab -e 然后添加以下行。 @daily certbot renew --quiet 保存并关闭文件。 结论 我希望本教程能帮助您在Ubuntu上为多个域设置Postfix只发送SMTP服务器。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?

    2022.03.24 浏览:571
  • 如何在Ubuntu 18.04上设置Zimbra开源邮件服务器

    在Linux上从头开始设置自己的电子邮件服务器是一个漫长而乏味的过程,如果你不是高级用户,这将是一个痛苦的过程。本教程将向您展示如何使用Zimbra在Ubuntu18.04上快速设置一个功能齐全的邮件服务器,为您节省大量时间和麻烦。 Zimbra是什么? Zimbra是Synacor,Inc.开发的开源电子邮件、日历和协作软件套件。它附带一个shell脚本,可以自动在Linux服务器上安装和配置所有必要的邮件服务器组件,从而消除手动安装和配置。使用Zimbra,您可以轻松地在基于web的管理面板中创建无限邮箱和无限邮件域。电子邮件帐户可以在MariaDB或OpenLDAP中管理。以下是Zimbra将自动安装和配置的开源软件列表。 后缀SMTP服务器 Nginx web服务器为管理控制台和webmail提供服务。它还将用作IMAP/POP3代理。 Jetty:运行Zimbra软件的web应用服务器。 OpenLDAP存储Zimbra系统配置、Zimbra全局地址列表,并提供用户身份验证。 MariaDB数据库 OpenDKIM:用于DKIM签名和验证 一个新的:MTA和内容扫描程序之间的接口。 SpamAssassin用于反垃圾邮件 ClamAV:反病毒扫描仪 Lucene:开源全功能文本和搜索引擎 ApacheJSieve:电子邮件过滤器 LibreOffice:高保真文档预览 Aspell:Zimbra Web客户端上使用的开源拼写检查器 memcached:开源对象缓存系统。 未绑定:轻量级快速DNS解析程序。 Zimbra还附带了一些自己开发的软件: zimbra drive:云存储。 zimbra聊天:文本聊天。 zimbra talk:具有屏幕共享和文件共享功能的群信息和视频会议。 mailboxd:它自己开发的IMAP/POP3服务器。 Zimbra有两个版本: 免费开源版。 商业支持的网络版,60天免费试用。 一些著名的Zimbra用户包括:Mozilla、Skype、O'Reilly Media、斯坦福大学和康卡斯特。在本文中,我们将使用开源版本(OSE)。 服务器要求 全新的Ubuntu 18.04操作系统。 至少2个CPU核和3GB RAM。如果使用单核CPU,Zimbra的运行速度会非常慢。你需要一台至少有3GB内存的服务器,因为安装后,你的服务器将使用超过2GB的内存。 第一步:选择合适的主机提供商并购买域名 Zimbra必须安装在干净干净的服务器上。 本教程是在每月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上正确设置Linux VPS服务器。 如何在Kamatera上创建Linux VPS服务器 创建服务器后,Kamatera将向您发送一封包含服务器SSH登录详细信息的电子邮件。要登录到服务器,可以使用SSH客户端。如果您在计算机上使用Linux或macOS,只需打开一个终端窗口并运行以下命令即可登录服务器。将12.34.56.78替换为服务器的IP地址。 ssh [email protected] 系统将要求您输入密码。 强烈建议您使用UbuntuLTS,比如Ubuntu18.04。不鼓励在非LTS Ubuntu上安装Zimbra这样的复杂服务器软件,因为每9个月升级一次操作系统可能会遇到问题。对于你的邮件服务器来说,保持2到5年的稳定状态要好得多。 你还需要一个域名。我从namescape注册了我的域名,因为价格低廉,而且他们终身免费保护whois的隐私。 第2步:创建DNS MX记录 MX记录指定哪个或多个主机处理特定域名的电子邮件。例如,为linuxbabe处理电子邮件的主机。com是邮件。利努克斯宝贝。通用域名格式。如果拥有Gmail账户的人向[email&#160;protected]发送电子邮件,Gmail服务器将查询linuxbabe的MX记录。通用域名格式。当它发现那封邮件。利努克斯宝贝。com负责接收电子邮件,然后查询邮件记录。利努克斯宝贝。com获取IP地址,从而可以发送电子邮件。 你需要去你的DNS托管服务(通常是你的域名注册)创建DNS记录。在DNS管理器中,为域名创建MX记录。在名称字段中输入@代表主域名,然后输入mail。你的领域。com在值字段中。 注意: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 我强烈建议创建一个sudo用户来管理服务器,而不是使用默认的root用户。运行以下命令创建用户。将用户名替换为首选用户名。 adduser username 然后将用户添加到sudo组。 adduser username sudo 切换到新用户。 su - username 接下来,使用以下命令为服务器设置完全限定的域名(FQDN)。 sudo hostnamectl set-hostname mail.your-domain.com 我们还需要使用命令行文本编辑器(如Nano)更新/etc/hosts文件。 sudo nano /etc/hosts 像下面那样编辑它。使用箭头键在文件中移动光标。必须将邮件服务器主机名放在localhost之后。 127.0.0.1 localhost.localdomain localhost mail.your-domain.com 保存并关闭文件。(要在Nano文本编辑器中保存文件,请按Ctrl+O,然后按Enter确认。要关闭文件,请按Ctrl+X。) 要查看更改,请重新登录,然后运行以下命令查看主机名。 hostname -f 第4步:在Ubuntu 18.04上安装Zimbra邮件服务器 Zimbra 9仍然提供开源版本。但是,它不提供二进制文件。只有源代码可用。幸运的是,有一家名为Zextras的第三方Zimbra解决方案提供商提供Zimbra二进制下载。 你可以登录Zextras网站,填写表格,获得Zimbra 9二进制下载链接。如果不想填写表单,请在服务器上运行以下命令下载Zimbra 9安装程序。 wget download.zextras.com/zcs-9.0.0_OSE_UBUNTU18_latest-zextras.tgz 提取存档文件。 tar xvf zcs-9.*.tgz 然后切换到新创建的目录。 cd zcs-9*/ 在运行安装程序脚本之前,请安装netstat实用程序。 sudo apt install net-tools 接下来,使用sudo权限运行Bash脚本。 sudo bash install.sh 邮件服务器安装向导将出现。首先,您需要同意软件许可协议的条款。 然后键入y确认您想要使用Zimbra的包存储库。 接下来,它将要求您选择要安装的软件包。您可以按y键安装它们。(y是大写的,这意味着当您按Enter键时,这是默认答案。)请注意,zimbra imapd软件包目前处于测试阶段,不建议安装。我只需按Enter键即可使用默认答案。 按y确认您选择的包裹。 现在开始安装。 它可能会告诉您需要更改主机名。回答y并输入邮件服务器主机名(mail.your domain.com)。 它还可能会告诉你需要更改域名。本教程假设您需要[email&#160;protected]这样的电子邮件地址。在这种情况下,键入Y,然后输入您的域。com在这里,没有子域。 如果它告诉您没有一条MX记录解析到此主机,那么您需要为邮件创建DNS记录。你的领域。通用域名格式。 如果检测到zimbra dnscache(端口53)存在端口冲突,则需要打开另一个SSH会话,并运行以下命令来停止systemd已解决的服务。 sudo systemctl stop systemd-resolved 然后继续安装。 然后显示主菜单。它告诉你管理员密码没有设置,所以你需要按7,然后按4来设置管理员密码。 为管理员帐户设置密码后,按r返回主菜单,然后按以下键。 按a键应用配置。 按y键将配置保存到文件中。 按Enter键使用默认文件名。 按y键继续。 等待安装过程完成。在安装结束时,您可以选择通知Zimbra您的安装。 配置完成后,按Enter键退出安装向导。现在,您可以访问基于web的管理面板https://mail.your-domain.com.因为它使用的是自签名的TLS证书,所以需要在web浏览器中添加安全异常。在第7步中,您将了解如何安装有效的Let's Encrypt TLS证书。 第5步:配置系统 Systemd resolved是Ubuntu上默认的DNS解析程序管理器。我们需要改变它的配置,使其与Zimbra一起工作。它应该在系统启动时在Zimbra服务之后启动。 systemd的服务配置文件已解析为/lib/systemd/system/systemd resolved。服务为了覆盖默认的systemd服务配置,我们创建了一个单独的目录。 sudo mkdir -p /etc/systemd/system/systemd-resolved.service.d/ 然后在这个目录下创建一个文件。 sudo nano /etc/systemd/system/systemd-resolved.service.d/custom.conf 在文件中添加以下行,这将使systemd resolved在Zimbra启动后启动,并使其在启动前休眠60秒。 [Unit] After=zimbra.service Before= [Service] ExecStartPre=/bin/sleep 60 保存并关闭文件。然后重新加载systemd以使更改生效。 sudo systemctl daemon-reload 步骤6:测试未绑定的DNS解析程序 未绑定DNS解析程序由Zimbra安装。然而,它可能无法开箱即用。重新启动服务器。 sudo shutdown -r now 然后通过SSH再次登录到服务器,并运行以下命令来测试DNS解析是否有效。 dig A linuxbabe.com 如果您看到SERVFAIL错误,这意味着Unbound没有正常运行。 要修复它,请切换到zimbra用户。 sudo su - zimbra 并检查未绑定的上游DNS解析程序正在使用哪个。 zmprov getServer `zmhostname` | grep DNSMasterIP 正确的设置应该会显示8.8.8.8是上游DNS解析程序。 zimbraDNSMasterIP: 8.8.8.8 如果127.0.0.53是上游解析器,则会出现问题。用以下方法将其移除: zmprov ms `zmhostname` -zimbraDNSMasterIP 127.0.0.53 然后添加8.8.8.8作为上游分解器。 zmprov ms `zmhostname` +zimbraDNSMasterIP 8.8.8.8 现在退出zimbra用户 exit 请稍等片刻,然后再次运行以下命令进行测试。 dig A linuxbabe.com 您应该看到以下输出,这意味着它现在工作正常。 如果运行以下命令以显示服务器正在使用的DNS解析程序, cat /etc/resolv.conf 它告诉你 /etc/resolv.conf: No such file or directory 检查系统故障是否已解决。服务正在运行。 sudo systemctl status systemd-resolved 运行以下命令以确保它将在引导时自动启动。 sudo systemctl enable --now systemd-resolved 第7步:安装Let's Encrypt TLS证书 由于邮件服务器正在使用自签名TLS证书,桌面邮件客户端用户和webmail客户端用户都将看到警告。为了解决这个问题,我们可以获得并安装免费的Let's Encrypt TLS证书。 获取证书 首先,运行以下命令从Snap store安装最新的Let's Encrypt(certbot)客户端。 sudo snap install certbot --classic Zimbra已经在Nginx中配置了TLS设置,我们可以使用独立插件通过TCP端口80获得证书。运行以下命令。用实际数据替换红色文本。 sudo /snap/bin/certbot certonly --standalone --agree-tos --staple-ocsp --email [email protected] -d mail.your-domain.com --preferred-chain 'ISRG Root X1' certonly:获取证书,但不要自动安装。 --standalone:使用standalone插件获取证书。 -首选链“ISRG根X1”:使用ISRG根X1证书链,因为默认的DST根CA证书在2021年9月31日到期。 当它询问您是否希望接收EFF的通信时,您可以选择否。 如果一切顺利,您将看到以下文本,表明您已成功获得TLS证书。您的证书和链已保存在/etc/letsencrypt/live/mail。你的领域。com/directory。 未能获得TLS证书 如果certbot无法获得TLS证书,可能是因为您的DNS记录没有传播到Internet。根据您使用的域注册器,您的DNS记录可能会立即传播,或者传播可能需要24小时。你可以去https://dnsmap.io,输入邮件服务器的主机名(mail.your domain.com)以检查DNS传播。 在Zimbra中安装证书 获得TLS证书后,让我们配置Zimbra以使用它。授予zimbra用户权限,使其可以读取Let's Encrypt文件。 sudo apt install acl sudo setfacl -R -m u:zimbra:rwx /etc/letsencrypt/ 切换到zimbra用户。 sudo su - zimbra 复制私钥。 cp /etc/letsencrypt/live/mail.your-domain.com/privkey.pem /opt/zimbra/ssl/zimbra/commercial/commercial.key 下载让我们加密根CA证书。 wget -O /tmp/isrgrootx1.pem https://letsencrypt.org/certs/isrgrootx1.pem.txt 创建一个证书链。以下命令将根CA证书(isrgrotx1.pem)置于中间CA证书(chain.pem)之下。你不应该颠倒顺序,否则就行不通了。 cat /etc/letsencrypt/live/mail.your-domain.com/chain.pem /tmp/isrgrootx1.pem > /opt/zimbra/ssl/zimbra/commercial/commercial_ca.crt 部署证书。 /opt/zimbra/bin/zmcertmgr deploycrt comm /etc/letsencrypt/live/mail.your-domain.com/cert.pem /opt/zimbra/ssl/zimbra/commercial/commercial_ca.crt 查看已部署的证书。 /opt/zimbra/bin/zmcertmgr viewdeployedcrt 重新启动Zimbra。 zmcontrol restart 以zimbra用户身份运行以下命令,检查是否所有zimbra服务都在运行。 zmcontrol status 如果一切正常,它应该会显示出来 故障排除 错误的主机名 如果zmcontrol status命令显示localhost。localdomain主机名,然后需要将主机名更改为mail。你的领域。通用域名格式。 /opt/zimbra/libexec/zmsetservername -n mail.your-domain.com 然后删除localhost。本地域。 zmloggerhostmap -d localhost.localdomain localhost.localdomain OpenLDAP失败 如果OpenLDAP无法重新启动,它会说 Unable to start TLS: SSL connect attempt failed error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed when connecting to ldap master. 然后可以使用以下两个命令禁用OpenLDAP上的TLS。有些人可能想知道在OpenLDAP上禁用TLS是否安全。这是安全的,因为LDAP连接只在邮件服务器本身上建立。无法从另一台主机建立LDAP连接。 zmlocalconfig -e ldap_starttls_required=false zmlocalconfig -e ldap_starttls_supported=0 然后重启Zimbra服务。 zmcontrol restart 提示:如果您已经按照前面的说明成功地在Zimbra中部署了Let's Encrypt TLS certificate,那么您的OpenLDAP服务器在启动TLS时应该没有问题。 阿玛维斯失败 如果Amavis未运行,请使用以下命令重新启动它: zmamavisdctl restart 如果重启失败,应该检查Zimbra日志文件(/var/log/Zimbra.log)。例如,我在这个文件中有以下错误消息。 Ignoring stale PID file /opt/zimbra/log/amavisd.pid, older than system uptime 0 0:01:00 Pid_file already exists for running process (3340) 所以我需要删除陈旧的PID文件。 rm /opt/zimbra/log/amavisd.pid 然后重启Amavis。 zmamavisdctl restart 减少CPU和;内存使用 尽可能避免使用zmcontrol restart命令,因为它会向管理员帐户生成许多报告电子邮件。每封邮件都会调用ClamAV进行病毒扫描。ClamAV是一个资源猪。如果需要启动/停止单个Zimbra服务,请使用特定工具来完成任务。 zopendkimctl:OpenDKIM。 zmamavisdctl:Amavis zmantispamctl:反垃圾邮件 zmdnscachectl:未绑定的DNS解析程序。 ZMTL:反病毒 zmmtactl:后缀SMTP服务器 zmspellctl:拼写检查 zmzimletctl:Zimlet webapp zmmailboxdctl:mailboxd zmstatctl:stats zmconfigdctl:zmconfigd zmmcachedctl:memcached zmloggerctl:记录器 为了减少Amavis和ClamAV对CPU和RAM的使用,以zimbra用户的身份运行以下两个命令。 zmprov ms `zmhostname` zimbraAmavisMaxServers 1 zmprov ms `zmhostname` zimbraClamAVMaxThreads 1 这将使Amavis和ClamAV只使用一个线程来处理电子邮件。(默认值为10)如果您有4核CPU和16 GB RAM,则可以增加线程数以加快电子邮件处理速度。 第9步:发送测试电子邮件 现在,您可以再次访问Zimbra web客户端。您的web浏览器将不再向您发出警告,因为Nginx现在使用的是有效的TLS证书。 使用管理员帐户([email&#160;protected])登录Zimbra web客户端,您可以测试电子邮件的发送和接收。 Zimbra有一个内置日历。 您可以登录管理控制台,可以从右上角的下拉菜单访问该控制台。或者你可以通过https://mail.your-domain.com:7071/zimbraAdmin/. 单击添加帐户链接添加新的电子邮件地址。 步骤10:检查端口25(出站)是否被阻止 您的ISP或主机服务提供商不会阻止与服务器端口25的传入连接,这意味着您可以接收来自其他邮件服务器的电子邮件。然而,许多ISP/主机提供商会阻止与其他邮件服务器端口25的传出连接,这意味着您无法发送电子邮件。 提示:如果使用Kamatera VPS,则出站端口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 tail -n 30 /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中讨论。 步骤11:从邮件客户端登录 启动你的桌面电子邮件客户端,比如Mozilla Thunderbird,并添加一个邮件帐户。 在“传入服务器”部分,选择IMAP协议,输入mail。你的领域。com作为服务器名,选择端口143和STARTTLS。选择普通密码作为身份验证方法。 在“发送”部分,选择SMTP协议,输入mail。你的领域。com作为服务器名,选择端口587和STARTTLS。选择普通密码作为身份验证方法。 第12步:提高电子邮件交付能力 为了防止您的电子邮件被标记为垃圾邮件,您应该设置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记录,如下所示。 说明: 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记录中发布的公钥验证签名。 运行以下命令在Zimbra邮件服务器上生成DKIM密钥。 /opt/zimbra/libexec/zmdkimkeyutil -a -d your-domain.com DKIM公钥在括号中。我的DKIM选择器是F9421034-2BCF-11EC-80AF-728BCB6E6C77。DKIM子域是F9421034-2BCF-11EC-80AF-728BCB6E6C77_域名。利努克斯宝贝。通用域名格式。你的可能不一样。 然后在DNS管理器中,创建一个TXT记录,输入F9421034-2BCF-11EC-80AF-728BCB6E6C77_名称字段中的domainkey。(您的DKIM子域可能不同。)复制括号中的所有内容,并将其粘贴到值字段中。删除所有双引号和换行符。 请注意,您的DKIM记录可能需要一些时间才能传播到Internet。根据您使用的域注册器,您的DNS记录可能会立即传播,或者传播可能需要24小时。你可以去https://www.dmarcanalyzer.com/dkim/dkim-check/检查您的DKIM记录是否有效。 DMARC记录 DMARC代表基于域的消息身份验证、报告和一致性。DMARC可以帮助接收电子邮件服务器识别合法电子邮件,并防止电子邮件欺骗使用您的域名。 要创建DMARC记录,请转到DNS管理器并添加TXT记录。在名称字段中,输入_dmarc。在“值”字段中,输入以下内容。(您应该创建[email&#160;protected]电子邮件地址。) v=DMARC1; p=none; pct=100; rua=mailto:[email protected] 上述DMARC记录是一个安全的起点。如果你想阅读DMARC的完整解释,请查看以下文章。请注意,这是可选的。 创建DMARC记录以保护您的域名免受电子邮件欺骗 第13步:测试电子邮件分数和位置 创建PTR、SPF、DKIM记录后,转到https://www.mail-tester.com.你会看到一个独特的电子邮件地址。从你的域名发送电子邮件到此地址,然后检查你的分数。如你所见,我得了满分。在测试结果中,您应该检查您的PTR记录、SPF和DKIM记录是否有效。 邮件测试员。com只能显示发件人分数。还有另一个名为GlockApps的服务,可以让你检查你的电子邮件是否被放在收件人的收件箱或垃圾邮件文件夹中,或者被直接拒绝。它支持许多流行的电子邮件提供商,如Gmail、Outlook、Hotmail、YahooMail、iCloud mail等。 如果你的电子邮件仍被标记为垃圾邮件呢? 在这篇文章中,我有更多提示:如何阻止你的电子邮件被标记为垃圾邮件。虽然这需要一些时间和精力,但在应用这些技巧后,你的电子邮件最终会被放入收件箱。 如果您的电子邮件被Microsoft邮箱拒绝怎么办? 微软似乎正在使用一个内部黑名单来屏蔽许多合法的IP地址。如果您的电子邮件被Outlook或Hotmail拒绝,您需要提交发件人信息表。之后,Outlook/Hotmail将接受您的电子邮件。 故障排除 首先,请使用至少4GB内存的VPS。在2GB RAM VPS上运行Zimbra会导致数据库、SpamAssassin或ClamAV因内存不足而被杀死。如果你真的想使用2GB内存VPS,你会丢失收到的电子邮件,并有其他不良后果。 根据经验,您应该始终检查邮件日志/var/log/mail。当出现电子邮件发送问题时,请登录。 HTTP错误502 如果无法访问Zimbra web界面,例如502网关错误,则服务器可能需要更多RAM。 您还可以尝试重新启动所有Zimbra服务来解决此问题。 以zimbra用户身份运行以下命令,检查是否所有zimbra服务都在运行。 zmcontrol status 如果启用了防火墙,则应在防火墙中打开以下端口。 HTTP port: 80 HTTPS port: 443 SMTP port: 25 Submission port: 587 SMTPS port: 465 (For Microsoft Outlook mail client) IMAP port: 143 and 993 如果你想使用UFW防火墙,请查看我的指南:Debian和Ubuntu上的UFW防火墙入门。 如何更新TLS证书 让我们加密颁发的TLS证书仅在90天内有效,设置Cron作业以自动续订证书非常重要。您可以运行以下命令来续订证书。 sudo certbot renew 您可以使用--dry run选项来测试更新过程,而不是进行真正的更新。 sudo /snap/bin/certbot renew --dry-run 创建Cron作业 如果试运行成功,您可以创建Cron作业来自动续订证书。只需打开root用户的crontab文件。 sudo crontab -e 然后在文件底部添加以下行。 @daily /snap/bin/certbot renew --quiet 保存并关闭文件。 设置备份邮件服务器 主邮件服务器有时可能会关闭。如果您将邮件服务器托管在数据中心,那么停机时间非常短,因此您不必担心丢失入站邮件。如果您在家中托管邮件服务器,则无法预测停机时间,因此在数据中心运行备份邮件服务器是一种很好的做法,以防止丢失入站邮件。备份邮件服务器只需要512MB内存即可运行。请在下面的文章中查看全部细节。 如何在Ubuntu上设置带有后缀的备份电子邮件服务器(完整指南) 为你的网站设置SMTP 如果您的网站和邮件服务器运行在两个不同的VP(虚拟专用服务器)上,您可以在网站和邮件服务器之间设置SMTP中继,以便您的网站可以通过邮件服务器发送电子邮件。请参阅下面的文章。 如何在Ubuntu上的两个Postfix SMTP服务器之间设置SMTP中继 收尾 就这样!我希望本教程能帮助你在Ubuntu18.04上用Zimbra安装邮件服务器。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?

    2022.03.24 浏览:1571
  • 如何修复常见的Nginx Web服务器错误

    Nginx是当今非常流行的web服务器。本文将向您展示运行Nginx web服务器时的一些常见错误以及可能的解决方案。这不是一个完整的列表。如果在尝试建议的解决方案后仍然无法修复错误,请检查/var/log/Nginx/目录下的Nginx服务器日志,并在谷歌上搜索以调试问题。 无法连接/拒绝连接 如果在尝试访问网站时看到以下错误: Firefox can’t establish a connection to the server at www.example.com 或 www.example.com refused to connect 或 The site can't be reached, www.example.com unexpectedly closed the connection. 可能是这样 Nginx没有运行。您可以使用sudo systemctl status Nginx检查Nginx状态。使用sudo systemctl Start Nginx启动Nginx。如果Nginx无法启动,请运行sudo Nginx-t以查看配置文件是否有任何问题。并查看日志(sudo journalctl-eu nginx),找出它无法启动的原因。 防火墙阻止端口80和443。如果在Debian/Ubuntu上使用UFW防火墙,请运行sudo UFW allow 80443/tcp以打开tcp端口80和443。如果在RHEL/CentOS/Rocky Linux/AlmaLinux上使用Firewalld,请运行sudo firewall cmd--permanent--add service={http,https},然后sudo systemctl重新加载Firewalld以打开TCP端口80和443。 失败2本。如果您的服务器使用fail2ban阻止恶意请求,则可能是fail2ban禁止了您的IP地址。运行sudo journalctl-eu fail2ban检查您的IP地址是否被禁止。您可以将您的IP地址添加到fail2ban ignoreip列表中,这样就不会再次被禁止。 Nginx没有在正确的网络接口上监听。例如,Nginx没有监听服务器的公共IP地址。 连接已超时 这可能意味着您的服务器处于脱机状态,或者Nginx无法正常工作。我曾经有过一个内存不足的问题,这导致Nginx无法生成工作进程。如果您可以在/var/log/nginx/error中看到以下错误消息。日志文件,服务器内存不足。 fork() failed while spawning "worker process" (12: Cannot allocate memory) 404找不到 404找不到意味着Nginx找不到您的web浏览器要求的资源。原因可能是: 服务器上不存在web根目录。在Nginx中,web roor目录是使用root指令配置的,如下所示:root/usr/share/Nginx/linuxbabe。com/;。确保您的网站文件(HTML、CSS、JavaScript、PHP)存储在正确的目录中。 PHP-FPM没有运行。您可以使用sudo systemctl status php7检查PHP-FPM状态。4-fpm(Debian/Ubuntu)或sudo systemctl status php fpm。 您忘记包含try_文件$uri/索引。php$is_args$args;Nginx服务器配置文件中的指令。处理PHP代码需要此指令。 您的服务器没有可用磁盘空间。试着释放一些磁盘空间。您可以使用ncdu实用程序(sudo-apt-install-ncdu或sudo-dnf-install-ncdu)找出哪些目录占用了大量磁盘空间。 403禁止 此错误意味着不允许您访问请求资源。可能的情况包括: 网站管理员通过IP白名单或其他方法阻止公众访问请求的资源。 该网站可能使用ModSecurity等web应用程序防火墙,该防火墙检测到入侵攻击,因此阻止了请求。 发生403时,某些web应用程序可能会显示不同的错误消息。它可能会告诉您“安全连接失败”,而原因是相同的。 500内部服务器错误 这意味着web应用程序中存在一些错误。可能是这样 数据库服务器已关闭。使用sudo systemctl status MySQL检查MySQL/MariaDB状态。用sudo systemctl Start mysql启动它。运行sudo journalctl-eu mysql,找出它无法启动的原因。MySQL/MariaDB进程可能因内存不足而被终止。 您没有将Nginx配置为使用PHP-FPM,因此Nginx不知道如何执行PHP代码。 如果web应用程序具有内置缓存,则可以尝试刷新应用缓存以修复此错误。 您的web应用程序可能会生成自己的错误日志。检查此日志文件以调试此错误。 您的web应用程序可能具有调试模式。打开它,您将在网页上看到更详细的错误消息。例如,通过在/srv/Modoboa/instance/instance/settings中设置DEBUG=True,可以在Modoboa邮件服务器托管平台中打开调试模式。py文件。 PHP-FPM可能会过载。检查PHP-FPM日志(例如/var/log/php7.4-FPM.log)。如果您发现[pool www]似乎很忙(您可能需要增加pm.start_服务器或pm.min/max_spare_服务器)警告消息,则需要为PHP-FPM分配更多资源。 有时重新加载PHP-FPM(sudo systemctl reload php7.4-FPM)可以修复错误。 Nginx显示默认页面 如果您试图设置Nginx虚拟主机,并且在web浏览器中键入域名时,会显示默认的Nginx页面,它可能是 您在Nginx虚拟主机中的server_name指令没有使用真实的域名。 你忘了重新加载Nginx。 页面没有正确重定向 Firefox显示此错误,因为页面没有正确重定向。Google Chrome将此错误显示为www.example。com重定向了你太多次。 这意味着您配置Nginx重定向的次数过多。例如,您可能在https服务器块中添加了一个不必要的return 301指令,以将HTTP重定向到https连接。 如果已经设置了页面缓存,比如Nginx FastCGI缓存,则需要清除服务器页面缓存。 504网关超时 这意味着像PHP-FPM/MySQL/MariaDB这样的上游服务器无法足够快地处理请求。您可以尝试重新启动PHP-FPM以暂时修复错误,但最好开始调优PHP-FPM/MySQL/MariaDB以获得更快的性能。 以下是my/etc/mysql/mariadb中的InnoDB配置。conf.d/50-server。cnf文件。这是一个非常简单的性能调整。 innodb_buffer_pool_size = 1024M innodb_buffer_pool_dump_at_shutdown = ON innodb_buffer_pool_load_at_startup = ON innodb_log_file_size = 512M innodb_log_buffer_size = 8M #Improving disk I/O performance innodb_file_per_table = 1 innodb_open_files = 400 innodb_io_capacity = 400 innodb_flush_method = O_DIRECT innodb_read_io_threads = 64 innodb_write_io_threads = 64 innodb_buffer_pool_instances = 3 哪里: InnoDB缓冲池大小至少需要为RAM的一半。(对于具有少量RAM的VP,我建议将缓冲池大小设置为较小的值,如400M,否则VP将耗尽RAM。) InnoDB日志文件大小需要为缓冲池大小的25%。 将读IO线程和写IO线程设置为最大值(64),然后 让MariaDB使用3个InnoDB缓冲池实例。实例数必须与系统上的CPU核数相同。 保存更改后,重新启动MariaDB。 sudo systemctl restart mariadb 您还可以在Nginx中设置更长的超时值,以减少网关超时的机会。编辑Nginx虚拟主机文件,并在服务器{…}中添加以下行块 proxy_connect_timeout 600; proxy_send_timeout 600; proxy_read_timeout 600; send_timeout 600; 如果将Nginx与PHP-FPM结合使用,那么将fastcgi_read_timeout设置为更大的值,比如300秒。默认值为60秒。 location ~ /.php$ { try_files $uri /index.php$is_args$args; include snippets/fastcgi-php.conf; fastcgi_split_path_info ^(.+/.php)(/.+)$; fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; fastcgi_read_timeout 300; } 然后重新加载Nginx。 sudo systemctl reload nginx PHP-FPM也有每个脚本的最大执行时间。编辑php。ini文件。 sudo nano /etc/php/7.4/fpm/php.ini 可以将该值增加到300秒。 max_execution_time = 300 然后重启PHP-FPM sudo systemctl restart php7.4-fpm 内存耗尽 如果您在Nginx错误日志中看到以下行,则表示PHP达到了128MB内存限制。 PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 57134520 bytes) 你可以编辑php。ini文件(/etc/php/7.4/fpm/php.ini),并增加php内存限制。 memory_limit = 512M 然后重启PHP7。4-FPM。 sudo systemctl restart php7.4-fpm 如果错误仍然存在,那么很可能是web应用程序中的坏PHP代码消耗了大量RAM。 PR_END_文件错误 您已将Nginx配置为将HTTP请求重定向到HTTPS,但Nginx中没有服务HTTPS请求的服务器块。 也许Nginx没有运行? 有时,主Nginx二进制文件正在运行,但辅助进程可能会由于各种原因而失败并退出。检查要调试的Nginx错误日志(/var/log/Nginx/error.log)。 PHP-FPM上游超时 有些人可以在Nginx错误日志文件(在/var/log/Nginx/下)中找到以下错误。 [error] 7553#7553: *2234677 upstream timed out (110: Connection timed out) while reading response header from upstream 可能的解决方案: 重新启动PHP-FPM。 升级内存。 资源暂时不可用 有些人可以在Nginx错误日志文件(在/var/log/Nginx/下)中找到以下错误。 connect() to unix:/run/php/php7.4-fpm.sock failed (11: Resource temporarily unavailable) 这通常意味着你的网站有很多访问者,PHP-FPM无法处理大量的请求。您可以调整PHP-FPM子进程的数量,以便它可以处理更多请求。 编辑PHP-FPM www.conf文件。(文件路径因Linux发行版而异。) sudo /etc/php/7.4/fpm/pool.d/www.conf 默认的子进程配置如下所示: pm = dynamic pm.max_children = 5 pm.start_servers = 2 pm.min_spare_servers = 1 pm.max_spare_servers = 3 上述配置意味着 PHP-FPM动态创建子进程。没有固定数量的子进程。 它最多创建5个子进程。 PHP-FPM启动时启动2个子进程。 至少有一个空闲进程。 最多有3个空闲进程。 默认设置基于没有太多资源的服务器,比如只有1GB RAM的服务器。如果你有一个高流量的网站,你可能想增加子进程的数量,这样它就可以满足更多的请求。 pm = dynamic pm.max_children = 20 pm.start_servers = 8 pm.min_spare_servers = 4 pm.max_spare_servers = 12 确保有足够的RAM来运行更多的子进程。保存并关闭文件。然后重启PHP-FPM。(您可能需要更改版本号。) sudo systemctl restart php7.4-fpm 要监视PHP-FPM的运行状况,可以启用状态页面。在PHP-FPM www.conf文件中找到以下行。请注意: ;pm.status_path = /status 删除分号以启用PHP-FPM状态页。然后重启PHP-FPM。 sudo systemctl restart php7.4-fpm 然后编辑Nginx虚拟主机文件。添加以下行。allow和deny指令用于限制访问。只有白名单上的IP地址才能访问状态页面。 location ~ ^/(status|ping)$ { allow 127.0.0.1; allow your_other_IP_Address; deny all; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_index index.php; include fastcgi_params; #fastcgi_pass 127.0.0.1:9000; fastcgi_pass unix:/run/php/php7.4-fpm.sock; } 保存并关闭文件。然后测试Nginx配置。 sudo nginx -t 如果测试成功,请重新加载Nginx以使更改生效。 sudo systemctl reload nginx PHP-FPM状态页面示例。 PHP-FPM www.conf文件很好地解释了每个参数的含义。 如果PHP-FPM非常忙,无法立即为请求提供服务,它将对该请求进行排队。默认情况下,最多可以有511个未决请求,由侦听器决定。backlog参数。 listen.backlog = 511 如果您在PHP-FPM状态页面上看到以下值,则表示从未有请求放入队列,即您的PHP-FPM可以快速处理请求。 listen queue: 0 max listen queue: 0 如果队列中有511个挂起的请求,这意味着您的PHP-FPM非常繁忙,因此您应该增加子进程的数量。 您可能还需要更改Linux内核网络。果心somaxconn设置,它定义了Linux上套接字文件(如PHP-FPM Unix套接字文件)允许的最大连接数。默认情况下,其值在内核5.4之前为128,从内核5.4开始为4096。 [email protected]:~$ sysctl net.core.somaxconn net.core.somaxconn = 128 如果你经营一个高流量的网站,你可以使用一个大的价值。编辑/etc/sysctl。conf文件。 sudo nano /etc/sysctl.cnf 添加以下两行。 net.core.somaxconn = 20000 net.core.netdev_max_backlog = 65535 保存并关闭文件。然后应用设置。 sudo sysctl -p 注意:如果您的服务器有足够的RAM,您可以为PHP-FPM分配固定数量的子进程,如下所示。根据我的经验,这修复了Joomla+Virtuemart网站的500个内部错误。 pm = static pm.max_children = 50 同一网站的两个虚拟主机文件 如果运行sudo nginx-t并看到以下警告。 nginx: [warn] conflicting server name "example.com" on [::]:443, ignored nginx: [warn] conflicting server name "example.com" on 0.0.0.0:443, ignored 这意味着有两个虚拟主机文件包含相同的服务器名称配置。不要为一个网站创建两个虚拟主机文件。 对等端重置PHP-FPM连接 Nginx错误日志文件显示以下消息。 recv() failed (104: Connection reset by peer) while reading response header from upstream 这可能是由于重新启动PHP-FPM造成的。如果您自己手动重新启动,则可以忽略此错误。 Nginx插座泄漏 如果在/var/log/nginx/error中发现以下错误消息。日志文件,您的Nginx存在套接字泄漏问题。 2021/09/28 13:27:41 [alert] 321#321: *120606 open socket #16 left in connection 163 2021/09/28 13:27:41 [alert] 321#321: *120629 open socket #34 left in connection 188 2021/09/28 13:27:41 [alert] 321#321: *120622 open socket #9 left in connection 213 2021/09/28 13:27:41 [alert] 321#321: *120628 open socket #25 left in connection 217 2021/09/28 13:27:41 [alert] 321#321: *120605 open socket #15 left in connection 244 2021/09/28 13:27:41 [alert] 321#321: *120614 open socket #41 left in connection 245 2021/09/28 13:27:41 [alert] 321#321: *120631 open socket #24 left in connection 255 2021/09/28 13:27:41 [alert] 321#321: *120616 open socket #23 left in connection 258 2021/09/28 13:27:41 [alert] 321#321: *120615 open socket #42 left in connection 269 2021/09/28 13:27:41 [alert] 321#321: aborting 你可以重启操作系统来解决这个问题。如果不起作用,您需要编译一个调试版本的Nginx,它会在日志中显示调试信息。 Cloudflare错误 如果您的网站运行在Cloudflare CDN(内容交付网络)之后,以下是一些常见错误和解决方案。 521网络服务器关闭 Nginx没有运行。 您没有在防火墙中打开TCP端口80和443。 您更改了服务器IP地址,但忘记在Cloudflare中更新DNS记录。 页面没有正确重定向 如果您在SSL/TLS应用程序上的SSL设置设置为“灵活”,但您的源服务器配置为将HTTP请求重定向到HTTPS,则您的Nginx服务器会以加密连接将响应发送回Cloudflare。由于Cloudflare需要HTTP流量,因此它会不断重新发送相同的请求,从而导致重定向循环。在这种情况下,您需要在Cloudflare设置中使用完整(严格)SSL/TLS选项。 收尾 我希望本文能帮助您修复常见的Nginx web服务器错误。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门?

    2022.03.24 浏览:6161