• 租服务器要避免哪些陷阱?服务器使用注意事项

    在互联网高度发达的今天,如果你告诉客户,你连一个起码的官网都没有,业务该从何谈起?想要全面拥抱互联网,服务器将势必成为不可或缺的一环。但在经济低迷的当口,不少企业举步维艰,不得不“勒紧腰带”过日子,所以越来越多的企业服务器,由直接采购方式转向租服务器的方式。 那么对于租服务器要避免哪些陷阱?MMCLOUD小编总结一下几个关键: 1、质量不好、水货机 一些服务商会利用客户不了解服务器,给客户许诺租用的机型和实际使用情况完全不是那么一回事,这样用户就会有上当受骗的感觉,但钱也退不了,这是让用户非常头疼的一件事情。 2、机型错乱 独立服务器和虚拟主机是有很大的区别的,在价位上也是相差很大。一些商家会收着独立服务器的价格,却租出虚拟主机,对于一些不明白服务器的用户来说,损失是巨大的。所以,我们要清楚自己租的服务器类型和价格。 3、价格吸引 很多商家为了吸引客户,会以低廉的价格来吸引用户,提供的是不符合客户业务应用需求的服务器配置,用户使用后,在数据处理能力方面,服务器反应速度方面都会受到影响,这样就容易导致加钱换机器,在后期增加很多成本进。 4、服务质量差 有很多商家没有合规运营资质,没有公司,这样的服务商有很多弊端,首先其依靠上级代理商提供的资源进行销售,资源不可控,资源质量无法保证,仅通过低价宣传赚取少量利润。 其次其机器购买后没有售后的保证,一旦出现故障,客户就变得很被动。服务器租用的优势,从风险收益比的角度来说,还是值得我们去大胆采用的。虽说在服务器租用中会存在的一些陷阱,但只要我们具有一定的分辨能力,还是能租到好用的服务器。我们在服务器租用的时候,一定要选择有资质,有实力,口碑还不错的服务商,这对我们来说是品质和质量的保障。 服务器租用好后需要注意以下几个方面: 1、服务器到开通登录之后一定要更改管理员密码,系统默认的密码大都不安全,修改新密码一定要避免用生日,手机号等个人信息作为管理密码,这个比系统默认的密码更不安全。 2、注重数据安全,服务器定期做备份,服务器一旦出问题,系统崩溃、病毒入侵、黑客入侵都会导致数据丢失。 3、不要不要不要随便在服务器上浏览网页和运行非必须的程序,特别是没有安全补丁和杀毒软件的服务器,用户通过服务器直接上网等于裸奔,在服务器上浏览网页将可能使服务器感染木马或者病毒,就算是安装了安全补丁和杀毒软件,也不要随意在服务器商浏览外部网页,不怕一万就怕万一。 4、新手对防火墙的使用并不清楚前提下,一旦盲目启用了防火墙后,一重启服务器再也连不上3389端口。 5、不要禁用网卡。在服务器上不要随便点鼠标,本地连接上右键一下,然后左键一下,很可能就点了禁用,这种操作对于网络应用是很危险的。 6、新手用户不要自行根据所谓的教程去设置服务器。一旦出现设置问题,很难记清操作的全部过程,可能导致专业人士也无法完全设置好你的服务器。 7、一定要仔细查看自己服务器的硬件品牌参数。这个可以通过检测软件获取服务器中大部分硬件的品牌型号等相关信息。当服务器突发故障,方便及时判断是不是硬件问题导致服务器故障。 8、不断丰富服务器管理知识。服务器非简单的IT设备使用,其中对于企业运营包含大学问,即使是从业多年的服务器专家对于服务器里的所有的问题的也不可能全部搞定。 MMCLOUD成立于2019年,已与全球120多个国家顶级机房达成战略合作关系,提供包括大陆、香港、美国、韩国、日本、台湾、新加坡、荷兰、法国、英国、德国、埃及、南非、巴西、印度、越南等国家和地区的服务器租用、云服务器的租用服务。

    2021.09.03 浏览:403
  • 如何在Ubuntu上的PostfixAdmin中托管多个邮件域

    本教程将向您展示如何使用PostfixAdmin在Ubuntu服务器上设置多个邮件域(虚拟主机),这是一个开源的基于web的界面,用于为许多域和用户配置和管理基于Postfix的电子邮件服务器。 先决条件 为了学习本教程,假设 您已经为PostfixAdmin配置了一个邮件域(Ubuntu18.04指南,Ubuntu20.04指南)。 您已经按照第4部分设置了SPF和OpenDKIM。 您已经为第一个邮件域安装了Roundcube Webmail(Ubuntu18.04指南、Ubuntu20.04指南) 你需要做什么 如果要承载多个邮件域,则需要 在PostfixAdmin基于web的面板中添加新的邮件域和用户。 为新邮件域创建MX、A和SPF记录。 为新域设置DKIM签名。 为新域创建DMARC记录。 为多个域设置RoundCube Webmail、Postfix和Dovecot Reverse DNS check is used to check if the sender’s IP address matches the HELO hostname. You don’t need to add another PTR record when adding a new mail domain. 步骤1:在PostfixAdmin面板中添加其他域 使用邮局主管帐户登录PostfixAdmin面板。(https://postfixadmin.your-domain.com/)然后转到域列表-&gt;New Domain可添加新域。 请注意,新域应该有DNS A记录,否则PostfixAdmin将抛出以下错误消息。您可以在dnsmap上检查DNS传播状态。伊奥。 Invalid domain domain2.com, and/or not discoverable in DNS 接下来,在新域下添加一个用户。 步骤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签名 在本系列教程的第4部分中,我们已经为单个域安装并配置了OpenDKIM。现在我们需要告诉OpenDKIM为新邮件域的每一封邮件签名。 编辑OpenDKIM签名表文件。 sudo nano /etc/opendkim/signing.table 添加第二个域,如下所示。 *@domain1.com default._domainkey.domain1.com *@domain2.com default._domainkey.domain2.com 编辑密钥表文件。 sudo nano /etc/opendkim/key.table 添加第二个域,如下所示。 default._domainkey.domain1.com domain1.com:default:/etc/opendkim/keys/domain1.com/default.private default._domainkey.domain2.com domain2.com:default:/etc/opendkim/keys/domain2.com/default.private 编辑受信任的主机文件。 sudo nano /etc/opendkim/trusted.hosts 添加第二个域,如下所示。 127.0.0.1 localhost *.domain1.com *.domain2.com 接下来,我们需要为第二个域生成priavte/公钥对。为第二个域创建一个单独的文件夹。 sudo mkdir /etc/opendkim/keys/domain2.com 使用opendkim genkey工具生成密钥。 sudo opendkim-genkey -b 2048 -d domain2.com -D /etc/opendkim/keys/domain2.com -s default -v 上述命令将创建2048位密钥-d(域)指定域-D(directory)指定存储密钥的目录,我们使用默认值作为选择器(-s)。执行命令后,私钥将被写入默认值。私有文件和公钥将被写入默认值。txt文件。 使opendkim成为私钥的所有者。 sudo chown opendkim:opendkim /etc/opendkim/keys/domain2.com/default.private 显示公钥 sudo cat /etc/opendkim/keys/domain2.com/default.txt p参数后面的字符串是公钥。 在DNS管理器中,为第二个域创建一个TXT记录。输入默认值_名称字段中的domainkey。复制括号中的所有内容并粘贴到值字段中。删除所有双引号。(您可以先将其粘贴到文本编辑器中,删除所有双引号,然后将其复制到DNS管理器。DNS管理器可能会要求您删除其他无效字符,例如回车符。) 保存更改后。用这个命令检查TXT记录。 dig TXT default._domainkey.domain2.com 现在,您可以运行以下命令来测试您的DKIM DNS记录是否正确。 sudo opendkim-testkey -d domain2.com -s default -vvv 如果一切正常,你会看到的 opendkim-testkey: using default configfile /etc/opendkim.conf opendkim-testkey: checking key 'default._domainkey.domain2.com' opendkim-testkey: key secure opendkim-testkey: key OK 如果你看到“钥匙不安全”,不要惊慌。这是因为您的域名上未启用DNSSEC。DNSSEC是安全DNS查询的安全标准。大多数域名都没有启用DNSSEC。你可以继续遵循这个指南。 重新启动OpenDKIM,以便它开始为第二个域签署电子邮件。 sudo systemctl restart opendkim 步骤4:为新域创建DMARC记录 要创建DMARC记录,请转到DNS管理器并添加TXT记录。在名称字段中,输入_dmarc。在“值”字段中,输入以下内容。请注意,您需要创建[email&#160;protected]电子邮件地址。 v=DMARC1; p=none; pct=100; rua=mailto:[email protected] 上述DMARC记录是一个安全的起点。要查看DMARC的完整解释,请查看以下文章。 创建DMARC记录以保护您的域名免受电子邮件欺骗 第5步:为多个域设置RoundCube、Postfix和Dovecot 我假设您为第一个邮件域安装了Roundcube webmail。 让第一个域的用户使用邮件是有道理的。域1。com和第二个域的用户使用邮件。域2。com访问RoundCube webmail时。我将向您展示如何使用Apache和Nginx。 阿帕奇 如果Roundcube由Apache web服务器提供服务,则为第二个域创建一个虚拟主机。 sudo nano /etc/apache2/sites-available/mail.domain2.com.conf 将以下文本放入文件中。 <VirtualHost *:80> ServerName mail.domain2.com DocumentRoot /var/www/roundcube/ ErrorLog ${APACHE_LOG_DIR}/mail.domain2.com_error.log CustomLog ${APACHE_LOG_DIR}/mail.domain2.com_access.log combined <Directory /> Options FollowSymLinks AllowOverride All </Directory> <Directory /var/www/roundcube/> Options FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> </VirtualHost> 保存并关闭文件。然后通过以下方式启用此虚拟主机: sudo a2ensite mail.domain2.com.conf 重新加载Apache以使更改生效。 sudo systemctl reload apache2 Nginx 如果Roundcube由Nginx web服务器提供服务,则为第二个域创建一个虚拟主机。 sudo nano /etc/nginx/conf.d/mail.domain2.com.conf 将以下文本放入文件中。 server { listen 80; server_name mail.domain2.com; root /var/www/roundcube/; index index.php index.html index.htm; error_log /var/log/nginx/mail.domain2.com.error; access_log /var/log/nginx/mail.domain2.com.access; location / { try_files $uri $uri/ /index.php; } location ~ /.php$ { try_files $uri =404; fastcgi_pass unix:/run/php/php7.2-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location ~ /.well-known/acme-challenge {     allow all; } location ~ ^/(README|INSTALL|LICENSE|CHANGELOG|UPGRADING)$ { deny all; } location ~ ^/(bin|SQL)/ { deny all; } # A long browser cache lifetime can speed up repeat visits to your page location ~* /.(jpg|jpeg|gif|png|webp|svg|woff|woff2|ttf|css|js|ico|xml)$ { access_log off; log_not_found off; expires 360d; } } 注意:如果你使用Ubuntu 20.04,你应该替换php7。2-fpm和php7。上述代码中的4-fpm。 保存并关闭文件。然后测试Nginx配置。 sudo nginx -t 如果测试成功,请重新加载Nginx以使更改生效。 sudo systemctl reload nginx 获取TLS证书 现在,使用Certbot为您的所有邮件域获取TLS证书,这样您将拥有一个包含多个域名的TLS证书,邮件客户端将不会抛出安全警告。 阿帕奇 sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp -d mail.domain1.com,mail.domain2.com --cert-name mail.domain1.com --email [email protected] Nginx sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp -d mail.domain1.com,mail.domain2.com --cert-name mail.domain1.com --email [email protected] 请注意,在上面的命令中,我们使用第一个邮件域指定了证书名,该域将在文件路径中使用,因此您不必在Postfix或Dovecot配置文件中更改文件路径。 当它询问您是否要更新现有证书以包含新域时,回答U并按Enter键。 现在您应该会看到以下消息,这表明已成功获取多域证书。 重新加载Apache或Nginx以获取新证书。 sudo systemctl reload apache2 sudo systemctl reload nginx 您现在应该可以使用不同的域来访问RoundCube webmail。此外,您还需要重新加载Postfix SMTP服务器和Dovecot IMAP服务器,以便让它们获取新证书。这就是Postfix和Dovecot为多个域提供服务所需的全部工作。 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记录。 收尾 就这样!我希望本教程能帮助您使用PostfixAdmin托管多个电子邮件域。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?

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

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

    2022.03.24 浏览:229
  • 如何使用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 浏览:477
  • 在CentOS 8上设置Postfix仅发送SMTP服务器

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

    2022.03.24 浏览:284
  • 如何使用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 浏览:461
  • 如何使用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 浏览:317
  • 在Ubuntu 20.04、18.04、16.04上为多个域设置Postfix仅发送SMTP服务器

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

    2022.03.24 浏览:234
  • 在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 浏览:199
  • 如何在Ubuntu 18.04上设置Zimbra开源邮件服务器

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

    2022.03.24 浏览:652