• MX记录和CNAME记录冲突怎么办

    很多朋友在部署域名邮箱的时候都会发现,DNS服务商会提示根域名MX记录和CNAME记录有冲突,不能共存。今天,我就来介绍一下这种情况为什么会发生,且如何完美解决。 1、CNAME和MX记录冲突的成因 CNAME记录和MX记录冲突的根本原因在于CNAME (Canonical NAME)记录的特殊性。根据RFC 1034的规定,根域名不能设置CNAME记录,这是由DNS服务本身的固有限制决定的。或许你可以在一些DNS服务商那里为根域名添加CNAME记录,但这些都是不符合DNS规范的。如果要将根域名设置为另一个域名的别名,需要设置ALIAS记录。在下一节我将具体介绍ALIAS记录。 如果根域名设置了CNAME记录,会和其他所有的记录相冲突,而最常见的冲突情形就是MX记录。对于同一个根域名,CNAME记录和A记录、NS记录、SOA记录、TXT记录等都会冲突,不过这些情形并不常见,所以一般不会造成太大的问题。 我们以同时在根域名设置CNAME记录和MX记录为例。向该域名的域名邮箱发信且使用DNS寻址时,如果先寻到了CNAME记录,就无法再获取到该域名对应的MX记录。这就会导致使用该域名搭建的域名邮箱在收件时会经常丢信漏信。同时,CNAME记录不仅与MX记录冲突,也会与TXT记录冲突,这就会导致为根域名设置的SPF-TXT记录无法生效,因此发信时更容易进垃圾箱。 那么问题来了,如果我们要为网站开启CDN, 那么最常见的方式就是使用CNAME接入。如果还需要一并使用域名邮箱,那么就不得不造成CNAME记录和MX记录的冲突。有什么好办法呢?这里我们有三个办法,可以解决这个问题。 2、如何解决CNAME和MX记录冲突 解决CNAME和MX记录的冲突有三种可行的办法,分别是 (1) 使用www.域名接入CDN; (2) 使用A记录轮询接入CDN; (3) 使用ALIAS (CNAME Flattening) 记录代替CNAME记录。接下来我将具体介绍这三种方法。 (1) 使用www.域名接入CDN 大家都知道,一般来说为根域名设置CNAME记录的情况都是由于网站需要接入CDN. 如果您可以接受网站采用www.example.com这样的网址而不是example.com,那么您完全可以使用www.example.com域名接入CDN. 由于www.example.com不是根域名了,因此它的CNAME记录不会和根域名的MX记录冲突,这样就解决了网站的CDN接入与域名邮箱共存的问题。 这种方法的有点在于最为简单,但缺点是必须使用www.形式的域名。 (2) 使用A记录接入CDN 如果您无法接受网站采用www.域名,那么您也可以将根域名采用A记录的方式接入CDN. 使用A记录时,您还可以自行设定线路,或者设置轮询。根域名的A记录不会和MX记录冲突,这样就解决了网站的CDN接入与域名邮箱共存的问题。 一般来说,这种情况比较适用于网站使用自行搭建的CDN系统,因为商用CDN系统的IP地址有时会发生变动,造成A记录解析失效。 (3) 使用ALIAS (CNAME Flattening) 记录代替CNAME记录 使用ALIAS记录代替CNAME记录是目前国际上最主流的设置办法了,它能起到与CNAME记录完全一样的效果,又不会和其他记录产生冲突。 这里我们先介绍一下ALIAS记录。ALIAS记录,又称CNAME Flattening记录,中文为“别名”记录,是一种CNAME记录的替代型记录。它能够起到和CNAME记录完全一样的效果,即将一个域名设置为另一个域名的别名,而唯一的差别就是ALIAS记录不会与其他记录发生冲突。 因此,我们只需要在DNS服务商那里为根域名设置ALIAS或者CNAME Flattening记录就可以了,它的设置方法与CNAME记录完全相同。通过设置ALIAS记录,我们就能够完美解决网站根域名的CDN接入与域名邮箱共存问题。如果您的DNS服务商目前不支持ALIAS记录,您可以使用市面上很多免费的DNS服务,比如Cloudflare, he.net, dnsimple.com, Route53 (这个不免费), cloudns.net, 等等。这些DNS服务商都支持设置ALIAS记录。大部分国际域名注册商,比如Godaddy, Porkbun, Namesilo, Namecheap, Gandi, Google Domains等等,也都支持设置ALIAS记录。 综上所述,CNAME记录具有特殊性,会和同域名下的所有其他记录发生冲突,导致无法同时配置根域名的CDN和MX域名邮箱。有三种方法可以解决CNAME记录与MX记录的冲突,分别是 (1) 使用www.域名接入CDN; (2) 使用A记录轮询接入CDN; (3) 使用ALIAS (CNAME Flattening) 记录代替CNAME记录。我们推荐您使用一个支持ALIAS记录的DNS服务商,然后为您的根域名设置ALIAS记录,就可以完美解决这个问题。

    2021.09.03 浏览:1805
  • 设置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
  • 如何使用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
  • 如何使用iRedMail在Ubuntu20.04上轻松设置完整的邮件服务器

    在Linux上从头开始设置自己的电子邮件服务器是一个漫长而乏味的过程,如果你不是高级用户,这将是一个痛苦的过程。本教程将向您展示如何使用iRedMail在Ubuntu20.04上快速设置一个功能齐全的邮件服务器,为您节省大量时间和麻烦。 什么是iRedMail? iRedMail是一个shell脚本,可以在Linux/BSD服务器上自动安装和配置所有必要的邮件服务器组件,从而消除手动安装和配置。使用iRedMail,您可以在基于web的管理面板中轻松创建无限邮箱和无限邮件域。邮箱可以存储在MariaDB/MySQL、PostgreSQL数据库或OpenLDAP中。以下是iRedMail将自动安装和配置的开源软件列表。 后缀SMTP服务器 Dovecot IMAP服务器 Nginx web服务器为管理面板和webmail提供服务 用于存储用户信息的OpenLDAP、MySQL/MariaDB或PostgreSQL 一个用于DKIM签名和验证的新版本 SpamAssassin用于反垃圾邮件 ClamAV用于抗病毒 Roundcube网络邮件 SOGo群件,提供网络邮件、日历(CalDAV)、联系人(CardDAV)、任务和ActiveSync服务。 用于保护SSH的Fail2ban 邮件列表管理器 Netdata服务器监控 iRead Postfix策略服务器用于GreyList 第一步:选择合适的主机提供商并购买域名 要使用iRedMail设置一个功能齐全的电子邮件服务器,您需要一个至少有3GB内存的服务器,因为安装后,您的服务器将使用超过2GB的内存。 强烈建议您在Ubuntu 20.04服务器的干净安装上安装iRedMail。 本教程是在每月9美元的Kamatera VPS(虚拟专用服务器)上完成的,该服务器具有1个CPU和3GB RAM。他们提供30天的免费试用期。 Kamatera是运行邮件服务器的一个非常好的选择,因为 它们不会阻止端口25,因此您可以发送无限量的电子邮件(事务性电子邮件和时事通讯),而无需在SMTP中继服务上花钱。Kamatera没有任何SMTP限制。你每天可以发送一百万封电子邮件。 IP地址不在任何电子邮件黑名单上。(至少对我来说是这样。我选择了达拉斯数据中心。)你肯定不想被列入可怕的微软Outlook IP黑名单或spamrats黑名单。有些黑名单会屏蔽整个IP范围,你无法从此类黑名单中删除你的IP地址。 您可以编辑PTR记录以提高电子邮件的可交付性。 它们允许你向你的电子邮件订阅者发送时事通讯,而不受每小时或每天的限制。 您可以为一台服务器订购多个IP地址。这对需要发送大量电子邮件的人非常有用。您可以在多个IP地址上传播电子邮件流量,以实现更好的电子邮件交付。 其他VPS提供商,如DigitalOcean阻止了端口25。DigitalOcean不会解锁端口25,因此您需要设置SMTP中继以绕过阻止,这可能会增加您的费用。如果您使用Vultr VPS,则默认情况下端口25被阻止。如果您打开支持票证,他们可以解除阻止,但如果他们决定不允许您的电子邮件发送活动,他们可能会在任何时候再次阻止。如果你使用他们的服务器发送时事通讯,Vultr实际上可能会重新阻止它。 转到Kamatera网站创建帐户,然后在帐户仪表板中创建服务器。 我建议遵循下面链接的教程,在Kamatera上正确设置Linux VPS服务器。 如何在Kamatera上创建Linux VPS服务器 创建服务器后,Kamatera将向您发送一封包含服务器SSH登录详细信息的电子邮件。要登录到服务器,可以使用SSH客户端。如果您在计算机上使用Linux或macOS,只需打开一个终端窗口并运行以下命令即可登录服务器。将12.34.56.78替换为服务器的IP地址。 ssh [email protected] 系统将要求您输入密码。 你还需要一个域名。我从namescape注册了我的域名,因为价格低廉,而且他们终身免费保护whois的隐私。 第2步:创建DNS MX记录 MX记录指定哪个或多个主机处理特定域名的电子邮件。例如,为linuxbabe处理电子邮件的主机。com是邮件。利努克斯宝贝。通用域名格式。如果拥有Gmail账户的人向[email&#160;protected]发送电子邮件,Gmail服务器将查询linuxbabe的MX记录。通用域名格式。当它发现那封邮件。利努克斯宝贝。com负责接收电子邮件,然后查询邮件记录。利努克斯宝贝。com获取IP地址,从而可以发送电子邮件。 你需要去你的DNS托管服务(通常是你的域名注册)创建DNS记录。在DNS管理器中,为域名创建MX记录。在名称字段中输入@代表主域名,然后输入mail。你的领域。com在值字段中。 注意:MX记录的主机名不能是其他名称的别名。此外,强烈建议您使用主机名,而不是MX记录的裸IP地址。 DNS管理员可能会要求您输入首选项值(也称为优先级值)。它可以是0到65356之间的任何数字。小数字的优先级高于大数字。建议将该值设置为0,以便此邮件服务器具有接收电子邮件的最高优先级。创建MX记录后,还需要为邮件创建一个记录。你的领域。com,以便将其解析为IP地址。如果您的服务器使用IPv6地址,请确保添加AAAA记录。 提示:如果使用Cloudflare DNS服务,则在创建邮件记录时不应启用CDN功能。你的领域。通用域名格式。Cloudflare不支持SMTP代理。 第3步:配置主机名 通过SSH登录服务器,然后运行以下命令更新现有软件包。 sudo apt update sudo apt upgrade -y 在升级过程中,它可能会问您以下问题。如果要继续使用端口6543进行SSH,请选择保持当前安装的本地版本。如果您想将端口22用于SSH,那么选择install the package maintainer's version(安装软件包维护者版本)。 我强烈建议创建一个sudo用户来管理服务器,而不是使用默认的root用户。运行以下命令创建用户。将用户名替换为首选用户名。 adduser username 然后将用户添加到sudo组。 adduser username sudo 切换到新用户。 su - username 接下来,使用以下命令为服务器设置完全限定的域名(FQDN)。 sudo hostnamectl set-hostname mail.your-domain.com 我们还需要使用命令行文本编辑器(如Nano)更新/etc/hosts文件。 sudo nano /etc/hosts 像下面那样编辑它。(使用箭头键在文件中移动光标。) 127.0.0.1 mail.your-domain.com localhost 保存并关闭文件。(要在Nano文本编辑器中保存文件,请按Ctrl+O,然后按Enter确认。要关闭文件,请按Ctrl+X。) 要查看更改,请重新登录,然后运行以下命令查看主机名。 hostname -f 第4步:使用iRedMail在Ubuntu20.04上设置邮件服务器 运行以下命令从其Github存储库下载最新版本的iRedMail脚本安装程序。 wget https://github.com/iredmail/iRedMail/archive/1.5.0.tar.gz 提取存档文件。 tar xvf 1.5.0.tar.gz 然后将cd放入新创建的目录中。 cd iRedMail-1.5.0/ 向iRedMail添加可执行权限。sh脚本。 chmod +x iRedMail.sh 接下来,使用sudo权限运行Bash脚本。 sudo bash iRedMail.sh 邮件服务器安装向导将出现。使用Tab键选择Yes,然后按Enter键。 下一个屏幕将要求您选择邮件存储路径。您可以使用默认路径:/var/vmail,只需按Enter键即可。 然后选择是否要运行web服务器。强烈建议您选择运行web服务器,因为您需要基于web的管理面板来添加电子邮件帐户。此外,它还允许您访问Roundcube网络邮件。默认情况下,Nginx web服务器处于选中状态,因此只需按Enter键即可。(星号表示该项目已被选中。) 然后为电子邮件帐户选择存储后端。选择一个你熟悉的。本教程选择了MariaDB。按向上和向下箭头键,然后按空格键进行选择。 如果选择了MariaDB或MySQL,则需要设置MySQL根密码。 接下来,输入您的第一个邮件域。您可以稍后在基于web的管理面板中添加其他邮件域。本教程假设您想要一个像[email&#160;protected]这样的电子邮件帐户。在这种情况下,你需要进入你的域名。com在这里,没有子域。不要在域名后按空格键。我认为iRedMail会将空格字符与域名一起复制,这可能会导致安装失败。 接下来,为邮件域管理员设置密码。 选择可选组件。默认情况下,选择4个项目。如果您想使用SOGo群件(网络邮件、日历、通讯簿、ActiveSync),请按向下箭头键和空格键进行选择。按Enter键进入下一个屏幕。 现在,您可以查看您的配置。键入Y开始安装所有邮件服务器组件。 在安装结束时,选择y以使用iRedMail提供的防火墙规则并重新启动防火墙。 现在iRedMail安装完成了。您将收到webmail的URL、web管理面板和登录凭据的通知。iRedMail。提示文件包含有关iRedMail服务器的重要信息。 重新启动Ubuntu 20.04服务器。 sudo shutdown -r now 服务器重新联机后,您可以访问web管理面板。 https://mail.your-domain.com/iredadmin/ 注意,在上面的URL中,访问管理面板的子目录是/IREDAMIN/,而不是/iredmail/。因为它使用的是自签名TLS证书,所以需要在web浏览器中添加安全异常。 步骤5:安装Let's Encrypt TLS证书 由于邮件服务器正在使用自签名TLS证书,桌面邮件客户端用户和webmail客户端用户都将看到警告。为了解决这个问题,我们可以获得并安装免费的Let's Encrypt TLS证书。 获取证书 首先,通过SSH再次登录服务器,并运行以下命令在Ubuntu 20.04上安装Let's Encrypt(certbot)客户端。 sudo apt install certbot iRedMail已经在默认的Nginx虚拟主机中配置了TLS设置,因此我建议使用webroot插件而不是Nginx插件来获取证书。运行以下命令。用实际数据替换红色文本。 sudo certbot certonly --webroot --agree-tos --email [email protected] -d mail.your-domain.com -w /var/www/html/ 当它询问您是否希望接收EFF的通信时,您可以选择否。 如果一切顺利,您将看到以下文本,表明您已成功获得TLS证书。您的证书和链已保存在/etc/letsencrypt/live/mail。你的领域。com/directory。 未能获得TLS证书 如果certbot无法获得TLS证书,可能是因为您的DNS记录没有传播到Internet。根据您使用的域注册器,您的DNS记录可能会立即传播,或者传播可能需要24小时。你可以去https://dnsmap.io,输入邮件服务器的主机名(mail.your domain.com)以检查DNS传播。 如果certbot无法获取证书,并且您看到以下消息, Failed authorization procedure. mail.linuxbabe.com (http-01): urn:ietf:params:acme:error:connection :: The server could not connect to the client to verify the domain :: Fetching : Timeout during connect (likely firewall problem) 这可能是因为你创造了AAAA的邮件记录。你的领域。com,但Nginx web服务器不监听IPv6地址。要修复此错误,请编辑/etc/nginx/sites enabled/00默认值。配置文件 sudo nano /etc/nginx/sites-enabled/00-default.conf 找到下面这行。 #listen [::]:80; 删除#字符以为此Nginx虚拟主机启用IPv6。 listen [::]:80; 保存并关闭文件。然后编辑SSL虚拟主机/etc/nginx/sites enabled/00默认SSL。形态。 sudo nano /etc/nginx/sites-enabled/00-default-ssl.conf 添加以下行。 listen [::]:443 ssl http2; 保存并关闭文件。然后测试Nginx配置。 sudo nginx -t 如果测试成功,请重新加载Nginx以使更改生效。 sudo systemctl reload nginx 再次运行以下命令以获取TLS证书。用实际数据替换红色文本。 sudo certbot certonly --webroot --agree-tos --email [email protected] -d mail.your-domain.com -w /var/www/html/ 现在您应该能够成功获得TLS证书。 在Nginx中安装证书 获得TLS证书后,让我们配置Nginx web服务器以使用它。编辑SSL模板文件。 sudo nano /etc/nginx/templates/ssl.tmpl 找到下面两行。 ssl_certificate /etc/ssl/certs/iRedMail.crt; ssl_certificate_key /etc/ssl/private/iRedMail.key; 替换为: ssl_certificate /etc/letsencrypt/live/mail.your-domain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/mail.your-domain.com/privkey.pem; 保存并关闭文件。然后测试nginx配置并重新加载。 sudo nginx -t sudo systemctl reload nginx 再次访问iRedMail管理面板,您的web浏览器将不再警告您,因为Nginx现在使用的是有效的TLS证书。 在Postfix和Dovecot中安装TLS证书 我们还需要配置Postfix SMTP服务器和Dovecot IMAP服务器来使用Let's Encrypt颁发的证书,这样桌面邮件客户端就不会显示安全警告。编辑Postfix的主配置文件。 sudo nano /etc/postfix/main.cf 找到下面三行。(第95、96、97行)。 smtpd_tls_key_file = /etc/ssl/private/iRedMail.key smtpd_tls_cert_file = /etc/ssl/certs/iRedMail.crt smtpd_tls_CAfile = /etc/ssl/certs/iRedMail.crt 替换为: smtpd_tls_key_file = /etc/letsencrypt/live/mail.your-domain.com/privkey.pem smtpd_tls_cert_file = /etc/letsencrypt/live/mail.your-domain.com/cert.pem smtpd_tls_CAfile = /etc/letsencrypt/live/mail.your-domain.com/chain.pem 保存并关闭文件。然后重新加载后缀。 sudo systemctl reload postfix 接下来,编辑Dovecot的主配置文件。 sudo nano /etc/dovecot/dovecot.conf 好的,下面两行。(第47、48行) ssl_cert = </etc/ssl/certs/iRedMail.crt ssl_key = </etc/ssl/private/iRedMail.key 替换为: ssl_cert = </etc/letsencrypt/live/mail.your-domain.com/fullchain.pem ssl_key = </etc/letsencrypt/live/mail.your-domain.com/privkey.pem 保存并关闭文件。然后重新装好多佛科特。 sudo systemctl reload dovecot 从现在起,桌面邮件用户将不会看到安全警告。 第6步:发送测试电子邮件 使用邮政局长邮件帐户([email&#160;protected])登录iredadmin面板。在“添加”选项卡中,可以添加其他域或电子邮件地址。 如果您看到“无控制域”错误,请参阅本文。 创建用户后,您可以访问Roundcube webmail地址,并使用新的邮件用户帐户登录。 https://mail.your-domain.com/mail/ 现在,您可以测试电子邮件的发送和接收。请注意,您可能需要等待几分钟才能收到电子邮件,因为iRedMail默认情况下会启用灰色列表,这是一种通知其他发送SMTP服务器在几分钟后重试的方式。邮件日志文件/var/log/mail中的以下行。日志表明已启用灰色列表。 Recipient address rejected: Intentional policy rejection, please try again later; 添加交换空间 ClamAV用于扫描电子邮件中的病毒。ClamAV可以使用相当数量的RAM。如果您的服务器上没有足够的RAM,ClamAV将无法正常工作,这将阻止您的邮件服务器发送电子邮件。您可以向服务器添加交换文件,以增加服务器上的总RAM。(请注意,在服务器上使用交换空间会降低服务器性能。如果希望获得更好的性能,应升级物理RAM,而不是使用交换空间。) 要在服务器上添加交换空间,首先,使用fallocate命令创建一个文件。例如,在根文件系统中创建一个名为swapfile、容量为1G的文件: sudo fallocate -l 1G /swapfile 然后确保只有root用户可以读写它。 sudo chmod 600 /swapfile 将其格式化为交换: sudo mkswap /swapfile 输出: Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes) no label, UUID=0aab5886-4dfb-40d4-920d-fb1115c67433 启用交换文件 sudo swapon /swapfile 要在系统启动时装载交换空间,请编辑/etc/fstab文件。 sudo nano /etc/fstab 在该文件底部添加以下行。 /swapfile swap swap defaults 0 0 保存并关闭文件。然后重新加载systemd并重新启动ClamAV。 sudo systemctl daemon-reload sudo systemctl restart clamav-daemon 步骤7:检查端口25(出站)是否被阻止 您的ISP或主机服务提供商不会阻止与服务器端口25的传入连接,这意味着您可以接收来自其他邮件服务器的电子邮件。然而,许多ISP/主机提供商会阻止与其他邮件服务器端口25的传出连接,这意味着您无法发送电子邮件。 如果你的电子邮件没有到达你的其他电子邮件地址,比如Gmail,那么在你的邮件服务器上运行以下命令,检查端口25(出站)是否被阻止。 telnet gmail-smtp-in.l.google.com 25 如果未被阻止,您将看到如下消息,这表明已成功建立连接。(提示:输入quit并按Enter键关闭连接。) Trying 74.125.68.26... Connected to gmail-smtp-in.l.google.com. Escape character is '^]'. 220 mx.google.com ESMTP y22si1641751pll.208 - gsmtp 如果端口25(出站)被阻止,您将看到如下情况: Trying 2607:f8b0:400e:c06::1a... Trying 74.125.195.27... telnet: Unable to connect to remote host: Connection timed out 在这种情况下,您的Postfix无法向其他SMTP服务器发送电子邮件。请您的ISP/主机提供商为您打开它。如果他们拒绝您的请求,您需要设置SMTP中继以绕过端口25阻塞。 还是不能发邮件? 如果端口25(出站)未被阻止,但您仍然无法从自己的邮件服务器向Gmail等其他电子邮件地址发送电子邮件,那么您应该检查邮件日志(/var/log/mail.log)。 sudo nano /var/log/mail.log 例如,有些人可能会在文件中看到以下几行。 host gmail-smtp-in.l.google.com[2404:6800:4003:c03::1b] said: 550-5.7.1 [2a0d:7c40:3000:b8b::2] Our system has detected that 550-5.7.1 this message does not meet IPv6 sending guidelines regarding PTR 550-5.7.1 records and authentication. Please review 550-5.7.1 for more information 这意味着您的邮件服务器正在使用IPv6发送电子邮件,但您没有设置IPv6记录。你应该去你的DNS管理员那里,为邮件设置AAAA记录。你的领域。com,那么您应该为IPv6地址设置PTR记录,这将在步骤9中讨论。 第8步:在计算机或移动设备上使用邮件客户端 启动你的桌面电子邮件客户端,比如Mozilla Thunderbird,并添加一个邮件帐户。 在“传入服务器”部分,选择IMAP协议,输入mail。你的领域。com作为服务器名,选择端口143和STARTTLS。选择普通密码作为身份验证方法。 在“发送”部分,选择SMTP协议,输入mail。你的领域。com作为服务器名,选择端口587和STARTTLS。选择普通密码作为身份验证方法。 故障2阻止您自己的IP地址 如果您犯了一个错误,多次登录邮件服务器失败,那么邮件服务器上的Fail2ban服务可能会阻止您的IP地址。你可以通过编辑监狱将你的IP地址添加到白名单中。本地文件。 sudo nano /etc/fail2ban/jail.local 将您自己的IP地址添加到忽略列表中,如下所示。将12.34.56.78替换为您的真实IP地址。 ignoreip = 12.34.56.78 127.0.0.1 127.0.0.0/8 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 保存并关闭文件。然后重启Fail2ban。 sudo systemctl restart fail2ban 第9步:提高电子邮件交付能力 为了防止您的电子邮件被标记为垃圾邮件,您应该设置PTR、SPF、DKIM和DMARC记录。 PTR记录 指针记录或PTR记录将IP地址映射到FQDN(完全限定域名)。它与A记录相对应,用于反向DNS查找,这有助于阻止垃圾邮件发送者。如果没有找到发送服务器的PTR记录,许多SMTP服务器会拒绝电子邮件。 要检查PTR记录中的IP地址,请运行以下命令: dig -x IP-address +short 或 host IP-address PTR记录不由您的域注册器管理。它由提供IP地址的组织管理。因为您从主机提供商或ISP获得IP地址,而不是从域注册商获得,所以您必须在主机提供商的控制面板中为您的IP设置PTR记录,或者询问ISP。它的值应该是邮件服务器的主机名:mail。你的领域。通用域名格式。如果您的服务器使用IPv6地址,请确保也为您的IPv6地址添加PTR记录。 要编辑Kamatera VP的反向DNS记录,请登录Kamatera客户端区域,然后打开支持票证,告诉他们为服务器IP地址添加PTR记录,以将IP地址指向邮件。你的领域。通用域名格式。你可能会想,这并不方便,但这是为了让垃圾邮件发送者远离平台,因此像我们这样的合法电子邮件发送者将拥有良好的IP声誉。 SPF记录 SPF(发件人策略框架)记录指定允许哪些主机或IP地址代表域发送电子邮件。您应该只允许您自己的电子邮件服务器或ISP的服务器为您的域发送电子邮件。在DNS管理界面中,创建一个新的TXT记录,如下所示。 说明: TXT表示这是一条TXT记录。 在名称字段中输入@代表主域名。 v=spf1表示这是一条SPF记录,版本为spf1。 mx意味着mx记录中列出的所有主机都被允许为您的域发送电子邮件,而所有其他主机都被禁止。 ~all表示来自您域的电子邮件应该只来自SPF记录中指定的主机。来自其他主机的电子邮件将被标记为伪造。 要检查您的SPF记录是否传播到公共互联网,您可以在Linux机器上使用dig实用程序,如下所示: dig your-domain.com txt txt选项告诉dig我们只想查询txt记录。 DKIM记录 DKIM(DomainKeys Identified Mail)使用私钥对从您的域发送的电子邮件进行数字签名。接收SMTP服务器使用在DNS DKIM记录中发布的公钥验证签名。 iRedMail脚本会自动为服务器配置DKIM。唯一要做的就是在DNS管理器中创建DKIM记录。运行以下命令以显示DKIM公钥。 sudo amavisd-new showkeys DKIM公钥在括号中。 然后在DNS管理器中,创建一个TXT记录,输入dkim_名称字段中的domainkey。复制括号中的所有内容并粘贴到值字段中。删除所有双引号和换行符。 保存更改后,运行以下命令测试DKIM记录是否正确。 sudo amavisd-new testkeys 如果DKIM记录正确,测试将通过。 TESTING#1 linuxbabe.com: dkim._domainkey.linuxbabe.com => pass 请注意,您的DKIM记录可能需要一些时间才能传播到Internet。根据您使用的域注册器,您的DNS记录可能会立即传播,或者传播可能需要24小时。你可以去https://www.dmarcanalyzer.com/dkim/dkim-check/,输入dkim作为选择器,并输入您的域名以检查dkim记录传播。 DMARC记录 DMARC代表基于域的消息身份验证、报告和一致性。DMARC可以帮助接收电子邮件服务器识别合法电子邮件,并防止电子邮件欺骗使用您的域名。 要创建DMARC记录,请转到DNS管理器并添加TXT记录。在名称字段中,输入_dmarc。在“值”字段中,输入以下内容。(您应该创建[email&#160;protected]电子邮件地址。) v=DMARC1; p=none; pct=100; rua=mailto:[email protected] 上述DMARC记录是一个安全的起点。如果你想阅读DMARC的完整解释,请查看以下文章。请注意,这是可选的。 创建DMARC记录以保护您的域名免受电子邮件欺骗 第10步:测试电子邮件分数和位置 创建PTR、SPF、DKIM记录后,转到https://www.mail-tester.com.你会看到一个独特的电子邮件地址。从你的域名发送电子邮件到此地址,然后检查你的分数。如你所见,我得了满分。在测试结果中,您应该检查您的PTR记录、SPF和DKIM记录是否有效。 邮件测试员。com只能显示发件人分数。还有另一个名为GlockApps的服务,可以让你检查你的电子邮件是否被放在收件人的收件箱或垃圾邮件文件夹中,或者被直接拒绝。它支持许多流行的电子邮件提供商,如Gmail、Outlook、Hotmail、YahooMail、iCloud mail等。 如果你的电子邮件仍被标记为垃圾邮件呢? 在这篇文章中,我有更多提示:如何阻止你的电子邮件被标记为垃圾邮件。虽然这需要一些时间和精力,但在应用这些技巧后,你的电子邮件最终会被放入收件箱。 如果您的电子邮件被Microsoft邮箱拒绝怎么办? 微软似乎正在使用一个内部黑名单来屏蔽许多合法的IP地址。如果您的电子邮件被Outlook或Hotmail拒绝,您需要提交发件人信息表。之后,Outlook/Hotmail将接受您的电子邮件。 添加多个邮件域 我写这篇文章是为了向您展示如何在iRedMail中添加多个邮件域。 如何禁用灰色列表 默认情况下,iRedMail已启用GreyList,这会告诉其他发送SMTP的服务器在几分钟后重试。这主要有助于阻止垃圾邮件,但也会降低用户体验。如果您希望禁用灰色列表,请按照以下说明操作。 向/opt/iredapd/settings添加写入权限。py文件。 sudo chmod 600 /opt/iredapd/settings.py 然后编辑配置文件。 sudo nano /opt/iredapd/settings.py 找到下面这行。 plugins = ["reject_null_sender", "wblist_rdns", "reject_sender_login_mismatch", "greylisting", "throttle", "amavisd_wblist", "sql_alias_access_policy"] 从列表中删除“灰色列表”。保存并关闭文件。然后重新启动iRedApp。 sudo systemctl restart iredapd 将配置文件更改回只读模式。 sudo chmod 400 /opt/iredapd/settings.py 启用SMTPS端口465 如果要使用Microsoft Outlook客户端,则需要在Postfix SMTP服务器中启用SMTPS端口465。 故障排除 首先,请使用至少4GB内存的VPS。在1GB RAM VPS上运行iRedMail会导致数据库、SpamAssassin或ClamAV因内存不足而被终止。如果你真的想使用1GB内存的VPS,你会丢失收到的电子邮件,并有其他不良后果。 如果无法访问iRedMail web界面,如502网关错误,则应检查/var/log/Nginx/目录中的Nginx日志以找到线索。您可能还需要检查邮件日志/var/log/mail。日志 检查各种服务是否正在运行。 systemctl status postfix systemctl status dovecot systemctl status nginx systemctl status mariadb systemctl status clamav-daemon systemctl status amavis 如果启用了防火墙,则应在防火墙中打开以下端口。 HTTP port: 80 HTTPS port: 443 SMTP port: 25 Submission port: 587 (and 465 if you are going to use Microsoft Outlook mail client) IMAP port: 143 and 993 如果你想使用UFW防火墙,请查看我的指南:Debian和Ubuntu上的UFW防火墙入门。 如何更新TLS证书 让我们加密颁发的TLS证书仅在90天内有效,设置Cron作业以自动续订证书非常重要。您可以运行以下命令来续订证书。 sudo certbot renew -w /var/www/html/ 您可以使用--dry run选项来测试更新过程,而不是进行真正的更新。 sudo certbot renew -w /var/www/html/ --dry-run 如果在续订TLS证书时看到以下错误。 The client lacks sufficient authorization :: Invalid response 然后需要创建隐藏目录。 sudo mkdir -p /var/www/html/.well-known/acme-challenge 并将www数据设置为webroot的所有者。 sudo chown www-data:www-data /var/www/html/ -R 另外,编辑SSL虚拟主机/etc/nginx/sites enabled/00默认SSL。conf.添加以下行。 location ~ /.well-known/acme-challenge { root /var/www/html/; allow all; } 保存并关闭文件。测试Nginx配置并重新加载。 sudo nginx -t sudo systemctl reload nginx 创建Cron作业 如果现在试运行成功,您可以创建Cron作业来自动续订证书。只需打开root用户的crontab文件。 sudo crontab -e 然后在文件底部添加以下行。 @daily certbot renew -w /var/www/html/ --quiet && systemctl reload postfix dovecot nginx 重新加载Postfix、Dovecot和Nginx是使这些程序获取新证书和私钥所必需的。 设置备份邮件服务器 主邮件服务器有时可能会关闭。如果您将邮件服务器托管在数据中心,那么停机时间非常短,因此您不必担心丢失入站邮件。如果您在家中托管邮件服务器,则无法预测停机时间,因此在数据中心运行备份邮件服务器是一种很好的做法,以防止丢失入站邮件。备份邮件服务器只需要512MB内存即可运行。请在下面的文章中查看全部细节。 如何在Ubuntu上设置带有后缀的备份电子邮件服务器(完整指南) 面向高级用户 iRedMail不包括DMARC验证服务,您可以查看以下教程来设置OpenDMARC以阻止电子邮件欺骗。 在Ubuntu上安装带有后缀的OpenDMARC,以阻止电子邮件欺骗/垃圾邮件 您可能需要自定义SpamAssassin内容过滤器,以便更好地检测垃圾邮件。 通过检查Postfix/SpamAssassin中的标题和正文来阻止垃圾邮件 如果您的网站和邮件服务器运行在两个不同的VP(虚拟专用服务器)上,您可以在网站和邮件服务器之间设置SMTP中继,以便您的网站可以通过邮件服务器发送电子邮件。请参阅下面的文章。 如何在Ubuntu上的两个Postfix SMTP服务器之间设置SMTP中继 收尾 就这样!我希望本教程能帮助你用iRedMail在Ubuntu20.04上安装邮件服务器。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?

    2022.03.24 浏览:1480
  • 使用Postfix SMTP服务器阻止垃圾邮件的7个有效提示

    在本教程中,我想与大家分享我的7个使用Postfix SMTP服务器阻止垃圾邮件的技巧。在过去四年里,我运行自己的电子邮件服务器,收到了大量垃圾邮件,也就是未经请求的商业电子邮件,其中大部分来自中国和俄罗斯。垃圾邮件的存在是因为在互联网上发送大量电子邮件非常便宜。Postfix允许您在垃圾邮件进入邮箱之前阻止它们,这样可以节省带宽和磁盘空间。这篇帖子是我与垃圾邮件斗争经验的结晶。 注意:如果您计划运行自己的邮件服务器,我建议您使用iRedmail,这样可以真正简化邮件服务器的设置过程。它还附带反垃圾邮件规则。如果你喜欢从头开始设置邮件服务器,那么请查看我的邮件服务器教程系列。 垃圾邮件的特点 下面是我发现的关于垃圾邮件的信息。这些垃圾邮件很容易被屏蔽。 他们的IP地址没有PTR记录。 垃圾邮件发送者在HELO/EHLO子句中未提供有效的主机名。 他们伪造了地址上的邮件。 他们通常不会在邮件发送失败后重新发送邮件。 合法的电子邮件服务器不应该具有这些特征。下面是我的7条建议,可以屏蔽90%的垃圾邮件。 事实:世界上大约93%~95%的电子邮件在SMTP网关被拒绝,从未在收件箱或垃圾邮件文件夹中登陆。 提示#1:如果SMTP客户端没有PTR记录,则拒绝电子邮件 PTR记录将IP地址映射到域名。这是一张唱片的对应物。在Linux上,您可以通过执行以下命令来查询与IP地址关联的域名: host <IP address> 例如,下面的命令返回Google邮件服务器的主机名。 host 209.85.217.172 输出: 172.217.85.209.in-addr.arpa domain name pointer mail-ua0-f172.google.com. 由于垃圾邮件的流行,许多邮件服务器(如Gmail、gmx.com、gmx.net、facebook.com)要求SMTP客户端具有与其IP地址相关的有效PTR记录。每个邮件服务器管理员都应该为他们的SMTP服务器设置PTR记录。如果SMTP客户端有PTR记录,您可以在Postfix日志中找到一行,如下所示。 connect from mail-ua0-f172.google.com[209.85.217.172] 如果SMTP客户端没有PTR记录,则主机名将被标识为未知。 connect from unknown[120.41.196.220] 要过滤掉没有PTR记录的电子邮件,请打开Postfix主配置文件。 sudo nano /etc/postfix/main.cf 在smtpd_发送方_限制中添加以下行。如果客户端IP地址没有PTR记录,此指令将拒绝电子邮件。 reject_unknown_reverse_client_hostname 例子: smtpd_sender_restrictions = permit_mynetworks permit_sasl_authenticated reject_unknown_reverse_client_hostname 保存并关闭文件。然后重新启动Postfix以使更改生效。 sudo systemctl restart postfix 提示2:在后缀中启用HELO/EHLO主机名限制 一些垃圾邮件发送者在SMTP对话框中没有提供有效的HELO/EHLO主机名。它们可以是非完全限定的域名,或者域名不存在,或者只针对内部网络。例如,使用Amazon EC2实例发送垃圾邮件的垃圾邮件发送者登录到我的服务器,如下所示: Aug 16 04:21:13 email postfix/smtpd[7070]: connect from ec2-54-237-201-103.compute-1.amazonaws.com[54.237.201.103] Aug 16 04:21:13 email policyd-spf[7074]: prepend Received-SPF: None (mailfrom) identity=mailfrom; client-ip=54.237.201.103; helo=ip-172-30-0-149.ec2.internal; [email protected]; receiver=<UNKNOWN> 如您所见,直升机主机名是ip-172-30-0-149。ec2。内部,仅在AWS内部网络中有效。它没有有效的A记录或MX记录。 要启用HELO/EHLO主机名限制,请编辑后缀主配置文件。 sudo nano /etc/postfix/main.cf 首先,添加以下行以要求客户机提供HELO/EHLO主机名。 smtpd_helo_required = yes 然后添加以下3行以启用smtpd_helo_限制。 smtpd_helo_restrictions = permit_mynetworks permit_sasl_authenticated 使用以下行拒绝提供错误HELO/EHLO主机名的客户端。 reject_invalid_helo_hostname 使用以下行拒绝非完全限定的HELO/EHLO主机名。 reject_non_fqdn_helo_hostname 要在HELO/EHLO主机名既没有DNS A记录也没有MX记录时拒绝电子邮件,请使用 reject_unknown_helo_hostname 这样地: smtpd_helo_required = yes smtpd_helo_restrictions = permit_mynetworks permit_sasl_authenticated reject_invalid_helo_hostname reject_non_fqdn_helo_hostname reject_unknown_helo_hostname 保存并关闭文件。然后重新加载后缀。 sudo systemctl reload postfix 请注意,尽管大多数合法邮件服务器都有HELO/EHLO主机名的有效记录,但有时合法邮件服务器不满足此要求。你需要用check_helo_访问权限将他们列入白名单。 smtpd_helo_required = yes smtpd_helo_restrictions = permit_mynetworks permit_sasl_authenticated check_helo_access hash:/etc/postfix/helo_access reject_invalid_helo_hostname reject_non_fqdn_helo_hostname reject_unknown_helo_hostname 然后需要创建/etc/postfix/helo_访问文件。 sudo nano /etc/postfix/helo_access 白名单合法邮件服务器的HELO/EHLO主机名,如下所示。 optimus-webapi-prod-2.localdomain OK va-massmail-02.rakutenmarketing.com OK 很可能您不知道哪些主机名要列入白名单,然后只需复制上面两行,这是我的helo_access文件中仅有的几行。以后您可以添加更多主机名。保存并关闭文件。然后运行以下命令创建/etc/postfix/helo_访问。数据库文件。 sudo postmap /etc/postfix/helo_access 然后重新加载后缀。 sudo systemctl reload postfix 提示#3:如果SMTP客户端主机名没有有效记录,请拒绝电子邮件 合法的电子邮件服务器也应该有一个有效的主机名A记录。从记录返回的IP地址应与电子邮件服务器的IP地址匹配。要过滤来自没有有效记录的主机的电子邮件,请编辑Postfix主配置文件。 sudo nano /etc/postfix/main.cf 在smtpd_发送方_限制中添加以下两行。 reject_unknown_reverse_client_hostname reject_unknown_client_hostname 例子: smtpd_sender_restrictions = permit_mynetworks permit_sasl_authenticated reject_unknown_reverse_client_hostname reject_unknown_client_hostname 保存并关闭文件。然后重新启动Postfix以使更改生效。 sudo systemctl restart postfix 请注意,reject_unknown_client_主机名不需要SMTP客户端的HELO。它将从PTR记录中获取主机名,然后检查A记录。 提示#4:如果来自域的邮件既没有MX记录也没有记录,则拒绝电子邮件 邮寄地址也称为信封邮寄地址。一些垃圾邮件发送者使用邮件发件人地址中不存在的域。如果域名没有MX记录,Postfix将找到主域名的a记录并向该主机发送电子邮件。如果发件人域既没有MX记录也没有记录,Postfix将无法向该域发送电子邮件。那么,为什么不拒绝你无法回复的电子邮件呢? 要过滤此类垃圾邮件,请编辑Postfix主配置文件。 sudo nano /etc/postfix/main.cf 在smtpd_发送方_限制中添加以下行。如果MAIL FROM命令提供的地址的域名既没有MX记录也没有记录,它将拒绝电子邮件。 reject_unknown_sender_domain 例子: smtpd_sender_restrictions = permit_mynetworks permit_sasl_authenticated reject_unknown_sender_domain reject_unknown_reverse_client_hostname reject_unknown_client_hostname 保存并关闭文件。然后重新启动Postfix以使更改生效。 sudo systemctl restart postfix 请注意,我将此限制置于其他拒绝限制之上。根据我的经验,如果它低于其他拒绝限制,它将不起作用。(可能这只发生在我的电子邮件服务器上。) 提示#5:在后缀中启用灰色列表 根据SMTP协议的要求,如果传递失败,任何合法的SMTP客户端都必须能够重新发送电子邮件。(默认情况下,Postfix配置为在通知发件人邮件无法送达之前多次重新发送失败的电子邮件。)许多垃圾邮件发送者通常只发送一次,不会重试。 Postgrey是Postfix的灰色列表策略服务器。Debian和Ubuntu用户可以从默认存储库安装postgrey。 sudo apt install postgrey CentOS/RHEL用户可以从EPEL存储库安装它。 sudo dnf install epel-release sudo dnf install postgrey 一旦安装完毕,用systemctl启动。 sudo systemctl start postgrey 启动时启用自动启动。 sudo systemctl enable postgrey 在Debian和Ubuntu上,它监听本地主机(IPv4和IPv6)上的TCP端口10023。 sudo netstat -lnpt | grep postgrey 在CentOS/RHEL上,Postgrey监听Unix套接字(/var/spool/postfix/postgray/socket)。 接下来,我们需要编辑Postfix主配置文件,使其使用greylisting策略服务器。 sudo nano /etc/postfix/main.cf 如果您使用的是Debian或Ubuntu,请在smtpd_recipient_restrictions中添加以下行。 check_policy_service inet:127.0.0.1:10023 如果使用CentOS/RHEL,则需要添加以下行。 check_policy_service unix:/var/spool/postfix/postgrey/socket 如果您不知道,上述屏幕截图中的check_policy_service unix:private/policy d spf指令将在发送方的域上生成Postfix check spf记录。此指令要求您安装和配置postfix policyd spf python包。 保存并关闭文件。然后重新启动Postfix。 sudo systemctl restart postfix 从现在起,如果发件人三元组(发件人IP地址、发件人电子邮件地址、收件人电子邮件地址)是新的,Postgrey将拒绝电子邮件。下面是/var/log/mail中的日志消息。日志显示一个新的发送方三元组。动作“greylist”表示此电子邮件已被拒绝。 postgrey[1016]: action=greylist, reason=new, client_name=unknown, client_address=117.90.24.148/32, [email protected], [email protected] 根据我的经验,中国的垃圾邮件发送者喜欢在每封邮件中使用一个虚假、外观怪异、随机生成的发件人地址,所以将这些虚假的电子邮件地址添加到黑名单并不能阻止他们。另一方面,他们从不尝试用相同的发件人地址重新发送被拒绝的电子邮件,这意味着greylisting可以非常有效地阻止此类垃圾邮件。 修复Debian&amp;Ubuntu 如果在邮件日志(/var/log/mail.log)中看到以下错误 warning: connect to 127.0.0.1:10023: Connection refused warning: problem talking to server 127.0.0.1:10023: Connection refused 问题是postgrey没有运行。您需要在/etc/default/postgray文件中指定127.0.0.1作为侦听地址。所以,改变下面这句话 POSTGREY_OPTS="--inet=10023" 到 POSTGREY_OPTS="--inet=127.0.0.1:10023" 然后重新启动postgrey。 sudo systemctl restart postgrey 检查它是否正在收听: sudo netstat -lnpt | grep 10023 如何最大限度地减少糟糕的用户体验 Greylisting可能会给最终用户带来不好的体验,因为用户必须再等待几分钟才能收到电子邮件。为了尽量减少这种糟糕的体验,您可以创建一个白名单,并使用指向同一主机的第二条MX记录。 白名单 Post格雷附带两个白名单文件(/etc/postgray/whitelist_客户端和/etc/postgray/whitelist_收件人)。前者包含主机名列表,后者包含收件人地址列表。 默认情况下,谷歌的邮件服务器被列入白名单。不管发件人使用的是@gmail。com地址或其他地址,只要发件人使用谷歌的邮件服务器,Postgrey不会拒绝该邮件。我的/var/log/mail中的以下行。日志文件显示了这一点。 postgrey[1032]: action=pass, reason=client whitelist, client_name=mail-yb0-f190.google.com 注意:您还可以使用sudo journalctl-u postgray命令查看postgrey日志。 您可以在/etc/postgray/whitelist_clients文件中添加其他主机名,如 facebook.com bounce.twitter.com blogger.com email.medium.com 可以使用名为pflogsumm的工具获取这些主机名,我将在本文后面讨论。保存并关闭文件,然后重新启动PostGray。 sudo systemctl restart postgrey 创建另一个具有相同IP地址的MX主机名 您可以为您的域名指定多个MX记录,如下所示。 Record Type    Name      Mail Server         Priority MX @ mail.yourdomain.com 0 MX @ mail2.yourdomain.com 5 发件人将尝试第一个邮件服务器(优先级为0)。如果是邮件。你的地盘。com通过greylisting拒绝电子邮件,然后发件人会立即尝试第二个邮件服务器(优先级为5)。 如果两个邮件服务器主机名具有相同的IP地址,那么当发件人尝试第二个邮件服务器主机名时,该电子邮件将立即被接受(如果所有其他检查都通过),最终用户将不会注意到由灰色列表引起的电子邮件延迟。 请注意,这需要您在/etc/default/postgray(Debian&amp;Ubuntu)或/etc/sysconfig/postgray(CentOS/RHEL)中设置一个非常小的延迟时间,比如1秒。延迟时间告诉SMTP客户端在再次发送之前要等待多少秒。如果延迟时间不够短,则第二次电子邮件发送仍将被拒绝。 Debian/Ubuntu POSTGREY_OPTS="--inet=127.0.0.1:10023 --delay=1" 森托斯/瑞尔 OSTGREY_DELAY="--delay=1" 重新启动Postgrey。 sudo systemctl restart postgrey 还要注意,并非所有邮件服务器都会立即尝试第二台MX主机。 提示#6:使用公共实时黑名单 有些垃圾邮件是从具有有效主机名、有效PTR记录且可以通过灰色列表的服务器发送的。在这种情况下,您可以使用黑名单来拒绝垃圾邮件。有许多公共实时黑名单(RBL),也称为DNSBL(基于DNS的列表)。实时性意味着列表总是在变化。IP地址或域名可能今天在列表上,明天不在列表中,因此根据查询列表的时间,您可能会得到不同的结果。 你可以使用多个黑名单来阻止垃圾邮件。去https://www.debouncer.com还有我的工具箱。com,输入垃圾邮件发送者的域和IP地址,查看哪些黑名单正在阻止它们,然后你可以使用这些黑名单。例如,我发现垃圾邮件发送者被下列黑名单之一列入黑名单: dbl。斯帕姆豪斯。组织 禅。斯帕姆豪斯。组织 多种。乌里布。通用域名格式 伊夫穆里 InvaluementURI 因此,我可以在/etc/postfix/main中添加以下配置。cf文件。一些公开黑名单服务需要按月付费。目前,我正在使用spamhaus的免费服务。组织。 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, check_policy_service unix:private/policyd-spf, check_policy_service inet:127.0.0.1:10023, reject_rhsbl_helo dbl.spamhaus.org, reject_rhsbl_reverse_client dbl.spamhaus.org, reject_rhsbl_sender dbl.spamhaus.org, reject_rbl_client zen.spamhaus.org 哪里: rhs代表右侧,即域名。 当客户端helo或EHLO主机名被列入黑名单时,reject_rhsbl_helo会发出Postfix reject电子邮件。 reject_rhsbl_reverse_client:当未经验证的反向客户端主机名被列入黑名单时,拒绝电子邮件。Postfix将从PTR记录中获取客户端主机名。如果主机名被列入黑名单,请拒绝该电子邮件。 当来自域的邮件被列入黑名单时,reject_rhsbl_发件人会发出Postfix reject电子邮件。 拒绝客户:这是一个基于IP的黑名单。当客户端IP地址被重新列出时,拒绝该电子邮件。 一些垃圾邮件发送者使用谷歌的邮件服务器,因此reject_rhsbl_helo无效,但大多数垃圾邮件发送者在邮件头中使用自己的域名,因此reject_rhsbl_sender将有效。 创建白名单 有时合法的电子邮件服务器会被列入黑名单。你可以创建一个白名单,这样他们就不会被阻止。创建以下文件。 sudo nano /etc/postfix/rbl_override 在这个文件中,白名单域名如下。 dripemail2.com  OK           //This domain belongs to drip.com mlsend.com      OK           //This domain belongs to mailerlite email marketing service 保存并关闭文件。然后运行以下命令创建rbl_覆盖。数据库文件。 sudo postmap /etc/postfix/rbl_override 编辑后缀主配置文件。 sudo nano /etc/postfix/main.cf 在smtpd_收件人_限制中,添加以下行。 check_client_access hash:/etc/postfix/rbl_override, 如下图所示。它应该放在其他RBL检查之上。 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, check_policy_service unix:private/policyd-spf, check_policy_service inet:127.0.0.1:10023, check_client_access hash:/etc/postfix/rbl_override, reject_rhsbl_helo dbl.spamhaus.org, reject_rhsbl_reverse_client dbl.spamhaus.org, reject_rhsbl_sender dbl.spamhaus.org, reject_rbl_client zen.spamhaus.org 重新加载后缀以使更改生效。 sudo systemctl reload postfix 利用公共白名单减少误报 维护私有白名单有时是必要的,但也可以使用公共白名单,其中最著名的是dnswl。组织。目前,只有一个IP地址的白名单。域名白名单正在测试中。要使用它,请在smtpd_recipient_restrictions中输入以下行。 permit_dnswl_client list.dnswl.org=127.0.[0..255].[1..3], 如下图所示。应将其置于拒绝客户支票上方。 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, check_policy_service unix:private/policyd-spf, check_policy_service inet:127.0.0.1:10023, check_client_access hash:/etc/postfix/rbl_override, reject_rhsbl_helo dbl.spamhaus.org, reject_rhsbl_reverse_client dbl.spamhaus.org, reject_rhsbl_sender dbl.spamhaus.org, permit_dnswl_client list.dnswl.org=127.0.[0..255].[1..3], reject_rbl_client zen.spamhaus.org 另一个著名的白名单是swl。斯帕姆豪斯。org,因此您也可以将其添加到配置中。 permit_dnswl_client swl.spamhaus.org, IP地址不可能同时在Spamhaus白名单和黑名单中列出,因此如果您只在Postfix中使用Spamhaus黑名单,则无需检查Spamhaus白名单。 我的后缀垃圾邮件过滤器 这是我的Postfix垃圾邮件过滤器的截图。 您可能想知道为什么前两个配置片段中没有逗号。你们可以用空格、回车或逗号分隔后缀配置文件中的值。如果在一个参数中添加逗号(smptd_recipient_restrictions,如上图所示),请确保用逗号分隔所有剩余值。 后缀日志报告 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="your-email-address" 你应该注意邮件拒绝细节部分,在那里你可以看到这些邮件被拒绝的原因,以及是否有任何误报。灰色列表拒绝是可以安全忽略的。 如果已经设置了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"  your-email-address pflogsumm命令的输出被重定向到mutt,这是一个命令行邮件用户代理,它将使用输出作为电子邮件正文,并将其发送到最后指定的电子邮件地址。当然,您需要在Linux服务器上安装mutt。 sudo apt install mutt 或 sudo dnf install mutt 提示#7:设置OpenDMARC以拒绝未通过DMARC检查的电子邮件 DMARC(基于域的消息验证、报告和一致性)是一种互联网标准,允许域所有者防止其域名被电子邮件欺骗者使用。请阅读以下指南之一以设置OpenDMARC。 在Ubuntu上设置带有后缀的OpenDMARC以阻止电子邮件欺骗 在CentOS/RHEL上设置带有后缀的OpenDMARC以阻止电子邮件欺骗 不要做一个开放式接力赛 代表任何人向任何目的地转发邮件的邮件服务器称为开放中继。一开始,这是件好事。随着时间的推移,开放式中继被垃圾邮件发送者滥用,现在开放式中继经常被列入黑名单。下面是/etc/postfix/main中的一行。cf文件防止您的电子邮件服务器成为开放式中继。 smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination 这一行告诉Postfix只从可信网络中的客户端、通过SASL认证的客户端或配置为授权中继目的地的域转发电子邮件。安装Postfix后,它应该已经在主配置文件中。 如何阻止垃圾邮件发送者的SMTP验证泛滥 过了一段时间,垃圾邮件发送者知道他无法通过我的垃圾邮件过滤器。这个坏演员开始用SMTP身份验证连接淹没我的电子邮件服务器。在my/var/log/mail中。日志文件中,我可以找到以下消息。 Dec 14 09:58:37 email postfix/smtpd[22095]: connect from unknown[117.86.35.119] Dec 14 09:58:37 email postfix/smtpd[22119]: lost connection after AUTH from unknown[114.232.141.99] Dec 14 09:58:37 email postfix/smtpd[22119]: disconnect from unknown[114.232.141.99] ehlo=1 auth=0/1 commands=1/2 Dec 14 09:58:37 email postfix/smtpd[22119]: connect from unknown[180.120.191.91] Dec 14 09:58:38 email postfix/smtpd[22095]: lost connection after AUTH from unknown[117.86.35.119] Dec 14 09:58:38 email postfix/smtpd[22095]: disconnect from unknown[117.86.35.119] ehlo=1 auth=0/1 commands=1/2 Dec 14 09:58:38 email postfix/smtpd[22119]: lost connection after AUTH from unknown[180.120.191.91] Dec 14 09:58:38 email postfix/smtpd[22119]: disconnect from unknown[180.120.191.91] ehlo=1 auth=0/1 commands=1/2 Dec 14 09:58:38 email postfix/smtpd[22095]: connect from unknown[49.67.68.34] Dec 14 09:58:39 email postfix/smtpd[22106]: lost connection after AUTH from unknown[180.120.192.199] Dec 14 09:58:39 email postfix/smtpd[22106]: disconnect from unknown[180.120.192.199] ehlo=1 auth=0/1 commands=1/2 Dec 14 09:58:39 email postfix/smtpd[22095]: lost connection after AUTH from unknown[49.67.68.34] Dec 14 09:58:39 email postfix/smtpd[22095]: disconnect from unknown[49.67.68.34] ehlo=1 auth=0/1 commands=1/2 Dec 14 09:58:39 email postfix/smtpd[22119]: connect from unknown[121.226.62.16] Dec 14 09:58:39 email postfix/smtpd[22119]: lost connection after AUTH from unknown[121.226.62.16] Dec 14 09:58:39 email postfix/smtpd[22119]: disconnect from unknown[121.226.62.16] ehlo=1 auth=0/1 commands=1/2 Dec 14 09:58:39 email postfix/smtpd[22106]: connect from unknown[58.221.55.21] Dec 14 09:58:40 email postfix/smtpd[22106]: lost connection after AUTH from unknown[58.221.55.21] Dec 14 09:58:40 email postfix/smtpd[22106]: disconnect from unknown[58.221.55.21] ehlo=1 auth=0/1 commands=1/2 Dec 14 09:58:47 email postfix/smtpd[22095]: connect from unknown[121.232.65.223] Dec 14 09:58:47 email postfix/smtpd[22095]: lost connection after AUTH from unknown[121.232.65.223] Dec 14 09:58:47 email postfix/smtpd[22095]: disconnect from unknown[121.232.65.223] ehlo=1 auth=0/1 commands=1/2 Postfix设计为即使在压力条件下也能运行。它使用有限的内存,因此此类攻击的效果要差得多。然而,我不希望它们出现在我的邮件日志中,我们应该为合法的SMTP客户端保存smtpd进程,而不是浪费时间处理垃圾邮件。要阻止这种洪水攻击,可以使用fail2ban,这是一组服务器和客户端程序,用于限制暴力身份验证尝试。从默认的Ubuntu存储库安装fail2ban。 sudo apt install fail2ban 安装后,它将自动启动,如下所示: sudo systemctl status fail2ban fail2ban中包含的fail2ban服务器程序监视日志文件并发出ban/unban命令。默认情况下,如果客户端的身份验证失败5次,它将禁止客户端的IP地址10分钟。这项禁令是通过添加iptables防火墙规则来实现的。您可以通过运行以下命令来检查iptables规则。 sudo iptables -L 要在PostFX SMTP身份验证攻击中启用fail2ban,请在/etc/fail2ban/jail中添加以下行。本地文件。如果文件不存在,则创建此文件。 [postfix-flood-attack] enabled = true bantime = 10m filter = postfix-flood-attack action = iptables-multiport[name=postfix, port="http,https,smtp,submission,pop3,pop3s,imap,imaps,sieve", protocol=tcp] logpath = /var/log/mail.log 你可以将禁赛时间改为30米或12小时,以延长禁赛时间。如果您想将自己的IP地址列入白名单,请添加以下行,告诉fail2ban忽略您的IP地址。将12.34.56.78替换为您自己的IP地址。多个IP地址由空格分隔。 ignoreip = 127.0.0.1/8 ::1 12.34.56.78 默认情况下,允许的最大失败次数为5次。5次失败后,客户端将被禁止。要指定自定义的失败次数,请添加以下行。根据你的喜好更改号码。 maxretry = 4 保存并关闭文件。然后创建筛选规则文件。 sudo nano /etc/fail2ban/filter.d/postfix-flood-attack.conf 在这个文件中,我们指定,如果发现“身份验证来源后失去连接”,则禁止该IP地址。 [Definition] failregex = lost connection after AUTH from (.*)/[<HOST>/] ignoreregex = 保存并关闭文件。重新启动故障2以使更改生效。 sudo systemctl restart fail2ban 在fail2ban日志文件(/var/log/fail2ban.log)中,我可以找到如下消息,这表明IP地址114.223.221.55已被禁止,因为它的身份验证失败了5次。 2018-12-14 09:52:15,598 fail2ban.filter [21897]: INFO [postfix-flood-attack] Found 114.223.211.55 - 2018-12-14 09:52:15 2018-12-14 09:52:16,485 fail2ban.filter [21897]: INFO [postfix-flood-attack] Found 114.223.211.55 - 2018-12-14 09:52:16 2018-12-14 09:52:20,864 fail2ban.filter [21897]: INFO [postfix-flood-attack] Found 114.223.211.55 - 2018-12-14 09:52:20 2018-12-14 09:52:21,601 fail2ban.filter [21897]: INFO [postfix-flood-attack] Found 114.223.211.55 - 2018-12-14 09:52:21 2018-12-14 09:52:22,102 fail2ban.filter [21897]: INFO [postfix-flood-attack] Found 114.223.211.55 - 2018-12-14 09:52:22 2018-12-14 09:52:22,544 fail2ban.actions [21897]: NOTICE [postfix-flood-attack] Ban 114.223.211.55 我也可以检查我的iptables。 sudo iptables -L 输出: Chain f2b-postfix (1 references) target prot opt source destination REJECT all -- 195.140.231.114.broad.nt.js.dynamic.163data.com.cn anywhere reject-with icmp-port-unreachable RETURN all -- anywhere anywhere 这表明fail2ban已设置了一个iptables规则,拒绝195.140.231.114中的连接。宽阔的新界。js。动态163data。通用域名格式。cn是垃圾邮件发送者使用的主机名。 如果要手动阻止IP地址,请运行以下命令。将12.34.56.78替换为要阻止的IP地址。 sudo iptables -I INPUT -s 12.34.56.78 -j DROP 如果使用UFW(iptables前端),则运行 sudo ufw insert 1 deny from 12.34.56.78 to any 如何阻止未能通过后缀检查的重复发件人 一些垃圾邮件发送者使用自动化工具发送垃圾邮件。他们忽略后缀拒绝消息并继续发送垃圾邮件。例如,有时我可以在Postfix摘要报告中看到以下消息。 504 5.5.2 : Helo command rejected: need fully-qualified hostname; from=<[email protected]> to=<[email protected]> proto=ESMTP helo= (total: 1) 1 185.191.228.36 504 5.5.2 : Helo command rejected: need fully-qualified hostname; from=<[email protected]> to=<[email protected]> proto=ESMTP helo= (total: 1) 1 185.191.228.36 504 5.5.2 : Helo command rejected: need fully-qualified hostname; from=<[email protected]> to=<[email protected]> proto=ESMTP helo= (total: 1) 1 185.191.228.36 504 5.5.2 : Helo command rejected: need fully-qualified hostname; from=<[email protected]> to=<[email protected]> proto=ESMTP helo= (total: 1) 1 185.191.228.36 504 5.5.2 : Helo command rejected: need fully-qualified hostname; from=<[email protected]> to=<[email protected]> proto=ESMTP helo= (total: 1) 1 185.191.228.36 504 5.5.2 : Helo command rejected: need fully-qualified hostname; from=<[email protected]> to=<[email protected]> proto=ESMTP helo= (total: 1) 此垃圾邮件发送者继续发送垃圾邮件,忽略后缀拒绝消息:Helo命令拒绝:需要完全限定的主机名。为了阻止这种行为,我们还可以通过在/etc/Fail2ban/jail中添加以下行来使用Fail2ban。本地文件。 [postfix] enabled = true maxretry = 3 bantime = 1h filter = postfix logpath = /var/log/mail.log [postfix]监狱将使用Fail2ban附带的内置过滤器(/etc/Fail2ban/filter.d/postfix.conf)。保存并关闭文件。然后重启Fail2ban。 sudo systemctl restart fail2ban 现在,垃圾邮件发送者将不得不等待1个小时,然后再次攻击您的邮件服务器。 iRedMail用户的额外提示 iRedMail会自动使用后缀配置Postscreen。默认情况下,Postscreen中有一个pregreet测试来检测垃圾邮件。正如您可能已经知道的,在SMTP协议中,接收SMTP服务器应始终在发送SMTP服务器声明其主机名之前进行声明。一些垃圾邮件发送者违反此规则,并在接收SMTP服务器之前声明其主机名。 有时我可以在/var/log/mail中看到以下几行。日志文件,指示此发件人首先声明其主机名。这个垃圾邮件发送者只是想用无休止的连接攻击我的邮件服务器,但无意发送任何电子邮件。EHLO主机名ylmf pc清楚地表明,这些连接来自受损的家庭电脑。(ylmf是已不存在的中文Linux发行版的首字母缩写:雨林木风.) PREGREET 14 after 0.22 from [121.226.63.86]:64689: EHLO ylmf-pc/r/n PREGREET 14 after 0.24 from [121.232.8.131]:55705: EHLO ylmf-pc/r/n PREGREET 14 after 0.24 from [114.232.9.57]:62783: EHLO ylmf-pc/r/n iRedMail附带了一个fail2ban规则来过滤此类恶意活动。您可以在/etc/fail2ban/filter中看到以下行。d/后缀。iredmail。conf文件。 PREGREET .* from /[<HOST>/]:.* EHLO ylmf-pc 但是我认为这个过滤器的默认工作时间(1小时)太低了。打开/etc/fail2ban/jail。本地文件,并添加一个自定义的bantime参数,如下所示。 [postfix-iredmail] enabled = true max-retry = 1 bantime = 24h filter = postfix.iredmail logpath = /var/log/mail.log 我将bantime值设置为24小时,因为发件人显然正在使用受损的家用电脑。保存并关闭文件。重新启动故障2以使更改生效。 sudo systemctl restart fail2ban 运行本地DNS解析程序以加快DNS查找 正如您所见,Postfix需要查找DNS记录,以便分析每个SMTP对话框。要加快DNS查找,可以按照以下教程运行本地DNS解析器。 在Debian上运行自己的绑定DNS解析器 在Ubuntu 18.04上运行你自己的绑定DNS解析器 在Ubuntu 20.04上运行你自己的绑定DNS解析器 在CentOS/RHEL上运行自己的绑定DNS解析程序 大多数DNS黑名单都有查询限制。运行自己的本地DNS解析器来缓存DNS记录可以帮助您保持在查询限制之下。 下一步 我希望这7个后缀反垃圾邮件措施能帮助你阻止垃圾邮件。您可能还希望部署SpamAssassin等内容过滤器,以更好地检测垃圾邮件。 在Debian/Ubuntu上使用Postfix和SpamAssassin内容过滤器阻止垃圾邮件 在CentOS/RHEL上设置SpamAssassin以阻止垃圾邮件 和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?

    2022.03.24 浏览:1133
  • 如何使用Nginx在iRedMail中托管多个邮件域

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

    2022.03.24 浏览:865
  • 使用Postfix交通地图,Relayhost地图可灵活发送电子邮件

    在之前的教程中,我们讨论了如何使用iRedMail或Modoboa快速设置功能齐全的邮件服务器,还学习了如何使用Postfix SMTP服务器设置SMTP中继,以绕过端口25阻塞或IP黑名单。但是,您可能不想将整个电子邮件服务器设置为使用中继主机。我们可以配置Postfix传输映射和中继映射,以便通过中继主机发送一些电子邮件,其他电子邮件直接发送给收件人。 有许多SMTP中继服务。在本教程中,我使用Sendinblue,它允许您每月免费发送9000封电子邮件。SMTP中继服务保持良好的IP声誉。它们会阻止坏的发件人,并增加好的发件人,因此使用SMTP中继服务将增加访问收件箱的机会。 如何使用Postfix运输地图 传输映射定义了从收件人地址到传输方法的映射。默认情况下,Postfix中transport_maps参数的值未设置,可以通过以下方式进行检查: postconf transport_maps 样本输出: transport_maps = iRedMail和Modoboa使用MySQL/MariaDB数据库存储交通地图。如果使用iRedMail设置邮件服务器,则输出应如下所示: transport_maps = proxy:mysql:/etc/postfix/mysql/transport_maps_user.cf proxy:mysql:/etc/postfix/mysql/transport_maps_domain.cf 如果使用Modoboa设置邮件服务器,则输出应如下所示: transport_maps = proxy:mysql:/etc/postfix/sql-transport.cf proxy:mysql:/etc/postfix/sql-spliteddomains-transport.cf transport_将参数点映射到一个或多个transport lookup表。您可以编辑后缀主配置文件。 sudo nano /etc/postfix/main.cf 并通过在文件末尾添加以下行来设置值。/etc/postfix/transport文件将包含查找表。 transport_maps = hash:/etc/postfix/transport 如果使用iRedMail,可以找到transport_maps参数并将该值设置为 transport_maps = hash:/etc/postfix/transport proxy:mysql:/etc/postfix/mysql/transport_maps_user.cf proxy:mysql:/etc/postfix/mysql/transport_maps_domain.cf 如果使用Modoboa,可以找到tranport_maps参数,并将该值设置为: transport_maps = hash:/etc/postfix/transport proxy:mysql:/etc/postfix/sql-transport.cf proxy:mysql:/etc/postfix/sql-spliteddomains-transport.cf 查找表可以是文件,也可以是MySQL/MariaDB数据库表的形式。将按指定顺序搜索查找表,直到找到匹配项。 保存并关闭后缀主配置文件。接下来,我们需要创建查找表文件。 sudo nano /etc/postfix/transport 在这个文件中,我们可以定义从收件人地址到传输方法的映射。例如,我发现很多。pl(波兰)域正在使用一个特定的黑名单来阻止我的邮件服务器的IP地址。我可以在此文件中添加以下行,以便将电子邮件发送到。pl域将通过Sendinblue中继。 .pl relay:[smtp-relay.sendinblue.com]:587 有些人发现很难进入微软邮箱(hotmail.com、outlook.com等)的收件箱。你的电子邮件很可能会被放入垃圾邮件文件夹。嗯,你可以尝试使用Sendinblue向Microsoft邮箱用户发送电子邮件。Sendinblue甚至允许您查看收件人是否打开或单击了您电子邮件中的链接。所以我在文件中放了以下几行。 /.*@hotmail.*/i relay:[smtp-relay.sendinblue.com]:587 /.*@outlook.*/i relay:[smtp-relay.sendinblue.com]:587 /.*@live.*/i relay:[smtp-relay.sendinblue.com]:587 /.*@msn.*/i relay:[smtp-relay.sendinblue.com]:587 如果您想使用中继主机向特定收件人发送电子邮件,但直接向同一域中的所有其他收件人发送电子邮件,则可以添加如下行。 [email protected] relay:[smtp-relay.sendinblue.com]:587 如果某个SMTP服务器不使用默认的SMTP端口25,而是使用其他端口(如2525)来接收传入的电子邮件,则可以添加以下行 example.com        smtp:[mail.example.com]:2525 在这个文件中添加自己的域名是一个很好的做法,如下所示。 your-domain.com    local 这告诉Postfix,发送到您自己域的电子邮件应该在本地发送。这是规范域的默认行为。如果邮件服务器有多个虚拟域,则应添加所有虚拟域。 your-domain1.com         local your-domain2.com local 如果您只在文件中添加以下两行,而不添加其他行,这将使所有电子邮件(发送到您自己域的电子邮件除外)通过中继主机发送。星号(*)是代表任何电子邮件地址的通配符。 your-domain.com    local * relay:[smtp-relay.sendinblue.com]:587 我们还可以进行以下配置,这意味着发送到您自己域的电子邮件将在本地传递。发送到gmail的电子邮件。com通常通过执行MX查找来发送,所有其他电子邮件都通过中继主机发送。 your-domain.com    local gmail.com smtp * relay:[smtp-relay.sendinblue.com]:587 保存并关闭文件。然后运行以下命令来构建索引文件。 sudo postmap /etc/postfix/transport 重新启动Postfix以使更改生效。 sudo systemctl restart postfix 发送方相关中继映射 传输映射定义了从收件人地址到传输方法的映射。如果要定义从发送方地址到中继主机的映射,请使用发送方依赖的中继映射参数。默认情况下,其值为空,如下所示: postconf sender_dependent_relayhost_maps 输出: sender_dependent_relayhost_maps = iRedMail使用MySQL/MariaDB数据库存储依赖于发件人的relayhost映射。如果使用iRedMail设置邮件服务器,则输出应如下所示: sender_dependent_relayhost_maps = proxy:mysql:/etc/postfix/mysql/sender_dependent_relayhost_maps.cf 发送方依赖关系将参数点映射到一个或多个查找表。您可以编辑后缀主配置文件。 sudo nano /etc/postfix/main.cf 并通过在文件末尾添加以下行来设置值。/etc/postfix/relay_by_sender文件将包含查找表。 sender_dependent_relayhost_maps = hash:/etc/postfix/relay_by_sender 如果使用iRedMail,可以找到sender_dependent_relayhost_maps参数,并将该值设置为 sender_dependent_relayhost_maps = hash:/etc/postfix/relay_by_sender proxy:mysql:/etc/postfix/mysql/sender_dependent_relayhost_maps.cf 查找表可以是文件,也可以是MySQL/MariaDB数据库表的形式。将按指定顺序搜索查找表,直到找到匹配项。 保存并关闭后缀主配置文件。接下来,我们需要创建查找表文件。 sudo nano /etc/postfix/relay_by_sender 添加如下规则,这将使从[email ;protected]发送的电子邮件通过右侧指定的中继主机发送。 [email protected] [smtp-relay.sendinblue.com]:587 假设你有一个Linux服务器,它有两个网站,每个网站都有自己的邮件服务器,运行在两个不同的主机上,那么你可以添加以下两行代码,让每个网站使用自己的邮件服务器。 domain1.com                     [mail.domain1.com]:587 domain2.com [mail.domain2.com]:587 保存并关闭文件。然后构建索引文件。 sudo postmap /etc/postfix/relay_by_sender 重新启动Postfix以使更改生效。 sudo systemctl restart postfix 设置SMTP身份验证 现在我们需要设置SMTP身份验证,以便Postfix SMTP客户端可以使用中继主机。编辑后缀主配置文件。 sudo nano /etc/postfix/main.cf 在该文件末尾添加以下行。/etc/postfix/sasl_密码将包含用户名和密码。 # outbound relay configurations smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_sasl_security_options = noanonymous smtp_tls_security_level = may header_size_limit = 4096000 如果您已经设置了relayhost参数,那么我建议像下面这样给它一个空值,因为我们现在使用的是传输映射和依赖于发送方的relayhost映射。 relayhost = 保存并关闭文件。然后创建/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 测试 现在,您可以向“传输映射”中定义的收件人发送测试电子邮件,或从“依赖发件人的relayhost映射”中指定的地址发送电子邮件。然后检查邮件日志(/var/log/mail.log或/var/log/maillog),看看它是否工作。 请注意,如果您使用的是第三方SMTP中继服务,如Sendinblue,则可能需要验证帐户中的域名,并编辑SPF和DKIM记录。 故障排除 错误#1 如果您的电子邮件未送达,而您在邮件日志(/var/log/maillog)中发现以下消息, Relay access denied (in reply to RCPT TO command)) 然后,您可能需要编辑/etc/postfix/sasl_passwd文件,并删除主机名后面的端口号,如下所示。 smtp-relay.sendinblue.com  smtp_username:smtp_password 保存并关闭文件。然后再次构建索引文件。 sudo postmap /etc/postfix/sasl_passwd 重新启动Postfix以使更改生效。 sudo systemctl restart postfix 现在,您可以刷新电子邮件队列(尝试发送以前的电子邮件)。 sudo postqueue -f 错误#2 请注意,发件人依赖关系主机映射不支持特殊关键字:smtp、本地等。如果在后缀日志中看到以下错误,则表示您使用了smtp关键字。 Host or domain name not found. Name service error for name=smtp type=A: Host not found 额外提示:smtp_回退_中继 可以在后缀中指定回退中继主机。这样,如果无法到达SMTP目标(没有MX记录,没有A记录)或主中继主机处于脱机状态,Postfix将使用回退中继主机。 编辑主后缀配置文件。 sudo nano /etc/postfix/main.cf 在此文件中添加以下行。更换二次泵。relayhost。com与实际的relayhost名称。此中继主机可以来自Sendinblue或任何其他SMTP中继服务。 smtp_fallback_relay = [secondary.relayhost.com]:587 保存并关闭文件。然后,您应该编辑/etc/postfix/sasl_passwd文件,并像上面那样为回退中继主机添加SMTP凭据。最后,重新启动Postfix以使更改生效。 请注意,如果SMTP目的地使用greylisting临时拒绝电子邮件,那么您的Postfix SMTP服务器也将使用回退中继主机。 具有虚拟邮箱的每用户中继规则 假设你已经在Zoho这样的第三方服务上设置了商业电子邮件。现在你有了一个使用虚拟邮箱的自托管电子邮件服务器。你想在Zoho上保留旧的电子邮件地址,但在你自己的电子邮件服务器上创建新的电子邮件地址。在这种情况下,您需要创建每个用户的中继规则,以便将发送到旧电子邮件地址的电子邮件发送到Zoho邮件服务器。 编辑后缀主配置文件。 sudo nano /etc/postfix/main.cf 找到virtual_mailbox_maps参数,并将hash:/etc/postfix/transport添加到值字段。 virtual_mailbox_maps = hash:/etc/postfix/transport proxy:mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf, proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf 保存并关闭文件。然后在/etc/postfix/transport文件中,可以为旧电子邮件地址定义中继规则,如下所示。(注意:您也可以使用中继关键字而不是smtp。在这种情况下,它们都是正确的。) [email protected] smtp:[mx.zoho.com]:25 [email protected] smtp:[mx.zoho.com]:25 [email protected] smtp:[mx.zoho.com]:25 保存并关闭文件。然后为/etc/postfix/transport文件构建哈希表。 sudo postmap /etc/postfix/transport 然后重新启动Postfix。 sudo systemctl restart postfix 收尾 我希望本教程能帮助您使用后缀传输映射和依赖发件人的relayhost映射。和往常一样,如果你觉得这篇文章有用,订阅我们的免费时事通讯,获取更多提示和技巧。当心?

    2022.03.24 浏览:510
  • 在Debian上从头开始构建电子邮件服务器——基本的后缀设置

    为什么要运行自己的电子邮件服务器?也许你有一个需要向用户发送电子邮件的网站,或者你想将电子邮件存储在自己的服务器上以保护隐私。然而,构建自己的电子邮件服务器可能会让人头疼,因为有太多软件组件需要正确安装和配置。为了让这段旅程变得简单,我将创建一个关于如何在Debian上构建自己的电子邮件服务器的教程系列。 我有信心地说,这是关于在互联网上从头开始构建电子邮件服务器的最好、最全面的教程系列。你不仅会有一个工作的电子邮件服务器,而且你会更好地了解电子邮件的工作原理。本系列教程分为14个部分。 设置基本的Postfix SMTP服务器 设置Dovecot IMAP服务器和TLS加密 使用PostfixAdmin创建虚拟邮箱 创建SPF和DKIM记录以通过垃圾邮件过滤器 创建DMARC记录以保护您的域声誉 设置Roundcube Webmail(尚未发布) 7个有效的建议,防止你的电子邮件被标记为垃圾邮件 用后缀阻止垃圾邮件(尚未发布) 设置OpenDMARC以阻止电子邮件欺骗(尚未发布) 使用SpamAssassin阻止垃圾邮件(尚未发布) 在Debian邮件服务器上设置Amavis和ClamAV以扫描病毒(尚未发布) 如何使用自托管VPN服务器保护电子邮件服务器免受黑客攻击 (可选)在Postfix中启用并配置Postscreen以阻止垃圾邮件 (可选)如何在PostfixAdmin中托管多个邮件域(尚未发布) 我知道这似乎是一项非常艰巨的任务。然而,基于你想要实现的目标,你可能不需要遵循所有这些目标。我的文章很容易阅读,所以如果你花些时间来阅读,你就会有一个工作的电子邮件服务器。 提示:如果你不想从头开始构建一个电子邮件服务器,这是一个漫长而乏味的过程,那么你可以使用iRedMail快速轻松地建立一个功能齐全的邮件服务器。 本文是本系列教程的第1部分。您将学习如何设置非常基本的Postfix SMTP服务器,也称为MTA(邮件传输代理)。完成本文后,您应该能够在自己的电子邮件服务器上使用自己的电子邮件域发送和接收电子邮件。它在Debian 10和Debian 11服务器上进行了测试。 关于Postfix SMTP服务器 Postfix是最先进的邮件传输代理(MTA),又名SMTP服务器,它有两个用途。 传出电子邮件:它负责将电子邮件从邮件客户端/邮件用户代理(MUA)传输到远程SMTP服务器,如Mozilla Thunderbird和Microsoft Outlook。 接收电子邮件:它还用于接收来自其他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注册了我的域名,因为价格很低,他们给你一辈子免费的隐私保护。 第2步:配置邮件服务器主机名 我假设你的Debian服务器上有一个sudo用户。以root用户身份在服务器上运行以下命令以安装sudo。 apt install sudo 然后创建一个新用户并将其添加到sudo组。 adduser username adduser username sudo 接下来,切换到新用户。 su - username 默认情况下,Postfix在与其他MTA通信时使用服务器的主机名来标识自身。主机名可以有两种形式: 一个字 FQDN(完全限定域名) 单字形式主要用于个人电脑。你的Linux笔记本电脑可能被命名为Linux、debian、ubuntu等。 FQDN(完全限定域名)通常用于面向Internet的服务器,我们应该在邮件服务器上使用FQDN。它由两部分组成:节点名和域名。例如,邮件。利努克斯宝贝。com是一个FQDN。mail是节点名linuxbabe。com是域名。FQDN将出现在smtpd横幅中。如果您的Postfix未在smtpd横幅中提供FQDN,则某些MTA会拒绝邮件。一些MTA甚至会查询DNS,查看smtpd横幅中的FQDN是否解析为邮件服务器的IP。 通过SSH登录服务器并输入以下命令以查看服务器主机名的FQDN格式。 hostname -f 如果Debian服务器还没有FQDN,可以使用hostnamectl设置FQDN。 sudo hostnamectl set-hostname your-fqdn 邮件服务器的常见FQDN是mail。实例通用域名格式。你需要换个例子。使用你的真实域名。然后注销并重新登录,在命令提示下查看此更改。要注销服务器,请运行exit命令。 exit 步骤3:为邮件服务器创建DNS记录 你需要去你的DNS托管服务(通常是你的域名注册商,比如NameCheap)设置DNS记录。 在本教程中,我们将为邮件服务器创建3个DNS记录。 MX记录:邮件交换记录 A记录(和AAAA记录):地址记录 PTR记录:指针记录 还有其他DNS记录用于完整的邮件服务器设置。我们将在本系列教程的后面部分讨论它们。 邮件交换记录 MX记录告诉其他MTA您的邮件服务器正在发送邮件。实例com接受你域名的电子邮件。 Record Type Name Mail Server Priority MX @ mail.linuxbabe.com 0 MX主机的通用名称是mail。你的地盘。通用域名格式。您可以指定多个MX记录,并为邮件服务器设置优先级。数字越小,电子邮件发送的优先级就越高。这里我们只使用一条MX记录,并将0设置为优先级值(0~65535)。 请注意,当您创建MX记录时,您应该在名称字段中输入@或您的apex域名(example.com),如下所示。apex域名是没有任何子域的域名。 记录 A记录将FQDN映射到IP地址。您需要创建一个记录,以便其他SMTP服务器可以将邮件服务器的主机名(mail.example.com)解析为IP地址。 Record Type Name value A mail <IP-address> AAAA记录 如果您的服务器具有公共IPv6地址,则还需要为邮件添加AAAA记录。实例通用域名格式。 Record Type Name value AAAA mail <IPv6-address> 提示:如果使用Cloudflare DNS服务,则在为邮件创建和AAAA记录时不应启用CDN(代理)功能。实例通用域名格式。Cloudflare不支持SMTP或IMAP代理。 PTR记录 指针记录或PTR记录将IP地址映射到FQDN。它是A记录的对应项,用于反向DNS(RDN)查找。它会告诉其他MTA你真的是这个IP地址的所有者或管理者。 使用PTR记录反向解析IP地址有助于阻止垃圾邮件发送者。如果你的IP地址没有PTR记录,许多MTA会拒绝电子邮件。即使他们没有拒绝邮件,你仍然应该为你的邮件服务器设置一个PTR记录,这样你的邮件更有可能进入收件人的收件箱,而不是垃圾邮件文件夹。 要检查PTR记录中的IP地址,可以使用以下命令。(在Debian服务器上,可以使用sudo apt install bind9 utils安装dig实用程序)。 dig -x IP_Address +short 或 host IP_Address PTR记录不由您的域注册器管理。它由提供IP地址的组织管理。你的IP地址是从你的主机提供商那里获得的,而不是从你的域名注册商那里获得的,所以你必须在主机提供商的控制面板中为你的IP地址设置PTR记录。它的值应该是邮件服务器的主机名:mail。实例通用域名格式。如果您的服务器有一个公共IPv6地址,那么也为您的IPv6地址添加一个PTR记录。 要编辑Kamatera VP的反向DNS记录,请登录Kamatera客户端区域,然后打开支持票证,告诉他们为服务器IP地址添加PTR记录,以将IP地址指向邮件。你的领域。通用域名格式。你可能会想,这并不方便,但这是为了让垃圾邮件发送者远离平台,因此像我们这样的合法电子邮件发送者将拥有良好的IP声誉。 注意:Gmail实际上会检查PTR记录中指定的主机名的A记录。如果主机名解析为相同的IP地址,Gmail将接受您的电子邮件。否则,它将拒绝您的电子邮件。 第4步:在Debian服务器上安装Postfix SMTP服务器 在Debian服务器上,运行以下两个命令。 sudo apt-get update sudo apt-get install postfix -y 系统将要求您为邮件配置选择一种类型。通常,您需要选择第二种类型:Internet站点。 无配置意味着安装过程不会在/etc/postfix/main中配置任何参数。cf文件。 互联网站点意味着使用Postfix向其他MTA发送电子邮件,并接收来自其他MTA的电子邮件。 使用智能主机上网意味着使用postfix接收来自其他MTA的电子邮件,但使用另一个智能主机将电子邮件转发给收件人。 卫星系统意味着使用智能主机发送和接收电子邮件。 仅本地意味着电子邮件仅在本地用户帐户之间传输。 接下来,输入系统邮件名称的域名,即@symbol后面的域名。例如,我的电子邮件地址是[email&#160;protected],所以我输入了linuxbabe。com的系统邮件名称。此域名将附加到未指定域名的地址。请注意,如果您输入一个子域,如mail。实例com,您将能够接收发送给@mail的电子邮件。实例com地址,但无法接收发送给@example的电子邮件。com地址。 安装后,Postfix将自动启动,并显示/etc/Postfix/main。将生成cf文件。现在我们可以使用以下命令检查后缀版本: postconf mail_version 在Debian 11 bullseye上,后缀版本是3.5.6。 mail_version = 3.5.6 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 步骤5:在防火墙中打开TCP端口25(入站) 入站TCP端口25需要打开,以便Postfix可以接收来自其他SMTP服务器的电子邮件。默认情况下,Debian不启用防火墙。运行以下命令安装UFW防火墙。 sudo apt install ufw 然后使用以下命令允许SSH通信。 sudo ufw allow 22/tcp 如果您的SSH服务器正在使用另一个端口,如6543,则运行以下命令以允许防火墙中的SSH通信。 sudo ufw allow 6543/tcp 接下来,启用UFW防火墙。 sudo ufw enable 现在,我们可以使用以下命令打开TCP端口25(入站)。 sudo ufw allow 25/tcp 然后用在线端口扫描仪扫描邮件服务器上打开的端口。输入邮件服务器的公共IP地址,然后选择扫描所有公共端口。 从上面的屏幕截图可以看到,TCP端口25在我的邮件服务器上是打开的。 步骤6:检查TCP端口25(出站)是否被阻止 出站TCP端口25需要打开,以便Postfix可以向其他SMTP服务器发送电子邮件。出站TCP端口25由主机提供商控制,我们可以安装telnet实用程序来检查它是否打开或被阻止。 sudo apt install telnet 在邮件服务器上运行以下命令。 telnet gmail-smtp-in.l.google.com 25 如果它没有被阻止,你会看到如下消息,这表明SMTP连接已成功建立到Gmail。(提示:输入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(出站)被阻止,您将看到如下内容,这表明无法建立SMTP连接。 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,您将无法发送电子邮件。 第7步:发送测试电子邮件 事实上,我们现在可以通过命令行发送和接收电子邮件。如果Debian服务器有一个名为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等其他电子邮件地址发送电子邮件,那么您可以使用以下命令检查邮件日志(/var/log/mail.log)。 sudo tail -n 20 /var/log/mail.log 这会告诉tails输出邮件的最后20行。日志文件。如果你愿意的话,你可以换20到40。 例如,有些人可能会在邮件中看到以下几行。日志文件。 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地址的组织管理。) 您还可以使用命令行文本编辑器(如VIM)打开邮件日志(/var/log/mail.log),VIM可以通过安装 sudo apt install vim 然后打开邮件。登录VIM。 sudo vim /var/log/mail.log 要进入此文件的底部,请按大写锁定键,然后按G。要退出文件,请按大写锁定键切换回小写字母模式,然后输入:q并按enter。 第8步:使用邮件程序发送和阅读电子邮件 现在,让我们安装一个命令行MUA(邮件用户代理)。 sudo apt-get install mailutils 要发送电子邮件,请键入 mail -a FROM:your-account@example.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退出邮件。 第8步:如何增加附件大小限制 默认情况下,附件的大小不能超过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)。在Debian上,默认值设置为0,这一点可以通过 postconf | grep mailbox_size_limit 输出: mailbox_size_limit = 0 这意味着邮箱没有大小限制,这很好。 重新启动Postfix以使更改生效。 sudo systemctl restart postfix 从邮件服务器发送带有大附件的电子邮件时,还应注意接收服务器的附件大小限制。例如,您不能向Gmail地址发送大于25MB的附件。 第9步:设置后缀主机名 默认情况下,Postfix SMTP服务器使用操作系统的主机名。但是,操作系统的主机名可能会发生变化,因此直接在Postfix配置文件中设置主机名是一种好的做法。使用命令行文本编辑器(如Nano)打开Postfix主配置文件。 sudo nano /etc/postfix/main.cf 找到myhostname参数并设置邮件。实例com作为价值。不建议使用apex域示例。com作为我的主机名。从技术上讲,您可以使用apex域,但在本教程系列的后续部分中,它会产生问题。 myhostname = mail.example.com 保存并关闭文件。(要在Nano文本编辑器中保存文件,请按Ctrl+O,然后按Enter确认。要退出,请按Ctrl+X。)重新启动Postfix以使更改生效。 sudo systemctl restart postfix 一旦在Postfix中设置了myhostname,OS主机名就不再重要了。您可以将OS主机名更改为您喜欢的任何主机名。 第10步:创建电子邮件别名 在生产环境中操作邮件服务器时,需要配置某些别名。您可以在/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]的电子邮件将被发送到[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 如果不知道服务器是否有公共IPv6地址,只需运行以下命令。 ping 2607:f8b0:4005:808::2005 此命令尝试ping Gmail的IPv6地址。如果ping成功,那么您的服务器可以使用IPv6。如果ping失败,则服务器无法使用IPv6。按Ctrl+C停止ping。 升级后缀 如果您运行sudo-apt-update命令,那么sudo-apt-upgrade将在将来进行升级,并且系统将升级Postfix,那么可能会提示您再次选择Postfix的配置类型。这一次,您应该选择“无配置”以保持当前配置文件不变。 下一步 恭喜!现在你有了一个基本的Postfix电子邮件服务器并开始运行。您可以使用命令行发送纯文本电子邮件和阅读收到的电子邮件。在本系列教程的下一部分中,我们将学习如何安装Dovecot IMAP服务器并启用TLS加密,这将允许我们使用Mozilla Thunderbird等桌面邮件客户端发送和接收电子邮件。 第2部分:在Debian&amp;上安装Dovecot IMAP服务器;启用TLS加密 和往常一样,如果你觉得这篇文章有用,订阅我们的时事通讯,获取更多提示和窍门。当心?

    2022.03.24 浏览:726
  • 第2部分:在Debian和#038上安装Dovecot IMAP服务器;启用TLS加密

    这是在Debian从头开始教程系列上构建自己的安全电子邮件服务器的第2部分。在第1部分中,我们向您展示了如何设置基本的Postfix SMTP服务器。在本教程中,我们将配置电子邮件服务器,以便使用Mozilla Thunderbird或Microsoft Outlook等桌面电子邮件客户端接收和发送电子邮件。 为了能够使用桌面电子邮件客户端发送电子邮件,我们需要在Postfix中启用提交服务。 要使用桌面电子邮件客户端接收电子邮件,我们可以在Debian服务器上安装一个名为Dovecot的开源IMAP服务器。 为了加密我们的通信,我们可以安装由Let's encrypt颁发的免费TLS证书。 步骤1:打开防火墙中的端口 默认情况下,Debian不启用防火墙。如果已启用UFW防火墙,则需要运行以下命令以打开防火墙中与电子邮件相关的端口。 sudo ufw allow 80,443,587,465,143,993/tcp 如果您使用POP3获取电子邮件(我个人不这么做),那么也可以打开端口110和995。 sudo ufw allow 110,995/tcp 步骤2:使用TLS证书保护电子邮件服务器流量 当我们配置桌面电子邮件客户端时,最好启用TLS加密,以防止黑客窥探我们的电子邮件。我们可以很容易地从Let's Encrypt获得免费的TLS证书。发出以下命令,从默认软件存储库在Debian服务器上安装Let's Encrypt client(certbot)。 sudo apt update sudo apt dist-upgrade sudo apt install certbot 如果您还没有运行web服务器,我建议您安装一个(Apache或Nginx),因为使用web服务器比使用其他方法更容易获取和安装TLS证书。在后面的教程中,我将向您展示如何设置webmail,这需要运行web服务器。 如果选择使用Apache web服务器,则需要安装Apache插件。(如果系统上尚未安装Apache web服务器,则以下命令将安装该服务器。) sudo apt install python3-certbot-apache 如果选择使用Nginx web服务器,请安装Nginx插件。(如果系统上尚未安装Nginx web服务器,则以下命令将安装该服务器。) sudo apt install python3-certbot-nginx 使用Apache Web服务器获取TLS证书 我们为邮件创建一个Apache虚拟主机。实例在获得TLS证书之前,让我们加密TLS证书。创建虚拟主机文件: sudo nano /etc/apache2/sites-available/mail.example.com.conf 然后将以下文本粘贴到文件中。 <VirtualHost *:80> ServerName mail.example.com DocumentRoot /var/www/html/ </VirtualHost> 保存并关闭文件。启用此虚拟主机。 sudo a2ensite mail.example.com.conf 然后禁用默认虚拟主机,因为它可能会干扰其他虚拟主机。 sudo a2dissite 000-default 重新加载Apache以使更改生效。 sudo systemctl reload apache2 创建并启用虚拟主机后,运行以下命令以获取Let's Encrypt TLS证书。 sudo certbot certonly -a apache --agree-tos --no-eff-email --staple-ocsp --email [email protected] -d mail.example.com 哪里: certonly:获取TLS证书,但不要将其安装在web服务器上。 -apache:使用apache插件进行身份验证 --同意:同意服务条款。 ——没有EFF电子邮件:不要收到EFF基金会的电子邮件。 --装订ocsp:启用ocsp装订。在TLS连接期间,有效的OCSP响应被钉在服务器提供的证书上。 --电子邮件:输入您的电子邮件地址,用于重要通知和帐户恢复。 -域名,也就是你的邮件服务器主机名。 用实际数据替换红色文本。您应该看到以下内容,这意味着该证书已成功获得。您还可以查看证书存储的目录。 使用Nginx Web服务器获取TLS证书 我们为邮件创建一个Nginx虚拟主机。实例在获得TLS证书之前,让我们加密TLS证书。创建虚拟主机文件: sudo nano /etc/nginx/conf.d/mail.example.com.conf 接下来,将以下文本粘贴到文件中。 server { listen 80; listen [::]:80; server_name mail.example.com; root /var/www/html/; location ~ /.well-known/acme-challenge { allow all; } } 保存并关闭文件。重新加载Nginx以使更改生效。 sudo systemctl reload nginx 创建并启用虚拟主机后,运行以下命令以获取使用Nginx插件加密证书。 sudo certbot certonly -a nginx --agree-tos --no-eff-email --staple-ocsp --email [email protected] -d mail.example.com 哪里: certonly:获取TLS证书,但不要将其安装在web服务器上。 -nginx:使用nginx插件进行身份验证 --同意:同意服务条款。 ——没有EFF电子邮件:不要收到EFF基金会的电子邮件。 --装订ocsp:启用ocsp装订。在TLS连接期间,有效的OCSP响应被钉在服务器提供的证书上。 --电子邮件:输入您的电子邮件地址,用于重要通知和帐户恢复。 -域名,也就是你的邮件服务器主机名。 您应该看到以下内容,这意味着该证书已成功获得。您还可以查看证书存储的目录。 步骤3:在Postfix中启用提交服务 要从桌面电子邮件客户端发送电子邮件,我们需要启用Postfix的提交服务,以便电子邮件客户端可以向Postfix SMTP服务器提交电子邮件。编辑母版。cf文件。 sudo nano /etc/postfix/master.cf 在提交部分,取消注释或添加以下行。请在每个-o之前至少允许一个空格(制表符或空格键)。在后缀配置中,前面的空格字符表示此行是前一行的延续。(默认情况下,提交部分被注释掉。您可以复制以下行并将其粘贴到文件中,这样您就不必手动取消注释或添加新文本。) submission inet n - y - - smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_tls_wrappermode=no -o smtpd_sasl_auth_enable=yes -o smtpd_relay_restrictions=permit_sasl_authenticated,reject -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject -o smtpd_sasl_type=dovecot -o smtpd_sasl_path=private/auth 上述配置启用Postfix的提交守护程序,并需要TLS加密。因此,稍后,我们的桌面电子邮件客户端可以连接到TLS加密中的提交守护程序。提交守护进程监听TCP端口587。STARTTLS用于加密电子邮件客户端和提交守护程序之间的通信。 Microsoft Outlook邮件客户端仅支持通过端口465提交。如果要使用Microsoft Outlook,还需要通过在文件中添加以下行在端口465上启用提交服务。 smtps inet n - y - - smtpd -o syslog_name=postfix/smtps -o smtpd_tls_wrappermode=yes -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 保存并关闭文件。 提示:当电子邮件客户端向SMTP服务器提交电子邮件时,使用SMTP协议。 接下来,我们需要在后缀配置文件中指定TLS证书和私钥的位置。编辑主页。cf文件。 sudo nano /etc/postfix/main.cf 按如下所示编辑TLS参数。记得更换邮件。实例与你的真实主机名通信。 #Enable TLS Encryption when Postfix receives incoming emails smtpd_tls_cert_file=/etc/letsencrypt/live/mail.example.com/fullchain.pem smtpd_tls_key_file=/etc/letsencrypt/live/mail.example.com/privkey.pem smtpd_tls_security_level=may smtpd_tls_loglevel = 1 smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache #Enable TLS Encryption when Postfix sends outgoing emails smtp_tls_security_level = may smtp_tls_loglevel = 1 smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache #Enforce TLSv1.3 or TLSv1.2 smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1 smtpd_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1 smtp_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1 smtp_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1 您的Let’s Encrypt证书和私钥存储在/etc/letsencrypt/live/mail下。实例com/directory。 保存并关闭文件。然后重新启动Postfix。 sudo systemctl restart postfix 如果运行以下命令,您将看到Postfix正在监听端口587和465。 sudo ss -lnpt | grep master 步骤4:安装Dovecot IMAP服务器 输入以下命令,在Debian服务器上安装Dovecot core包和IMAP守护程序包。 sudo apt install dovecot-core dovecot-imapd 如果您使用POP3获取电子邮件,那么还需要安装dovecot-pop3d软件包。 sudo apt install dovecot-pop3d 检查Dovecot版本: dovecot --version 样本输出: 2.3.13 (89f716dc2) 步骤5:启用IMAP/POP3协议 编辑主配置文件。 sudo nano /etc/dovecot/dovecot.conf 添加以下行以启用IMAP协议。 protocols = imap 如果您使用POP3获取电子邮件,那么还可以添加POP3协议。 protocols = imap pop3 保存并关闭文件。 步骤6:配置邮箱位置 默认情况下,Postfix和Dovecot使用mbox格式存储电子邮件。每个用户的电子邮件都存储在一个文件/var/mail/username中。可以运行以下命令来查找邮件假脱机目录。 postconf mail_spool_directory 样本输出: mail_spool_directory = /var/mail 然而,现在你几乎总是想用Maildir格式来存储电子邮件。邮箱位置的配置文件是/etc/dovecot/conf.d/10-mail。形态。 sudo nano /etc/dovecot/conf.d/10-mail.conf 默认配置使用mbox邮件格式。 mail_location = mbox:~/mail:INBOX=/var/mail/%u 将其更改为以下内容,使Dovecot使用Maildir格式。电子邮件将存储在每个用户的主目录下的Maildir目录下。 mail_location = maildir:~/Maildir 保存并关闭文件。然后将dovecot添加到邮件组,以便dovecot可以阅读收件箱。 sudo adduser dovecot mail 第7步:使用Dovecot将电子邮件发送到消息存储 虽然我们将Dovecot配置为以Maildir格式存储电子邮件,但默认情况下,Postfix使用其内置的本地传递代理(LDA)将入站电子邮件移动到消息存储(收件箱、已发送邮件、垃圾邮件、垃圾邮件等),并将以mbox格式保存。 我们需要配置Postfix,通过LMTP协议将传入的电子邮件传递给Dovecot,LMTP协议是SMTP的简化版本,因此传入的电子邮件将由Dovecot以Maildir格式保存。LMTP支持高度可扩展和可靠的邮件系统。它还允许我们使用sieve插件来过滤不同文件夹中的入站消息。 安装Dovecot LMTP服务器。 sudo apt install dovecot-lmtpd 编辑Dovecot主配置文件。 sudo nano /etc/dovecot/dovecot.conf 将lmtp添加到支持的协议中。 protocols = imap lmtp 保存并关闭文件。然后编辑Dovecot 10母版。conf文件。 sudo nano /etc/dovecot/conf.d/10-master.conf 将lmtp服务定义更改为以下内容。注意语法。每个开口支架需要与一个闭合支架配对。 service lmtp { unix_listener /var/spool/postfix/private/dovecot-lmtp { mode = 0600 user = postfix group = postfix } } 保存并关闭文件。 接下来,编辑后缀主配置文件。 sudo nano /etc/postfix/main.cf 在文件末尾添加以下行。第一行告诉Postfix通过Dovecot LMTP服务器将收到的电子邮件发送到本地消息存储。第二行在后缀中禁用SMTPUTF8,因为Dovecot LMTP不支持此电子邮件扩展。 mailbox_transport = lmtp:unix:private/dovecot-lmtp smtputf8_enable = no 保存并关闭文件。 步骤8:配置用户身份验证机制 编辑身份验证配置文件。 sudo nano /etc/dovecot/conf.d/10-auth.conf 取消对以下行的注释。 disable_plaintext_auth = yes 当没有SSL/TLS加密时,它将禁用明文身份验证。然后找到下面一行, #auth_username_format = %Lu 取消注释并将其值更改为%n。 auth_username_format = %n 默认情况下,当Dovecot尝试为用户查找或发送电子邮件时,它使用完整的电子邮件地址。因为在这部分中,我们只设置了规范邮箱用户(使用OS用户作为邮箱用户),所以Dovecot无法找到完整域格式的邮箱用户([email&#160;protected]),所以我们需要设置auth_username_format=%n来删除域部分,然后Dovecot应该能够找到邮箱用户。这也允许我们使用完整的电子邮件地址([email&#160;protected])登录。 接下来,找到下面这行。 auth_mechanisms = plain 这一行只启用普通身份验证机制。登录是您可能希望添加的另一种身份验证机制,以支持旧的电子邮件客户端。 auth_mechanisms = plain login 保存并关闭文件。 步骤9:配置SSL/TLS加密 编辑SSL/TLS配置文件。 sudo nano /etc/dovecot/conf.d/10-ssl.conf 将ssl=yes更改为ssl=required以强制加密。 ssl = required 然后找到下面几行。 ssl_cert = </etc/dovecot/private/dovecot.pem ssl_key = </etc/dovecot/private/dovecot.key 默认情况下,Dovecot使用自签名TLS证书。用以下值替换它们,这些值指定Let's Encrypt TLS证书和私钥的位置。不要遗漏&lt;性格这是必要的。 ssl_cert = </etc/letsencrypt/live/mail.example.com/fullchain.pem ssl_key = </etc/letsencrypt/live/mail.example.com/privkey.pem 找到下面这行。 #ssl_prefer_server_ciphers = no 与客户端密码顺序相比,服务器密码顺序是一种好的做法。因此,请取消对此行的注释,并将值更改为“是”。 ssl_prefer_server_ciphers = yes 下面是一行。 #ssl_min_protocol = TLSv1 将其更改为以下内容以禁用不安全的SSLv3、TLSv1和TLSv1。1.协议。 ssl_min_protocol = TLSv1.2 保存并关闭文件。 步骤10:配置SASL身份验证 编辑以下文件。 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 } } 保存并关闭文件。 保存并关闭以上所有配置文件后,重新启动Postfix和Dovecot。 sudo systemctl restart postfix dovecot 多夫科特将监听端口143(IMAP)和993(IMAPS),如下所示: sudo ss -lnpt | grep dovecot 如果出现配置错误,dovecot将无法重新启动,因此最好使用以下命令检查dovecot是否正在运行。 sudo systemctl status dovecot 步骤11:配置桌面电子邮件客户端 现在打开你的桌面电子邮件客户端,比如Mozilla Thunderbird。进入编辑-&gt;帐户设置-&gt;账户操作-&gt;添加邮件帐户以添加邮件帐户。 在“传入服务器”部分,选择IMAP协议,输入mail。你的领域。com作为服务器名,选择端口143和STARTTLS。选择普通密码作为身份验证方法。 在“发送”部分,选择SMTP协议,输入mail。你的领域。com作为服务器名,选择端口587和STARTTLS。选择普通密码作为身份验证方法。 提示:您还可以将端口993用于IMAP的SSL/TLS加密,将端口465用于SMTP的SSL/TLS加密。您不应该在邮件客户端中使用端口25作为SMTP端口来提交发送的电子邮件。 你现在应该可以连接到自己的电子邮件服务器,也可以通过桌面电子邮件客户端收发电子邮件了! 我们使用本地Unix帐户作为电子邮件地址,正如我们在第1部分中所做的那样。例如,如果Debian服务器上有一个名为user1的用户,那么您就有一个电子邮件地址:[email&#160;protected],该电子邮件地址的密码与user1用户的密码相同。要创建本地Unix帐户,请运行 sudo adduser user1 注意:Dovecot不允许您使用root帐户登录。您需要创建单独的用户帐户。 您可以列出所有可用的邮箱用户,包括: sudo doveadm user '*' 建议在添加用户后重新启动Dovecot,以便Dovecot能够识别新的邮箱用户。 sudo systemctl restart dovecot 故障排除提示 根据经验,当发生错误时,应该始终检查邮件服务器上的邮件日志(/var/log/mail.log)。以下是特定错误和故障排除提示的列表。 无法从邮件客户端登录 如果无法从桌面邮件客户端登录到邮件服务器,请扫描邮件服务器以查找端口(TCP 587、465、143和993)是否打开。请注意,您应该从另一台Linux计算机或服务器上运行以下命令。如果在邮件服务器上运行,则端口将始终显示为打开状态。 sudo nmap mail.example.com 检查Dovecot是否在运行。 systemctl status dovecot 您还可以查看邮件日志(/var/log/mail.log),这可能会给您提供一些线索。如果Dovecot无法启动,则错误可能不会记录到/var/log/mail中。在日志文件中,可以运行以下命令来查看错误。 sudo journalctl -eu dovecot 例如,一些人可能在日记中有以下错误。 doveconf: Fatal: Error in configuration file /etc/dovecot/conf.d/10-master.conf line 78: Unknown setting 大多数情况下,这是一个简单的语法错误,比如缺少一个花括号。打开配置文件,转到指定行并修复错误。 如果在邮件日志中发现以下错误消息 imap-login: Error: Failed to initialize SSL server context: Can't load DH parameters: error:1408518A:SSL routines:ssl3_ctx_ctrl:dh key too small 然后打开Dovecot TLS配置文件。 sudo nano /etc/dovecot/conf.d/10-ssl.conf 在此文件中添加以下行。 ssl_dh = </etc/dovecot/dh.pem 保存并关闭文件。然后使用以下命令生成DH参数文件: sudo openssl dhparam -out /etc/dovecot/dh.pem 4096 重新启动Dovecot以使更改生效。 Cloudflare DNS 正如我在第1部分中所说,如果使用Cloudflare DNS服务,在为邮件服务器的主机名创建DNS记录和AAAA记录时,不应启用CDN(代理)功能。Cloudflare不支持SMTP或IMAP代理。 中继访问被拒绝 如果在尝试从邮件客户端发送电子邮件时看到“中继访问被拒绝”错误,则很可能是将端口25用作邮件客户端中的SMTP端口。正如我刚才所说,在邮件客户端(Mozilla Thunberbird、Microsoft Outlook等)中,您应该使用端口587或465作为SMTP端口来提交发送的电子邮件。端口25应用于SMTP服务器到SMTP服务器的通信。 如果在/var/log/mail中看到以下“中继访问被拒绝”错误。日志文件当试图从其他邮件服务(如Gmail)向您自己的邮件服务器发送电子邮件时,很可能是您的域。com不在$mydestination参数列表中。 NOQUEUE: reject: RCPT from mail-il1-f180.google.com[209.85.166.180]: 454 4.7.1 <[email protected]>: Relay access denied; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<mail-il1-f180.google.com> 您可以通过以下方式显示$mydestination的当前值: postconf mydestination 有些人可能在列表中没有主域名,如下所示: mydestination = $myhostname, localhost.$mydomain, localhost 然后运行以下命令将主域名添加到列表中。 sudo postconf -e "mydestination = example.com, /$myhostname, localhost./$mydomain, localhost" 重新加载后缀以使更改生效。 sudo systemctl reload postfix 用户不存在 如果在邮件日志(/var/log/mail.log)中看到以下错误消息,很可能是您忘记在/etc/dovecot/conf.d/10-auth中设置auth_username_format=%n。conf文件。 mail postfix/lmtp[2256]: 68E00FC1A5: to=, relay=mail.example.com[private/dovecot-lmtp], delay=509, delays=509/0.03/0.03/0.02, dsn=5.1.1, status=bounced (host mail.example.com[private/dovecot-lmtp] said: 550 5.1.1 User doesn't exist: [email protected] (in reply to RCPT TO command)) iOS邮件应用 如果您使用iOS Mail应用程序登录邮件服务器并遇到以下错误。 您可以尝试通过对SMTP和IMAP强制实施SSL加密来修复此问题。 有趣的事实:iOS邮件应用似乎很难在IMAP端口143上支持STARTTLS,但它在提交端口587上支持STARTTLS。 如果您在iOS Mail应用程序中遇到“未提供密码”错误,则可能是您在邮件帐户设置中输入用户名时出错,或者您没有在邮件帐户设置中启用SSL。 无法接收来自Gmail、Hotmail、Yahoo Mail等的电子邮件 如果你无法接收来自Gmail、Hotmail、Yahoo Mail等的电子邮件,以下是可能的原因: 您的MX记录错误,或者尚未传播到Internet。 您的邮件服务器主机名没有DNS A记录,或者尚未传播到Internet。 您的防火墙不允许传入到端口25的连接。也许你的邮件服务器在NAT后面? Postfix没有监听公共IP地址。 检查邮件日志(/var/log/mail.log)以了解Postfix和Dovecot配置中是否存在其他错误。 您可以使用网络工具电子邮件检查器测试是否可以从Internet访问SMTP服务器。只需输入您的域电子邮件地址,然后单击Go按钮。从下面的屏幕截图可以看到,它成功地找到了我的域的MX记录,并且可以从Internet访问我的SMTP服务器。 如果无法从Internet访问SMTP服务器,则前4项中存在问题。如果可以从Internet访问SMTP服务器,但仍然无法接收电子邮件,请检查邮件日志(/var/log/mail.log),以了解Postfix和Dovecot配置中是否存在任何错误。 步骤12:自动续订TLS证书 您可以创建Cron作业来自动续订TLS证书。只需打开root用户的crontab文件。 sudo crontab -e 如果使用ApacheWeb服务器,请在文件底部添加以下行。 @daily certbot renew --quiet && systemctl reload postfix dovecot apache2 如果您使用的是Nginx web服务器,请添加以下行。 @daily certbot renew --quiet && systemctl reload postfix dovecot nginx 重新加载Postfix、Dovecot和web服务器是使这些程序获取新证书和私钥所必需的。 步骤13:Dovecot自动重启 如果出于任何原因,您的Dovecot进程被终止,您需要运行以下命令来重新启动它。 sudo systemctl restart dovecot 不用手动输入这个命令,我们可以通过编辑Dovecot使Dovecot自动重启。服务系统服务单位。为了覆盖默认的systemd服务配置,我们创建了一个单独的目录。 sudo mkdir -p /etc/systemd/system/dovecot.service.d/ 然后在这个目录下创建一个文件。 sudo nano /etc/systemd/system/dovecot.service.d/restart.conf 在文件中添加以下行,这将使Dovecot在检测到故障5秒后自动重新启动。 [Service] Restart=always RestartSec=5s 保存并关闭文件。然后重新加载systemd以使更改生效。 sudo systemctl daemon-reload 要检查这是否有效,请使用以下方法杀死多佛科特: sudo pkill dovecot 然后检查Dovecot的状态。你会发现Dovecot自动重启。 systemctl status dovecot 收尾 我希望本文能帮助您在Debian服务器上设置Postfix和Dovecot。在第3部分中,我将向您展示如何创建虚拟邮箱。 第3部分:PostfixAdmin–在Debian 11/10邮件服务器上创建虚拟邮箱 和往常一样,如果你觉得这篇文章有用,订阅我们的时事通讯,获取更多提示和窍门。当心?

    2022.03.24 浏览:878
  • 第四部分:设立SPF和#038;Debian服务器上带后缀的DKIM

    在完成第1部分和第2部分之后,我们有了一个工作的Postfix SMTP服务器和Dovecot IMAP服务器。我们可以使用桌面电子邮件客户端发送和接收电子邮件。在本教程中,我们将学习如何通过在Debian服务器上设置SPF和DKIM来改进向收件人收件箱的电子邮件传递。 什么是SPF和DKIM记录? SPF和DKIM是DNS中的两种TXT记录,允许您检测电子邮件欺骗,并帮助合法电子邮件发送到收件人的收件箱,而不是垃圾邮件文件夹。如果你的域名被电子邮件欺骗所滥用,那么如果你的电子邮件没有将你添加到通讯簿中,它们很可能会进入收件人的垃圾邮件文件夹。 SPF(发件人策略框架)记录指定允许哪些主机或IP地址代表域发送电子邮件。您应该只允许您自己的电子邮件服务器或ISP的服务器为您的域发送电子邮件。 DKIM(DomainKeys Identified Mail)使用私钥为从您的域发送的电子邮件添加签名。接收SMTP服务器通过使用相应的公钥验证签名,该公钥在域的DNS区域中发布。 步骤1:在DNS中创建SPF记录 在DNS管理界面中,创建一个新的TXT记录,如下所示。 Record Type Name Value TXT @ v=spf1 mx ~all 哪里: TXT表示这是一条TXT记录。 在name字段中输入@以表示apex域(example.com)。 v=spf1表示这是SPF记录,SPF记录版本为spf1。 mx意味着mx记录中列出的所有主机都被允许为您的域发送电子邮件,而所有其他主机都被禁止。 ~all表示来自您域的电子邮件应该只来自SPF记录中指定的主机。来自其他主机的电子邮件将被标记为不可信。可能的替代方案是+all,-all?都是,但很少使用。 -这一切都意味着,从不允许的主机发送的电子邮件应该被拒绝,永远不要进入收件人的收件箱或垃圾邮件文件夹。我见过facebook使用它。但是我们通常不需要这么严格的政策。 有些人可能会认为,这一切都会更好,因为它会拒绝来自不受信任主机的电子邮件。当收件人有两台SMTP服务器,并且主SMTP服务器脱机时,在SPF策略中使用-all可能会导致您自己的电子邮件被拒绝,您的电子邮件将临时存储在备份SMTP服务器上。当主SMTP服务器恢复联机时,电子邮件将从备份SMTP服务器中继到主SMTP服务器。由于您没有在SPF记录中列出收件人的备份SMTP服务器,该电子邮件将被收件人的主SMTP服务器拒绝。所以你应该在SPF策略中使用~all。 您还可以在SPF记录中列出特定的IP地址。 TXT @ v=spf1 mx ip4:12.34.56.78 ~all 请注意,一些DNS管理器要求您用下面的引号将SPF记录包装起来。 TXT @ "v=spf1 mx ~all" 要检查您的SPF记录是否传播到公共互联网,您可以在Linux设备上使用dig实用程序,如下所示。(在Debian上,需要安装bind9 dnsutils包才能使用dig命令:sudo apt install bind9 dnsutils) dig example.com txt txt选项告诉dig我们只想查询txt记录。 您还可以使用dmarcian SPF surveyor来测试SPF记录语法。 步骤2:在Debian服务器上配置SPF策略代理 我们还需要告诉我们的Postfix SMTP服务器检查接收电子邮件的SPF记录。这无助于发送电子邮件,但有助于检测伪造的传入电子邮件。 安装所需的软件包: sudo apt install postfix-policyd-spf-python 然后编辑Postfix主进程配置文件。 sudo nano /etc/postfix/master.cf 在文件末尾添加以下几行,这会告诉Postfix在启动SPF策略守护程序时启动它。 policyd-spf unix - n n - 0 spawn user=policyd-spf argv=/usr/bin/policyd-spf 保存并关闭文件。接下来,编辑后缀主配置文件。 sudo nano /etc/postfix/main.cf 在文件末尾追加以下行。第一行指定后缀策略代理超时设置。以下几行将通过拒绝未经授权的电子邮件和检查SPF记录来限制收到的电子邮件。 policyd-spf_time_limit = 3600 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, check_policy_service unix:private/policyd-spf 保存并关闭文件。然后重新启动Postfix。 sudo systemctl restart postfix 下次,当你收到一封来自有SPF记录的域的电子邮件时,你可以在原始邮件标题中看到SPF检查结果。以下标题表示发件人从授权主机发送电子邮件。 Received-SPF: Pass (sender SPF authorized). 第3步:在Debian服务器上设置DKIM 安装OpenDKIM,这是DKIM发送者身份验证系统的开源实现。 sudo apt install opendkim opendkim-tools 然后将postfix用户添加到opendkim组。 sudo gpasswd -a postfix opendkim 编辑OpenDKIM主配置文件。 sudo nano /etc/opendkim.conf 取消对以下行的注释。 Canonicalization relaxed/simple Mode sv SubDomains no 找到下面这行。 #Nameservers   127.0.0.1 换成 Nameservers 8.8.8.8,1.1.1.1 这告诉OpenDKIM使用8.8.8.8和1.1.1.1来查询DNS记录。最好使用多个名称服务器。如果其中一个失败,另一个仍然可以回答DNS查询。用逗号分隔每个IP地址。 接下来,在文件末尾添加以下行。 # Map domains in From addresses to keys used to sign messages KeyTable refile:/etc/opendkim/key.table SigningTable refile:/etc/opendkim/signing.table # Hosts to ignore when verifying signatures ExternalIgnoreList /etc/opendkim/trusted.hosts # A set of internal hosts whose mail should be signed InternalHosts /etc/opendkim/trusted.hosts 保存并关闭文件。 第4步:创建签名表、密钥表和受信任主机文件 为OpenDKIM创建目录结构 sudo mkdir -p /etc/opendkim/keys 将所有者从root更改为opendkim,并确保只有opendkim用户可以读取和写入keys目录。 sudo chown -R opendkim:opendkim /etc/opendkim sudo chmod go-rw /etc/opendkim/keys 创建签名表。 sudo nano /etc/opendkim/signing.table 将以下行添加到文件中。这会告诉OpenDKIM,如果服务器上的发送者正在使用@example。com地址,则应使用默认标识的私钥对其进行签名_域名。你的领域。通用域名格式。 *@example.com default._domainkey.example.com 保存并关闭文件。然后创建键表。 sudo nano /etc/opendkim/key.table 添加下面一行,它告诉您私钥的位置。 default._domainkey.example.com example.com:default:/etc/opendkim/keys/example.com/default.private 保存并关闭文件。接下来,创建受信任的主机文件。 sudo nano /etc/opendkim/trusted.hosts 将以下行添加到新创建的文件中。这告诉OpenDKIM,如果电子邮件来自本地主机或同一域,则OpenDKIM不应对该电子邮件执行DKIM验证。 127.0.0.1 localhost *.example.com 保存并关闭文件。 步骤5:生成私钥/公钥对 我们需要生成两个密钥: 用于签署发送电子邮件的私钥。 用于接收SMTP服务器以验证DKIM签名的公钥。它将在您的DNS区域中发布,以便接收SMTP服务器可以找到它。 为域创建一个单独的文件夹。 sudo mkdir /etc/opendkim/keys/example.com 使用opendkim genkey工具生成密钥。 sudo opendkim-genkey -b 2048 -d example.com -D /etc/opendkim/keys/example.com -s default -v 上述命令将创建2048位密钥-d(域)指定域-D(directory)指定存储密钥的目录,我们使用默认值作为选择器(-s),也称为名称。执行命令后,私钥将被写入默认值。私有文件和公钥将被写入默认值。txt文件。 使opendkim成为私钥的所有者。 sudo chown opendkim:opendkim /etc/opendkim/keys/example.com/default.private 并更改权限,以便只有opendkim用户具有文件的读写权限。 sudo chmod 600 /etc/opendkim/keys/example.com/default.private 第6步:在DNS记录中发布公钥 显示公钥 sudo cat /etc/opendkim/keys/example.com/default.txt p参数后面的字符串是公钥。 在DNS管理器中,创建一个TXT记录,输入默认值_名称字段中的domainkey。然后返回终端窗口,复制括号中的所有内容,并将其粘贴到DNS记录的值字段中。您需要删除值字段中的所有双引号和空格。如果不删除它们,那么下一步的密钥测试可能会失败。 第7步:测试DKIM键 在Debian服务器上输入以下命令以测试密钥。 sudo opendkim-testkey -d example.com -s default -vvv 如果一切正常,您将在命令输出中看到键OK。 opendkim-testkey: using default configfile /etc/opendkim.conf opendkim-testkey: checking key 'default._domainkey.example.com' opendkim-testkey: key secure opendkim-testkey: key OK 请注意,您的DKIM记录可能需要一些时间才能传播到Internet。根据您使用的域注册器,您的DNS记录可能会立即传播,或者传播可能需要24小时。你可以去https://www.dmarcanalyzer.com/dkim/dkim-check/,输入默认值作为选择器,并输入您的域名以检查DKIM记录传播。 如果在命令输出中看到密钥不安全,请不要惊慌。这是因为您的域名上未启用DNSSEC。DNSSEC是安全DNS查询的安全标准。大多数域名都没有启用DNSSEC。绝对没有必要担心钥匙不安全。你可以继续遵循这个指南。 如果您看到查询超时错误,则表示您的服务器上存在DNS解析问题。您可以再次运行上面的命令,看看它是否有效。如果仍然不起作用,可以在/etc/opendkim中注释掉下面的行。conf文件并重新启动opendkim。服务 TrustAnchorFile /usr/share/dns/root.key 第8步:将Postfix连接到OpenDKIM Postfix可以通过Unix套接字文件与OpenDKIM通信。OpenDKIM使用的默认套接字文件是/run/OpenDKIM/OpenDKIM。sock,如/etc/opendkim所示。conf文件。但Debian附带的postfix SMTP守护程序在chroot监狱中运行,这意味着SMTP守护程序将解析与postfix队列目录(/var/spool/postfix)相关的所有文件名。所以我们需要更改OpenDKIM Unix套接字文件。 创建一个目录来保存OpenDKIM套接字文件,并且只允许OpenDKIM用户和postfix组访问它。 sudo mkdir /var/spool/postfix/opendkim sudo chown opendkim:postfix /var/spool/postfix/opendkim 然后编辑OpenDKIM主配置文件。 sudo nano /etc/opendkim.conf 找到下面这行。 Socket local:/run/opendkim/opendkim.sock 替换为以下行。 Socket local:/var/spool/postfix/opendkim/opendkim.sock 保存并关闭文件。接下来,打开/etc/default/opendkim文件。 sudo nano /etc/default/opendkim 找到下面这行。 SOCKET=local:$RUNDIR/opendkim.sock 换成 SOCKET="local:/var/spool/postfix/opendkim/opendkim.sock" 保存并关闭文件。 接下来,我们需要编辑后缀主配置文件。 sudo nano /etc/postfix/main.cf 在这个文件的末尾添加以下几行,这样Postfix就可以通过milter协议调用OpenDKIM了。 # Milter configuration milter_default_action = accept milter_protocol = 6 smtpd_milters = local:opendkim/opendkim.sock non_smtpd_milters = $smtpd_milters 保存并关闭文件。然后重新启动opendkim和postfix服务。 sudo systemctl restart opendkim postfix 步骤9:SPF和DKIM检查 你现在可以从邮件服务器向你的Gmail账户发送一封测试邮件,看看SPF和DKIM检查是否通过。在Gmail中打开的电子邮件的右侧,如果单击下拉菜单中的“显示原始邮件”按钮,可以看到身份验证结果。 如果您的邮件未签名且DKIM检查失败,您可以检查postfix日志(/var/log/mail.log)以查看您的配置有何问题。如果您在邮件日志中看到以下消息, warning: connect to Milter service local:opendkim/opendkim.sock: No such file or directory 您可能需要检查opendkim systemd服务是否正在实际运行。 sudo systemctl status opendkim 如果opendkim正在运行,但仍然看到上述错误,则可能需要编辑/etc/postfix/main。cf文件,更改 smtpd_milters = local:opendkim/opendkim.sock 到 smtpd_milters = local:/opendkim/opendkim.sock 然后重新启动Postfix。 您的电子邮件服务器还将对发件人的域执行SPF和DKIM检查。您可以在电子邮件标题中看到结果。以下是使用Gmail对发件人进行的SPF和DKIM检查。 Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=2607:f8b0:4864:20::c2d; helo=mail-yw1-xc2d.google.com; [email protected]; receiver=<UNKNOWN> Authentication-Results: email.linuxbabe.com; dkim=pass (2048-bit key; unprotected) header.d=gmail.com [email protected] header.b="XWMRd2co"; dkim-atps=neutral 第10步:测试电子邮件分数和位置 你也可以去https://www.mail-tester.com.你会看到一个独特的电子邮件地址。从你的域名发送电子邮件到此地址,然后检查你的分数。如你所见,我得了满分。 邮件测试员。com只能显示发件人分数。还有另一个名为GlockApps的服务,可以让你检查你的电子邮件是否放在收件人的收件箱或垃圾邮件文件夹中,或者直接被拒绝。它支持许多流行的电子邮件提供商,如Gmail、Outlook、Hotmail、YahooMail、iCloud mail等 微软邮箱 如果您的电子邮件被Microsoft Outlook或Hotmail拒绝,您需要提交发件人信息表。之后,Outlook/hotmail将接受您的电子邮件,但仍可能标记为垃圾邮件。 如果你的电子邮件仍被标记为垃圾邮件呢? 在这篇文章中,我有更多的建议:7个有效的建议来阻止你的电子邮件被标记为垃圾邮件。 下一步 在第5部分中,我们将了解如何创建DMARC记录以保护您的域免受电子邮件欺骗。一如既往,如果你觉得这篇文章有用,请订阅我们的免费时事通讯,或者在Twitter上关注我们,或者喜欢我们的Facebook页面。

    2022.03.24 浏览:483