-
如何使用Mailjet在Debian上设置Postfix SMTP中继
本教程将向您展示如何在Debian上使用Mailjet设置Postfix SMTP中继。Postfix是一种流行的开源SMTP服务器。之前,我写了一篇文章,介绍了如何使用Modoboa在Debian上快速设置自己的电子邮件服务器,这有助于许多读者运行自己的电子邮件服务器。 然而,一些读者告诉我,作为控制垃圾邮件的一种方式,25端口被主机提供商或ISP屏蔽,因此他们无法发送电子邮件。如果您要求,Vultr将解锁端口25,ScalaHost根本不会阻止端口25,因此我建议使用ScalaHost VPS。其他一些主机服务提供商或ISP(如DigitalOcean)不会解锁端口25,所以如果您不能或不想更改主机服务提供商,您可以做些什么来绕过这种阻塞? SMTP接力救援 您可以绕过端口25,通过SMTP中继向外部世界发送电子邮件,因为它使用端口587。使用SMTP中继,您自己的电子邮件服务器不会直接将电子邮件发送到目标电子邮件地址。相反,有一个中间邮件服务器,也称为智能主机或中继主机,代表您发送电子邮件。您的电子邮件服务器通过端口587与智能主机通信,然后智能主机通过端口25与收件人的邮件服务器通信。 SMTP中继还可以帮助您绕过反垃圾邮件黑名单,如果您的IP地址因任何原因被列入黑名单。收件人的邮件服务器根据公共反垃圾邮件黑名单检查智能主机的IP地址,而不是检查您的服务器IP地址,因为SMTP中继服务保持良好的IP信誉,所以您的电子邮件可以通过IP黑名单。 使用Mailjet每天免费发送200封电子邮件 有几个电子邮件服务提供商(ESP)可以充当智能主机。有些收取一点费用,有些每月提供免费配额。在本文中,我想向您展示如何使用Mailjet,这是一家电子邮件服务提供商,允许您每天免费发送200封电子邮件。 Mailjet的好处在于,当你使用免费的SMTP中继服务时,它不需要你输入信用卡的详细信息。还有其他ESP每月提供免费配额,但要求您输入信用卡详细信息。(我知道当你没有信用卡时会有多沮丧。)与其他ESP相比,Mailjet也更容易设置。 在mailjet上创建一个帐户。通用域名格式。然后在仪表板上,你可以看到你需要做的三件事。 设置SMTP 管理发件人地址 设置域身份验证(SPF和DKIM) 步骤1:在Debian上设置后缀SMTP中继 首先,让我们使用以下命令在Debian上安装Postfix SMTP服务器。如果Postfix已经在您的服务器上运行,那么请跳过安装Postfix,但您仍然需要安装libsasl2模块包。 sudo apt install postfix libsasl2-modules 当您看到以下消息时,按Tab键并按Enter键。 然后选择第二个选项:互联网站点。 接下来,设置系统邮件名称。例如,我输入我的域名linuxbabe。通用域名格式。 安装Postfix后,打开配置文件。 sudo nano /etc/postfix/main.cf 找到下面这行。 relayhost = 默认情况下,不会设置其值。你需要从你的mailjet账户中获取这个值。在mailjet仪表板中,单击设置我的SMTP。 您将看到SMTP服务器地址和SMTP凭据。 在Postfix配置文件中,将relayhost的值设置为In-v3。mailjet。com:587。 relayhost = in-v3.mailjet.com:587 然后将以下行添加到此文件的末尾。 # outbound relay configurations smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_sasl_security_options = noanonymous smtp_tls_security_level = may header_size_limit = 4096000 保存并关闭文件。然后创建/etc/postfix/sasl_passwd文件。 sudo nano /etc/postfix/sasl_passwd 将SMTP中继主机和SMTP凭据添加到此文件,如下所示。用真正的Mailjet api密钥和密钥替换api密钥和密钥。 in-v3.mailjet.com:587 api-key:secret-key 保存并关闭文件。然后用postmap创建相应的hash db文件。 sudo postmap /etc/postfix/sasl_passwd 现在你应该有一个文件/etc/postfix/sasl_passwd。db。重新启动Postfix以使更改生效。 sudo systemctl restart postfix 默认情况下,sasl_passwd和sasl_passwd。数据库文件可以被服务器上的任何用户读取。将权限更改为600,这样只有root用户才能读写这两个文件。 sudo chmod 0600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db 从现在起,Postfix将通过mailjet发送电子邮件。 第2步:添加发件人地址 要通过mailjet发送电子邮件,您需要添加发件人域或发件人地址。在mailjet dashboard中,单击管理发件人地址。您可以验证整个域或特定电子邮件地址。 步骤3:设置域身份验证 在这一步中,我们需要设置SPF和DKIM记录,如果您希望您的电子邮件进入收件人的收件箱而不是垃圾邮件文件夹,强烈建议您这样做。 SPF:发送方策略框架。这是一个DNS记录,指定允许哪些IP地址从您的域发送电子邮件。 DKIM:DomainKeys已识别邮件。Mailjet将使用私钥对您的电子邮件进行数字签名。DKIM记录包含一个公钥,允许收件人的电子邮件服务器验证签名。 在mailjet仪表板中,单击设置域身份验证。默认情况下,SPF状态和DKIM状态都是错误的。单击管理按钮并按照说明添加SPF和DKIM记录。 创建SPF和DKIM记录后,请稍等片刻,然后刷新mailjet网页。您的新DNS记录可能需要一些时间才能在Internet上传播,具体取决于您的DNS托管服务。如果SPF和DKIM记录设置正确且传播完成,mailjet会告诉您SPF和DKIM记录良好。 发送测试电子邮件 现在我们可以使用mailx命令发送测试电子邮件,如下所示。 sudo apt install bsd-mailx echo "this is a test email." | mailx -r from-address -s hello to-address 您还可以从webmail客户端或桌面邮件客户端发送测试电子邮件。在网上测试你的电子邮件分数也是个好主意https://www.mail-tester.com.如你所见,我得了满分。 故障排除 如果您的电子邮件未送达,而您在邮件日志(/var/log/mail.log)中发现以下消息, Relay access denied (in reply to RCPT TO command)) 然后,您可能需要编辑/etc/postfix/sasl_passwd文件,并删除主机名后面的端口号,如下所示。 in-v3.mailjet.com api-key:secret-key 保存并关闭文件。然后再次构建索引文件。 sudo postmap /etc/postfix/sasl_passwd 重新启动Postfix以使更改生效。 sudo systemctl restart postfix 现在,您可以刷新电子邮件队列(尝试发送以前的电子邮件)。 sudo postqueue -f 添加其他域 如果在新计算机上为新域名设置邮件服务器,并且要为此新域名设置SMTP中继,请执行相同的步骤: 配置后缀SMTP中继设置, 在Mailjet仪表板中验证新域名 设置SPF和DKIM验证 收尾 就这样!我希望本教程能帮助您在Debian上设置Postfix SMTP中继,绕过端口25或IP黑名单。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心。
-
在CentOS 8上设置Postfix仅发送SMTP服务器
在本文中,我将向您展示如何在CentOS 8上将Postfix设置为仅发送SMTP服务器。我将首先向您展示如何为单个域执行此操作,然后如果需要,您可以为多个域应用这些步骤。 用例 您有一个需要向用户发送事务性电子邮件(如密码重置电子邮件)的网站/web应用程序。最有可能的是,用户不需要回复这些电子邮件,或者如果他们回复,回复电子邮件将被发送到您的专用邮件服务器。在这种情况下,可以使用Postfix(一种流行的SMTP服务器软件)在web服务器上设置只发送SMTP服务器。 先决条件 要从服务器发送电子邮件,端口25(出站)必须打开。许多ISP和托管公司,如DigitalOcean block port 25来控制垃圾邮件。我建议使用ScalaHost,因为它不会阻止端口25(出站)。拥有ScalaHost服务器后,在其上安装CentOS 8,并按照以下说明操作。 为多个域设置Postfix仅发送SMTP服务器实际上并不困难。首先,我们需要为一个域配置它,然后为多个域设置它。 第一步:设置主机名和PTR记录 默认情况下,Postfix在与其他SMTP服务器通信时使用服务器的主机名来标识自身。如果您的主机名无效,某些SMTP服务器将拒绝您的电子邮件。您应该设置一个完整的限定域名(FQDN),如下所示。 sudo hostnamectl set-hostname mta1.yourdomain.com 要检查服务器的主机名,请运行 hostname -f 您需要注销并重新登录,才能在命令提示下看到主机名的更改。这个主机名应该有一个指向服务器IP地址的DNS a记录。 此外,还需要设置一个PTR记录(又名指针记录),将IP地址映射到FQDN。这是A唱片的对应品。如果你的服务器IP地址没有PTR记录,许多SMTP服务器会拒绝你的电子邮件。 因为您从主机提供商或ISP获得IP地址,而不是从域注册商获得,所以您必须在主机提供商的控制面板中为您的IP设置PTR记录,或者询问ISP。例如,在ScalaHost中,您可以通过打开支持票证或使用他们网站上的实时聊天来设置PTR记录。尽管您可以将PTR记录设置为任何主机名,但为了获得最佳实践,您应该使用刚刚设置的FQDN。 要查看PTR记录设置是否正确,请运行以下命令。将12.34.56.78替换为您自己的IP地址。 host 12.34.56.78 请注意,如果服务器使用IPv6地址,最好为FQDN添加AAAA记录,并为IPv6地址设置PTR记录。 第2步:在CentOS 8上安装Postfix 运行以下命令,从默认的CentOS 8存储库安装Postfix。 sudo dnf update sudo dnf install postfix -y 安装后,启动Postfix SMTP服务器。 sudo systemctl start postfix 并在启动时启用自动启动。 sudo systemctl enable postfix 第3步:配置后缀 设置后缀主机名 默认情况下,Postfix SMTP服务器在与其他SMTP服务器通信时使用操作系统的主机名来标识自身。但是,OS主机名可能会更改,因此使用以下命令直接在Postfix配置文件中设置主机名是一种好的做法。 sudo postconf -e "myhostname = mta1.yourdomain.com" 设置$mydomain参数 $mydomain参数指定本地internet域名。默认情况下,使用$myhostname减去第一个组件。您可以通过以下方式显示$mydomain的当前值: postconf mydomain 它应该是你的顶级域名,比如 linuxbabe.com 如果它没有显示您的apex域名,则将$mydomain参数设置为: sudo postconf -e "mydomain = yourdomain.com" 设置$myorigin参数 $myorigin参数指定附加到没有@domain部分的发件人和收件人地址的默认域名。默认设置是使用$myhostname的值,如下所示: postconf myorigin 输出: myorigin = $myhostname 您可以将其值更改为您的域。通用域名格式。 sudo postconf -e "myorigin = yourdomain.com" 重新启动后缀 最后,我们需要重新启动Postfix以使更改生效。 sudo systemctl restart postfix 第4步:在CentOS 8上安装和配置OpenDKIM DKIM代表域密钥识别邮件。你可以在你的服务器上安装OpenDKIM,并使用它为从你的域发送的电子邮件添加签名,使用你的私钥。接收SMTP服务器使用您在DNS中发布的相应公钥验证签名。如果你想让你的邮件进入收件人的收件箱,添加DKIM签名是必须的。 从EPEL(企业Linux的额外软件包)存储库安装OpenDKIM。 sudo dnf install epel-release sudo dnf install opendkim perl-Getopt-Long 编辑OpenDKIM主配置文件。 sudo nano /etc/opendkim.conf 找到下面这行。 Mode v 默认情况下,OpenDKIM以验证模式(v)运行,该模式将验证传入电子邮件的DKIM签名。我们需要对发送的电子邮件进行签名,因此将此行更改为以下内容以启用签名模式。 Mode sv 找到下面一行并注释掉,因为我们将为每个域名使用单独的密钥。 KeyFile /etc/opendkim/keys/default.private 接下来,找到以下4行并取消注释。 # KeyTable /etc/opendkim/KeyTable # SigningTable refile:/etc/opendkim/SigningTable # ExternalIgnoreList refile:/etc/opendkim/TrustedHosts # InternalHosts refile:/etc/opendkim/TrustedHosts 保存并关闭文件。 创建签名表、密钥表和受信任主机文件 编辑签名表文件。 sudo nano /etc/opendkim/SigningTable 在该文件末尾添加以下行。这会告诉OpenDKIM,如果服务器上的发件人正在使用@your域。com地址,则应使用mta1标识的私钥对其进行签名_域名。你的领域。通用域名格式。 *@your-domain.com mta1._domainkey.your-domain.com mta1是DKIM选择器。域名可能有多个DKIM密钥。DKIM选择器允许您选择特定的DKIM键。您可以为DKIM选择器使用任何名称。我认为使用主机名最左边的部分作为DKIM选择器很方便。保存并关闭文件。然后编辑密钥表文件。 sudo nano /etc/opendkim/KeyTable 添加以下行,指定DKIM私钥的位置。 mta1._domainkey.your-domain.com your-domain.com:mta1:/etc/opendkim/keys/your-domain.com/mta1.private 保存并关闭文件。接下来,编辑受信任的主机文件。 sudo nano /etc/opendkim/TrustedHosts 默认情况下,127.0.0.1和::1包含在此文件中。现在添加以下行。这告诉OpenDKIM,如果电子邮件来自您自己的域名,那么OpenDKIM不应该对该电子邮件执行DKIM验证。 *.your-domain.com 保存并关闭文件。 生成私钥/公钥对 由于DKIM用于对发送的邮件进行签名和验证接收的邮件,因此需要生成一个私钥来对发送的电子邮件进行签名,并生成一个公钥来接收SMTP服务器,以验证电子邮件的DKIM签名。公钥将在DNS中发布。 为域创建一个单独的文件夹。 sudo mkdir /etc/opendkim/keys/your-domain.com 使用opendkim genkey工具生成密钥。 sudo opendkim-genkey -b 2048 -d your-domain.com -D /etc/opendkim/keys/your-domain.com -s mta1 -v 上述命令将创建2048位密钥-d(域)指定域-D(目录)指定存储密钥的目录。我使用mta1作为DKIM选择器。命令执行后,私钥将写入mta1。私有文件和公钥将写入mta1。txt文件。 默认情况下,只有root用户可以读取和写入密钥文件。使opendkim成为私钥的所有者。 sudo chown opendkim:opendkim /etc/opendkim/keys/ -R 在DNS记录中发布您的公钥 显示公钥 sudo cat /etc/opendkim/keys/your-domain.com/mta1.txt p参数后面的字符串是公钥。 在DNS管理器中,创建一个TXT记录,输入mta1_名称字段中的domainkey。然后返回终端窗口,复制括号中的所有内容,并将其粘贴到DNS记录的值字段中。您需要删除值字段中的所有双引号和换行符。如果不删除它们,那么下一步中的密钥测试可能会失败。 测试DKIM密钥 在CentOS 8服务器上输入以下命令以测试密钥。 sudo opendkim-testkey -d your-domain.com -s mta1 -vvv 如果一切正常,您将看到键OK消息。 opendkim-testkey: using default configfile /etc/opendkim.conf opendkim-testkey: checking key 'mta1._domainkey.linuxbabe.com' opendkim-testkey: key OK 如果你看到“钥匙不安全”,不要惊慌。这是因为您的域名上未启用DNSSEC。DNSSEC是安全DNS查询的安全标准。大多数域名都没有启用DNSSEC。你可以继续遵循这个指南。 现在我们可以启动opendkim服务了。 sudo systemctl start opendkim 并在启动时启用自动启动。 sudo systemctl enable opendkim OpenDKIM监听127.0.0.1:8891。 第5步:将Postfix连接到OpenDKIM 编辑后缀主配置文件。 sudo nano /etc/postfix/main.cf 在这个文件的末尾添加以下几行,这样Postfix就可以通过milter协议调用OpenDKIM了。请注意,应该使用127.0.0.1作为地址。不要使用localhost。 # Milter configuration milter_default_action = accept milter_protocol = 6 smtpd_milters = inet:127.0.0.1:8891 non_smtpd_milters = $smtpd_milters 保存并关闭文件。然后将postfix用户添加到opendkim组。 sudo gpasswd -a postfix opendkim 重新启动后缀服务。 sudo systemctl restart postfix 步骤6:创建SPF DNS记录 SPF(发件人策略框架)记录指定允许哪些主机或IP地址代表域发送电子邮件。在DNS管理界面中,创建一个新的TXT记录,如下所示。使用您自己的服务器IPv4地址和IPv6地址。 TXT @ v=spf1 mx ip4:12.34.56.78 ip6:2600:3c01::f03c:93d8:f2c6:78ad ~all 第7步:设置发件人地址、发件人名称和返回路径 您可以在网站/web应用程序中设置自定义发件人地址、发件人名称和返回路径。让我们以WordPress为例。您可以在WordPress主题的函数中添加以下行。php文件覆盖默认的发件人地址、发件人名称和返回路径。必要时替换红色文本。 // Function to change From email address function wpb_sender_email( $original_email_address ) { return '[email protected]'; } // Function to change sender name function wpb_sender_name( $original_email_from ) { return 'LinuxBabe'; } // Set return-path the same as From address function fix_my_email_return_path( $phpmailer ) { $phpmailer->Sender = $phpmailer->From; } // Hooking up our functions to WordPress filters add_filter( 'wp_mail_from', 'wpb_sender_email' ); add_filter( 'wp_mail_from_name', 'wpb_sender_name' ); add_action( 'phpmailer_init', 'fix_my_email_return_path' ); 保存文件,就完成了。 步骤8:为发送的电子邮件启用TLS加密 默认情况下,Postfix在发送邮件时不使用TLS加密。要启用TLS加密,请打开/etc/postfix/main。cf文件,并在该文件末尾添加以下两行。 smtp_tls_security_level = may smtp_tls_loglevel = 1 第一行为Postfix SMTP客户端启用TLS加密。第二行将把TLS连接记录在/var/log/maillog文件中,这样您就可以检查TLS加密是否有效。保存并关闭文件。重新启动Postfix以使更改生效。 sudo systemctl restart postfix 由于Postfix不接收传入的电子邮件,因此无需为Postfix SMTP守护程序配置有效的TLS证书。 第9步:测试发送者分数 现在去https://www.mail-tester.com.你会看到一个独特的电子邮件地址。从Postfix SMTP服务器上的网站向此地址发送电子邮件,然后检查您的分数。如你所见,我得了满分。在测试结果中,您应该检查您的PTR记录、SPF和DKIM记录是否有效。 还可以打开/var/log/maillog文件,检查是否使用了TLS加密。例如,下面一行显示了与mail tester的连接。com是加密的。 Anonymous TLS connection established to mail-tester.com[94.23.206.89]:25: TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits) 如果你的电子邮件仍被标记为垃圾邮件呢? 在本文中,我为您提供了更多关于电子邮件可交付性的提示:如何阻止您的电子邮件被标记为垃圾邮件。虽然这需要一些时间和精力,但在应用这些技巧后,你的电子邮件最终会被放入收件箱。 如何为多个域配置Postfix仅发送SMTP服务器 默认情况下,Postfix允许您使用发件人标题和返回路径地址中的任何域名发送电子邮件。如果你的服务器托管多个网站,你只需要为你的其他域创建SPF DNS记录,这很容易做到,并为你的其他域配置OpenDKIM。 要为其他域配置OpenDKIM,需要在签名表、密钥表和可信主机文件中添加其他域,如下所示。 签名表: *@example.com mta1._domainkey.example.com *@example.net mta1._domainkey.example.net 键表: mta1._domainkey.example.com example.com:mta1:/etc/opendkim/keys/example.com/mta1.private mta1._domainkey.example.net example.net:mta1:/etc/opendkim/keys/example.net/mta1.private 受信任的主机: 127.0.0.1 localhost *.example.com *.example.net 然后按照上述步骤为其他域生成DKIM私钥/公钥对,并在DNS中添加DKIM公钥。重新启动OpenDKIM,就完成了。别忘了测试你的发件人分数。 故障排除 如果您的邮件未签名且DKIM检查失败,您可能需要检查postfix日志(/var/log/maillog)以查看配置中的错误。 从另一台服务器发送电子邮件 有两种方法允许其他服务器通过只发送Postfix SMTP服务器发送电子邮件。 在不使用SMTP身份验证的情况下使用端口25:此方法要求其他服务器不阻止端口25(出站)。 将端口587用于SMTP身份验证:如果其他服务器阻止端口25(出站),则可以使用端口587。 没有SMTP身份验证的端口25 默认情况下,CentOS 8上的Postfix仅在本地主机上侦听。您需要将Postfix配置为在0.0.0.0上侦听,以便其他服务器可以连接到仅发送Postfix SMTP服务器。 sudo postconf "inet_interfaces = all" 然后需要将另一台服务器的IP地址添加到Postfix mynetworks参数中。将12.34.56.78替换为实际IP地址。 sudo postconf "$(postconf mynetworks) 12.34.56.78" 重新启动Postfix以使更改生效。 sudo systemctl restart postfix 运行以下命令打开端口25(入站)。 sudo firewall-cmd --permanent --add-port=25/tcp sudo systemctl reload firewalld 现在,您可以将SMTP客户端配置为使用mta1。你的地盘。com和端口25发送电子邮件。您不需要在SMTP客户端中指定用户名/密码。 带有SMTP身份验证的587端口 打开防火墙中的587和80端口。 sudo firewall-cmd --permanent --add-service={smtp-submission,http} sudo systemctl reload firewalld 默认情况下,CentOS 8上的Postfix仅在本地主机上侦听。您需要将Postfix配置为在0.0.0.0上侦听,以便其他服务器可以连接到仅发送Postfix SMTP服务器。 sudo postconf "inet_interfaces = all" 然后,您需要启用Postfix的提交服务,以便电子邮件客户端可以向Postfix SMTP服务器提交电子邮件。编辑母版。cf文件。 sudo nano /etc/postfix/master.cf 在提交部分,取消注释或添加以下行。请在每个-o之前至少允许一个空格(制表符或空格键)。在后缀配置中,前面的空格字符表示此行是前一行的延续。(默认情况下,提交部分被注释掉。您可以复制以下行并将其粘贴到文件中,这样您就不必手动取消注释或添加新文本。) submission inet n - y - - smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_tls_wrappermode=no -o smtpd_tls_loglevel=1 -o smtpd_sasl_auth_enable=yes -o smtpd_relay_restrictions=permit_sasl_authenticated,reject -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject -o smtpd_sasl_type=dovecot -o smtpd_sasl_path=private/auth 上述配置启用Postfix的提交守护程序,并要求对SMTP身份验证进行TLS加密。纯文本身份验证将被拒绝。保存并关闭文件。要启用SMTP身份验证,我们需要在CentOS 8/RHEL 8服务器上安装Dovecot。 sudo dnf install dovecot 启动Dovecot并在启动时启用自动启动。 sudo systemctl start dovecot sudo systemctl enable dovecot 编辑身份验证配置文件。 sudo nano /etc/dovecot/conf.d/10-auth.conf 取消对以下行的注释。 disable_plaintext_auth = yes 当没有SSL/TLS加密时,它将禁用明文身份验证。如果您想使用完整的电子邮件地址([email ;protected])登录,请在文件中添加以下行。 auth_username_format = %n 否则,您只能使用用户名登录(不使用@your domain.com)。接下来,找到下面这行。 auth_mechanisms = plain 这一行只启用普通身份验证机制。登录是您可能希望添加的另一种身份验证机制,以支持旧的电子邮件客户端。 auth_mechanisms = plain login 保存并关闭文件。然后编辑以下文件。 sudo nano /etc/dovecot/conf.d/10-master.conf 将service auth部分更改为以下内容,以便Postfix可以找到Dovecot身份验证服务器。 service auth { unix_listener /var/spool/postfix/private/auth { mode = 0660 user = postfix group = postfix } } 保存并关闭文件。重新启动Dovecot以使更改生效。 sudo systemctl restart dovecot 接下来,我们需要获得有效的TLS证书。我们可以很容易地从Let's Encrypt获得免费的TLS证书。发出以下命令,从EPEL存储库在CentOS 8/RHEL 8上安装Let's Encrypt client(certbot)。 sudo dnf install certbot 然后使用独立插件获取TLS证书(假设Postfix SMTP服务器上没有运行web服务器)。 sudo certbot certonly --standalone --agree-tos --email [email protected] -d mta1.yourdomain.com 过了一会儿,您应该会看到以下几行,这意味着证书已成功获得。您还可以查看证书存储的目录。 接下来,我们需要运行以下两个命令来指定后缀配置文件中TLS证书和私钥的位置。您的Let's Encrypt证书和私钥存储在/etc/letsencrypt/live/mta1下。你的领域。com/directory。 sudo postconf "smtpd_tls_cert_file = /etc/letsencrypt/live/mta1.your-domain.com/fullchain.pem" sudo postconf "smtpd_tls_key_file = /etc/letsencrypt/live/mta1.your-domain.com/privkey.pem" 重新启动Postfix以使更改生效。 sudo systemctl restart postfix 现在,您可以将SMTP客户端配置为使用mta1。你的地盘。com和端口587发送电子邮件。使用TLS加密类型和普通作为身份验证模式。您需要在SMTP服务器上创建电子邮件帐户。这很简单。使用adduser命令添加用户。 sudo adduser user1 然后为该用户设置密码。 sudo passwd user1 电子邮件地址将为[电子邮件 ;受保护]。 从邮件头中删除敏感信息 默认情况下,Postfix SMTP服务器将添加一个Received:电子邮件头,记录客户端的IP地址,这可能会泄露您网站的IP地址(如果它位于CDN后面)。你可以告诉Postfix忽略它。创建一个头检查文件。 sudo nano /etc/postfix/smtp_header_checks 将以下行放入文件中。 /^Received:/ IGNORE 保存并关闭文件。然后编辑后缀主配置文件。 sudo nano /etc/postfix/main.cf 在文件末尾添加以下行。 smtp_header_checks = regexp:/etc/postfix/smtp_header_checks 保存并关闭文件。然后运行以下命令重建哈希表。 sudo postmap /etc/postfix/smtp_header_checks 重新加载后缀以使更改生效。 sudo systemctl reload postfix 现在Postfix不会在邮件头中包含这些敏感信息。 自动更新TLS证书 您可以创建Cron作业来自动续订TLS证书。只需打开root用户的crontab文件。 sudo crontab -e 然后添加以下行。 @daily certbot renew --quiet 保存并关闭文件。 发送大量或大量电子邮件 您可以使用此SMTP服务器发送批量或批量电子邮件吗? 是的,但你应该只向合法订户发送批量电子邮件,也就是说,收件人应该已经注册了你的邮件列表。你不应该发送垃圾邮件(未经请求的批量电子邮件),否则你的SMTP服务器肯定会被列入黑名单。在发送大量电子邮件之前,我强烈建议遵循本文中的建议:如何阻止您的电子邮件被标记为垃圾邮件。 必须先发出STARTTLS命令 如果在邮件日志(/var/log/maillog)中看到以下错误,可能是因为在/etc/postfix/main中没有正确指定TLS证书。cf文件。 Must issue a STARTTLS command first (in reply to MAIL FROM command)) 结论 我希望本教程能帮助您在CentOS 8上为多个域设置Postfix仅发送SMTP服务器。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?
-
如何使用Sendinblue在Ubuntu上设置后缀SMTP中继
本教程将向您展示如何在Ubuntu上使用Sendinblue设置Postfix SMTP中继。Postfix是一种流行的开源SMTP服务器。之前我写过一篇文章,介绍如何使用iRedMail在Ubuntu上轻松设置一个完整的电子邮件服务器,这有助于许多读者运行自己的电子邮件服务器。 然而,一些读者告诉我,作为控制垃圾邮件的一种方式,托管提供商/ISP阻止了端口25,因此他们无法发送电子邮件。如果您要求,Vultr将解锁端口25,ScalaHost根本不会阻止端口25,因此我建议使用ScalaHost VPS。DigitalOcean等其他一些主机提供商/ISP将拒绝解除对25号端口的封锁。 本教程适用于所有当前的Ubuntu版本,包括Ubuntu 18.04、Ubuntu 20.04和Ubuntu 21.04。 SMTP接力救援 您可以绕过端口25,通过SMTP中继发送电子邮件,因为它使用TCP端口587。使用SMTP中继,您自己的电子邮件服务器不会直接将电子邮件发送到目标电子邮件地址。相反,有一个中间邮件服务器,也称为智能主机或中继主机,代表您发送电子邮件。您的电子邮件服务器通过TCP端口587与中继主机通信,然后中继主机通过端口25与收件人的邮件服务器通信。 SMTP中继还可以帮助您绕过反垃圾邮件黑名单,如果您的IP地址因任何原因被列入黑名单。收件人的邮件服务器会根据公共反垃圾邮件黑名单检查中继主机的IP地址,而不是您的服务器IP地址,因为SMTP中继服务保持良好的IP信誉,所以您的电子邮件可以通过IP黑名单。 使用Sendinblue每天免费发送300封电子邮件 有几个电子邮件服务提供商(ESP)可以充当中继主机。有些收取一点费用,有些每月提供免费配额。在本文中,我想向您展示如何使用Sendinblue,这是一家电子邮件服务提供商,允许您每天免费发送300封电子邮件。 Sendinblue的好处在于,当你使用免费的SMTP中继服务时,它不需要你输入信用卡的详细信息。还有其他ESP每月提供免费配额,但要求您输入信用卡详细信息。我知道当你没有信用卡时会有多沮丧。与其他ESP相比,Sendinblue也更容易设置。 步骤1:创建Sendinblue帐户 在sendinblue创建一个免费帐户。通用域名格式。完成用户配置文件后,单击事务选项卡,您将获得SMTP设置。如果没有SMTP设置,您需要联系Sendinblue客户服务以激活事务性电子邮件服务。 现在,您需要配置Postfix SMTP服务器以使用Sendinblue SMTP设置。 步骤2:使用Sendinblue设置后缀SMTP中继 首先,让我们使用以下命令在Ubuntu上安装Postfix SMTP服务器。如果Postfix已经在您的服务器上运行,那么请跳过安装Postfix,但您仍然需要安装libsasl2模块包。 sudo apt install postfix libsasl2-modules 当您看到以下消息时,按Tab键并按Enter键。 然后选择第二个选项:互联网站点。 接下来,设置系统邮件名称。例如,我输入我的域名linuxbabe。通用域名格式。 安装Postfix后,使用命令行文本编辑器(如Nano)打开主配置文件。 sudo nano /etc/postfix/main.cf 找到下面这行。 relayhost = 默认情况下,其值为空。将relayhost的值设置为[smtp relay.sendinblue.com]:587。 relayhost = [smtp-relay.sendinblue.com]:587 然后将以下行添加到此文件的末尾。 # outbound relay configurations smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_sasl_security_options = noanonymous smtp_tls_security_level = may header_size_limit = 4096000 保存并关闭文件。然后创建/etc/postfix/sasl_passwd文件。 sudo nano /etc/postfix/sasl_passwd 将SMTP中继主机和SMTP凭据添加到此文件,如下所示。用SendinBlue提供的您自己的用户名和密码替换smtp_用户名和smtp_密码。注意用户名和密码之间有一个冒号。 [smtp-relay.sendinblue.com]:587 smtp_username:smtp_password 保存并关闭文件。然后用postmap创建相应的hash db文件。 sudo postmap /etc/postfix/sasl_passwd 现在你应该有一个文件/etc/postfix/sasl_passwd。db。重新启动Postfix以使更改生效。 sudo systemctl restart postfix 默认情况下,sasl_passwd和sasl_passwd。数据库文件可以被服务器上的任何用户读取。将权限更改为600,这样只有root用户才能读写这两个文件。 sudo chmod 0600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db 从现在起,Postfix将通过Sendinblue发送电子邮件。 第3步:添加发件人地址 单击Sendinblue account仪表板右上角的下拉菜单,然后选择发件人&;“IP”选项卡以添加您的域和发件人地址。 步骤4:在SendinBlue中设置SPF/DKIM身份验证 在这一步中,我们需要设置SPF和DKIM记录,如果您希望您的电子邮件进入收件人的收件箱而不是垃圾邮件文件夹,强烈建议您这样做。 SPF:发送方策略框架。这是一个DNS记录,指定允许为您的域发送电子邮件的IP地址。 DKIM:DomainKeys已识别邮件。Sendinblue将使用私钥对您的电子邮件进行数字签名。DKIM记录包含一个公钥,允许收件人的电子邮件服务器验证签名。 在SendinBlue仪表板中,单击右上角的帐户名,然后单击Senders&;IPs。选择域选项卡->;管理->;验证这个域。 一个弹出窗口出现。您需要为您的域添加前3条记录。 创建SPF和DKIM记录后,请稍等片刻,然后单击添加的记录。请确认一下按钮。根据您的DNS托管服务,您的新DNS记录可能需要一些时间才能在Internet上传播。 去https://dnsmap.io检查您的DNS记录是否已传播到Internet。 有关DKIM记录,请访问https://www.dmarcanalyzer.com/dkim/dkim-check/,输入mail作为选择器,并输入域名以检查DKIM记录传播以及DKIM记录中是否存在错误。 如果SPF和DKIM记录设置正确且经过验证,则您的域将在Sendinblue中通过身份验证。 发送测试电子邮件 现在我们可以使用mailx命令发送测试电子邮件,如下所示。 sudo apt install bsd-mailx echo "this is a test email." | mailx -r from-address -s hello to-address 您还可以从webmail客户端或桌面邮件客户端发送测试电子邮件。在网上测试你的电子邮件分数也是个好主意https://www.mail-tester.com.如你所见,我得了满分。 故障排除 如果您的电子邮件未送达,而您在邮件日志(/var/log/mail.log)中发现以下消息, Relay access denied (in reply to RCPT TO command)) 然后,您可能需要编辑/etc/postfix/sasl_passwd文件,并删除主机名后面的端口号,如下所示。 smtp-relay.sendinblue.com smtp_username:smtp_passowrd 保存并关闭文件。然后再次构建索引文件。 sudo postmap /etc/postfix/sasl_passwd 重新启动Postfix以使更改生效。 sudo systemctl restart postfix 现在,您可以刷新电子邮件队列(尝试发送以前的电子邮件)。 sudo postqueue -f 添加其他域 如果您在新主机上为新域名设置邮件服务器,并且希望为此新域名设置SMTP中继,则只需再次执行步骤2、步骤3和步骤4。 收尾 就这样!我希望本教程能帮助你在Ubuntu上设置Postfix SMTP中继,绕过端口25或IP黑名单。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?
-
如何使用Mailjet在Ubuntu上设置后缀SMTP中继
本教程将向您展示如何在Ubuntu上使用Mailjet设置Postfix SMTP中继。Postfix是一种流行的开源SMTP服务器。之前我写过一篇文章,介绍如何使用iRedMail在Ubuntu上轻松设置一个完整的电子邮件服务器,帮助很多读者运行自己的电子邮件服务器。 然而,一些读者告诉我,作为控制垃圾邮件的一种方式,25端口被主机提供商或ISP屏蔽,因此他们无法发送电子邮件。如果你要求,Vultr会解锁端口25,而ScalaHost根本不会阻止端口25,所以我建议使用ScalaHost VPS,其他一些主机提供商或ISP(如DigitalOcean)会拒绝解锁端口25。 SMTP接力救援 您可以绕过端口25,通过SMTP中继向外部世界发送电子邮件,因为它使用端口587。使用SMTP中继,您自己的电子邮件服务器不会直接将电子邮件发送到目标电子邮件地址。相反,有一个中间邮件服务器,也称为智能主机或中继主机,代表您发送电子邮件。您的电子邮件服务器通过端口587与智能主机通信,然后智能主机通过端口25与收件人的邮件服务器通信。 SMTP中继还可以帮助您绕过反垃圾邮件黑名单,如果您的IP地址因任何原因被列入黑名单。收件人的邮件服务器根据公共反垃圾邮件黑名单检查智能主机的IP地址,而不是检查您的服务器IP地址,因为SMTP中继服务保持良好的IP信誉,所以您的电子邮件可以通过IP黑名单。 使用Mailjet每天免费发送200封电子邮件 有几个电子邮件服务提供商(ESP)可以充当智能主机。有些收取一点费用,有些每月提供免费配额。在本文中,我想向您展示如何使用Mailjet,这是一家电子邮件服务提供商,允许您每天免费发送200封电子邮件。 Mailjet的好处在于,当你使用免费的SMTP中继服务时,它不需要你输入信用卡的详细信息。还有其他ESP每月提供免费配额,但要求您输入信用卡详细信息。(我知道当你没有信用卡时会有多沮丧。)与其他ESP相比,Mailjet也更容易设置。 在mailjet上创建一个帐户。通用域名格式。然后在仪表板上,你可以看到你需要做的三件事。 设置SMTP 管理发件人地址 设置域身份验证(SPF和DKIM) 第一步:在Ubuntu上设置后缀SMTP中继 首先,让我们使用以下命令在Ubuntu上安装Postfix SMTP服务器。如果Postfix已经在您的服务器上运行,那么请跳过安装Postfix,但您仍然需要安装libsasl2模块包。 sudo apt install postfix libsasl2-modules 当您看到以下消息时,按Tab键并按Enter键。 然后选择第二个选项:互联网站点。 接下来,设置系统邮件名称。例如,我输入我的域名linuxbabe。通用域名格式。 安装Postfix后,打开配置文件。 sudo nano /etc/postfix/main.cf 找到下面这行。 relayhost = 默认情况下,不会设置其值。你需要从你的mailjet账户中获取这个值。在mailjet仪表板中,单击设置我的SMTP。 您将看到SMTP服务器地址和SMTP凭据。 在Postfix配置文件中,将relayhost的值设置为In-v3。mailjet。com:587。 relayhost = in-v3.mailjet.com:587 然后将以下行添加到此文件的末尾。 # outbound relay configurations smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_sasl_security_options = noanonymous smtp_tls_security_level = may header_size_limit = 4096000 保存并关闭文件。然后创建/etc/postfix/sasl_passwd文件。 sudo nano /etc/postfix/sasl_passwd 将SMTP中继主机和SMTP凭据添加到此文件,如下所示。用真正的Mailjet api密钥和密钥替换api密钥和密钥。 in-v3.mailjet.com:587 api-key:secret-key 保存并关闭文件。然后用postmap创建相应的hash db文件。 sudo postmap /etc/postfix/sasl_passwd 现在你应该有一个文件/etc/postfix/sasl_passwd。db。重新启动Postfix以使更改生效。 sudo systemctl restart postfix 默认情况下,sasl_passwd和sasl_passwd。数据库文件可以被服务器上的任何用户读取。将权限更改为600,这样只有root用户才能读写这两个文件。 sudo chmod 0600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db 从现在起,Postfix将通过mailjet发送电子邮件。 第2步:添加发件人地址 要通过mailjet发送电子邮件,您需要添加发件人域或发件人地址。在mailjet dashboard中,单击管理发件人地址。您可以验证整个域或特定电子邮件地址。 步骤3:设置域身份验证 在这一步中,我们需要设置SPF和DKIM记录,如果您希望您的电子邮件进入收件人的收件箱而不是垃圾邮件文件夹,强烈建议您这样做。 SPF:发送方策略框架。这是一个DNS记录,指定允许哪些IP地址从您的域发送电子邮件。 DKIM:DomainKeys已识别邮件。Mailjet将使用私钥对您的电子邮件进行数字签名。DKIM记录包含一个公钥,允许收件人的电子邮件服务器验证签名。 在mailjet仪表板中,单击设置域身份验证。默认情况下,SPF状态和DKIM状态都是错误的。单击管理按钮并按照说明添加SPF和DKIM记录。 创建SPF和DKIM记录后,请稍等片刻,然后刷新mailjet网页。您的新DNS记录可能需要一些时间才能在Internet上传播,具体取决于您的DNS托管服务。如果SPF和DKIM记录设置正确且传播完成,mailjet会告诉您SPF和DKIM记录良好。 发送测试电子邮件 现在我们可以使用mailx命令发送测试电子邮件,如下所示。 sudo apt install bsd-mailx echo "this is a test email." | mailx -r from-address -s hello to-address 您还可以从webmail客户端或桌面邮件客户端发送测试电子邮件。在网上测试你的电子邮件分数也是个好主意https://www.mail-tester.com.如你所见,我得了满分。 故障排除 如果您的电子邮件未送达,而您在邮件日志(/var/log/mail.log)中发现以下消息, Relay access denied (in reply to RCPT TO command)) 然后,您可能需要编辑/etc/postfix/sasl_passwd文件,并删除主机名后面的端口号,如下所示。 in-v3.mailjet.com api-key:secret-key 保存并关闭文件。然后再次构建索引文件。 sudo postmap /etc/postfix/sasl_passwd 重新启动Postfix以使更改生效。 sudo systemctl restart postfix 现在,您可以刷新电子邮件队列(尝试发送以前的电子邮件)。 sudo postqueue -f 添加其他域 如果在新计算机上为新域名设置邮件服务器,并且要为此新域名设置SMTP中继,请执行相同的步骤: 配置后缀SMTP中继设置, 在Mailjet仪表板中验证新域名 设置SPF和DKIM验证 收尾 就这样!我希望本教程能帮助你在Ubuntu上设置Postfix SMTP中继,绕过端口25或IP黑名单。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心。
-
使用Postfix交通地图,Relayhost地图可灵活发送电子邮件
在之前的教程中,我们讨论了如何使用iRedMail或Modoboa快速设置功能齐全的邮件服务器,还学习了如何使用Postfix SMTP服务器设置SMTP中继,以绕过端口25阻塞或IP黑名单。但是,您可能不想将整个电子邮件服务器设置为使用中继主机。我们可以配置Postfix传输映射和中继映射,以便通过中继主机发送一些电子邮件,其他电子邮件直接发送给收件人。 有许多SMTP中继服务。在本教程中,我使用Sendinblue,它允许您每月免费发送9000封电子邮件。SMTP中继服务保持良好的IP声誉。它们会阻止坏的发件人,并增加好的发件人,因此使用SMTP中继服务将增加访问收件箱的机会。 如何使用Postfix运输地图 传输映射定义了从收件人地址到传输方法的映射。默认情况下,Postfix中transport_maps参数的值未设置,可以通过以下方式进行检查: postconf transport_maps 样本输出: transport_maps = iRedMail和Modoboa使用MySQL/MariaDB数据库存储交通地图。如果使用iRedMail设置邮件服务器,则输出应如下所示: transport_maps = proxy:mysql:/etc/postfix/mysql/transport_maps_user.cf proxy:mysql:/etc/postfix/mysql/transport_maps_domain.cf 如果使用Modoboa设置邮件服务器,则输出应如下所示: transport_maps = proxy:mysql:/etc/postfix/sql-transport.cf proxy:mysql:/etc/postfix/sql-spliteddomains-transport.cf transport_将参数点映射到一个或多个transport lookup表。您可以编辑后缀主配置文件。 sudo nano /etc/postfix/main.cf 并通过在文件末尾添加以下行来设置值。/etc/postfix/transport文件将包含查找表。 transport_maps = hash:/etc/postfix/transport 如果使用iRedMail,可以找到transport_maps参数并将该值设置为 transport_maps = hash:/etc/postfix/transport proxy:mysql:/etc/postfix/mysql/transport_maps_user.cf proxy:mysql:/etc/postfix/mysql/transport_maps_domain.cf 如果使用Modoboa,可以找到tranport_maps参数,并将该值设置为: transport_maps = hash:/etc/postfix/transport proxy:mysql:/etc/postfix/sql-transport.cf proxy:mysql:/etc/postfix/sql-spliteddomains-transport.cf 查找表可以是文件,也可以是MySQL/MariaDB数据库表的形式。将按指定顺序搜索查找表,直到找到匹配项。 保存并关闭后缀主配置文件。接下来,我们需要创建查找表文件。 sudo nano /etc/postfix/transport 在这个文件中,我们可以定义从收件人地址到传输方法的映射。例如,我发现很多。pl(波兰)域正在使用一个特定的黑名单来阻止我的邮件服务器的IP地址。我可以在此文件中添加以下行,以便将电子邮件发送到。pl域将通过Sendinblue中继。 .pl relay:[smtp-relay.sendinblue.com]:587 有些人发现很难进入微软邮箱(hotmail.com、outlook.com等)的收件箱。你的电子邮件很可能会被放入垃圾邮件文件夹。嗯,你可以尝试使用Sendinblue向Microsoft邮箱用户发送电子邮件。Sendinblue甚至允许您查看收件人是否打开或单击了您电子邮件中的链接。所以我在文件中放了以下几行。 /.*@hotmail.*/i relay:[smtp-relay.sendinblue.com]:587 /.*@outlook.*/i relay:[smtp-relay.sendinblue.com]:587 /.*@live.*/i relay:[smtp-relay.sendinblue.com]:587 /.*@msn.*/i relay:[smtp-relay.sendinblue.com]:587 如果您想使用中继主机向特定收件人发送电子邮件,但直接向同一域中的所有其他收件人发送电子邮件,则可以添加如下行。 [email protected] relay:[smtp-relay.sendinblue.com]:587 如果某个SMTP服务器不使用默认的SMTP端口25,而是使用其他端口(如2525)来接收传入的电子邮件,则可以添加以下行 example.com smtp:[mail.example.com]:2525 在这个文件中添加自己的域名是一个很好的做法,如下所示。 your-domain.com local 这告诉Postfix,发送到您自己域的电子邮件应该在本地发送。这是规范域的默认行为。如果邮件服务器有多个虚拟域,则应添加所有虚拟域。 your-domain1.com local your-domain2.com local 如果您只在文件中添加以下两行,而不添加其他行,这将使所有电子邮件(发送到您自己域的电子邮件除外)通过中继主机发送。星号(*)是代表任何电子邮件地址的通配符。 your-domain.com local * relay:[smtp-relay.sendinblue.com]:587 我们还可以进行以下配置,这意味着发送到您自己域的电子邮件将在本地传递。发送到gmail的电子邮件。com通常通过执行MX查找来发送,所有其他电子邮件都通过中继主机发送。 your-domain.com local gmail.com smtp * relay:[smtp-relay.sendinblue.com]:587 保存并关闭文件。然后运行以下命令来构建索引文件。 sudo postmap /etc/postfix/transport 重新启动Postfix以使更改生效。 sudo systemctl restart postfix 发送方相关中继映射 传输映射定义了从收件人地址到传输方法的映射。如果要定义从发送方地址到中继主机的映射,请使用发送方依赖的中继映射参数。默认情况下,其值为空,如下所示: postconf sender_dependent_relayhost_maps 输出: sender_dependent_relayhost_maps = iRedMail使用MySQL/MariaDB数据库存储依赖于发件人的relayhost映射。如果使用iRedMail设置邮件服务器,则输出应如下所示: sender_dependent_relayhost_maps = proxy:mysql:/etc/postfix/mysql/sender_dependent_relayhost_maps.cf 发送方依赖关系将参数点映射到一个或多个查找表。您可以编辑后缀主配置文件。 sudo nano /etc/postfix/main.cf 并通过在文件末尾添加以下行来设置值。/etc/postfix/relay_by_sender文件将包含查找表。 sender_dependent_relayhost_maps = hash:/etc/postfix/relay_by_sender 如果使用iRedMail,可以找到sender_dependent_relayhost_maps参数,并将该值设置为 sender_dependent_relayhost_maps = hash:/etc/postfix/relay_by_sender proxy:mysql:/etc/postfix/mysql/sender_dependent_relayhost_maps.cf 查找表可以是文件,也可以是MySQL/MariaDB数据库表的形式。将按指定顺序搜索查找表,直到找到匹配项。 保存并关闭后缀主配置文件。接下来,我们需要创建查找表文件。 sudo nano /etc/postfix/relay_by_sender 添加如下规则,这将使从[email ;protected]发送的电子邮件通过右侧指定的中继主机发送。 [email protected] [smtp-relay.sendinblue.com]:587 假设你有一个Linux服务器,它有两个网站,每个网站都有自己的邮件服务器,运行在两个不同的主机上,那么你可以添加以下两行代码,让每个网站使用自己的邮件服务器。 domain1.com [mail.domain1.com]:587 domain2.com [mail.domain2.com]:587 保存并关闭文件。然后构建索引文件。 sudo postmap /etc/postfix/relay_by_sender 重新启动Postfix以使更改生效。 sudo systemctl restart postfix 设置SMTP身份验证 现在我们需要设置SMTP身份验证,以便Postfix SMTP客户端可以使用中继主机。编辑后缀主配置文件。 sudo nano /etc/postfix/main.cf 在该文件末尾添加以下行。/etc/postfix/sasl_密码将包含用户名和密码。 # outbound relay configurations smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_sasl_security_options = noanonymous smtp_tls_security_level = may header_size_limit = 4096000 如果您已经设置了relayhost参数,那么我建议像下面这样给它一个空值,因为我们现在使用的是传输映射和依赖于发送方的relayhost映射。 relayhost = 保存并关闭文件。然后创建/etc/postfix/sasl_passwd文件。 sudo nano /etc/postfix/sasl_passwd 将SMTP中继主机和SMTP凭据添加到此文件,如下所示。用SendinBlue提供的您自己的用户名和密码替换smtp_用户名和smtp_密码。注意用户名和密码之间有一个冒号。 [smtp-relay.sendinblue.com]:587 smtp_username:smtp_password 保存并关闭文件。然后用postmap创建相应的hash db文件。 sudo postmap /etc/postfix/sasl_passwd 现在你应该有一个文件/etc/postfix/sasl_passwd。db。重新启动Postfix以使更改生效。 sudo systemctl restart postfix 默认情况下,sasl_passwd和sasl_passwd。数据库文件可以被服务器上的任何用户读取。将权限更改为600,这样只有root用户才能读写这两个文件。 sudo chmod 0600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db 测试 现在,您可以向“传输映射”中定义的收件人发送测试电子邮件,或从“依赖发件人的relayhost映射”中指定的地址发送电子邮件。然后检查邮件日志(/var/log/mail.log或/var/log/maillog),看看它是否工作。 请注意,如果您使用的是第三方SMTP中继服务,如Sendinblue,则可能需要验证帐户中的域名,并编辑SPF和DKIM记录。 故障排除 错误#1 如果您的电子邮件未送达,而您在邮件日志(/var/log/maillog)中发现以下消息, Relay access denied (in reply to RCPT TO command)) 然后,您可能需要编辑/etc/postfix/sasl_passwd文件,并删除主机名后面的端口号,如下所示。 smtp-relay.sendinblue.com smtp_username:smtp_password 保存并关闭文件。然后再次构建索引文件。 sudo postmap /etc/postfix/sasl_passwd 重新启动Postfix以使更改生效。 sudo systemctl restart postfix 现在,您可以刷新电子邮件队列(尝试发送以前的电子邮件)。 sudo postqueue -f 错误#2 请注意,发件人依赖关系主机映射不支持特殊关键字:smtp、本地等。如果在后缀日志中看到以下错误,则表示您使用了smtp关键字。 Host or domain name not found. Name service error for name=smtp type=A: Host not found 额外提示:smtp_回退_中继 可以在后缀中指定回退中继主机。这样,如果无法到达SMTP目标(没有MX记录,没有A记录)或主中继主机处于脱机状态,Postfix将使用回退中继主机。 编辑主后缀配置文件。 sudo nano /etc/postfix/main.cf 在此文件中添加以下行。更换二次泵。relayhost。com与实际的relayhost名称。此中继主机可以来自Sendinblue或任何其他SMTP中继服务。 smtp_fallback_relay = [secondary.relayhost.com]:587 保存并关闭文件。然后,您应该编辑/etc/postfix/sasl_passwd文件,并像上面那样为回退中继主机添加SMTP凭据。最后,重新启动Postfix以使更改生效。 请注意,如果SMTP目的地使用greylisting临时拒绝电子邮件,那么您的Postfix SMTP服务器也将使用回退中继主机。 具有虚拟邮箱的每用户中继规则 假设你已经在Zoho这样的第三方服务上设置了商业电子邮件。现在你有了一个使用虚拟邮箱的自托管电子邮件服务器。你想在Zoho上保留旧的电子邮件地址,但在你自己的电子邮件服务器上创建新的电子邮件地址。在这种情况下,您需要创建每个用户的中继规则,以便将发送到旧电子邮件地址的电子邮件发送到Zoho邮件服务器。 编辑后缀主配置文件。 sudo nano /etc/postfix/main.cf 找到virtual_mailbox_maps参数,并将hash:/etc/postfix/transport添加到值字段。 virtual_mailbox_maps = hash:/etc/postfix/transport proxy:mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf, proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf 保存并关闭文件。然后在/etc/postfix/transport文件中,可以为旧电子邮件地址定义中继规则,如下所示。(注意:您也可以使用中继关键字而不是smtp。在这种情况下,它们都是正确的。) [email protected] smtp:[mx.zoho.com]:25 [email protected] smtp:[mx.zoho.com]:25 [email protected] smtp:[mx.zoho.com]:25 保存并关闭文件。然后为/etc/postfix/transport文件构建哈希表。 sudo postmap /etc/postfix/transport 然后重新启动Postfix。 sudo systemctl restart postfix 收尾 我希望本教程能帮助您使用后缀传输映射和依赖发件人的relayhost映射。和往常一样,如果你觉得这篇文章有用,订阅我们的免费时事通讯,获取更多提示和技巧。当心?
-
如何使用Sendinblue在Debian上设置后缀SMTP中继
本教程将向您展示如何在Debian上使用Sendinblue设置Postfix SMTP中继。Postfix是一种流行的开源SMTP服务器。之前,我写了一篇文章,介绍了如何在Debian上使用iRedMail轻松设置一个完整的电子邮件服务器,这帮助许多读者运行自己的电子邮件服务器。 然而,一些读者告诉我,作为控制垃圾邮件的一种方式,托管提供商/ISP阻止了端口25,因此他们无法发送电子邮件。如果您要求,Vultr将解锁端口25,ScalaHost根本不会阻止端口25,因此我建议使用ScalaHost VPS。DigitalOcean等其他一些主机提供商/ISP将拒绝解除对25号端口的封锁。 本教程适用于所有当前的Debian版本,包括Debian 9和Debian 10。 SMTP接力救援 您可以绕过端口25,通过SMTP中继发送电子邮件,因为它使用TCP端口587。使用SMTP中继,您自己的电子邮件服务器不会直接将电子邮件发送到目标电子邮件地址。相反,有一个中间邮件服务器,也称为智能主机或中继主机,代表您发送电子邮件。您的电子邮件服务器通过TCP端口587与中继主机通信,然后中继主机通过端口25与收件人的邮件服务器通信。 SMTP中继还可以帮助您绕过反垃圾邮件黑名单,如果您的IP地址因任何原因被列入黑名单。收件人的邮件服务器会根据公共反垃圾邮件黑名单检查中继主机的IP地址,而不是您的服务器IP地址,因为SMTP中继服务保持良好的IP信誉,所以您的电子邮件可以通过IP黑名单。 使用Sendinblue每天免费发送300封电子邮件 有几个电子邮件服务提供商(ESP)可以充当中继主机。有些收取一点费用,有些每月提供免费配额。在本文中,我想向您展示如何使用Sendinblue,这是一家电子邮件服务提供商,允许您每天免费发送300封电子邮件。 Sendinblue的好处在于,当你使用免费的SMTP中继服务时,它不需要你输入信用卡的详细信息。还有其他ESP每月提供免费配额,但要求您输入信用卡详细信息。我知道当你没有信用卡时会有多沮丧。与其他ESP相比,Sendinblue也更容易设置。 步骤1:创建Sendinblue帐户 在sendinblue创建一个免费帐户。通用域名格式。完成用户配置文件后,单击事务选项卡,您将获得SMTP设置。如果没有SMTP设置,您需要联系Sendinblue客户服务以激活事务性电子邮件服务。 现在,您需要配置Postfix SMTP服务器以使用Sendinblue SMTP设置。 步骤2:在Debian服务器上使用Sendinblue设置后缀SMTP中继 首先,让我们使用以下命令在Debian上安装Postfix SMTP服务器。如果Postfix已经在您的服务器上运行,那么请跳过安装Postfix,但您仍然需要安装libsasl2模块包。 sudo apt install postfix libsasl2-modules 当您看到以下消息时,按Tab键并按Enter键。 然后选择第二个选项:互联网站点。 接下来,设置系统邮件名称。例如,我输入我的域名linuxbabe。通用域名格式。 安装Postfix后,使用命令行文本编辑器(如Nano)打开主配置文件。 sudo nano /etc/postfix/main.cf 找到下面这行。 relayhost = 默认情况下,其值为空。将relayhost的值设置为[smtp relay.sendinblue.com]:587。 relayhost = [smtp-relay.sendinblue.com]:587 然后将以下行添加到此文件的末尾。 # outbound relay configurations smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_sasl_security_options = noanonymous smtp_tls_security_level = may header_size_limit = 4096000 保存并关闭文件。然后创建/etc/postfix/sasl_passwd文件。 sudo nano /etc/postfix/sasl_passwd 将SMTP中继主机和SMTP凭据添加到此文件,如下所示。用SendinBlue提供的您自己的用户名和密码替换smtp_用户名和smtp_密码。注意用户名和密码之间有一个冒号。 [smtp-relay.sendinblue.com]:587 smtp_username:smtp_password 保存并关闭文件。然后用postmap创建相应的hash db文件。 sudo postmap /etc/postfix/sasl_passwd 现在你应该有一个文件/etc/postfix/sasl_passwd。db。重新启动Postfix以使更改生效。 sudo systemctl restart postfix 默认情况下,sasl_passwd和sasl_passwd。数据库文件可以被服务器上的任何用户读取。将权限更改为600,这样只有root用户才能读写这两个文件。 sudo chmod 0600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db 从现在起,Postfix将通过Sendinblue发送电子邮件。 第3步:添加发件人地址 单击Sendinblue account仪表板右上角的下拉菜单,然后选择发件人&;“IP”选项卡以添加您的域和发件人地址。 步骤4:在SendinBlue中设置SPF/DKIM身份验证 在这一步中,我们需要设置SPF和DKIM记录,如果您希望您的电子邮件进入收件人的收件箱而不是垃圾邮件文件夹,强烈建议您这样做。 SPF:发送方策略框架。这是一个DNS记录,指定允许为您的域发送电子邮件的IP地址。 DKIM:DomainKeys已识别邮件。Sendinblue将使用私钥对您的电子邮件进行数字签名。DKIM记录包含一个公钥,允许收件人的电子邮件服务器验证签名。 在SendinBlue仪表板中,单击右上角的帐户名,然后单击Senders&;IPs。选择域选项卡->;管理->;验证这个域。 一个弹出窗口出现。您需要为您的域添加前3条记录。 创建SPF和DKIM记录后,请稍等片刻,然后单击添加的记录。请确认一下按钮。根据您的DNS托管服务,您的新DNS记录可能需要一些时间才能在Internet上传播。 去https://dnsmap.io检查您的DNS记录是否已传播到Internet。 有关DKIM记录,请访问https://www.dmarcanalyzer.com/dkim/dkim-check/,输入mail作为选择器,并输入域名以检查DKIM记录传播以及DKIM记录中是否存在错误。 如果SPF和DKIM记录设置正确且经过验证,则您的域将在Sendinblue中通过身份验证。 发送测试电子邮件 现在我们可以使用mailx命令发送测试电子邮件,如下所示。 sudo apt install bsd-mailx echo "this is a test email." | mailx -r from-address -s hello to-address 您还可以从webmail客户端或桌面邮件客户端发送测试电子邮件。在网上测试你的电子邮件分数也是个好主意https://www.mail-tester.com.如你所见,我得了满分。 故障排除 如果您的电子邮件未送达,而您在邮件日志(/var/log/mail.log)中发现以下消息, Relay access denied (in reply to RCPT TO command)) 然后,您可能需要编辑/etc/postfix/sasl_passwd文件,并删除主机名后面的端口号,如下所示。 smtp-relay.sendinblue.com smtp_username:smtp_passowrd 保存并关闭文件。然后再次构建索引文件。 sudo postmap /etc/postfix/sasl_passwd 重新启动Postfix以使更改生效。 sudo systemctl restart postfix 现在,您可以刷新电子邮件队列(尝试发送以前的电子邮件)。 sudo postqueue -f 添加其他域 如果您在新主机上为新域名设置邮件服务器,并且希望为此新域名设置SMTP中继,则只需再次执行步骤2、步骤3和步骤4。 收尾 就这样!我希望本教程能帮助您在Debian上设置Postfix SMTP中继,绕过端口25或IP黑名单。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?