• 在Ubuntu上构建自己的电子邮件服务器:基本Postfix设置

    为什么要运行自己的电子邮件服务器?也许你有一个需要向用户发送电子邮件的网站,或者你想将电子邮件存储在自己的服务器上以保护隐私。然而,构建自己的电子邮件服务器可能会让人头疼,因为有太多软件组件需要正确安装和配置。为了让你的旅程更轻松,我正在创建一个关于如何在Ubuntu上构建自己的电子邮件服务器的教程系列。 我有信心地说,这是关于在互联网上从头开始构建电子邮件服务器的最好、最全面的教程系列。你不仅会有一个工作的电子邮件服务器,而且你会更好地了解电子邮件的工作原理。本系列教程分为13个部分。 设置基本的Postfix SMTP服务器 设置Dovecot IMAP服务器和TLS加密 使用PostfixAdmin创建虚拟邮箱(Ubuntu 18.04、Ubuntu 20.04) 创建SPF和DKIM记录以通过垃圾邮件过滤器 设置DMARC以保护您的域声誉 7个有效的建议,防止你的电子邮件被标记为垃圾邮件 在Ubuntu上安装Roundcube Webmail(Ubuntu 18.04、Ubuntu 20.04) 如何在PostfixAdmin中托管多个邮件域 用后缀阻止垃圾邮件 用SpamAssassin阻止垃圾邮件 在Ubuntu邮件服务器上设置Amavis和ClamAV 如何使用自托管VPN服务器保护电子邮件服务器免受黑客攻击 (可选)在Postfix中启用并配置Postscreen以阻止垃圾邮件 我知道这似乎是一项非常艰巨的任务。然而,基于你想要实现的目标,你可能不需要遵循所有这些目标。我的文章很容易阅读,所以如果你花些时间来阅读,你就会有一个工作的电子邮件服务器。 提示:如果你不想从头开始构建一个电子邮件服务器,这是一个漫长而乏味的过程,那么你可以使用iRedMail快速轻松地建立一个功能齐全的邮件服务器。 本文是本系列教程的第1部分。在本文中,我将向您展示如何设置一个非常基本的Postfix SMTP服务器,也称为MTA(邮件传输代理)。完成本文后,您应该能够在自己的电子邮件服务器上使用自己的电子邮件域发送和接收电子邮件。本教程在Ubuntu20.04和Ubuntu18.04服务器上进行测试。 关于后缀 Postfix是最先进的邮件传输代理(MTA),又名SMTP服务器,它有两个用途。 它负责将电子邮件从邮件客户端/邮件用户代理(MUA)传输到远程SMTP服务器。 它还用于接收来自其他SMTP服务器的电子邮件。 Postfix由Unix和安全专家Wietse Venema构建。它易于使用,设计时考虑了安全性和模块化,每个模块都以完成任务所需的最低权限级别运行。Postfix与Unix/Linux紧密集成,不提供Unix/Linux已经提供的功能。它在简单和压力条件下都是可靠的。 Postfix最初是作为Sendmail的替代品设计的,Sendmail是Unix上的传统SMTP服务器。相比之下,Postfix更安全,更容易配置。它与Sendmail兼容,因此如果卸载Sendmail并用Postfix替换它,现有脚本和程序将继续无缝工作。 在本教程中,您将学习如何为单个域配置后缀。 选择合适的主机提供商 要找到一个适合电子邮件托管的VPS(虚拟专用服务器)提供商并非易事。许多托管公司,如DigitalOcean blocks port 25。DigitalOcean不会解锁端口25,因此您需要设置SMTP中继以绕过阻止,这可能会增加您的费用。如果您使用Vultr VPS,则默认情况下端口25被阻止。如果您打开支持票证,他们可以解除阻止,但如果他们决定不允许您的电子邮件发送活动,他们可能会在任何时候再次阻止。如果你使用他们的服务器发送时事通讯,Vultr实际上可能会重新阻止它。 另一个问题是,像DigitalOcean或Vultr这样的大型知名主机提供商被垃圾邮件发送者滥用。通常,服务器IP地址在几个黑名单上。Vultr有一些完整的IP范围被列入黑名单。 Kamatera VPS是运行邮件服务器的一个非常好的选择,因为 他们不封锁25号端口。 IP地址不在任何电子邮件黑名单上。(至少对我来说是这样。我选择了达拉斯数据中心。)你肯定不想被列入可怕的微软Outlook IP黑名单或SpamRats黑名单。有些黑名单会屏蔽整个IP范围,你无法从此类黑名单中删除你的IP地址。 您可以编辑PTR记录以提高电子邮件的可交付性。 它们允许你向你的电子邮件订阅者发送时事通讯,而不受每小时或每天的限制。请注意,您不允许发送垃圾邮件,也称为未经请求的批量电子邮件。如果收件人没有明确允许你发送电子邮件,而你向他们发送电子邮件,那就是未经请求的电子邮件。 您可以为一台服务器订购多个IP地址。这对需要发送大量电子邮件的人非常有用。您可以在多个IP地址上传播电子邮件流量,以实现更好的电子邮件交付。 我建议遵循下面链接的教程,在Kamatera上正确设置Linux VPS服务器。 如何在Kamatera上创建Linux VPS服务器 你还需要一个域名。我从NameCheap注册了我的域名,因为价格很低,他们给你一辈子免费的隐私保护。 安装Postfix之前要做的事情 为了让Postfix更好地运行并充分利用Postfix,你需要正确设置你的Ubuntu服务器。 为Ubuntu服务器设置正确的主机名 默认情况下,Postfix在与其他MTA通信时使用服务器的主机名来标识自身。主机名可以有两种形式:单个单词和FQDN。 单字形式主要用于个人电脑。您的Linux家用计算机可能被命名为Linux、debian、ubuntu等。FQDN(完全限定域名)通常用于面向Internet的服务器,我们应该在邮件服务器上使用FQDN。它由两部分组成:节点名和域名。例如: mail.linuxbabe.com 是一个FQDN。邮件是最重要的,linuxbabe。com是域名。FQDN将出现在smtpd横幅中。如果您的Postfix未在smtpd横幅中提供FQDN,则某些MTA会拒绝邮件。一些MTA甚至会查询DNS,查看smtpd横幅中的FQDN是否解析为邮件服务器的IP。 输入以下命令以查看主机名的FQDN格式。 hostname -f 如果你的Ubuntu服务器还没有FQDN,你可以使用hostnamectl设置一个。 sudo hostnamectl set-hostname your-fqdn 邮件服务器的常见FQDN是mail。你的地盘。通用域名格式。您需要注销并重新登录,才能在命令提示下看到此更改。 为邮件服务器设置DNS记录 你需要去你的DNS托管服务(通常是你的域名注册商,比如NameCheap)设置DNS记录 邮件交换记录 MX记录告诉其他MTA您的邮件服务器正在发送邮件。你的地盘。com负责为您的域名发送电子邮件。 MX record @ mail.linuxbabe.com MX主机的通用名称是mail。你的地盘。通用域名格式。您可以指定多个MX记录,并为邮件服务器设置优先级。数字越小,优先级越高。这里我们只使用一条MX记录,并将0设置为优先级值。(0 – 65535) 请注意,当您创建MX记录时,您应该在名称字段中输入@或您的apex域名,如下所示。apex域名是没有任何子域的域名。 记录 A记录将FQDN映射到IP地址。 mail.linuxbabe.com <IP-address> AAAA记录 如果您的服务器使用IPv6地址,那么最好为邮件添加AAAA记录。你的地盘。通用域名格式。 mail.linuxbabe.com <IPv6-address> 提示:如果使用Cloudflare DNS服务,则在为邮件创建和AAAA记录时不应启用CDN(代理)功能。你的领域。通用域名格式。Cloudflare不支持SMTP或IMAP代理。 PTR记录 指针记录或PTR记录将IP地址映射到FQDN。它是A记录的对应项,用于反向DNS(RDN)查找。 使用PTR记录反向解析IP地址有助于阻止垃圾邮件发送者。许多MTA只有在服务器真正负责某个域时才接受电子邮件。你绝对应该为你的邮件服务器设置一个PTR记录,这样你的邮件就有更好的机会进入收件人的收件箱而不是垃圾邮件文件夹。 要检查PTR记录中的IP地址,可以使用以下命令。 dig -x <IP> +short 或 host <IP> PTR记录不由您的域注册器管理。它由提供IP地址的组织管理。你的IP地址是从你的主机提供商那里获得的,而不是从你的域名注册商那里获得的,所以你必须在主机提供商的控制面板中为你的IP地址设置PTR记录。它的值应该是邮件服务器的主机名:mail。你的领域。通用域名格式。如果您的服务器使用IPv6地址,那么也为您的IPv6地址添加一个PTR记录。 要编辑Kamatera VP的反向DNS记录,请登录Kamatera客户端区域,然后打开支持票证,告诉他们为服务器IP地址添加PTR记录,以将IP地址指向邮件。你的领域。通用域名格式。你可能会想,这并不方便,但这是为了让垃圾邮件发送者远离平台,因此像我们这样的合法电子邮件发送者将拥有良好的IP声誉。 注意:Gmail实际上会检查PTR记录中指定的主机名的A记录。如果主机名解析为相同的IP地址,Gmail将接受您的电子邮件。否则,它将拒绝您的电子邮件。 完成以上所有操作后,让我们玩Postfix。 安装后缀 在ubuntu服务器上,运行以下两个命令。 sudo apt-get update sudo apt-get install postfix -y 系统将要求您为邮件配置选择一种类型。通常,您需要选择第二种类型:Internet站点。 无配置意味着安装过程不会配置任何参数。 互联网站点意味着使用Postfix向其他MTA发送电子邮件,并从其他MTA接收电子邮件。 使用智能主机上网意味着使用postfix接收来自其他MTA的电子邮件,但使用另一个智能主机将电子邮件转发给收件人。 卫星系统意味着使用智能主机发送和接收电子邮件。 仅本地意味着电子邮件仅在本地用户帐户之间传输。 接下来,输入系统邮件名称的域名,即@symbol后面的域名。例如,我的电子邮件地址是[email&#160;protected],所以我输入了linuxbabe。com的系统邮件名称。此域名将附加到未指定域名的地址。请注意,如果您输入一个子域,如mail。你的领域。com,您将能够接收发送给@mail的电子邮件。你的领域。com地址,但无法接收发往@your domain的电子邮件。com地址。 安装后,Postfix将自动启动,并显示/etc/Postfix/main。将生成cf文件。现在我们可以使用以下命令检查后缀版本: postconf mail_version 在Ubuntu18.04上,后缀版本是3.3.0,Ubuntu20.04附带3.4.10版本。 mail_version = 3.4.10 ss(Socket Statistics)实用程序告诉我们Postfix主进程正在侦听TCP端口25。 sudo ss -lnpt | grep master Postfix在/usr/sbin/目录下附带许多二进制文件,如下命令所示。 dpkg -L postfix | grep /usr/sbin/ 输出: /usr/sbin/postalias /usr/sbin/postcat /usr/sbin/postconf /usr/sbin/postdrop /usr/sbin/postfix /usr/sbin/postfix-add-filter /usr/sbin/postfix-add-policy /usr/sbin/postkick /usr/sbin/postlock /usr/sbin/postlog /usr/sbin/postmap /usr/sbin/postmulti /usr/sbin/postqueue /usr/sbin/postsuper /usr/sbin/posttls-finger /usr/sbin/qmqp-sink /usr/sbin/qmqp-source /usr/sbin/qshape /usr/sbin/rmail /usr/sbin/sendmail /usr/sbin/smtp-sink /usr/sbin/smtp-source 在防火墙中打开TCP端口25(入站) 入站TCP端口25需要打开,以便Postfix可以接收来自其他SMTP服务器的电子邮件。Ubuntu默认情况下不启用防火墙。如果已启用UFW防火墙,则需要使用以下命令打开端口25(入站)。 sudo ufw allow 25/tcp 然后我们可以用在线端口扫描仪扫描邮件服务器上打开的端口。输入邮件服务器的公共IP地址,然后选择扫描所有公共端口。 从上面的屏幕截图可以看到,TCP端口25在我的邮件服务器上是打开的。 检查TCP端口25(出站)是否被阻止 出站TCP端口25需要打开,以便Postfix可以向其他SMTP服务器发送电子邮件。出站TCP端口25由主机提供商控制,我们可以安装telnet实用程序来检查它是否打开或被阻止。 sudo apt install telnet 在邮件服务器上运行以下命令。 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/主机提供商为您打开出站端口25。如果他们拒绝您的请求,您需要设置SMTP中继以绕过端口25阻塞,或者使用像Kamatera这样不阻塞端口25的VPS。 有些人可能会问,“我能把端口25换成另一个端口来绕过阻塞吗?”?答案是否定的。只有在同时控制服务器端和客户端时,更改端口才有效。当Postfix发送电子邮件时,它充当SMTP客户端。收件人的邮件服务器充当SMTP服务器。您无法控制接收SMTP服务器。SMTP服务器正在监听端口25以接收电子邮件。他们预计SMTP客户端将到达端口25。没有其他接收电子邮件的端口。如果您的后缀未连接到接收SMTP服务器的端口25,您将无法发送电子邮件。 发送测试电子邮件 事实上,我们现在可以通过命令行发送和接收电子邮件。如果你的Ubuntu服务器有一个名为user1的用户帐户,那么这个用户的电子邮件地址是[email&#160;protected]。您可以向root用户发送电子邮件[email&#160;protected]。你也可以向Gmail、yahoo mail或任何其他电子邮件服务发送电子邮件。 安装Postfix时,sendmail二进制文件被放置在/usr/sbin/sendmail,它与传统的sendmail SMTP服务器兼容。您可以使用Postfix的sendmail二进制文件向您的Gmail帐户发送测试电子邮件,如下所示: echo "test email" | sendmail [email protected] 在这个简单的命令中,sendmail从标准输入读取一条消息,并将“test email”作为消息正文,然后将此消息发送到您的Gmail帐户。你应该能够在你的Gmail收件箱(或垃圾邮件文件夹)中收到这封测试邮件。您可以看到,虽然我们没有指定发件人地址,但Postfix会自动为发件人地址附加一个域名。这是因为我们在安装Postfix时在系统邮件名中添加了我们的域名。 注意:From:域名由Postfix中的myorigin参数决定,而不是myhostname参数。 你可以试着回复这封测试邮件,看看Postfix是否能收到邮件。从您的域发送的电子邮件很可能被标记为垃圾邮件。现在别担心。我们将在本系列教程的后面部分解决这个问题。 每个用户的收件箱位于/var/spool/mail/&lt;用户名&gt;或/var/mail/&lt;用户名&gt;文件如果不确定在哪里查找收件箱,请使用此命令。 postconf mail_spool_directory 后缀邮件日志存储在/var/log/mail中。日志 还是不能发邮件? 如果端口25(出站)未被阻止,但您仍然无法从自己的邮件服务器向Gmail等其他电子邮件地址发送电子邮件,那么您应该使用命令行文本编辑器(如Nano)打开邮件日志(/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记录。(PTR记录由提供IP地址的组织管理。) 要在Nano文本编辑器中保存文件,请按Ctrl+O,然后按Enter确认。要退出,请按Ctrl+X。 使用邮件程序发送和阅读电子邮件 现在,让我们安装一个命令行MUA(邮件用户代理)。 sudo apt-get install mailutils 要发送电子邮件,请键入 mail -a FROM:your-account@yourdomain.com [email protected] [email protected]:~$ mail -a FROM:[email protected] [email protected] Cc: Subject: 2nd test email I'm sending this email using the mail program. 输入主题行和正文。要告诉mail您已经写完,请按Ctrl+D,mail将为您发送此电子邮件。 要阅读收到的电子邮件,只需键入mail。 mail 下面是如何使用邮件程序来管理邮箱。 要阅读第一封电子邮件,请键入1。如果只显示消息的一部分,请按Enter键以显示消息的其余部分。 要显示从消息1开始的消息标题,请键入h。 要显示最后一屏消息,请键入h$或z。 要阅读下一封电子邮件,请键入n。 要删除邮件1,请键入d 1。 要删除消息1、2和3,请键入d 1 2 3。 要删除从1到10的邮件,请键入d 1-10。 要重播消息1,请键入reply 1。 要退出邮件,请键入q。 已打开的邮件将从/var/mail/&lt;用户名&gt;to/home/&lt;用户名&gt/mbox文件。这意味着其他邮件客户端无法读取这些邮件。为了防止这种情况发生,请键入x而不是q退出邮件。 如何增加附件大小限制 默认情况下,附件的大小不能超过10MB,这由message_size_limit参数指示。 postconf | grep message_size_limit 输出: message_size_limit = 10240000 此参数定义了来自您自己的邮件服务器的电子邮件和到达您的邮件服务器的电子邮件的大小限制。 要允许连接50MB大小,请运行以下命令。 sudo postconf -e message_size_limit=52428800 当使用-e(编辑)选项调用postconf命令时,它将尝试在Postfix主配置文件(/etc/Postfix/main.cf)中查找参数(message_size_limit)并更改值。如果找不到该参数,则会在文件末尾添加该参数。 请注意,邮件大小限制不应大于邮箱大小限制,否则Postfix可能无法接收电子邮件。在上游后缀包中,邮箱大小限制的默认值为51200000字节(约48MB)。在Ubuntu上,默认值设置为0,这一点可以从 postconf | grep mailbox_size_limit 输出: mailbox_size_limit = 0 这意味着邮箱没有大小限制,这很好。 重新启动Postfix以使更改生效。 sudo systemctl restart postfix 从邮件服务器发送带有大附件的电子邮件时,还应注意接收服务器的附件大小限制。例如,您不能向Gmail地址发送大于25MB的附件。 设置后缀主机名 默认情况下,Postfix SMTP服务器使用操作系统的主机名。但是,操作系统的主机名可能会发生变化,因此直接在Postfix配置文件中设置主机名是一种好的做法。使用命令行文本编辑器(如Nano)打开Postfix主配置文件。 sudo nano /etc/postfix/main.cf 找到myhostname参数并设置邮件。你的地盘。com作为价值。不建议使用apex域yourdomain。com作为我的主机名。从技术上讲,您可以使用apex域,但在本教程系列的后续部分中,它会产生问题。 myhostname = mail.yourdomain.com 保存并关闭文件。(要在Nano文本编辑器中保存文件,请按Ctrl+O,然后按Enter确认。要退出,请按Ctrl+X。)重新启动Postfix以使更改生效。 sudo systemctl restart postfix 创建电子邮件别名 在生产环境中操作邮件服务器时,需要配置某些别名。您可以在/etc/alias文件中添加电子邮件别名,该文件是一个特殊的后缀查找表文件,使用Sendmail兼容的格式。 sudo nano /etc/aliases 默认情况下,该文件中只有两行。 # See man 5 aliases for format postmaster: root 第一行是评论。第二行是该文件中别名的唯一定义。左边是别名。右侧是电子邮件的最终目的地。因此,[email&#160;protected]的电子邮件将被发送到[email&#160;protected]。RFC 2142要求提供邮政局长的电子邮件地址。 通常我们不使用根电子邮件地址。相反,邮政局长可以使用普通的登录名来访问电子邮件。因此,您可以添加以下行。用真实用户名替换用户名。 root: username 这样,[email&#160;protected]的电子邮件将被发送到[email&#160;protected]。现在您可以保存并关闭该文件。然后使用newalias命令重建别名数据库 sudo newaliases 仅使用IPv4 默认情况下,Postfix同时使用IPv4和IPv6协议,如下所示: postconf inet_protocols 输出: inet_protocols = all 如果邮件服务器没有公共IPv6地址,最好在Postfix中禁用IPv6,以防止不必要的IPv6连接。只需运行以下命令即可在Postfix中禁用IPv6。 sudo postconf -e "inet_protocols = ipv4" 然后重新启动Postfix。 sudo systemctl restart postfix 升级后缀 如果运行sudo-apt-update,然后运行sudo-apt-upgrade,系统将升级Postfix,可能会提示您再次选择Postfix的配置类型。这一次,您应该选择“无配置”以保持当前配置文件不变。 下一步 恭喜!现在你有了一个基本的Postfix电子邮件服务器并开始运行。您可以使用命令行发送纯文本电子邮件和阅读收到的电子邮件。在本系列教程的下一部分中,我们将学习如何安装Dovecot IMAP服务器并启用TLS加密,这将允许我们使用Mozilla Thunderbird等桌面邮件客户端发送和接收电子邮件。 第2部分:在Ubuntu上安装Dovecot IMAP服务器;启用TLS加密 和往常一样,如果你觉得这篇文章有用,订阅我们的时事通讯,获取更多提示和窍门。当心?

    2022.03.23 浏览:1443
  • 在Postfix中启用并配置Postscreen以阻止垃圾邮件

    在之前的教程中,我们讨论了如何在Linux(Ubuntu版本、CentOS/RHEL版本)上从头开始设置邮件服务器。本教程将向您展示如何在Postfix SMTP服务器中启用和配置Postscreen。Postscreen是一个SMTP过滤器,可以阻止垃圾邮件(或僵尸机器)远离真正的Postfix smtpd守护进程,因此Postfix不会感到过载,可以更高效地处理合法电子邮件。 注意:如果您使用的是iRedMail或Modoboa,则默认情况下服务器上会启用Postscreen。不过,你会学到一些新东西。 减少SMTP服务器过载 默认情况下,Postfix最多可以生成100个SMTP服务器进程来处理SMTP客户端连接。您可以通过运行以下命令来检查进程限制。 postconf default_process_limit 样本输出: default_process_limit = 100 如果垃圾邮件不断攻击您的Postfix SMTP服务器,那么接受合法电子邮件的Postfix SMTP服务器进程就会减少。当SMTP客户端的数量超过Postfix SMTP服务器进程的数量时,其他SMTP客户端必须等待SMTP服务器进程可用。 通过使用Postscreen阻止垃圾邮件,我们可以为合法的SMTP客户端保存SMTP服务器进程。Postscreen是针对垃圾邮件发送者的第一层防御。它被实现为监听端口25的单个进程,可以处理多个入站SMTP连接。与使用其他SMTP级别的访问检查相比,它速度快、重量轻。 Postscreen对Spambots使用的测量 大多数垃圾邮件都有错误的SMTP协议实现。Postscreen可以利用这一事实,使用多个测量来阻止Spambot。 Pregreet测试。如果SMTP客户端在轮到它之前讲话,请停止连接。 实时黑名单检查。如果SMTP客户端的IP地址位于blaclist(如Spamhaus)上,请停止连接。 深度协议测试。 步骤1:在Postfix中启用Postscreen Postscreen是在Postfix 2.8中首次引入的。如果您使用的是任何当前的Linux发行版,那么您应该拥有Postfix 3.0或更高版本。要检查后缀版本,请运行 postconf mail_version 样本输出: mail_version = 3.3.0 编辑后缀主配置文件。 sudo nano /etc/postfix/master.cf 注释掉下面一行(在这一行的开头添加一个#字符)。 smtp inet n - y - - smtpd 然后取消对以下4行的注释(删除每行开头的#字符)。 smtp inet n - y - 1 postscreen smtpd pass - - y - - smtpd dnsblog unix - - y - 0 dnsblog tlsproxy unix - - y - 0 tlsproxy 哪里: 前两行启用Postscreen。Postscreen和smtpd守护进程都将监听端口25。Postscreen将首先检查SMTP客户端,然后将连接传递给smtpd守护进程。 dnsblog(DNS黑名单记录器)服务允许记录DNS黑名单检查。 tlsproxy服务为postscreen启用STARTTLS支持,因此当postscreen启用时,远程SMTP客户端可以建立加密连接。 保存并关闭文件。(暂时不要重启Postfix。) 创建永久白名单/黑名单 编辑后缀主配置文件。 sudo nano /etc/postfix/main.cf 我们需要将我们自己的IP地址添加到Postscreen白名单中,这样我们自己的SMTP请求就不会被Postscreen测试(pregreet测试、黑名单检查、深度协议测试等)。在文件末尾添加以下两行。 postscreen_access_list = permit_mynetworks cidr:/etc/postfix/postscreen_access.cidr postscreen_blacklist_action = drop 保存并关闭文件。permit_mynetworks值将白名单mynetworks参数中列出的任何IP地址。要检查mynetworks的价值,请运行 postconf mynetworks 样本输出: mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 您还可以在/etc/postfix/postscreen_访问中手动添加其他IP地址。cidr文件。 sudo nano /etc/postfix/postscreen_access.cidr 您可能希望将邮件服务器的公共IPv4和IPv6地址列入白名单。所以我在文件中添加了以下几行。用自己的IP地址替换IP地址。请注意,您需要使用CIDR表示法:对于单个IPv4地址,请在末尾添加/32;对于单个IPv6地址,请在末尾添加/128。 #permit my own IP addresses. 130.51.180.110/32 permit 2a0d:7c40:3000:b8b::2/128 permit 如果您的邮件服务器也运行VPN服务器,则可能需要将VPN服务器的地址添加到白名单中。例如,我的VPN服务器使用10.10.10.1专用IP地址,因此我在文件中添加了以下行。 10.10.10.1/32 permit 如果你想将一个IP地址永久列入黑名单,你可以像下面这样做。 12.34.56.78/32 reject 保存并关闭文件。重新启动Postfix以使更改生效。 sudo systemctl restart postfix 注意:Postscreen只监听端口25,因此来自端口587或465的经过身份验证的用户不会受到Postscreen的影响。 Postscreen本身还维护一个动态白名单,以最小化合法电子邮件的延迟,该白名单由Postscreen_cache_map参数定义。 postconf postscreen_cache_map 样本输出: postscreen_cache_map = btree:$data_directory/postscreen_cache 动态白名单中的每个IP地址都有一个生存期。 第2步:预reet测试 Postscreen中有一个pregreet测试来检测垃圾邮件。正如您可能已经知道的,在SMTP协议中,接收SMTP服务器应始终在发送SMTP服务器声明其主机名之前进行声明。一些垃圾邮件发送者违反此规则,并在接收SMTP服务器之前声明其主机名。 默认情况下,Postscreen启用pregreet测试,但不会对测试结果执行任何操作。从我的邮件日志(/var/log/mail.log或/var/log/maillog)中的以下几行可以看到,“PREGREET”文本表示SMTP客户端首先声明了其主机名,但Postscreen仍将连接传递到Postfix smtpd守护进程。 mail postfix/postscreen[24075]: CONNECT from [156.96.118.171]:62604 to [23.254.225.226]:25 mail postfix/postscreen[24075]: PREGREET 11 after 0.07 from [156.96.118.171]:62604: EHLO User/r/n mail postfix/smtpd[24076]: connect from unknown[156.96.118.171] mail postfix/smtpd[24076]: disconnect from unknown[156.96.118.171] ehlo=1 quit=1 commands=2 要拒绝违反此规则的SMTP客户端,请编辑Postfix主配置文件。 sudo nano /etc/postfix/main.cf 在末尾添加以下行。 postscreen_greet_action = enforce 保存并关闭文件。然后重新启动Postfix。 sudo systemctl restart postfix 从现在起,如果SMTP客户端违反此规则,Postscreen将停止连接。从下面的日志中可以看到,Postscreen停止了连接,因此垃圾邮件发送者没有机会骚扰smtpd守护进程。 mail postfix/postscreen[6471]: CONNECT from [192.241.239.123]:48014 to [23.254.225.226]:25 mail postfix/postscreen[6471]: PREGREET 19 after 0 from [192.241.239.123]:48014: EHLO zg-0131a-136/r/n mail postfix/postscreen[6471]: DISCONNECT [192.241.239.123]:48014 Postscreen仍允许在停止连接之前完成其他测试。如果您希望在不进行其他测试的情况下立即断开连接,请使用以下设置。 postscreen_greet_action = drop 第3步:使用公共黑名单;白名单 postscreen_dnsbl_sites参数可用于根据公共黑名单(dnsbl)检查SMTP客户端的IP地址。如果SMTP客户端的IP地址在公共黑名单上,您可能已经在使用Postfix smtpd的reject_rbl_客户端来拒绝SMTP客户端。然而,这可能会导致误报,因为无辜的SMTP服务器的IP地址可能出于任何原因被列入黑名单,即使您使用permit_dnswl_client也可以检查公共白名单(dnswl)。 为了减少误报,Postscreen允许您检查多个黑名单,并为每个黑名单添加权重因子。例如,如果一个IP地址在Spamhaus黑名单上,加3分;如果一个IP地址在BarracudCentral黑名单上,加2分。如果综合分数足够高(由postscreen_dnsbl_阈值定义),则拒绝SMTP客户端。这个评分系统与斯帕马萨辛的评分系统相似。 在下面的配置中,我们将阈值设置为3点。Spamhaus有3磅重。梭鱼中心有2磅重。SpamCop的重量为1。如果综合得分等于或大于3,Postscreen将拒绝SMTP客户端。 postscreen_dnsbl_threshold = 3 postscreen_dnsbl_action = enforce postscreen_dnsbl_sites = zen.spamhaus.org*3 b.barracudacentral.org=127.0.0.[2..11]*2 bl.spameatingmonkey.net*2 bl.spamcop.net dnsbl.sorbs.net 我们还可以使用postscreen_dnsbl_站点根据公共白名单(DNSWL)检查SMTP客户端的IP地址。如果客户的IP地址在白名单上,则添加一个负数。 postscreen_dnsbl_sites = zen.spamhaus.org*3 b.barracudacentral.org=127.0.0.[2..11]*2 bl.spameatingmonkey.net*2 bl.spamcop.net dnsbl.sorbs.net swl.spamhaus.org*-4, list.dnswl.org=127.[0..255].[0..255].0*-2, list.dnswl.org=127.[0..255].[0..255].1*-4, list.dnswl.org=127.[0..255].[0..255].[2..3]*-6 如果您使用Postfix smtpd的reject_rbl_clientor permit_dnswl_client参数,那么现在应该删除它们,这样smtpd守护程序在Postscreen之后就不会再次执行IP检查。Postscreen不会检查基于域名的黑名单/白名单,因此我们应该继续使用reject_rhsbl在公共黑名单上执行域名查找。 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, ... ... reject_rhsbl_helo dbl.spamhaus.org, reject_rhsbl_reverse_client dbl.spamhaus.org, reject_rhsbl_sender dbl.spamhaus.org, 保存并关闭后缀主配置文件。然后重新启动Postfix以使更改生效。 sudo systemctl restart postfix 注意:如果在邮件日志中看到以下消息,则表示SMTP客户端的IP地址不在白名单(list.dnswl.org)中。这不是一个错误。 warning: dnsblog_query: lookup error for DNS query 161.223.143.185.list.dnswl.org: Host or domain name not found. Name service error for name=161.223.143.185.list.dnswl.org type=A: Host not found, try again 如果它在白名单上,消息将如下所示: postfix/dnsblog[21188]: addr xx.xx.xx.xx listed by domain list.dnswl.org as 127.0.10.0 如果IP地址在列表中列为127.0.0.255。dnswl。org,就像下面的消息一样,这意味着您已经达到了查询限制。您应该运行自己的本地DNS解析程序。 postfix/dnsblog[11951]: addr 202.66.174.152 listed by domain list.dnswl.org as 127.0.0.255 还要注意的是,BarracudCentral封锁列表需要注册,这是免费的。创建帐户后,只需添加DNS解析程序的IP地址即可。 运行自己的本地DNS解析程序 请注意,在使用公共黑名单和白名单时,您应该在邮件服务器上设置本地DNS解析器,因为大多数黑名单和白名单都有查询限制。如果您使用8.8.8.8这样的公共DNS解析程序,您很可能会比您想象的更早达到查询限制。 一些死亡/关闭的DNSBL站点 你不应该使用死掉或关闭的DNSBL网站,否则你的邮件服务器会拒绝合法的电子邮件。 dnsbl。njabl。org:自2013年以来一直处于离线状态。 dnsbl。啊�。组织:公众对该名单的访问于2015年终止。 步骤4:启用深度协议测试 Postscreen中有3种常见的深度协议测试: SMTP流水线测试 非SMTP命令测试 裸换行测试 管道是SMTP协议的扩展。它允许SMTP客户端一次发送多个SMTP命令,而无需等待SMTP服务器的响应。Postfix默认支持流水线。要进行检查,请使用telnet连接到邮件服务器。 telnet mail.yourdomain.com 25 然后使用EHLO命令声明主机名。 EHLO mail.google.com 下面SMTP服务器的响应表明它支持流水线。 250-PIPELINING 250-SIZE 157286400 250-VRFY 250-ETRN 250-STARTTLS 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN 然后退出连接。 quit 一些垃圾邮件发送者会使用命令管道一次性发出多个RCPT to:命令,以便在一个SMTP会话中向多个收件人发送垃圾邮件。如果SMTP服务器未宣布支持流水线,则SMTP客户端不应同时发出多个命令。 在/etc/postfix/main中添加以下两行。cf文件以启用管道测试并拒绝未通过此测试的SMTP客户端。 postscreen_pipelining_enable = yes postscreen_pipelining_action = enforce 顾名思义,非SMTP命令测试使Postscreen检测发送非SMTP命令的SMTP客户端。在/etc/postfix/main中添加以下两行。cf文件拒绝此类SMTP客户端。 postscreen_non_smtp_command_enable = yes postscreen_non_smtp_command_action = enforce 裸换行测试允许Postscreen检测以&lt;如果&gt;,而不是标准&lt;CR&gt&书信电报;LF&gt;。在/etc/postfix/main中添加以下两行。cf文件拒绝此类SMTP客户端。 postscreen_bare_newline_enable = yes postscreen_bare_newline_action = enforce 保存并关闭文件。然后重新启动Postfix以使更改生效。 sudo systemctl restart postfix 深度协议测试的灰色列表效应 深度协议测试的局限性在于,无论测试是否通过,Postscreen都会断开新SMTP客户端的连接。Postscreen通过以下消息断开每个客户端的连接: 450 4.3.2 Service currently unavailable 客户端必须稍后从同一IP地址重试。这实际上是一种灰色列表,因此需要禁用其他形式的灰色列表。例如,如果您按照我之前的教程使用Postgrey作为灰色列表策略服务器,那么请在/etc/postfix/main中找到以下行。cf文件并注释掉。 check_policy_service inet:127.0.0.1:10023, 保存并关闭文件。然后重新启动Postfix。 sudo systemctl restart postfix 如何最大限度地减少糟糕的用户体验 Greylisting对最终用户来说相当烦人,因为用户需要再等几分钟才能收到电子邮件。为了尽量减少这种不好的体验,在使用Postscreen深度协议测试时,我可以想到三种方法。 创建指向同一IP地址的第二条MX记录。 如果SMTP客户端的IP地址在公共白名单上,请跳过深层协议测试。 使用Postwhite将已知的良好IP地址添加到Postscreen白名单中。 创建指向同一IP地址的第二条MX记录 您可以为您的域名指定多个MX记录,如下所示。 Record Type    Name      Mail Server         Priority MX @ mail.yourdomain.com 0 MX @ mail2.yourdomain.com 5 发件人将尝试第一个邮件服务器(优先级为0)。如果是邮件。你的地盘。com通过greylisting拒绝电子邮件,然后发件人会立即尝试第二个邮件服务器(优先级为5)。 Postscreen中的灰色列表没有Postgrey中的延迟时间。如果两个邮件服务器主机名具有相同的IP地址,那么当发件人尝试第二个邮件服务器主机名时,该电子邮件将立即被接受(如果所有其他检查都通过),最终用户将不会注意到由灰色列表引起的电子邮件延迟。 请注意,并非所有邮件服务器都会立即尝试第二台MX主机。一些邮件服务器,比如Gmail,会使用不同的IP地址重试,当然会再次被拒绝。默认情况下,Postfix将尝试第二台MX主机。我不知道进出口银行是否也是如此。如果您运行Exim SMTP服务器,请在下面发表评论。 如果SMTP客户端的IP地址在公共白名单上,则跳过深度协议测试 Gmail永远不会尝试从同一IP地址发送电子邮件。然而,Gmail的IP地址在名单上。dnswl。组织。我们可以告诉Postscreen忽略此类SMTP客户端。在/etc/postfix/main中添加以下行。cf文件忽略得分等于-2或以下的客户。 postscreen_dnsbl_whitelist_threshold = -2 重新启动Postfix以使更改生效。 sudo systemctl restart postfix 我邮件日志中的以下消息表明Postscreen没有执行深度协议测试,并通过了与smtpd守护进程的连接,因为Gmail的IP地址在公共白名单上。 Feb 10 10:31:14 mail postfix/postscreen[16579]: CONNECT from [209.85.166.44]:38543 to [23.254.225.226]:25 Feb 10 10:31:14 mail postfix/dnsblog[16582]: addr 209.85.166.44 listed by domain list.dnswl.org as 127.0.5.0 Feb 10 10:31:15 mail postfix/postscreen[16579]: PASS NEW [209.85.166.44]:38543 Feb 10 10:31:15 mail postfix/smtpd[16639]: connect from mail-io1-f44.google.com[209.85.166.44] 事实上,大多数主要的邮箱提供商(Gmail、Hotmail、Outlook、Yahoo Mail、GMX Mail、ProtonMail等)都被列入了白名单。dnswl。组织。它还包括其他行业的邮件服务器,如dnswl上所示。组织。 2–金融服务 3–电子邮件服务提供商 4-组织(包括营利[即公司]和非营利组织) 5–服务/网络提供商 6–个人/私人服务器 7–旅游/休闲行业 8–公共部门/政府 9-媒体和科技公司 10–一些特殊情况 11–教育、学术 12–医疗保健 13–制造业/工业 14–零售/批发/服务 15–电子邮件营销提供商 20–通过自助服务添加,无特定类别 因此,使用postscreen_dnsbl_whitelist_threshold将帮助您在大多数情况下跳过灰色列表。 使用Postwhite Postwhite是由Steve Jenkins编写的一个脚本,通过使用已知网络邮箱、社交网络、电子商务提供商和兼容批量发件人的已发布SPF记录,自动为Postscreen生成静态IP白名单。请注意,此白名单将使Postscreen跳过白名单IP地址的所有测试(预reet测试、公共黑名单/白名单检查、深度协议测试),因此它将有助于减少对公共黑名单/白名单的Postscreen和DNS请求的负载。 要使用Postwhite,请将第一张cd发送到/usr/local/bin/。 cd /usr/local/bin/ 安装git。 sudo apt install git 或 sudo dnf install git 克隆SPF工具和Postwhite Github存储库。 sudo git clone https://github.com/spf-tools/spf-tools.git sudo git clone 复制postwhite。将conf文件发送到/etc/。 sudo cp /usr/local/bin/postwhite/postwhite.conf /etc/ 运行Postwhite。 sudo /usr/local/bin/postwhite/postwhite 白名单将另存为/etc/postfix/postscreenu spfu白名单。苹果酒。编辑后缀主配置文件。 sudo nano /etc/postfix/main.cf 找到下面这行。 postscreen_access_list = permit_mynetworks cidr:/etc/postfix/postscreen_access.cidr 添加新的白名单文件。 postscreen_access_list = permit_mynetworks cidr:/etc/postfix/postscreen_access.cidr cidr:/etc/postfix/postscreen_spf_whitelist.cidr 保存并关闭文件。然后重新启动Postfix以使更改生效。 sudo systemctl restart postfix 编辑根用户的crontab文件。 sudo crontab -e 在末尾添加以下两行以定期更新白名单。 @daily /usr/local/bin/postwhite/postwhite > /dev/null 2>&1 #Update Postscreen Whitelists @weekly /usr/local/bin/postwhite/scrape_yahoo > /dev/null 2>&1 #Update Yahoo! IPs for Postscreen Whitelists 保存并关闭文件。现在,如果你从Gmail向你自己的域电子邮件地址发送电子邮件,并查看邮件日志,你会发现Postscreen不会执行任何测试,因为IP地址是白名单。 Feb 10 13:04:17 mail postfix/postscreen[24895]: CONNECT from [209.85.166.44]:38257 to [23.254.225.226]:25 Feb 10 13:04:17 mail postfix/postscreen[24895]: WHITELISTED [209.85.166.44]:38257 Feb 10 13:04:17 mail postfix/smtpd[26596]: connect from mail-io1-f44.google.com[209.85.166.44] 我在/etc/postfix/main中的Postscreen配置。cf文件 第5步:分析后缀日志 Pflogsumm是创建后缀日志摘要的好工具。在Ubuntu上安装时使用: sudo apt install pflogsumm 在CentOS/RHEL上,pflogsumm由postfix perl脚本包提供。 sudo dnf install postfix-perl-scripts 使用以下命令生成今天的报告。(请注意,在CentOS/RHEL上,邮件日志文件是/var/log/maillog。) sudo pflogsumm -d today /var/log/mail.log 生成昨天的报告。 sudo pflogsumm -d yesterday /var/log/mail.log 如果你想生成本周的报告。 sudo pflogsumm /var/log/mail.log 要在“正常”统计数据之前发出“问题”报告(反弹、延迟、警告、拒绝),请使用--problems first标志。 sudo pflogsumm -d today /var/log/mail.log --problems-first 要将电子邮件发件人地址附加到拒绝报告中的每个列表,请使用--rej add from标志。 sudo pflogsumm -d today /var/log/mail.log --rej-add-from 要在拒绝摘要中显示完整原因,请使用--verbose msg detail标志。 sudo pflogsumm -d today /var/log/mail.log --rej-add-from --verbose-msg-detail 您可以添加一个cron作业,使pflogsumm每天向您的电子邮件地址发送报告。 sudo crontab -e 添加以下行,它将在每天早上4:00生成报告。 0 4 * * * /usr/sbin/pflogsumm -d yesterday /var/log/mail.log --problems-first --rej-add-from --verbose-msg-detail -q 要通过电子邮件接收报告,请在所有cron作业上方添加以下行。 MAILTO="[email protected]" 你应该注意邮件拒绝细节部分,在那里你可以看到这些邮件被拒绝的原因,以及是否有任何误报。灰色列表拒绝是可以安全忽略的。以下屏幕截图表明SMTP客户端未通过Postscreen深层协议测试。 如果已经设置了MAILTO变量,但希望将后缀日志摘要发送到其他电子邮件地址,则可以在Cron作业中添加以下行。 0 4 * * * /usr/sbin/pflogsumm -d yesterday /var/log/mail.log --problems-first --rej-add-from --verbose-msg-detail -q | mutt -s "Postfix log summary"  [email protected] pflogsumm命令的输出被重定向到mutt,这是一个命令行邮件用户代理,它将使用输出作为电子邮件正文,并将其发送到最后指定的电子邮件地址。您需要在Linux服务器上安装mutt。 sudo apt install mutt 或 sudo dnf install mutt CentOS/RHEL上的后缀反向DNS查找错误 如果您的Postfix SMTP服务器在CentOS/RHEL上运行,则在启用Postscreen后,它可能无法执行反向DNS查找。在这种情况下,具有PTR记录的IP地址仍将在后缀日志(/var/log/maillog)中标识为未知。 postfix/smtpd[14734]: connect from unknown[23.254.225.226] 为了解决这个问题,我们需要在chroot环境中复制反向DNS查找所需的库。 sudo mkdir /var/spool/postfix/lib64 sudo cp -vl /usr/lib64/libnss_* /var/spool/postfix/lib64 然后重新启动Postfix。 sudo systemctl restart postfix 收尾 我希望本教程能帮助您使用Postscreen阻止垃圾邮件。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?

    2022.03.24 浏览:811
  • 设置SMTP&;带有HAProxy的IMAP代理(Debian、Ubuntu、CentOS)

    在之前的教程中,我们讨论了如何在Linux(Ubuntu版本、CentOS/RHEL版本)上从头开始设置邮件服务器,以及如何使用iRedMail或Modoboa快速设置自己的邮件服务器,而无需手动配置邮件服务器堆栈的每个组件。本教程将向您展示如何使用HAProxy为邮件服务器设置SMTP和IMAP代理。 什么时候需要SMTP和IMAP代理? 有些人在家里运行电子邮件服务器,但可能存在以下问题: 端口25被阻塞。 它们没有静态IP地址。 他们无法创建PTR记录。 如果端口25被阻止,则无法直接向收件人发送电子邮件。如果你没有静态IP地址或PTR记录,你的电子邮件很可能会被拒绝或进入垃圾邮件文件夹。如果遇到这种情况,可以在数据中心运行VPS(虚拟专用服务器),并将其用作邮件服务器的代理。VPS有一个静态IP地址,您可以为该IP地址创建PTR记录。其他电子邮件服务器会认为VPS运行您的邮件服务,当您发送电子邮件时,他们会认为电子邮件来自您的VPS。 是的,您也可以使用SMTP中继服务(如Sendinblue)来解决这些问题,但每天和每月可以发送多少电子邮件是有限制的。如果你升级到Mailjet的付费账户,每月至少要花25美元。你发送的电子邮件越多,你每月的花费就越高。如果你运行VPS并设置邮件代理,无论你要发送多少封邮件,每月都要花费大约10美元。 如果为很多人运行邮件服务器,可能需要设置邮件代理以实现负载平衡和高可用性。在本文中,我将使用HAProxy设置SMTP和IMAP代理,这是一个免费、开源的高可用性负载平衡器和代理服务器,用于基于TCP和HTTP的应用程序。 步骤1:为邮件代理选择正确的VP 你需要一个副总裁 允许您创建PTR记录 不会阻塞端口25 允许您无限制地发送无限电子邮件。 并非所有VPS提供商都满足上述3个要求。例如,DigitalOcean会阻塞端口25,但不会解锁端口25。另一个问题是,像DigitalOcean这样的大型知名主机提供商被垃圾邮件发送者滥用。通常,服务器IP地址在几个黑名单上。 我在ScalaHost和Kamatera VPS上运行邮件服务器。在设置邮件服务器时,我总是推荐它们。对于不需要太多CPU和RAM的邮件代理,可以选择Kamatera VPS。单CPU 1GB内存计划每月只需花费4美元,您将获得一个月的免费服务。您可以按照下面的教程创建Kamatera VPS。 如何在Kamatera上创建Linux VPS服务器 您可以为VPS选择任何Linux发行版,但我建议您使用Debian、Ubuntu或CentOS。 要登录到服务器,可以使用SSH客户端。如果您在计算机上使用Linux或macOS,只需打开一个终端窗口并运行以下命令即可登录服务器。将12.34.56.78替换为VPS的IP地址。 ssh [email protected]12.34.56.78 系统将要求您输入密码。如果您使用的是Windows,请阅读下面关于如何使用SSH客户端的文章。 在Windows上使用SSH登录Linux服务器的3种方法 第2步:在VPS上设置VPN服务器 如果你家里有一个动态IP地址,那么你需要在你的VPS上设置一个VPN服务器,这样你的VPS就可以与你的邮件服务器通信,而不会因为IP地址的改变而中断。VPN服务器还可以帮助您绕过端口25阻塞。 您可以按照以下教程之一在VPS上设置WireGuard VPN。为什么我要选择WireGuard而不是像OpenVPN这样的其他VPN协议?因为WireGuard允许您为VPN客户端分配静态专用IP地址。 在Ubuntu上设置自己的WireGuard VPN服务器 在Debian上设置自己的WireGuard VPN服务器 在CentOS上设置自己的WireGuard VPN服务器 按照上述文章中的说明操作时,您的VPS是VPN服务器,而您的邮件服务器是VPN客户端。VPS将成为邮件服务器的默认网关,邮件服务器上的所有出站流量将通过VPN进行隧道传输,因此接收SMTP服务器(Gmail、Hotmail、Yahoo mail等)时会认为您的邮件来自VPS。如果你想通过VPS发送邮件,但让其他类型的流量使用原始网关,WireGuard还允许你通过启用策略路由来实现。 你应该为你的VPS设置一个PTR记录,也就是反向DNS记录。Kamatera不允许您在控制面板中编辑PTR记录。相反,你需要打开一张支持票,告诉他们为你添加PTR记录。你可能会想,这并不方便,但这是为了让垃圾邮件发送者远离平台,因此像我们这样的合法电子邮件发送者将拥有良好的IP声誉。告诉支持团队将服务器IP地址的PTR记录更新为mail。你的领域。通用域名格式。 第3步:在防火墙中打开端口并设置权限 VPS需要在防火墙中打开端口25、587、465、143和993。运行以下命令打开这些端口。 Debian/Ubuntu: sudo ufw allow 25,587,465,143,993/tcp CentOS: sudo firewall-cmd --permanent --add-service={smtp,smtp-submission,smtps,imap,imaps} sudo systemctl reload firewalld 邮件服务器需要向VPS打开各种端口。运行以下命令。 Debian/Ubuntu: sudo ufw insert 1 allow in from 10.10.10.0/24 CentOS: sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.10.10.0/24" accept' sudo systemctl reload firewalld 10.10.10.0/24是VPN服务器创建的专用IP范围,因此VPS可以访问邮件服务器上的所有端口。 在CentOS上配置SELinux 在本教程的后面部分,VPS上的HAProxy需要绑定到各种电子邮件端口,如25、587、465、143和993,但SELinux禁止这样做。如果在VPS上使用CentOS,则需要运行以下命令以允许HAProxy绑定到这些端口。 sudo setsebool -P haproxy_connect_any 1 第4步:设置SMTP代理以接收电子邮件 现在,您需要设置SMTP代理,以便其他邮件服务器可以通过VPS向您自己的邮件服务器发送电子邮件。SSH到VPS中并安装HAProxy。 Debian/Ubuntu sudo apt install haproxy 森托斯 sudo dnf install haproxy 然后编辑HAProxy主配置文件。 sudo nano /etc/haproxy/haproxy.cfg 在文件末尾添加以下行。将12.34.56.78替换为VPS的公共IP地址。将10.10.10.101替换为邮件服务器的专用IP地址,该地址由VPN服务器分配。 frontend ft_smtp bind 12.34.56.78:25 mode tcp timeout client 1m log global option tcplog default_backend bk_smtp backend bk_smtp mode tcp log global option tcplog timeout server 1m timeout connect 7s server postfix 10.10.10.101:2525 send-proxy 上述配置将使HAProxy监听端口25,并将SMTP连接传递到邮件服务器的端口2525。保存并关闭文件。重新启动HAProxy。 sudo systemctl restart haproxy 并在启动时启用自动启动。 sudo systemctl enable haproxy 要使用HAProxy作为Postfix SMTP服务器的反向代理,需要在Postfix中启用Postscreen。SSH连接到邮件服务器并编辑Postfix主配置文件。 sudo nano /etc/postfix/master.cf 在该文件开头添加以下行。将10.10.10.101替换为VPN服务器分配的邮件服务器的专用IP地址。这将在端口2525上启用Postscreen,它可以接受来自VPS的HAProxy连接。Postfix能够从HAProxy获得SMTP客户端的原始IP地址。 10.10.10.101:2525 inet n - - - 1 postscreen -o postscreen_upstream_proxy_protocol=haproxy -o postscreen_cache_map=btree:$data_directory/postscreen_2525_cache -o syslog_name=postfix/2525 然后取消对以下三行的注释。(注意:如果您使用iRedMail或Moboba来运行邮件服务器,那么默认情况下,以下三行是未注释的。) smtpd pass - - y - - smtpd dnsblog unix - - y - 0 dnsblog tlsproxy unix - - y - 0 tlsproxy 哪里: 第一行将使Postscreen将SMTP连接传递到smtpd守护进程。 dnsblog(DNS黑名单记录器)服务允许记录DNS黑名单检查。 tlsproxy服务为postscreen启用STARTTLS支持,因此当postscreen启用时,远程SMTP客户端可以建立加密连接。 保存并关闭文件。重新启动Postfix以使更改生效。 sudo systemctl restart postfix 现在为你的域名添加一个新的MX记录,如下所示,你的邮件服务器可以通过VPS接收电子邮件。 Record Type    Name      Mail Server         Priority MX @ hostname-of-your-VPS 0 您可以为VPS使用任何主机名,只要它可以解析为VPS的IP地址。为了简单起见,您可以使用邮件服务器的主机名(mail.yourdomain.com)。别忘了为VPS的主机名添加DNS记录。 第5步:设置提交代理 您的用户可以在不使用代理的情况下向邮件服务器提交发送电子邮件,但如果您希望用户能够通过VPS提交发送电子邮件,该怎么办?您需要为Postfix提交服务设置代理。 在VPS上编辑HAProxy主配置文件。 sudo nano /etc/haproxy/haproxy.cfg 在文件末尾添加以下行。将12.34.56.78替换为VPS的公共IP地址。将10.10.10.101替换为邮件服务器的专用IP地址,该地址由VPN服务器分配。 frontend ft_submission bind 12.34.56.78:587 mode tcp timeout client 1m log global option tcplog default_backend bk_submission backend bk_submission mode tcp log global option tcplog timeout server 1m timeout connect 7s server postfix 10.10.10.101:10587 send-proxy frontend ft_smtps bind 12.34.56.78:465 mode tcp timeout client 1m log global option tcplog default_backend bk_smtps backend bk_smtps mode tcp log global option tcplog timeout server 1m timeout connect 7s server postfix 10.10.10.101:10465 send-proxy 通常有两个端口可以接受经过身份验证的用户提交的电子邮件:587和465。在上面的配置中,我们在HAProxy中定义了两个前端,监听端口587和465。它们将分别连接到邮件服务器的端口10587和10465。 保存并关闭文件。重新启动HAProxy。 sudo systemctl restart haproxy 然后在邮件服务器上编辑Postfix主配置文件。 sudo nano /etc/postfix/master.cf 在该文件末尾添加以下行。将10.10.10.101替换为邮件服务器的专用IP地址,该地址由VPN服务器分配。请在-o之前至少允许一个空格(制表符或空格键)。在后缀配置中,前面的空格字符表示此行是前一行的延续。但是,不应在等号(=)之前或之后添加空格。 10.10.10.101:10587 inet n - y - - smtpd -o syslog_name=postfix/10587 -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 -o smtpd_upstream_proxy_protocol=haproxy 10.10.10.101:10465 inet n - y - - smtpd -o syslog_name=postfix/10465 -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject -o smtpd_sasl_type=dovecot -o smtpd_sasl_path=private/auth -o smtpd_upstream_proxy_protocol=haproxy 在上面的配置中,我们启用了两个在端口10587和10465上侦听的提交服务,它们支持haproxy协议,因此能够接受来自haproxy的连接。保存并关闭文件。重新启动Postfix以使更改生效。 sudo systemctl restart postfix 第6步:设置IMAP代理 我们还希望用户能够通过VPS登录IMAP服务器,因此我们需要设置IMAP代理。 在VPS上编辑HAProxy主配置文件。 sudo nano /etc/haproxy/haproxy.cfg 在文件末尾添加以下行。将12.34.56.78替换为VPS的公共IP地址。将10.10.10.101替换为邮件服务器的专用IP地址,该地址由VPN服务器分配。 frontend ft_imap bind 12.34.56.78:143 mode tcp default_backend bk_imap backend bk_imap mode tcp balance leastconn stick store-request src stick-table type ip size 200k expire 30m server imap1 10.10.10.101:10143 send-proxy-v2 frontend ft_imaps bind 12.34.56.78:993 mode tcp default_backend bk_imaps backend bk_imaps mode tcp balance leastconn stick store-request src stick-table type ip size 200k expire 30m server imaps1 10.10.10.101:10993 send-proxy-v2 IMAP服务有两个端口:143和993。端口143可以使用STARTTLS,端口993使用隐式TLS,因此在上述配置中,我们在端口143和993的HAproxy监听中添加了两个前端。它们将分别连接到邮件服务器的端口10143和10993。保存并关闭文件。重新启动HAProxy。 sudo systemctl restart haproxy 在邮件服务器上编辑Dovecot配置文件。 sudo nano /etc/dovecot/conf.d/10-master.conf 添加对IMAP和IMAP的HAProxy支持,如下所示。 service imap-login { inet_listener imap { port = 143 } inet_listener imaps { port = 993 ssl = yes } inet_listener imap_haproxy { port = 10143 haproxy = yes } inet_listener imaps_haproxy { port = 10993 ssl = yes haproxy = yes } } 在上述配置中,我们启用了两个IMAP服务:IMAP_haproxy和imaps_haproxy,分别监听端口10143和10993。它们支持haproxy协议,因此能够接受来自haproxy的连接。保存并关闭文件。 然后我们需要在Dovecot中添加受信任的代理主机。编辑Dovecot主配置文件。 sudo nano /etc/dovecot/dovecot.conf 在该文件末尾添加以下两行。将10.10.10.1替换为VPN服务器的专用IP地址。 haproxy_trusted_networks = 10.10.10.1 haproxy_timeout = 3s 保存并关闭文件。重新启动Dovecot以使更改生效。 sudo systemctl restart dovecot 现在,您应该能够登录IMAP服务器,并通过VPS提交发送的电子邮件。 第7步:设置HTTPS代理 如果希望通过VPS访问Roundcube等网络邮件,请在VPS上编辑HAProxy主配置文件。 sudo nano /etc/haproxy/haproxy.cfg 在文件末尾添加以下行。将12.34.56.78替换为VPS的公共IP地址。将10.10.10.101替换为邮件服务器的专用IP地址,该地址由VPN服务器分配。替换邮件。你的地盘。com与您的网络邮件使用的域名。 frontend https bind 12.34.56.78:443 mode tcp tcp-request inspect-delay 5s tcp-request content accept if { req_ssl_hello_type 1 } use_backend webmail if { req_ssl_sni -i mail.yourdomain.com } default_backend webmail backend webmail mode tcp option ssl-hello-chk server webmail 10.10.10.101:443 check 保存并关闭文件。然后重启HAProxy。 sudo systemctl restart haproxy 请注意,如果在certbot中使用默认的http-01质询,HTTPS代理可能会干扰Let's Encrypt TLS证书续订。建议在使用certbot续订Let's Encrypt TLS证书时使用dns-01 challenge。 最后的想法 请注意,我们通过添加更多侦听端口(252510587104651014310993),启用了对Postfix和Dovecot的代理支持。我们没有为现有端口(25、587、465、143和993)启用代理支持,因为如果启用,Postfix和Dovecot将只接受来自HAProxy的连接,并拒绝来自其他IP地址(包括本地主机)的连接。这可以防止邮件服务器上运行的webmail或web应用程序使用127.0.0.1:25发送电子邮件,并防止webmail客户端从Dovecot获取电子邮件。发生这种情况时,您可能会看到以下错误。 host mail.example.com refused to talk to me: 421 4.3.2 No system resources 您的Postfix SMTP服务器将在邮件日志中记录以下消息。 postfix/postscreen[1479]: warning: haproxy read: time limit exceeded 配置HAProxy自动重启 我找到了haproxy。CentOS/RHEL上的服务在启动时可能无法启动。错误如下。 Starting frontend ft_smtp: cannot bind socket [23.254.225.226:25] 如果我手动启动服务,它就会工作,这让我很困惑。为了解决这个问题,我们可以编辑haproxy。服务,使其在出现故障时自动重新启动。为了覆盖默认的systemd服务配置,我们创建了一个单独的目录。 sudo mkdir -p /etc/systemd/system/haproxy.service.d/ 然后创建一个文件。 sudo nano /etc/systemd/system/haproxy.service.d/restart.conf 在文件中添加以下行。 [Service] Restart=always RestartSec=5s 保存并关闭文件。然后重新加载系统D。 sudo systemctl daemon-reload Postfix/Dovecot自动重启 还建议在邮件服务器上配置Postfix和Dovecot,以便在出现故障时自动重启。 后缀 创建一个单独的目录。 sudo mkdir -p /etc/systemd/system/postfix.service.d/ 然后创建一个文件。 sudo nano /etc/systemd/system/postfix.service.d/restart.conf 在文件中添加以下行。请注意,在Debian/Ubuntu上,后缀是。服务是一个一次性服务,不允许重启=始终。 [Service] Restart=on-failure RestartSec=5s 保存并关闭文件。然后重新加载系统D。 sudo systemctl daemon-reload 多佛科特 创建一个单独的目录。 sudo mkdir -p /etc/systemd/system/dovecot.service.d/ 然后创建一个文件。 sudo nano /etc/systemd/system/dovecot.service.d/restart.conf 在文件中添加以下行。 [Service] Restart=always RestartSec=5s 保存并关闭文件。然后重新加载系统D。 sudo systemctl daemon-reload 删除IP黑名单 如果你的VPS的IP地址被某个特定的电子邮件服务提供商列入黑名单怎么办?您可以阅读下面的文章,了解如何将您的IP地址从黑名单中删除。 邮件服务器IP黑名单删除提示,以提高电子邮件的可交付性 故障排除提示 如果您向邮件服务器发送电子邮件,但收到以下错误, lost connection with mail.yourdomain.com[xx.xx.xx.xx] while receiving the initial server greeting 这可能是因为VPN连接中断,请验证是否可以从VPN服务器ping到VPN客户端(邮件服务器)。 ping 10.10.10.101 也可能是您没有将邮件服务器防火墙配置为允许从VPN连接(10.10.10.0/24)。在VPN服务器上运行以下命令,查看端口是否打开。Nmap可以通过sudo apt install Nmap安装在VPN服务器上。 sudo nmap 10.10.10.101 验证是否可以远程登录到端口2525上的邮件服务器。 telnet 10.10.10.101 2525 有时,您的HAProxy配置可能会出错。例如,我曾经在HAProxy中有两个默认的_后端指令,如下所示。 frontend ft_smtp bind 12.34.56.78:25 mode tcp timeout client 1m log global option tcplog default_backend bk_smtp default_backend ocserv 这是错误的。如果在前端部分中定义了默认的_后端,则无法在全局部分中定义另一个默认的_后端。相反,您应该像本文中那样,将每个默认的_后端指令放在相应的前端部分。 另一个配置错误是,您可能会意外地在https前端插入其他指令。 frontend https bind 12.34.56.78:443 mode tcp tcp-request inspect-delay 5s tcp-request content accept if { req_ssl_hello_type 1 } some_other_directives use_backend webmail if { req_ssl_sni -i mail.yourdomain.com } default_backend webmail 替代方法 如果您无法找出服务器环境中的问题,还可以在VPN服务器上使用UFW防火墙设置端口转发。流量将由UFW转发,因此HAProxy根本不会被使用。(无需移除HAProxy。) 如何在UFW中设置端口转发 应将以下端口从VPN服务器转发到邮件服务器。 TCP 25 TCP 587 TCP 465 TCP 143 TCP 993 TCP 80 TCP 443 TCP 110 TCP 995 结论 我希望本教程能帮助您设置SMTP和IMAP代理。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?

    2022.03.24 浏览:865
  • 如何使用Apache/Nginx在Ubuntu20.04上安装RainLoop Webmail

    在之前的文章中,我们讨论了如何从头开始在Ubuntu上设置自己的邮件服务器。本教程将向您展示如何使用Apache或Nginx web服务器在Ubuntu20.04上安装RainLoop Webmail。RainLoop是一个用PHP编写的简单、现代、快速、开源的基于Web的电子邮件客户端。 RainLoop网络邮件功能 一个现代化的网络界面,允许你上传一个自定义主题。 又快又轻 支持SMTP和IMAP。 支持多个帐户,这意味着您可以从一个地方访问所有电子邮件地址。 支持双因素身份验证。 与Facebook、Twitter、谷歌和Dropbox的集成。 直接访问邮件服务器,无需数据库。 易于安装和升级(管理面板中的一键升级) .RainLoop有两个版本: 根据AGPL v3许可证发布的社区版 根据RainLoop软件许可证发布的标准版。 在本教程中,我们将使用免费的开源社区版。 步骤1:安装Apache、PHP7或Nginx、PHP7 如果您使用Apache和PHP7,请在Ubuntu 20.04上安装它们: sudo apt update sudo apt install apache2 php7.4 libapache2-mod-php7.4 如果您使用Nginx和PHP7,请使用以下设备安装它们: sudo apt update sudo apt install nginx php7.4 php7.4-fpm 并安装RainLoop所需的以下PHP扩展。 sudo apt install php7.4-curl php7.4-xml 第2步:在Ubuntu 20.04上下载并安装RainLoop Webmail 首先,在当前工作目录中为rainloop创建一个目录。 mkdir rainloop 将Cd放入目录中,并使用以下命令下载最新的RainLoop社区版: cd rainloop curl -s | php 完成后,将此目录移动到/var/www/。 cd .. sudo mv rainloop /var/www/ 现在将web服务器用户(www数据)设置为所有者。 sudo chown www-data:www-data /var/www/rainloop/ -R 步骤3:为RainLoop配置虚拟主机 我们可以使用Apache或Nginx web服务器。 阿帕奇 如果要使用Apache web server,请使用以下命令创建虚拟主机文件: sudo nano /etc/apache2/sites-available/rainloop.conf 将以下文本放入文件中。用实际信息替换红色文本。 <VirtualHost *:80> ServerName mail.example.com DocumentRoot "/var/www/rainloop/" ErrorLog "/var/log/apache2/rainloop_error_log" TransferLog "/var/log/apache2/rainloop_access_log" <Directory /> Options +Indexes +FollowSymLinks +ExecCGI AllowOverride All Order deny,allow Allow from all Require all granted </Directory>   <Directory /var/www/rainloop/data> Require all denied </Directory> </VirtualHost> 保存并关闭文件。然后启用这个虚拟主机。 sudo a2ensite rainloop.conf 重新加载Apache。 sudo systemctl reload apache2 Nginx 如果要使用Nginx web server,请使用以下命令创建虚拟主机文件: sudo nano /etc/nginx/conf.d/rainloop.conf 将以下文本放入文件中。替换邮件。实例使用你自己的域名。 server { listen 80; listen [::]:80; server_name mail.example.com; root /var/www/rainloop; index index.php index.html; access_log /var/log/nginx/rainloop_access.log; error_log /var/log/nginx/rainloop_error.log; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ ^/(.+/.php)$ { try_files $uri =404; fastcgi_pass unix:/run/php/php7.4-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include /etc/nginx/fastcgi_params; } location ^~ /data { deny all; } } 保存并关闭文件。然后测试Nginx配置。 sudo nginx -t 如果测试成功,请重新加载Nginx配置。 sudo systemctl reload nginx 步骤4:安装TLS/SSL证书 如果您想将HTTPS添加到webmail,那么您可以从Let's Encrypt CA获得免费的TLS/SSL证书。首先,让我们安装certbot客户端。 sudo apt install certbot 如果使用Apache web服务器,那么还需要安装Certbot Apache插件。 sudo apt install python3-certbot-apache 然后发出以下命令以获取免费的TLS/SSL证书。将红色文本替换为您的实际电子邮件地址和域名。 sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d mail.example.com 如果使用Nginx web服务器,则需要安装Certbot Nginx插件。 sudo apt install python3-certbot-nginx 然后通过运行以下命令,使用Nginx插件获取并安装证书。将红色文本替换为您的实际电子邮件地址和域名。 sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d mail.example.com 您将看到以下文本,表明您已成功获得TLS证书。您的证书和链已保存在/etc/letsencrypt/live/mail。实例com/directory。 现在如果你来http://mail.example.com,您将被重定向到https://mail.example.com. 第5步:配置RainLoop Webmail 通过以下URL登录RainLoop管理面板。 mail.example.com/?admin 默认用户名为admin,默认密码为12345。 登录后,建议同时更改用户名和密码,因为管理员很容易成为攻击目标。单击左侧窗格上的安全选项卡。首先更新密码,然后重新登录并更新用户名。 要通过RainLoop访问电子邮件,您需要在“域”选项卡中配置电子邮件服务器设置。默认情况下,会添加4个电子邮件域:gmail。com,outlook。com,qq。雅虎。通用域名格式。 这些电子邮件域的SMTP服务器设置和IMAP服务器设置由RainLoop配置,但默认情况下仅启用Gmail。要启用其他3个电子邮件域,只需勾选复选框即可。 要访问自己的电子邮件服务器,请单击“添加域”按钮,然后输入自己电子邮件服务器的IMAP和SMTP服务器设置。 IMAP:服务器邮件。实例通讯,143端口,安全启动。 SMTP:服务器邮件。实例通讯,587端口,安全启动。勾选“使用身份验证”。 如果Rainloop和Postfix/Dovecot在同一台服务器上运行,那么您可以使用以下配置,这样您的服务器就不必在DNS中查找域并建立TLS连接。 IMAP:服务器127.0.0.1,端口143,无安全保护。 SMTP:服务器127.0.0.1,端口25,安全无。不要在端口25上使用身份验证。 您还需要通过勾选右侧的复选框来启用自己的电子邮件域,否则在登录到您的电子邮件地址时会出现错误域“不允许”。 完成配置后,在浏览器地址栏中输入RainLoop webmail域名,不带/?管理员后缀。 mail.example.com 并登录你的电子邮件帐户。 RainLoop网络邮件 如果身份验证失败,则可能需要在IMAP服务器设置页面中启用短登录。 这就是你在Gmail、outlook mail或自己的电子邮件域上访问电子邮件所需要做的一切。如果添加多个电子邮件帐户,则可以从用户下拉菜单轻松地在它们之间切换。真的很酷!您还可以配置其他设置并自定义webmail界面。 从邮件头中删除敏感信息 默认情况下,Rainloop将添加一个X-Mailer电子邮件头,指示您正在使用Rainloop webmail和版本号。你可以告诉Postfix忽略它,这样收件人就看不到它了。运行以下命令创建头检查文件。 sudo nano /etc/postfix/smtp_header_checks 将以下行放入文件中。 /^X-Mailer.*RainLoop/ 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将不在邮件标题中包含X-Mailer:Rainloop。 增加附件大小限制 如果使用PHP-FPM运行PHP脚本,则上传到Rainloop的图像、PDF文件等文件不能大于2MB。要增加上传大小限制,请编辑PHP配置文件。 sudo nano /etc/php/7.4/fpm/php.ini 找到下面一行(第846行)。 upload_max_filesize = 2M 如下所示更改值。请注意,此值不应大于Postfix SMTP服务器设置的附件大小限制。 upload_max_filesize = 50M 然后找到下一行(第694行)。 post_max_size = 8M 更改PHP将接受的POST数据的最大大小。 post_max_size = 50M 保存并关闭文件。或者,您可以运行以下两个命令来更改值,而无需手动打开文件。 sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 50M/g' /etc/php/7.4/fpm/php.ini sudo sed -i 's/post_max_size = 8M/post_max_size = 50M/g' /etc/php/7.4/fpm/php.ini 然后重启PHP-FPM。 sudo systemctl restart php7.4-fpm Nginx还设置了上传文件大小的限制。Nginx设置的默认最大上传文件大小限制为1MB。如果使用Nginx,请编辑Nginx配置文件。 sudo nano /etc/nginx/conf.d/mail.example.com.conf 在SSL虚拟主机中添加以下行。 client_max_body_size 50M; 保存并关闭文件。然后重新加载Nginx以使更改生效。 sudo systemctl reload nginx 接下来,登录Rainloop管理面板(https://mail.example.com/?admin)并更改附件大小限制。 把零钱存起来。您需要从网络邮件中注销,然后重新登录,更改才能生效。 将图像上载为自定义主题 用户可以通过单击左下角的cog图标并选择左栏上的主题选项卡来更改Rainloop主题。您还可以将图像上载为自定义主题。 我的自定义主题。 收尾 我希望本教程能帮助您在Ubuntu 20.04上安装RainLoop Webmail。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?

    2022.03.24 浏览:391
  • 第3部分:PostfixAdmin——在Ubuntu 20.04邮件服务器上创建虚拟邮箱

    在之前的文章中,我们讨论了如何从头开始在Ubuntu上设置自己的邮件服务器。在本系列教程的第1部分和第2部分中,我们学习了如何设置Postfix SMTP服务器和Dovecot IMAP服务器,但到目前为止,我们只能为具有本地Unix帐户的用户提供电子邮件地址。本教程将向您展示如何使用PostfixAdmin在Ubuntu20.04邮件服务器上创建虚拟邮箱,这是一个开源的基于web的界面,用于为许多域和用户配置和管理基于Postfix的电子邮件服务器。 使用虚拟邮箱,我们不需要为每个电子邮件地址创建本地Unix帐户。如果要为公司或组织设置邮件服务器,最好使用一种简单的方法在基于web的界面中创建虚拟邮箱,这也允许用户更改密码。这就是PostfixAdmin的作用。 后期管理功能 管理邮箱、虚拟域和别名 假期/外出信息(我个人认为最好在Roundcube webmail中完成) 别名域(通过收件人验证将一个域转发到另一个域) 用户可以管理自己的邮箱(更改别名、密码和假期消息) 对单个邮箱和域总配额的配额支持 fetchmail集成:您可以将电子邮件从原始电子邮件地址提取到新的电子邮件地址。 命令行客户端postfixadmin cli,适用于不想在web界面中随意点击的用户? 注意:完成第3部分后,就不能再将本地Unix帐户用作电子邮件地址。您必须从PostfixAdmin web界面创建电子邮件地址。 先决条件 在继续阅读本文之前,您必须先阅读本教程系列的第1部分和第2部分。如果您在其他网站上学习了邮件服务器教程,我建议您清除配置(sudo apt purge postfix dovecot core),然后从我的教程系列开始,这样您就不会被不同的安装过程所迷惑。 一旦满足上述要求,我们就安装并配置PostfixAdmin。 步骤1:安装MariaDB数据库服务器 PostfixAdmin是用PHP编写的,需要一个数据库(MySQL/MariaDB、PostgreSQL或SQLite)。本文将使用MariaDB数据库,它是MySQL的替代品。它是由MySQL团队的前成员开发的,他们担心Oracle可能会将MySQL变成一个封闭源代码的产品。输入以下命令在Ubuntu 20.04上安装MariaDB。 sudo apt install mariadb-server mariadb-client 安装后,MariaDB服务器应自动启动。使用systemctl检查其状态。 systemctl status mariadb 输出: ● mariadb.service - MariaDB 10.3.22 database server Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2020-04-10 14:19:16 UTC; 18s ago Docs: man:mysqld(8) https://mariadb.com/kb/en/library/systemd/ Main PID: 9161 (mysqld) Status: "Taking your SQL requests now..." Tasks: 31 (limit: 9451) Memory: 64.7M CGroup: /system.slice/mariadb.service └─9161 /usr/sbin/mysqld 如果未运行,请使用以下命令启动: sudo systemctl start mariadb 要使MariaDB在启动时自动启动,请运行 sudo systemctl enable mariadb 现在运行安装后安全脚本。 sudo mysql_secure_installation 当它要求您输入根密码时,请按enter键,因为根密码尚未设置。然后输入y设置MariaDB服务器的根密码。 接下来,您可以按Enter键回答所有剩余的问题,这将删除匿名用户、禁用远程根登录并删除测试数据库。这一步是MariaDB数据库安全的基本要求。(请注意,Y是大写的,这意味着它是默认答案。) 第2步:在Ubuntu 20.04服务器上安装PostfixAdmin 登录邮件服务器。因为一些读者使用MariaDB服务器,而另一些读者使用MySQL,这使得事情变得复杂,所以在安装PostfixAdmin之前,我们先安装dbconfig no Thank软件包,以防止PostfixAdmin软件包启动数据库配置向导。 sudo apt install dbconfig-no-thanks 然后从默认的Ubuntu软件存储库安装PostfixAdmin。 sudo apt install postfixadmin 注意:如果您以前在Ubuntu上安装过mysql服务器,那么安装PostfixAdmin可能会从您的系统中删除mysql服务器包。您可以通过运行以下命令重新安装它。 sudo apt install mysql-server 现在我们需要删除dbconfig no-Thank包。 sudo apt remove dbconfig-no-thanks 然后启动PostfixAdmin的数据库配置向导。 sudo dpkg-reconfigure postfixadmin 在安装过程中,系统会询问您是否要为PostfixAdmin重新安装数据库。这仅仅意味着创建一个名为postfixadmin的数据库,它不会删除现有的数据库。按Tab键选择Yes。 然后选择默认的数据库类型:mysql,如果使用mysql或MariaDB。 接下来,选择默认的连接方法:Unix套接字。 然后选择MySQL/MariaDB的默认身份验证插件。 按Enter键选择PostfixAdmin的默认数据库名称。 按Enter键选择PostfixAdmin的默认数据库用户名。 之后,您需要为该用户设置密码。请注意,密码不应包含#字符,否则您以后可能无法登录。 最后,选择默认的数据库管理用户。 安装PostfixAdmin后,可以使用以下命令登录MySQL/MariaDB控制台。您需要输入postfixadmin用户的密码。 mysql -u postfixadmin -p 您可以使用以下命令检查用户有权访问哪些数据库。 SHOW DATABASES; 输出: +--------------------+ | Database | +--------------------+ | information_schema | | postfixadmin | +--------------------+ 2 rows in set (0.002 sec) 默认情况下,postfixadmin数据库不包含表。您可以使用以下命令注销MySQL/MariaDB控制台。 EXIT; 安装还将创建两个配置文件:/etc/dbconfig common/postfixadmin。conf和/etc/postfixadmin/dbconfig。inc.php,两者都包含数据库访问设置,包括数据库用户名和密码。我们需要在这两个文件中将数据库类型从mysql更改为mysqli。 sudo nano /etc/dbconfig-common/postfixadmin.conf 改变 dbc_dbtype='mysql' 到 dbc_dbtype='mysqli' 然后编辑第二个文件。 sudo nano /etc/postfixadmin/dbconfig.inc.php 改变 $dbtype='mysql'; 到 $dbtype='mysqli'; web文件安装在/usr/share/postfixadmin/目录下,该目录由root所有。PostfixAdmin需要一个templates_c目录,所以创建它。 sudo mkdir /usr/share/postfixadmin/templates_c 我们需要通过以下命令授予www数据用户对该目录的读、写和执行权限。 sudo setfacl -R -m u:www-data:rwx /usr/share/postfixadmin/templates_c/ 如果系统找不到setfacl命令,则需要安装acl包。 sudo apt install acl 步骤3:为PostfixAdmin创建Apache虚拟主机或Nginx配置文件 阿帕奇 如果使用Apache web服务器,请为PostfixAdmin创建一个虚拟主机。 sudo nano /etc/apache2/sites-available/postfixadmin.conf 将以下文本放入文件中。替换postfixadmin。实例com与你的真实域名,别忘了为它设置DNS记录。 <VirtualHost *:80> ServerName postfixadmin.example.com DocumentRoot /usr/share/postfixadmin/public ErrorLog ${APACHE_LOG_DIR}/postfixadmin_error.log CustomLog ${APACHE_LOG_DIR}/postfixadmin_access.log combined <Directory /> Options FollowSymLinks AllowOverride All </Directory> <Directory /usr/share/postfixadmin/> Options FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> </VirtualHost> 保存并关闭文件。然后通过以下方式启用此虚拟主机: sudo a2ensite postfixadmin.conf 重新加载Apache以使更改生效。 sudo systemctl reload apache2 现在,您应该可以在上看到PostfixAdmin基于web的安装向导http://postfixadmin.example.com/setup.php. Nginx 如果使用Nginx web服务器,请为PostfixAdmin创建一个虚拟主机。 sudo nano /etc/nginx/conf.d/postfixadmin.conf 将以下文本放入文件中。替换postfixadmin。实例com与你的真实域名,别忘了为它设置DNS记录。 server { listen 80; listen [::]:80; server_name postfixadmin.example.com; root /usr/share/postfixadmin/public/; index index.php index.html; access_log /var/log/nginx/postfixadmin_access.log; error_log /var/log/nginx/postfixadmin_error.log; location / { try_files $uri $uri/ /index.php; } location ~ ^/(.+/.php)$ { try_files $uri =404; fastcgi_pass unix:/run/php/php7.4-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include /etc/nginx/fastcgi_params; } } 保存并关闭文件。然后测试Nginx配置。 sudo nginx -t 如果测试成功,请重新加载Nginx以使更改生效。 sudo systemctl reload nginx 现在,您应该可以在上看到PostfixAdmin基于web的安装向导http://postfixadmin.example.com/setup.php. 第4步:安装所需和推荐的PHP模块 运行以下命令安装PostfixAdmin所需或推荐的PHP模块。 sudo apt install php7.4-fpm php7.4-imap php7.4-mbstring php7.4-mysql php7.4-json php7.4-curl php7.4-zip php7.4-xml php7.4-bz2 php7.4-intl php7.4-gmp 然后重启Apache。(如果使用Nginx,则无需重新启动Nginx。) sudo systemctl restart apache2 第5步:启用HTTPS 为了加密HTTP流量,我们可以通过安装Let's encrypt颁发的免费TLS证书来启用HTTPS。运行以下命令在Ubuntu20.04服务器上安装Let's Encrypt client(certbot)。 sudo apt install certbot 如果使用Apache,请安装Certbot Apache插件。 sudo apt install python3-certbot-apache 并运行此命令以获取并安装TLS证书。 sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d postfixadmin.example.com 如果您使用Nginx,那么您还需要安装Certbot Nginx插件。 sudo apt install python3-certbot-nginx 接下来,运行以下命令获取并安装TLS证书。 sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d postfixadmin.example.com 哪里 --nginx:使用nginx插件。 --apache:使用apache插件。 --同意:同意服务条款。 --重定向:通过301重定向强制HTTPS。 --hsts:为每个HTTP响应添加严格的传输安全头。强制浏览器始终对域使用TLS。防止SSL/TLS剥离。 --装订ocsp:启用ocsp装订。有效的OCSP响应被绑定到服务器在TLS期间提供的证书上。 现在应获得并自动安装证书,如下消息所示。 第6步:在PostfixAdmin和Dovecot中使用强密码方案 默认情况下,PostfixAdmin和Dovecot使用MD5-CRYPT,这是一种弱密码方案。您可以使用以下命令在Dovecot中列出可用的密码方案。 sudo doveadm pw -l 样本输出: SHA1 SSHA512 BLF-CRYPT PLAIN HMAC-MD5 OTP SHA512 SHA RPA DES-CRYPT CRYPT SSHA MD5-CRYPT SKEY PLAIN-MD4 PLAIN-MD5 SCRAM-SHA-1 LANMAN SHA512-CRYPT CLEAR CLEARTEXT ARGON2I ARGON2ID SSHA256 NTLM MD5 PBKDF2 SHA256 CRAM-MD5 PLAIN-TRUNC SHA256-CRYPT SMD5 DIGEST-MD5 LDAP-MD5 Argon2是一个相当强大的密码方案。要使用它,我们需要编辑PostfixAdmin配置文件,默认情况下是/usr/share/PostfixAdmin/config。但是我们可以创建一个单独的文件(config.local.php)来存储我们的修改,这样在将来安装新版本的PostfixAdmin时它们就不会被覆盖。 sudo nano /usr/share/postfixadmin/config.local.php 在文件中添加以下行以使用Argon2密码方案。 <?php $CONF['encrypt'] = 'dovecot:ARGON2I'; $CONF['dovecotpw'] = "/usr/bin/doveadm pw -r 5"; if(@file_exists('/usr/bin/doveadm')) { // @ to silence openbase_dir stuff; see https://github.com/postfixadmin/postfixadmin/issues/171 $CONF['dovecotpw'] = "/usr/bin/doveadm pw -r 5"; # debian } 保存并关闭文件。我们还可以在/etc/postfixadmin/目录中创建一个符号链接,以防postfixadmin找不到该文件。 sudo ln -s /usr/share/postfixadmin/config.local.php /etc/postfixadmin/config.local.php 我们将在步骤11中为Dovecot配置密码方案。 步骤7:在Dovecot中启用统计信息 PostfixAdmin需要阅读Dovecot统计数据。编辑Dovecot配置文件。 sudo nano /etc/dovecot/conf.d/10-master.conf 将以下行添加到此文件的末尾。 service stats { unix_listener stats-reader { user = www-data group = www-data mode = 0660 } unix_listener stats-writer { user = www-data group = www-data mode = 0660 } } 保存并关闭文件。然后将web服务器添加到dovecot组。 sudo gpasswd -a www-data dovecot 重启多佛科特。 sudo systemctl restart dovecot 第8步:在Web浏览器中完成安装 转到postfixadmin。实例com/setup。php运行基于web的安装向导。首先,它将检查是否安装了所有依赖项,并创建数据库表。 如果您看到以下错误, Invalid query: Specified key was too long; max key length is 1000 bytes 然后你需要从命令行以root用户身份登录MySQL/MariaDB数据库服务器, sudo mysql -u root 并将默认排序规则从utf8mb4_general_ci更改为utf8_general_ci。 MariaDB [(none)]> alter database postfixadmin collate ='utf8_general_ci'; 退出MySQL/MariaDB控制台并重新加载安装程序。php页面。一旦满足所有要求,就可以为PostfixAdmin创建设置密码。 创建密码散列后,需要打开/usr/share/postfixadmin/config。地方的php文件,并在文件末尾添加设置密码哈希,如下所示。当然,您需要使用自己的密码哈希。 接下来,创建管理员帐户。请不要使用Gmail、Yahoo Mail或Microsoft电子邮件地址作为管理员帐户,否则以后可能无法登录。在你自己的域名上使用电子邮件地址。您可以稍后在PostfixAdmin中创建电子邮件地址。 如果在尝试创建superadmin帐户时看到以下错误, can’t encrypt password with dovecotpw, see error log for details 这是因为www数据用户没有读取Let's Encrypt TLS证书的权限。要修复它,请运行以下命令授予权限。 sudo setfacl -R -m u:www-data:rx /etc/letsencrypt/live/ /etc/letsencrypt/archive/ 创建superadmin帐户后,您可以在PostfixAdmin登录PostfixAdmin。实例com/login。php。 第9步:检查数据库中的表 PostfixAdmin设置过程使用一些默认表填充PostfixAdmin数据库。了解表的名称和结构对我们很有帮助。登录MySQL/MariaDB控制台。 sudo mysql -u root 选择postfixadmin数据库。 USE postfixadmin; 列出此数据库中的所有表。 SHOW TABLES; 输出: +------------------------+ | Tables_in_postfixadmin | +------------------------+ | admin | | alias | | alias_domain | | config | | domain | | domain_admins | | fetchmail | | log | | mailbox | | quota | | quota2 | | vacation | | vacation_notification | +------------------------+ 13 rows in set (0.001 sec) 3个最重要的表格是: 域:包含使用邮件服务器发送和接收电子邮件的域的信息。 邮箱:包含每个电子邮件地址的信息,包括哈希密码和邮件文件的位置。 别名:包含每个电子邮件地址的别名。 如果您感兴趣,可以检查每个表包含哪些列。例如,下面的命令将显示域表中的列。 DESCRIBE domain; 输出: +-------------+--------------+------+-----+---------------------+-------+ | Field | Type | Null | Key | Default | Extra | +-------------+--------------+------+-----+---------------------+-------+ | domain | varchar(255) | NO | PRI | NULL | | | description | varchar(255) | NO | | NULL | | | aliases | int(10) | NO | | 0 | | | mailboxes | int(10) | NO | | 0 | | | maxquota | bigint(20) | NO | | 0 | | | quota | bigint(20) | NO | | 0 | | | transport | varchar(255) | NO | | NULL | | | backupmx | tinyint(1) | NO | | 0 | | | created | datetime | NO | | 2000-01-01 00:00:00 | | | modified | datetime | NO | | 2000-01-01 00:00:00 | | | active | tinyint(1) | NO | | 1 | | +-------------+--------------+------+-----+---------------------+-------+ 从MySQL/MariaDB控制台注销。 EXIT; 第10步:配置Postfix以使用MySQL/MariaDB数据库 默认情况下,Postfix仅向具有本地Unix帐户的用户发送电子邮件。为了让它向数据库中存储信息的虚拟用户发送电子邮件,我们需要将Postfix配置为使用虚拟邮箱域。 首先,我们需要通过安装Postfix MySQL包来添加对Postfix的MySQL地图支持。 sudo apt install postfix-mysql 然后编辑后缀主配置文件。 sudo nano /etc/postfix/main.cf 在该文件末尾添加以下行。 virtual_mailbox_domains = proxy:mysql:/etc/postfix/sql/mysql_virtual_domains_maps.cf virtual_mailbox_maps = proxy:mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf, proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf virtual_alias_maps = proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf, proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf, proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf 哪里: virtual_mailbox_domains指向一个文件,该文件将告诉Postfix如何从数据库中查找域信息。 虚拟邮箱映射指向告诉Postfix如何从数据库中查找电子邮件地址的文件。 虚拟别名映射指向告诉Postfix如何从数据库中查找别名的文件。 我们希望使用dovecot将收到的电子邮件发送到虚拟用户的消息存储区,因此在该文件末尾添加以下行。 virtual_transport = lmtp:unix:private/dovecot-lmtp 保存并关闭文件。接下来,我们需要创建。cf文件一个接一个。创建sql目录。 sudo mkdir /etc/postfix/sql/ 创建mysql_虚拟_域_映射。cf文件。 sudo nano /etc/postfix/sql/mysql_virtual_domains_maps.cf 正如我在第1部分中所说,如果使用Cloudflare DNS服务,在为邮件服务器的主机名创建DNS记录和AAAA记录时,不应启用CDN(代理)功能。Cloudflare不支持SMTP或IMAP代理。 user = postfixadmin password = password hosts = localhost dbname = postfixadmin query = SELECT domain FROM domain WHERE domain='%s' AND active = '1' #query = SELECT domain FROM domain WHERE domain='%s' #optional query to use when relaying for backup MX #query = SELECT domain FROM domain WHERE domain='%s' AND backupmx = '0' AND active = '1' #expansion_limit = 100 如果在尝试从邮件客户端发送电子邮件时看到“中继访问被拒绝”错误,则很可能是将端口25用作邮件客户端中的SMTP端口。正如我刚才所说,在邮件客户端(Mozilla Thunberbird、Microsoft Outlook等)中,您应该使用端口587或465作为SMTP端口来提交发送的电子邮件。端口25应用于SMTP服务器到SMTP服务器的通信。 sudo nano /etc/postfix/sql/mysql_virtual_mailbox_maps.cf iOS邮件应用 user = postfixadmin password = password hosts = localhost dbname = postfixadmin query = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1' #expansion_limit = 100 sudo nano /etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf user = postfixadmin password = password hosts = localhost dbname = postfixadmin query = SELECT maildir FROM mailbox,alias_domain WHERE alias_domain.alias_domain = '%d' and mailbox.username = CONCAT('%u', '@', alias_domain.target_domain) AND mailbox.active = 1 AND alias_domain.active='1' 临时查找失败 sudo nano /etc/postfix/sql/mysql_virtual_alias_maps.cf 8月25日20:25:24 mx后缀/普通重写[3313]:警告:虚拟别名u域:代理:mysql:/etc/postfix/sql/mysqlu虚拟别名u映射。cf:查表问题8月25日20:25:24 mx后缀/普通重写[3313]:警告:虚拟_别名_域查找失败8月25日20:25:24 mx后缀/提交/smtpd[3464]:NOQUEUE:拒绝:451 4.3.0&lt;[电子邮件&#160;受保护]&gt;:临时查找失败;proto=ESMTP Aug 25 20:25:24 mx后缀/提交/smtpd[3464]:临时查找失败 user = postfixadmin password = password hosts = localhost dbname = postfixadmin query = SELECT goto FROM alias WHERE address='%s' AND active = '1' #expansion_limit = 100 sudo journalctl-欧盟马里亚布 sudo nano /etc/postfix/sql/mysql_virtual_alias_domain_maps.cf sudo journalctl-欧盟mysql user = postfixadmin password = password hosts = localhost dbname = postfixadmin query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('%u', '@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1' htop sudo nano /etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf 自由-m # handles catch-all settings of target-domain user = postfixadmin password = password hosts = localhost dbname = postfixadmin query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1' 要为所有用户删除垃圾邮件文件夹中的电子邮件,可以运行 sudo chmod 0640 /etc/postfix/sql/* sudo setfacl -R -m u:postfix:rx /etc/postfix/sql/ 要删除垃圾文件夹中的电子邮件,请运行 postconf mydestination 我认为最好是清理垃圾邮件或垃圾文件夹中已存在超过2周的电子邮件,而不是清理所有电子邮件。 mydestination = $myhostname, linuxbabe.com, localhost.$mydomain, localhost 然后添加一个cron作业来自动化该作业。 sudo postconf -e "mydestination = /$myhostname, localhost./$mydomain, localhost" 添加以下行以每天清理垃圾和垃圾文件夹。 sudo nano /etc/postfix/main.cf 要在Cron作业产生错误时接收报告,可以在所有Cron作业上方添加以下行。 virtual_mailbox_base = /var/vmail virtual_minimum_uid = 2000 virtual_uid_maps = static:2000 virtual_gid_maps = static:2000 保存并关闭文件。你完了。 在PostfixAdmin中更改用户密码 sudo systemctl restart postfix 限制对Sendmail的访问 sudo adduser vmail --system --group --uid 2000 --disabled-login --no-create-home sudo nano/etc/postfix/main。查阅 sudo mkdir /var/vmail/ 授权提交用户=root,www数据 sudo chown vmail:vmail /var/vmail/ -R sudo systemctl重启后缀 下一步 sudo apt install dovecot-mysql 如果你想通过网络浏览器访问电子邮件,那么我推荐Roundcube,它是一款非常流行且功能丰富的开源webmail客户端。和往常一样,如果你觉得这篇文章有用,订阅我们的免费时事通讯,获取更多提示和技巧。当心? sudo nano /etc/dovecot/conf.d/10-mail.conf In part 2, we used the following mail_location. Email messages are stored under the Maildir directory under each user’s home directory. mail_location = maildir:~/Maildir Since we are using virtual mailbox domain now, we need to enable mail_home for the virtual users by adding the following line in the file, because virtual users don’t have home directories by default. mail_home = /var/vmail/%d/%n/ Save and close the file. Then edit the 10-auth.conf file. sudo nano /etc/dovecot/conf.d/10-auth.conf In part 2, we used the following value for auth_username_format. auth_username_format = %n The %n would drop the domain if it was given. Because in part 2 we were using local Unix account for the username of every email address, we must use %n to drop the domain, so users were able to login with the full email address. Now we are using virtual mailbox domains, which means the username of every email address includes the domain part, so we need to change the auth_username_format as follows. %u won’t drop away the domain. This allows users to login with the full email address. auth_username_format = %u Uncomment the following line at the end of this file, so Dovecot can query user information from MySQL/MariaDB database. !include auth-sql.conf.ext Now you probably don’t want local Unix users to send emails without registering email addresses in PostfixAdmin, then comment out the following line by adding the # character at the beginning, so Dovecot won’t query the local /etc/passwd or /etc/shadow file. #!include auth-system.conf.ext It can be helpful to add the following two lines in this file to debug login issues. The login errors would be logged into /var/log/mail.log file. (Once users can login without problems, you can comment out the following two lines.) auth_debug = yes auth_debug_passwords = yes Save and close the file. Edit the dovecot-sql.conf.ext file. sudo nano /etc/dovecot/dovecot-sql.conf.ext Here is the content that you should have in this file. By default, all lines in this file are commented out, so you can simply copy and paste them at the bottom. Replace password with the postfixadmin password you set in Step 2. driver = mysql connect = host=localhost dbname=postfixadmin user=postfixadmin password=password default_pass_scheme = ARGON2I password_query = SELECT username AS user,password FROM mailbox WHERE username = '%u' AND active='1' user_query = SELECT maildir, 2000 AS uid, 2000 AS gid FROM mailbox WHERE username = '%u' AND active='1' iterate_query = SELECT username AS user FROM mailbox Restart Dovecot. sudo systemctl restart dovecot When a user tries to log in, Dovecot would use the Argon2 algorithm to generate a password hash from the password entered by the user, then compare it with the password hash stored in the database. Step 12: Add Domain and Mailboxes in PostfixAdmin Log in to PostfixAdmin web interface as the admin. Click the Domain List tab and select New Domain to add a domain. You can choose how many aliases and mailboxes are allowed for this domain. Then click Virtual List tab and select Add Mailbox to add a new email address for your domain. Next, you can open your desktop email client such as Mozilla Thunderbird and add a mail account. 在“传入服务器”部分,选择IMAP协议,输入mail。你的领域。com作为服务器名,选择端口143和STARTTLS。选择普通密码作为身份验证方法。 在“发送”部分,选择SMTP协议,输入mail。你的领域。com作为服务器名,选择端口587和STARTTLS。选择普通密码作为身份验证方法。 Hint: You can also use port 993 with SSL/TLS encryption for IMAP, and use port 465 with SSL/TLS encryption for SMTP. You should not use port 25 as the SMTP port in mail clients to submit outgoing emails. You should now be able to connect to your own email server and also send and receive emails with your desktop email client! Note that you cannot use local Unix accounts to login now. You must log in with the virtual user created from PostfixAdmin web interface. Troubleshooting Tips As a rule of thumb, you should always check the mail log (/var/log/mail.log) on your mail server when an error happens. The following is a list of specific errors and troubleshooting tips. Can’t login from Mail Clients If you can’t log into your mail server from a desktop mail client, scan your mail server to find if the ports are open. Note that you should run the following command from another Linux computer or server. If you run it on your mail server, then the ports will always appear to be open. sudo nmap mail.your-domain.com And check if Dovecot is running. systemctl status dovecot You can also check the mail log (/var/log/mail.log), which may give you some clues. If Dovecot fails to start, the error might not be logged to the /var/log/mail.log file, you can run the following command to see what’s wrong. sudo journalctl -eu dovecot If you see the following error in the mail log, it’s likely that you didn’t set a correct password in the .cf files under /etc/postfix/sql/ directory. postfix/trivial-rewrite[28494]: warning: virtual_alias_domains: proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf: table lookup problem postfix/trivial-rewrite[28494]: warning: virtual_alias_domains lookup failure If you see the following error in the mail log, it’s because you forgot to add mail_location = maildir:~/Maildir in the /etc/dovecot/conf.d/10-mail.conf file. open(/var/mail/[email protected]) failed: Permission denied (euid=2000(vmail) egid=2000(vmail) missing +w perm: /var/mail, we're not in group 8(mail), dir owned by 0:8 mode=0775 Cloudflare DNS As I said in part 1, if you use Cloudflare DNS service, you should not enable the CDN (proxy) feature when creating DNS A record and AAAA record for the hostname of your mail server. Cloudflare doesn’t support SMTP or IMAP proxy. Relay Access Denied If you see the “relay access denied” error when trying to send emails from a mail client, it’s most likely that you use port 25 as the SMTP port in your mail client. As I said a while ago, you should use port 587 or 465 as the SMTP port in mail clients (Mozilla Thunberbird, Microsoft Outlook, etc) to submit outgoing emails. Port 25 should be used for SMTP server to SMTP server communications. iOS Mail App If you use the iOS Mail app to log into your mail server and encounter the following error. You can try to fix it by enforcing SSL encryption, for both SMTP and IMAP. Fun fact: It seems the iOS Mail app has difficulty in supporting STARTTLS on IMAP port 143, but it supports STARTTLS on the submission port 587. Temporary Lookup Failure If your mail server was working fine for some time, but suddenly you find the following error in the mail log, Aug 25 20:25:24 mx postfix/trivial-rewrite[3313]: warning: virtual_alias_domains: proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf: table lookup problem Aug 25 20:25:24 mx postfix/trivial-rewrite[3313]: warning: virtual_alias_domains lookup failure Aug 25 20:25:24 mx postfix/submission/smtpd[3464]: NOQUEUE: reject: 451 4.3.0 <[email protected]>: Temporary lookup failure; proto=ESMTP Aug 25 20:25:24 mx postfix/submission/smtpd[3464]: Temporary lookup failure It’s likely that your MariaDB/MySQL database stopped somehow. You can use the following command to check when your database server stopped. sudo journalctl -eu mariadb or sudo journalctl -eu mysql A common cause for this situation is that your server is out-of-memory. Check if your server has enough memory. htop or free -m Automatically Clean the Junk Folder and Trash Folder To delete emails in Junk folder for all users, you can run sudo doveadm expunge -A mailbox Junk all To delete emails in Trash folder, run sudo doveadm expunge -A mailbox Trash all I think it’s better to clean emails that have been in the Junk or Trash folder for more than 2 weeks, instead of cleaning all emails. sudo doveadm expunge -A mailbox Junk savedbefore 2w Then add a cron job to automate the job. sudo crontab -e Add the following line to clean Junk and Trash folder every day. @daily doveadm expunge -A mailbox Junk savedbefore 2w;doveadm expunge -A mailbox Trash savedbefore 2w To receive report when a Cron job produces an error, you can add the following line above all Cron jobs. MAILTO="[email protected]" Save and close the file. And you’re done. Change User Password in PostfixAdmin Users can log into PostfixAdmin at , then change their passwords. Restricting Access to Sendmail By default, any local user can use the sendmail binary to submit outgoing emails. Now that your mail server is using virtual mailboxes, you might want to restrict access to the sendmail binary to trusted local users only, so a malicious user can’t use it to send a large volume of emails to damage your mail server’s reputation. Edit the Postfix main configuration file. sudo nano /etc/postfix/main.cf Add the following line to the end of this file, so only the root and www-data user can submit emails via sendmail. You can also add other usernames. authorized_submit_users = root,www-data Save and close the file. Then restart Postfix. sudo systemctl restart postfix Next Step I hope this tutorial helped you install and use PostfixAdmin on Ubuntu 20.04 to create virtual mailboxes. In part 4, I will show you how to set up SPF and DKIM with Postfix to improve email deliverability and in a future tutorial, I’m going to show you how to host multiple domains with PostfixAdmin. If you want to access emails from a web browser, then I recommend Roundcube, which is a very popular and featured-rich open-source webmail client. As always, if you found this post useful,  subscribe to our free newsletter to get more tips and tricks. Take care ?

    2022.03.24 浏览:1434
  • 邮件服务器IP黑名单删除提示,以提高电子邮件的可交付性

    在之前的教程中,我解释了如何使用iRedMail或Modoboa轻松设置自己的邮件服务器。本指南将向您展示如何检查邮件服务器的IP信誉,并为您提供一些删除IP黑名单的提示。在运行邮件服务器的多年中,我曾多次看到由于IP地址被列入黑名单而被拒绝的邮件。如果您按照我的指示,您将能够从大多数IP黑名单中删除您的IP地址。 注意:本文不适用于垃圾邮件发送者。如果你发送垃圾邮件,你的IP地址将再次被阻止。 不同类型的IP黑名单 首先,有内部黑名单和第三方黑名单。许多中小型邮箱提供商使用第三方黑名单(Spamhaus、Barracuda等),因为他们没有资源或时间建立自己的黑名单。像Gmail、Outlook和GMX这样的大型邮箱提供商倾向于建立自己的内部黑名单。实际上,GMX使用内部和第三方黑名单。 然后,有单一IP黑名单和整个IP范围的黑名单。通常很容易从单一IP黑名单中请求删除IP。要从整个IP范围的黑名单中脱身并不容易。幸运的是,它们并不常用。 如何检查你的IP地址是否在黑名单上 要检查您的IP地址是否在第三方黑名单上,您可以访问mxtoolbox和dnsbl。信息。请注意,您不必从每个第三方黑名单中删除您的IP地址,因为您的电子邮件收件人可能根本不会使用这些地址。 要检查您的IP地址是否在邮箱提供商的内部黑名单上,您需要检查邮件服务器的日志文件。 /var/log/mail。登录Debian/Ubuntu /CentOS/RHEL上的var/log/maillog 然而,读取原始日志文件并不有趣。我们可以使用名为pflogsumm的工具来轻松分析日志文件。在Debian/Ubuntu上安装它,方法是: sudo apt install pflogsumm 在CentOS/RHEL上,pflogsumm由postfix perl脚本包提供。 sudo dnf install postfix-perl-scripts 使用以下命令生成今天的报告。(请注意,在CentOS/RHEL上,邮件日志文件是/var/log/maillog。) sudo pflogsumm -d today /var/log/mail.log 生成昨天的报告。 sudo pflogsumm -d yesterday /var/log/mail.log 如果要生成本周的报告: sudo pflogsumm /var/log/mail.log 要在“正常”统计数据之前发出“问题”报告(反弹、延迟、警告、拒绝),请使用--problems first标志。 sudo pflogsumm -d today /var/log/mail.log --problems-first 要将电子邮件发件人地址附加到拒绝报告中的每个列表,请使用--rej add from标志。 sudo pflogsumm -d today /var/log/mail.log --rej-add-from 要在拒绝摘要中显示完整原因,请使用--verbose msg detail标志。 sudo pflogsumm -d today /var/log/mail.log --rej-add-from --verbose-msg-detail 您可以添加一个cron作业,使pflogsumm每天向您的电子邮件地址发送报告。 sudo crontab -e 添加以下行,它将在每天早上4:00生成报告。 0 4 * * * /usr/sbin/pflogsumm -d yesterday /var/log/mail.log --problems-first --rej-add-from --verbose-msg-detail -q 要通过电子邮件接收报告,请在所有Cron作业上方添加以下行。 MAILTO="[email protected]" 你应该注意“邮件跳出详细信息”和“邮件延迟详细信息”部分,在这里你可以看到这些邮件被拒绝的原因。 如果已经设置了MAILTO变量,但希望将后缀日志摘要发送到其他电子邮件地址,则可以在Cron作业中添加以下行。 0 4 * * * /usr/sbin/pflogsumm -d yesterday /var/log/mail.log --problems-first --rej-add-from --verbose-msg-detail -q | mutt -s "Postfix log summary"  [email protected] pflogsumm命令的输出被重定向到mutt,这是一个命令行邮件用户代理,它将使用输出作为电子邮件正文,并将其发送到最后指定的电子邮件地址。当然,您需要在Linux服务器上安装mutt。 sudo apt install mutt 或 sudo dnf install mutt 在新IP地址上运行邮件服务器的经验法则 当你在一个新的IP地址上运行邮件服务器时,你不应该立即使用这个IP地址发送时事通讯(又名营销邮件)。相反,你应该使用这个IP地址发送一段时间的事务性电子邮件,以提高你的声誉。 您可能还想使用SMTP中继发送几天的电子邮件,因为SMTP中继服务具有很高的IP声誉。之后,直接向熟悉的收件人发送电子邮件。 删除IP黑名单 Gmail分级限制 如果您在向Gmail用户发送电子邮件时看到以下消息,则您的IP地址已被限制为速率,而不是被列入黑名单。这是一个特例,需要仔细治疗。 Our system has detected an unusual rate of 421-4.7.28 unsolicited mail originating from your IP address. To protect our 421-4.7.28 users from spam, mail sent from your IP address has been temporarily 421-4.7.28 rate limited. Please visit 421-4.7.28 to 421 4.7.28 review our Bulk Email Senders Guidelines. 解决此问题的步骤: 向你自己的Gmail账户发送电子邮件。如果它被放在垃圾邮件文件夹中,你应该将其标记为非垃圾邮件,然后回复电子邮件。这样做几次。 一旦电子邮件没有进入你的Gmail垃圾邮件文件夹,你应该让其他Gmail用户向你的新电子邮件地址发送电子邮件。如果Gmail发现有邮件发送到你的邮件服务器,它会提高你邮件服务器IP地址的信誉。 当Gmail用户向你发送电子邮件时,你的电子邮件地址会自动添加到他/她的联系人列表中。这对你的电子邮件进入他们的收件箱很有帮助。回复那些Gmail用户。 重复步骤2和步骤3几天。 你发送交易邮件吗?如果你愿意,那太好了!现在,您可以使用邮件服务器发送事务性电子邮件。事务性电子邮件从网站或web应用程序发送给用户。例如,访问者在网站上创建帐户后收到电子邮件,或请求重置密码。它可以非常有效地提高IP声誉,因为收件人希望您向他/她发送电子邮件。在你的网站上,你可以告诉收件人检查垃圾邮件文件夹,并将你的电子邮件标记为非垃圾邮件。他们更有可能打开你的电子邮件并点击电子邮件中的链接。随着时间的推移,你的电子邮件会自动进入收件箱。请注意,邮件列表注册确认电子邮件是事务性电子邮件,因此,如果您的网站上有新闻稿注册表单,您还可以告诉收件人检查垃圾邮件文件夹,并将您的电子邮件地址添加到联系人列表中。收件人很可能会单击电子邮件中的确认链接。 在Gmail不限制你的邮件服务器后,你可以发送时事通讯。不过,你应该预热你的IP地址。例如,第一天发送100封电子邮件,第二天发送500封电子邮件,第三天发送1000封电子邮件。不要立即向成千上万的人发送电子邮件。 在向数千名用户发送时事通讯后,你可以在Gmail Postmaster工具中查看你的IP地址声誉。从下面的截图可以看出,我的IP地址在Gmail中享有很高的声誉。 Microsoft邮箱(Hotmail.com、Outlook.com、Live.com) 微软使用一个内部黑名单来屏蔽许多合法的IP地址。如果你的电子邮件被hotmail拒绝。com,outlook。com或live。com,您需要提交发件人信息表。之后,您的电子邮件将被接受。 Microsoft Exchange/Office 365 请注意,Microsoft Exchange/Office 365是面向企业主的邮件托管解决方案。它与面向消费者的邮箱服务(hotmail.com、outlook.com、live.com)不同,可能会使用不同的黑名单。例如,我曾在收件箱中看到以下未送达通知。 host agileconnected-nl01c.mail.protection.outlook.com[104.47.2.36] said: 550 5.7.511 Access denied, banned sender[xx.xx.xx.xx]. To request removal from this list please forward this message to [email protected] For more information please go to http://go.microsoft.com/fwlink/?LinkId=526653. 因此,我只需将此未送达通知转发至[email&#160;protected],并添加我自己的评论: Hi, I recently set up a new mail server on this IP address for my website. I use this mail server to send transactional emails and newsletters to my subscribers. This IP address is in a data center. I know this IP address may have been used by spammers in the past, but I have a legitimate website that will not spam. Please consider removing it from the blacklist. Best, Xiao Guoan Linuxbabe.com webmaster 你会收到一封回复邮件,告诉你需要做什么。 GMX GMX同时使用第三方黑名单和内部黑名单。如果您在向GMX用户发送电子邮件时在邮件日志中看到以下消息,则表示您的IP地址已被列入黑名单。 host mx00.emig.gmx.net[212.227.15.9] refused to talk to me: 554-gmx.net (mxgmx017) Nemesis ESMTP Service not available 554-No SMTP service 554-IP address is black listed. 554 For explanation visit https://postmaster.gmx.net/en/error-messages?ip=xx.xx.xx.xx&c=bip) 你应该去https://postmaster.gmx.net/en/contact并使用联系方式请求删除您的IP地址。在我提交请求后,我收到了来自GMX管理员的以下电子邮件。 Dear Sirs, Thank you for your information. We have now removed the mailserver's IP address from our blacklist. Our servers will be updated within the next hour. You will then be able to send emails to our system again. Many thanks 网状物判定元件 网状物de同时使用第三方黑名单和内部黑名单。如果您在向web发送电子邮件时在邮件日志中看到以下消息。删除用户,这意味着你的IP地址被列入黑名单。 host mx-ha02.web.de[212.227.17.8] refused to talk to me: 554-web.de (mxweb110) Nemesis ESMTP Service not available 554-No SMTP service 554-IP address is black listed. 554 For explanation visit https://postmaster.web.de/error-messages?ip=xx.xx.xx.xx&c=bip 你应该去https://postmaster.web.de/en/contact并使用联系方式请求删除您的IP地址。我从网上收到了以下电子邮件。在我提交请求后取消管理。 Dear Sirs, Thank you for your information. We have now removed the mailserver's IP address from our blacklist. Our servers will be updated within the next hour. You will then be able to = send emails to our system again. Many thanks 实际上是GMX和网络。de由同一家公司管理。所以,如果你的IP地址从GMX黑名单中删除,那么它也将从网络中删除。去黑名单。 iCloud Mail 如果您在向icloud发送电子邮件时在邮件日志中看到以下消息。com用户,这意味着你的IP地址被列入黑名单。 host mx2.mail.icloud.com[17.57.8.135] refused to talk to me: 550 5.7.0 Blocked - see https://support.proofpoint.com/dnsbl-lookup.cgi?ip=xx.xx.xx.xx 苹果iCloud Mail正在使用Proofpoint黑名单。你应该去https://ipcheck.proofpoint.com/检查你的IP声誉。如果您的IP地址被阻止,请提交支持票证,将您的IP地址从黑名单中删除。请注意,您应该提供收件人的电子邮件地址,以便Proofpoint可以快速找到您被阻止的电子邮件。 Proofpoint没有给我发电子邮件。大约12个小时后,我再次在https://ipcheck.proofpoint.com/.这一次,我看到了以下消息,这表明我的IP地址已从Proofpoint黑名单中删除。我可以给icloud发邮件。com用户。 Unable to do IP Lookup, or failed to contact service for IP lookup TrendMicro RBL TrendMicro是一家安全解决方案提供商。如果你收到下面这样的跳出消息,这意味着你的IP地址被TrendMicro列入黑名单。 host mail.silvester.be[91.183.124.216] said: 550 5.7.1 Mail from xx.xx.xx.xx has been blocked by Trend Micro Email Reputation Service. Please see https://ers.trendmicro.com/reputations to get detailed information. (in reply to end of DATA command) 去https://www.ers.trendmicro.com/reputations请求除名。如果你有一个合法的网站,你的退市请求将被批准。 CloudMark发送者智能 Cloudmark Sender Intelligence(CSI)是第三方IP黑名单。如果您在发送电子邮件时在邮件日志中看到以下消息,则表示您的IP地址已被CloudMark列入黑名单。 host mx.domain.com[66.96.140.73] refused to talk to me: 554 bosimpinc14 bizsmtp Connection refused. xx.xx.xx.xx has a poor reputation on Cloudmark Sender Intelligence (CSI). Please visit http://csi.cloudmark.com/reset-request/?ip=xx.xx.xx.xx to request a delisting. 去https://csi.cloudmark.com/en/reset请求除名。提交请求后,我收到了CloudMark的以下电子邮件。 Dear Xiao Guoan, Thank you for contacting Cloudmark. I have reset the reputation of your IP, so you should see delivery improve shortly. Please note that updates do not occur instantly but should generally happen within an hour of receiving this response. -- Cloudmark CSI Support 美国电话电报公司;T邮箱 美国电话电报公司;T为其客户提供以下域电子邮件。 @ameritech。网 @att.net @贝尔南。网 @闪光。网 @内维尔·贝尔。网 @帕贝尔。网 @神童。网 @sbcglobal。网 @斯内特。网 @斯沃贝尔。网 @旺斯。网 如果您在邮件日志中看到以下消息,您的IP地址已被AT&amp;T <[email protected]>: host al-ip4-mx-vip2.prodigy.net[144.160.235.144]     said: 553 5.3.0 alph764 DNSBL:RBL 521< xx.xx.xx.xx >_is_blocked.For     assistance forward this error to [email protected] (in reply to MAIL     FROM command) 只需将错误消息转发到[email&#160;protected]。我认为最好添加一些评论,比如下面我的评论。 Hi, I recently set up a new mail server on this IP address (xx.xx.xx.xx) for my website (https://your-domain.com). I use this mail server to send transactional emails and newsletters to my subscribers. This IP address is in a data center. I know this IP address may have been used by spammers in the past, but I have a legitimate website that will not spam. Please consider removing it from the blacklist. Best, Xiao Guoan Linuxbabe.com webmaster 您将收到一封电子邮件,确认他们已收到您的退市请求。如果他们决定将您的IP地址从黑名单中删除,您将收到另一封电子邮件。 t-online。判定元件 t-online。de由德国ISP德国电信公司运营。如果您在邮件日志中看到以下消息,您的IP地址已被t-online列入黑名单。判定元件。 host mx00.t-online.de[194.25.134.8] refused to talk to me: 554 IP=XX.XX.XX.XX - A problem occurred. (Ask your postmaster for help or to contact [email protected] to clarify. 您可以向[email&#160;protected]发送退市请求,如下所示: Subject: IP delisting request Body: Hi, I recently set up a new mail server on this IP address (xx.xx.xx.xx) for my website (https://your-domain.com). I use this mail server to send transactional emails and newsletters to my subscribers. This IP address is in a data center. I know this IP address may have been used by spammers in the past, but I have a legitimate website that will not spam. Please consider removing it from the blacklist. Best, Xiao Guoan Linuxbabe.com webmaster 过了一会儿,我的退市请求被批准了。以下是我收到的回复。 Dear Xiao Guoan, We will delist your IP. This measure usually becomes operative in one or two hours, but could possibly take up to 24 hours. Kind regards Deutsche Telekom AG E-Mail: [email protected] www.telekom.de 如果你的退市请求被拒绝怎么办? 一些邮箱提供商(例如.pl域名)只会告诉您您的IP地址被列入黑名单,但不会告诉您如何请求将您的IP地址从黑名单中删除。如果您的IP地址所属的网络范围被特定的黑名单(如UCEPROTECTL2)阻止,那么您别无选择,只能使用SMTP中继服务绕过IP地址黑名单。 如何使用Sendinblue在Ubuntu上设置SMTP中继 如何使用Sendinblue在Debian上设置SMTP中继 如何使用Sendinblue在CentOS/Rocky Linux上设置SMTP中继 但是,您可能不想将整个电子邮件服务器设置为使用中继主机。设置SMTP realy后,您可以配置Postfix传输映射和中继映射,以便通过中继主机发送一些电子邮件,其他电子邮件直接发送给收件人。 管理您在dnswl的IP声誉。组织 dnswl。org是最著名的公共白名单。您可以转到自助服务页面,在网站上注册帐户,然后添加邮件服务器信息。如果幸运的话,您的邮件服务器的IP地址可能会添加到白名单中。 在DNSWL上创建帐户后,您应该单击DNSWL ID选项卡来创建ID。输入您的域名并验证域所有权。然后将邮件服务器IP地址添加到DNSWL ID中。 您的IP地址不会立即添加到您的DNSWL ID。您的更改请求必须得到DNSWL管理员的批准。一旦获得批准,您的IP地址将出现在您的DNSWL ID中,这意味着您的邮件服务器IP地址将添加到白名单中。 收尾 我希望本文能帮助你从黑名单中删除IP地址。您可能还想阅读以下文章,了解如何远离垃圾邮件文件夹。 如何阻止你的电子邮件被标记为垃圾邮件 和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?

    2022.03.24 浏览:1325
  • 如何处理Microsoft Outlook IP黑名单

    在之前的教程中,我解释了如何使用iRedMail或Modoboa轻松设置自己的邮件服务器,并分享了一些从黑名单中删除IP地址的技巧。然而,有些人很难摆脱Outlook使用的Microsoft Outlook IP黑名单。com,hotmail。现场直播。com和msn。com邮件服务器。 如果您的IP地址被阻止,Microsoft Outlook通常会发回以下消息。 host eur.olc.protection.outlook.com[104.47.22.161] said: 550 5.7.1 Unfortunately, messages from [xx.xx.xx.xx] weren't sent. Please contact your Internet service provider since part of their network is on our block list (S3150). You can also refer your provider to http://mail.live.com/mail/troubleshooting.aspx#errors. [DB8EUR06FT013.eop-eur06.prod.protection.outlook.com] (in reply to MAIL FROM command) 正如你所见,整个IP范围都被屏蔽了。就我个人而言,我不认为应该使用这种反垃圾邮件技术,因为它会对合法发件人造成附带损害。相比之下,Gmail在处理IP声誉方面要聪明得多。您可以提交发件人信息表单来解决此问题。有时微软会解锁你的IP地址,有时你的请求会被拒绝。 让你的IP地址脱离Outlook黑名单的可靠方法是让你的邮件服务器通过返回路径认证。然而,它非常昂贵。你需要一次性支付200美元的申请费和每年至少1375美元的许可费。我将向您展示一种绕过Outlook IP黑名单的免费方法。 使用SMTP中继服务绕过Microsoft Outlook IP黑名单 您可以将邮件服务器配置为通过SMTP中继服务中继电子邮件。他们保持着良好的IP声誉,所以你的电子邮件可以通过IP黑名单。有许多SMTP中继服务。有些收取一点费用,有些每月提供免费配额。 您不必配置邮件服务器来转发所有电子邮件。我将向您展示如何配置Postfix SMTP服务器,以中继发送到outlook的电子邮件。com,hotmail。现场直播。com和msn。com电子邮件地址,所以你不会很快用完免费配额。现在使用微软邮箱的人不多了。我的订户中只有6.5%使用hotmail、outlook、live和msn电子邮件地址。 这里我推荐SendinBlue SMTP中继服务,它允许你每月免费发送9000封电子邮件。不需要信用卡。 配置SendinBlue SMTP中继 在SendinBlue创建一个免费帐户。完成用户配置文件后,单击事务选项卡,您将获得SMTP设置。 请注意,您可能需要联系Sendinblue客户服务以激活事务性电子邮件服务。 SSH连接到邮件服务器,并安装libsasl2 modules包,这是SASL身份验证所必需的。 sudo apt install libsasl2-modules 如果您使用CentOS/Rocky Linux/Alma Linux,请安装以下软件包。 sudo dnf install cyrus-sasl-plain cyrus-sasl-md5 接下来,使用命令行文本编辑器(如Nano)打开Postfix主配置文件。 sudo nano /etc/postfix/main.cf 在该文件末尾添加以下行。 transport_maps = regexp:/etc/postfix/transport.microsoft 暗示 如果使用iRedMail,可以找到transport_maps参数并添加regexp行。 transport_maps = regexp:/etc/postfix/transport.microsoft proxy:mysql:/etc/postfix/mysql/transport_maps_user.cf proxy:mysql:/etc/postfix/mysql/transport_maps_maillist.cf proxy:mysql:/etc/postfix/mysql/transport_maps_domain.cf 如果使用Modoboa,可以找到tranport_maps参数并添加regexp行。 transport_maps = regexp:/etc/postfix/transport.microsoft proxy:mysql:/etc/postfix/sql-transport.cf proxy:mysql:/etc/postfix/sql-spliteddomains-transport.cf 然后将以下行添加到此文件的末尾。 # outbound relay configurations smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_sasl_security_options = noplaintext, noanonymous smtp_tls_security_level = may header_size_limit = 4096000 保存并关闭文件。接下来,创建/etc/postfix/transport。微软文件。 sudo nano /etc/postfix/transport.microsoft 在此文件中添加以下行。这会告诉Postfix,如果收件人是Microsoft邮箱用户,请使用Sendinblue SMTP中继。 /.*@(outlook|hotmail|live|msn)/..*/i relay:[smtp-relay.sendinblue.com]:587 保存并关闭文件。创建。数据库文件。 sudo postmap /etc/postfix/transport.microsoft 接下来,创建/etc/postfix/sasl_passwd文件。 sudo nano /etc/postfix/sasl_passwd 将SMTP中继主机和SMTP凭据添加到此文件,如下所示。用SendinBlue提供的您自己的用户名和密码替换smtp_用户名和smtp_密码。注意用户名和密码之间有一个冒号。 [smtp-relay.sendinblue.com]:587 smtp_username:smtp_password 保存并关闭文件。然后用postmap创建相应的hash db文件。 sudo postmap /etc/postfix/sasl_passwd 现在你应该有一个文件/etc/postfix/sasl_passwd。db。重新启动Postfix以使更改生效。 sudo systemctl restart postfix 默认情况下,sasl_passwd和sasl_passwd。数据库文件可以被服务器上的任何用户读取。将权限更改为600,这样只有root用户才能读写这两个文件。 sudo chmod 0600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db 从现在起,Postfix将使用Sendinblue SMTP中继向Microsoft邮箱用户发送电子邮件。您可以向hotmail发送测试电子邮件。com,outlook。现场直播。com或msn。com电子邮件地址。 请注意,您需要单击发件人&amp;在您的帐户仪表板中的IPs选项卡添加您的域。 在SendinBlue中设置SPF/DKIM身份验证 在SendinBlue仪表板中,单击右上角的帐户名,然后单击Senders&amp;IP。选择域选项卡-&gt;管理-&gt;验证这个域。 一个弹出窗口出现。您需要为您的域添加前3条记录。 &nbsp; &nbsp; 故障排除提示 如果您的Postfix SMTP服务器无法通过SMTP中继发送电子邮件,并且您在邮件日志(/var/log/mail.log)中看到以下错误。 sasl authentication failed cannot authenticate to server no mechanism available 这可能是因为您的系统缺少libsasl2 modules包,可以使用以下命令安装该包。 sudo apt install libsasl2-modules 然后重新启动Postfix。 sudo systemctl restart postfix 注意:上述错误有时可能是由SMTP中继服务器上的无效TLS证书(自签名或过期)引起的。然而,使用Sendinblue时很少发生这种情况。 从垃圾邮件文件夹中取出 SMTP中继服务可以让你绕过IP黑名单,但这并不意味着你的电子邮件将100%进入收件箱。您的电子邮件可能会被放入垃圾邮件文件夹。如果您遵守电子邮件发送最佳实践,您的电子邮件最终将被放入收件箱文件夹。 我创建了一个新的hotmail。com邮箱作为测试。从我的域名发送的前3份新闻稿被放在垃圾邮件文件夹中,但所有剩余的电子邮件都被放在收件箱文件夹中。我没有在我的Hotmail帐户中做任何事情。我没有打开我的通讯或点击通讯中的任何链接。我只是使用最佳实践发送电子邮件,所以微软知道我的电子邮件不是垃圾邮件。 远离微软黑名单的小贴士 如果Microsoft在一段时间内未发现您的邮件服务器存在垃圾邮件活动,则可能会将您的IP地址从黑名单中删除。以下是一些防止你的IP地址再次被列入黑名单的建议。 不要立即将带有此IP地址的新闻稿发送给Microsoft邮箱用户。你应该首先发送事务性电子邮件,以提高你在微软的IP声誉。 如果你发送时事通讯,一定要预热你的IP地址。 你可以登录Outlook。com智能网络数据服务,用于检查您在Microsoft的IP声誉。如果您的IP地址在给定的一天发送超过100条消息,您可以单击查看数据链接查看您的IP地址的邮件流量和垃圾邮件数据。 Microsoft使用3种颜色来区分IP地址的垃圾邮件率: 红色:垃圾邮件&gt;90% 黄色:10%&lt;垃圾邮件&lt;90% 绿色:垃圾邮件&lt;10% 从两张截图中可以看出,我的IP声誉有所提高。 收尾 我希望本教程能帮助您绕过Microsoft Outlook IP黑名单。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费通讯,获取更多有用的教程?

    2022.03.24 浏览:1115
  • 如何使用iRedMail在CentOS 7上轻松设置全功能邮件服务器

    在Linux上从头开始设置自己的电子邮件服务器是一个漫长而乏味的过程,如果你不是高级用户,这将是一个痛苦的过程。本教程将向您展示如何使用iRedMail在CentOS 7上快速设置功能齐全的邮件服务器,从而为您节省大量时间和麻烦。 什么是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网络邮件 用于保护SSH的Fail2ban 邮件列表管理器 Netdata服务器监控 iRead Postfix策略服务器用于GreyList 第一步:选择合适的主机提供商并购买域名 要使用iRedMail设置一个功能齐全的电子邮件服务器,您需要一个至少有3GB内存的服务器,因为安装后,您的服务器将使用超过2GB的内存。 强烈建议您在干净的CentOS 7服务器上安装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 ;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功能。你的领域。通用域名格式。Cloudflare不支持SMTP代理。 第3步:配置主机名 通过SSH登录服务器,然后运行以下命令更新现有软件包。 sudo yum update -y 我强烈建议创建一个sudo用户来管理服务器,而不是使用默认的root用户来提高服务器安全性。运行以下命令创建用户。将用户名替换为首选用户名。 sudo adduser username 设置此用户的密码。 sudo passwd username 将此用户添加到控制盘组以使用sudo。 sudo gpasswd -a username wheel 切换到新用户。 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在CentOS 7上设置邮件服务器 运行以下命令从其Github存储库下载最新版本的iRedMail脚本安装程序。 sudo dnf install wget tar -y wget 提取存档文件。 tar xvf 1.5.1.tar.gz 然后将cd放入新创建的目录中。 cd iRedMail-1.5.1/ 向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 ;protected]这样的电子邮件帐户。在这种情况下,你需要进入你的域名。com在这里,没有子域。不要在域名后按空格键。我认为iRedMail会将空格字符与域名一起复制,这可能会导致安装失败。 接下来,为邮件域管理员设置密码。 选择可选组件。默认情况下,这4个项目都被选中。所以只需按回车键。 现在,您可以查看您的配置。键入Y开始安装所有邮件服务器组件。 确保在安装过程中没有看到错误。如果出现错误,最好重新安装操作系统,然后在服务器上重新安装iRedMail,否则邮件服务器可能无法正常工作。 在安装结束时,选择y以使用iRedMail提供的防火墙规则并重新启动防火墙。 现在iRedMail安装完成了。您将收到webmail的URL、web管理面板和登录凭据的通知。iRedMail。提示文件包含有关iRedMail服务器的重要信息。 重新启动CentOS 7服务器。 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再次登录服务器,并运行以下命令在CentOS 7上安装Let's Encrypt(certbot)客户端。 sudo yum install certbot python-certbot-nginx -y 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传播。 在Nginx中安装证书 获得TLS证书后,让我们配置Nginx web服务器以使用它。编辑SSL模板文件。 sudo nano /etc/nginx/templates/ssl.tmpl 找到下面两行。 ssl_certificate /etc/pki/tls/certs/iRedMail.crt; ssl_certificate_key /etc/pki/tls/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/pki/tls/private/iRedMail.key smtpd_tls_cert_file = /etc/pki/tls/certs/iRedMail.crt smtpd_tls_CAfile = /etc/pki/tls/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/pki/tls/certs/iRedMail.crt ssl_key = </etc/pki/tls/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 ;protected])登录iredadmin面板。在“添加”选项卡中,可以添加其他域或电子邮件地址。 如果您看到“无控制域”错误,请参阅本文。 创建用户后,您可以访问Roundcube webmail地址,并使用新的邮件用户帐户登录。 https://mail.your-domain.com/mail/ 现在,您可以测试电子邮件的发送和接收。请注意,您可能需要等待几分钟才能收到电子邮件,因为iRedMail默认情况下会启用灰色列表,这是一种通知其他发送SMTP服务器在几分钟后重试的方式。邮件日志文件/var/log/maillog中的以下行表示启用了灰色列表。 Recipient address rejected: Intentional policy rejection, please try again later; 检查ClamAV是否正在运行 ClamAV用于扫描电子邮件中的病毒。ClamAV可以使用相当数量的RAM。如果您的服务器上没有足够的RAM,ClamAV将无法正常工作,这将阻止您的邮件服务器发送电子邮件。您可以通过以下方式检查其状态: systemctl status [email protected] 如果你的ClamAV总是像下面这样激活,你就有问题了。 查看ClamAV日志。 sudo journalctl -eu [email protected] 如果您在日志中看到以下行,这意味着您的服务器没有足够的RAM来运行ClamAV。 daemonize() failed: Cannot allocate memory 您可以向服务器添加交换文件,以增加服务器上的总RAM。(请注意,在服务器上使用交换空间可能会大大降低服务器性能。如果您想要更好的性能,应该升级物理RAM,而不是使用交换空间。) 要在服务器上添加交换空间,首先,使用fallocate命令创建一个文件。例如,在根文件系统中创建一个名为swapfile、容量为1G的文件: sudo fallocate -l 1G /swapfile 然后确保只有root用户可以读写它。 sudo chmod 600 /swapfile 将其格式化为交换: sudo mkswap /swapfile 输出: Setting up swapspace version 1, size = 2014 MiB (536866816 bytes) no label, UUID=0aab5886-4dfb-40d4-920d-fb1115c67433 启用交换文件 sudo swapon /swapfile 等几秒钟,你的ClamAV应该处于活动状态(正在运行),它不会阻止你的邮件服务器发送电子邮件。 systemctl status [email protected] 要在系统启动时装载交换空间,请编辑/etc/fstab文件。 sudo nano /etc/fstab 在该文件底部添加以下行。 /swapfile swap swap defaults 0 0 保存并关闭文件。然后重新加载系统D。 sudo systemctl daemon-reload 步骤7:检查端口25(出站)是否被阻止 您的ISP或主机服务提供商不会阻止与服务器端口25的传入连接,这意味着您可以接收来自其他邮件服务器的电子邮件。然而,许多ISP/主机提供商会阻止与其他邮件服务器端口25的传出连接,这意味着您无法发送电子邮件。 如果您的电子邮件没有到达您的其他电子邮件地址,例如Gmail,那么您可以使用telnet实用程序检查端口25(出站)是否被阻止。在CentOS 7上安装telnet时使用: sudo yum install telnet 然后在邮件服务器上运行以下命令。 telnet gmail-smtp-in.l.google.com 25 如果端口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中讨论。 如何禁用灰色列表 默认情况下,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 第8步:在计算机或移动设备上使用邮件客户端 启动你的桌面电子邮件客户端,比如Mozilla Thunderbird,并添加一个邮件帐户。如果Thunderbird发现您的邮件服务器配置如下,只需单击“完成”按钮,您就可以阅读和发送电子邮件。 如果Thunderbird没有找到您的邮件服务器配置,请单击手动配置按钮输入您的邮件服务器详细信息。 在“传入服务器”部分,选择IMAP协议,输入mail。你的领域。com作为服务器名,选择端口143和STARTTLS。选择普通密码作为身份验证方法。 在“发送”部分,选择SMTP协议,输入mail。你的领域。com作为服务器名,选择端口587和STARTTLS。选择普通密码作为身份验证方法。 提示:您还可以在端口993上使用带有SSL/TLS加密的IMAP。 故障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 -c /etc/amavisd/amavisd.conf showkeys DKIM公钥在括号中。 然后在DNS管理器中,创建一个TXT记录,输入dkim_名称字段中的domainkey。复制括号中的所有内容并粘贴到值字段中。删除所有双引号和换行符。 保存更改后,运行以下命令测试DKIM记录是否正确。 sudo amavisd -c /etc/amavisd/amavisd.conf 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 ;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中添加多个邮件域。 启用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/maillog。 检查各种服务是否正在运行。 systemctl status postfix systemctl status dovecot systemctl status nginx systemctl status mariadb systemctl status [email protected] systemctl status amavisd 如果启用了防火墙,则应在防火墙中打开以下端口。 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是使这些程序获取新证书和私钥所必需的。 面向高级用户 您可能需要自定义SpamAssassin内容过滤器,以便更好地检测垃圾邮件。 通过检查Postfix/SpamAssassin中的标题和正文来阻止垃圾邮件 如果您的网站和邮件服务器运行在两个不同的VP(虚拟专用服务器)上,您可以在网站和邮件服务器之间设置SMTP中继,以便您的网站可以通过邮件服务器发送电子邮件。请参阅下面的文章。 在CentOS/RHEL上的2台后缀SMTP服务器之间设置SMTP中继 收尾 就这样!我希望本教程能帮助您使用iRedMail在CentOS 7上设置邮件服务器。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?

    2022.03.24 浏览:1157
  • 在Ubuntu邮件服务器上设置Amavis和ClamAV

    这是Ubuntu邮件服务器从头开始教程系列的第11部分。在本文中,我将向您展示如何使用Amavis和ClamAV扫描电子邮件中的病毒。 Amavis(邮件病毒扫描程序)是邮件传输代理(MTA)之间的高性能接口,如Postfix和内容过滤器。内容过滤器是一个扫描邮件标题和正文的程序,通常会根据发现的内容采取一些行动。最常见的例子是ClamAV病毒扫描器和SpamAssassin。 Amavis使用标准SMTP协议,也可以使用Sendmail milter接口。它通常用于 通过与ClamAV(Clam AntiVirus)集成进行病毒扫描 结合SpamAssassin进行垃圾邮件检测 DKIM签名和验证。(实际上,我更喜欢使用OpenDKIM进行DKIM签名和验证。) 先决条件 你应该至少完成了Ubuntu邮件服务器从头开始教程系列的第1部分(Postfix SMTP服务器)和第2部分(Dovecot IMAP服务器)。请注意,如果您使用iRedMail或Modoboa来设置邮件服务器,那么Amavis和ClamAV已经安装并配置好了,所以您无需遵循本教程。 警告:Amavis和ClamAV需要相当数量的RAM。在安装Amavis和ClamAV之前,请确保服务器上至少有1.3 GB的可用RAM。整个邮件服务器堆栈(Postfix、Dovecot、Amavis、ClamAV、SpamAssassin、OpenDKIM、MySQL/MariaDB、PostfixAdmin和Roundcube Webmail)至少需要3 GB内存才能顺利运行。如果RAM耗尽,您将遇到邮件服务器脱机或无响应等问题。 第一步:在Ubuntu上安装Amavis Amvis可以从默认的Ubuntu存储库获得,所以运行以下命令来安装它。 sudo apt install amavisd-new -y 一旦安装,它会自动启动。您可以通过以下方式检查其状态: systemctl status amavis 输出: ● amavis.service - LSB: Starts amavisd-new mailfilter Loaded: loaded (/etc/init.d/amavis; generated) Active: active (running) since Fri 2020-08-07 15:43:40 HKT; 1min 1s ago Docs: man:systemd-sysv-generator(8) Tasks: 3 (limit: 9451) Memory: 75.4M CGroup: /system.slice/amavis.service ├─1794260 /usr/sbin/amavisd-new (master) ├─1794263 /usr/sbin/amavisd-new (virgin child) └─1794264 /usr/sbin/amavisd-new (virgin child) 如果它没有运行,可以从以下内容开始: sudo systemctl start amavis 启动时启用自动启动。 sudo systemctl enable amavis 默认情况下,它在127.0.0.1:10024上监听,如下所示: sudo netstat -lnpt | grep amavis 它以amavis用户的身份运行。要检查版本号,请运行 amavisd-new -V 样本输出: amavisd-new-2.11.0 (20160426) 要查看Amavis的日志,可以运行 sudo journalctl -eu amavis 病毒通常以电子邮件附件的形式传播。为Amavis安装以下软件包,以提取和扫描电子邮件中的存档文件,如.7z。驾驶室博士。exe。iso。罐子,还有。rar文件。 sudo apt install arj bzip2 cabextract cpio rpm2cpio file gzip lhasa nomarch pax rar unrar p7zip-full unzip zip lrzip lzip liblz4-tool lzop unrar-free 如果你使用Ubuntu18.04,那么也要安装ripole软件包。 sudo apt install ripole 请注意,如果服务器没有使用完全限定的域名(FQDN)作为主机名,Amavis可能无法启动。OS主机名可能会更改,因此建议直接在Amavis配置文件中设置有效的主机名。 sudo nano /etc/amavis/conf.d/05-node_id 找到下面这行。 #$myhostname = "mail.example.com"; 删除注释字符(#)并更改邮件。实例com连接到您的真实主机名。 $myhostname = "mail.linuxbabe.com"; 保存并关闭文件。重新启动Amavis,使更改生效。 sudo systemctl restart amavis 第2步:将Postfix SMTP服务器与Amavis集成 Amavisd new用作SMTP代理。电子邮件通过SMTP发送给它,经过处理,并通过新的SMTP连接反馈给MTA。 编辑后缀主配置文件。 sudo nano /etc/postfix/main.cf 在文件末尾添加以下行。这告诉Postfix通过将每个传入的电子邮件发送到Amavis来启用内容过滤,Amavis在127.0.0.1:10024上进行监听。 content_filter = smtp-amavis:[127.0.0.1]:10024 另外,添加以下行。 smtpd_proxy_options = speed_adjust 这将延迟到内容筛选器的后缀连接,直到收到整个电子邮件,这可以防止内容筛选器为速度较慢的SMTP客户端浪费时间和资源。 保存并关闭文件。然后编辑母版。cf文件。 sudo nano /etc/postfix/master.cf 在文件末尾添加以下行。这指示Postfix使用名为SMTP amavis的特殊SMTP客户端组件将电子邮件发送到amavis。请在每个-o之前至少允许一个空格字符(制表符或空格键)。在后缀配置中,前面的空格字符表示此行是前一行的延续。 smtp-amavis unix - - n - 2 smtp -o syslog_name=postfix/amavis -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes -o disable_dns_lookups=yes -o max_use=20 -o smtp_tls_security_level=none 然后在文件末尾添加以下行。这会告诉Postfix在127.0.0.1:10025上运行额外的smtpd守护程序,以接收Amavis返回的电子邮件。 127.0.0.1:10025 inet n - n - - smtpd -o syslog_name=postfix/10025 -o content_filter= -o mynetworks_style=host -o mynetworks=127.0.0.0/8 -o local_recipient_maps= -o relay_recipient_maps= -o strict_rfc821_envelopes=yes -o smtp_tls_security_level=none -o smtpd_tls_security_level=none -o smtpd_restriction_classes= -o smtpd_delay_reject=no -o smtpd_client_restrictions=permit_mynetworks,reject -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o smtpd_end_of_data_restrictions= -o smtpd_error_sleep_time=0 -o smtpd_soft_error_limit=1001 -o smtpd_hard_error_limit=1000 -o smtpd_client_connection_count_limit=0 -o smtpd_client_connection_rate_limit=0 -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks,no_address_mappings 保存并关闭文件。重新启动Postfix以使更改生效。 sudo systemctl restart postfix 步骤3:将Amavis与ClamAV集成 现在Postfix可以将收到的电子邮件传递给Amavis,我们需要安装ClamAV病毒扫描程序,并将其与Amavis集成,以便ClamAV可以扫描收到的电子邮件。 在Ubuntu上安装ClamAV。 sudo apt install clamav clamav-daemon ClamAV将安装两个systemd服务: clamav守护进程。服务:Clam AntiVirus用户空间守护程序 clamav freshclam。服务:ClamAV病毒数据库更新程序 首先,检查clamav freshclam的状态。服务 systemctl status clamav-freshclam 如您所见,它处于活动状态(正在运行),在我的邮件服务器上使用217.6M RAM。然后检查日志/日志。 sudo journalctl -eu clamav-freshclam 输出: 提示:如果上述命令没有立即退出,请按Q键使其退出。 我们可以看到freshclam下载了3个病毒数据库。CVD代表ClamAV病毒数据库。 每日的心血管疾病 主要的心血管疾病 字节码。心血管疾病 但是,clamd没有得到通知,因为freshclam无法通过/var/run/clamav/clamd连接到clamd。ctl。检查clamav守护程序的状态。服务 systemctl status clamav-daemon 输出: 如您所见,它无法启动,因为不符合条件。在/lib/systemd/system/clamav守护进程中。服务文件,有两个条件: ConditionPathExistsGlob=/var/lib/clamav/main.{c[vl]d,inc} ConditionPathExistsGlob=/var/lib/clamav/daily.{c[vl]d,inc} clamav守护进程。服务无法启动,原因是主。心血管疾病和日常生活。cvd启动时尚未下载。所以我们只需要重新启动这项服务。 sudo systemctl restart clamav-daemon 现在它应该在运行了。顺便说一下,它在我的邮件服务器上使用了731.4M内存。如果您的邮件服务器没有足够的内存,服务将失败。 systemctl status clamav-daemon.service 蛤蜊新鲜蛤蜊。服务将每小时检查一次ClamAV病毒数据库更新。 现在我们需要在Amavis中打开病毒检查。 sudo nano /etc/amavis/conf.d/15-content_filter_mode 取消注释以下行以启用病毒检查。 #@bypass_virus_checks_maps = ( #      /%bypass_virus_checks, /@bypass_virus_checks_acl, /$bypass_virus_checks_re); 保存并关闭文件。在/etc/amavis/conf.d/15-av_scanners文件中有很多防病毒扫描程序。默认为ClamAV。Amavis将通过/var/run/ClamAV/clamd调用ClamAV。ctl Unix套接字。我们需要将用户clamav添加到amavis组。 sudo adduser clamav amavis 然后重启Amavis和ClamAV守护进程,使更改生效。 sudo systemctl restart amavis clamav-daemon 检查日志。 sudo journalctl -eu amavis 你可以看到Amavis现在正在使用ClamAV扫描病毒。 Aug 08 17:26:19 mail.linuxbabe.com amavis[1233432]: Using primary internal av scanner code for ClamAV-clamd Aug 08 17:26:19 mail.linuxbabe.com amavis[1233432]: Found secondary av scanner ClamAV-clamscan at /usr/bin/clamscan 现在,如果你从其他邮件服务器(如Gmail)向自己的邮件服务器发送一封电子邮件,并检查邮件标题,你会发现下面这样一行,这表明这封电子邮件已被Amavis扫描。 X-Virus-Scanned: Debian amavisd-new at linuxbabe.com 您还应该检查邮件日志(/var/log/mail.log)以查找是否存在任何错误。 第4步:使用专用端口提交电子邮件 ClamAV现在可以扫描传入和传出的电子邮件。Amavis在端口10024上监听传入和传出的电子邮件。不过,使用不同的端口(如10026)来提交经过身份验证的用户的电子邮件是一种很好的做法。编辑Amavis配置文件。 sudo nano /etc/amavis/conf.d/50-user 自定义设置之间应添加使用严格;和1;线默认情况下,Amavis只监听端口10024。添加以下行,使其也在端口10026上侦听。 $inet_socket_port = [10024,10026]; 然后添加下面一行,它为端口10026设置“始发”策略。 $interface_policy{'10026'} = 'ORIGINATING'; 接下来,添加以下行,它们定义了“原始”策略。 $policy_bank{'ORIGINATING'} = { # mail supposedly originating from our users originating => 1, # declare that mail was submitted by our smtp client allow_disclaimers => 1, # enables disclaimer insertion if available # notify administrator of locally originating malware virus_admin_maps => ["virusalert/@$mydomain"], spam_admin_maps => ["virusalert/@$mydomain"], warnbadhsender => 1, # force MTA conversion to 7-bit (e.g. before DKIM signing) smtpd_discard_ehlo_keywords => ['8BITMIME'], bypass_banned_checks_maps => [1], # allow sending any file names and types terminate_dsn_on_notify_success => 0, # don't remove NOTIFY=SUCCESS option }; 保存并关闭文件。重启阿玛维斯。 sudo systemctl restart amavis 检查其状态以查看重启是否成功。 systemctl status amavis 接下来,编辑后缀主配置文件。 sudo nano /etc/postfix/master.cf 将以下行添加到提交服务中,这样来自经过身份验证的SMTP客户端的电子邮件将被传递到端口10026上侦听的Amavis。此行将覆盖/etc/postfix/main中的内容过滤器参数(-o)。我们在步骤2中添加的cf文件。 -o content_filter=smtp-amavis:[127.0.0.1]:10026 这样地: 如果已为Microsoft Outlook用户启用了smtps服务,则还需要将此行添加到smtps服务中。 保存并关闭文件。重新启动Postfix以使更改生效。 sudo systemctl restart postfix 检查其状态以查看重启是否成功。 systemctl status postfix Amavis中的垃圾邮件过滤 注意:如果您遵循了我的SpamAssassin教程,则不需要在Amavis中启用垃圾邮件检查。如果你启用它,每封邮件都会被SpamAssassin检查两次。 要在Amavis中启用垃圾邮件检查,请安装SpamAssassin和相关软件包。 sudo apt install spamassassin libnet-dns-perl libmail-spf-perl pyzor razor 编辑Amavis配置文件。 sudo nano /etc/amavis/conf.d/15-content_filter_mode 取消注释以下行以启用垃圾邮件检查。 #@bypass_spam_checks_maps = ( # /%bypass_spam_checks, /@bypass_spam_checks_acl, /$bypass_spam_checks_re); 保存并关闭文件。然后重启Amavis。 sudo systemctl restart amavis 阿马维斯的德基姆 在Linux上可以进行DKIM签名和验证的两个常见软件是OpenDKIM和Amavis。我更喜欢使用OpenDKIM,因为它更适合OpenDMARC。所以我不会解释如何在Amavis中为你的电子邮件签名。 默认情况下,Amavis可以验证传入电子邮件的DKIM签名。如果在邮件服务器上运行OpenDKIM,则可以在Amavis中禁用DKIM验证。 sudo nano /etc/amavis/conf.d/21-ubuntu_defaults 找到下面的行并将1更改为0,这样Amavis就不会验证DKIM签名。 $enable_dkim_verification = 1; 保存并关闭文件。然后重启Amavis。 sudo systemctl restart amavis 当收到传入的电子邮件时,Postfix将通过sendmail milter接口调用OpenDKIM来验证DKIM签名,然后将电子邮件传递给Amavis进行病毒检查。在发送邮件时,Postfix会打电话给OpenDKIM对邮件进行签名,然后将其传递给Amavis进行病毒检查。 提高Amavis性能 默认情况下,Amavis运行两个进程。如果您在邮件日志(/var/log/mail.log)中看到以下几行,这意味着Amavis处理电子邮件的速度不够快。 postfix/qmgr[1619188]: warning: mail for [127.0.0.1]:10024 is using up 4001 of 4008 active queue entries postfix/qmgr[1619188]: warning: you may need to reduce smtp-amavis connect and helo timeouts postfix/qmgr[1619188]: warning: so that Postfix quickly skips unavailable hosts postfix/qmgr[1619188]: warning: you may need to increase the main.cf minimal_backoff_time and maximal_backoff_time postfix/qmgr[1619188]: warning: so that Postfix wastes less time on undeliverable mail mail postfix/qmgr[1619188]: warning: you may need to increase the master.cf smtp-amavis process limit mail postfix/qmgr[1619188]: warning: please avoid flushing the whole queue when you have mail postfix/qmgr[1619188]: warning: lots of deferred mail, that is bad for performance 要提高性能,请编辑Amavis配置文件。 sudo nano /etc/amavis/conf.d/50-user 在文件之间添加以下行使用严格;和1;线这将使Amavis运行4个进程。如果你有10个CPU核,你可以把4个换成10个。请注意,运行10个以上的Amavis进程对性能几乎没有影响。 $max_servers = 4; 保存并关闭文件。然后编辑Postifx主配置文件。 sudo nano /etc/postfix/master.cf 找到smtp amavis服务定义,并将进程限制从2更改为4。 smtp-amavis unix - - n - 4 smtp -o syslog_name=postfix/amavis -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes -o disable_dns_lookups=yes -o max_use=20 -o smtp_tls_security_level=none 保存并关闭文件。然后重新启动Amavis和Postfix,使更改生效。 sudo systemctl restart amavis postfix 现在运行以下命令。你应该看到现在有4个Amavis进程。 sudo amavisd-nanny 按Ctrl+C键停止阿玛维保姆。 跳过病毒检查查看您的新闻稿 如果您使用邮件服务器发送新闻稿,并且启用了Amavis和ClamAV,那么当您向订阅者发送新闻稿时,大量的CPU和RAM资源将用于病毒检查。这可能会使邮件服务器无响应。您可以使用以下方法跳过新闻稿的病毒检查。 编辑后缀主配置文件。 sudo nano /etc/postfix/master.cf 在该文件开头添加以下行。这将在本地主机的端口2525上启用smtpd,并且它可以接受从同一服务器启动的客户端连接。如果有另一个进程监听端口2525,您可以将127.0.0.1:2525更改为其他内容,例如127.0.0.1:2552。请注意,content_filter参数设置为none,这意味着ClamAV不会扫描电子邮件。 127.0.0.1:2525 inet n - - - 1 smtpd -o syslog_name=postfix/2525 -o postscreen_greet_action=ignore -o content_filter= 然后在文件末尾添加以下行。将12.34.56.78替换为邮件服务器的公共IP地址。这将创建另一个Postfix提交守护程序,监听端口10587。这适用于来自另一台服务器的客户端连接。 12.34.56.78:10587 inet n - y - - smtpd -o syslog_name=postfix/10587 -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 -o content_filter= 保存并关闭文件。然后重新启动postfix。 sudo systemctl restart postfix 如果新闻稿应用程序在邮件服务器上运行,则指定127.0.0.1:2525作为SMTP主机,而不进行SMTP身份验证。如果您的新闻稿应用程序在其他服务器上运行,请指定12.34.56.78:10587作为SMTP主机,并进行SMTP身份验证。 故障排除 如果您的Postfix SMTP服务器无法发送传出电子邮件,并且您在邮件日志(/var/log/mail.log)中发现以下错误消息, relay=none, delay=239, delays=239/0.04/0/0, dsn=4.3.0, status=deferred (server unavailable or unable to receive mail) 可能是amavis没有运行,因此您需要检查其状态: sudo systemctl status amavis 您可以通过以下方式重新启动: sudo systemctl restart amavis 导致此错误的另一个原因是,在/etc/Postfix/main中发送具有以下设置的传出电子邮件时,您正在为Postfix强制TLS连接。cf文件。 smtp_tls_security_level = enforce 因为Postfix无法建立到Amavis的TLS连接,所以邮件被推迟。您应该使用以下设置。 smtp_tls_security_level = may 然后重新启动Postfix。 收尾 我希望本教程能帮助您在Ubuntu邮件服务器上安装Amavis和ClamAV。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?

    2022.03.24 浏览:408
  • 在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&#160;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 电子邮件地址将为[电子邮件&#160;受保护]。 从邮件头中删除敏感信息 默认情况下,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 浏览:809