• Postfix SMTP在单个VPS上具有多个IP轮换实例

    本教程将向您展示如何在单个VPS(虚拟专用服务器)上设置多个具有IP轮换的Postfix SMTP服务器实例。 为什么要使用多个IP地址 如果你使用Mautic这样的自托管电子邮件营销软件发送大量电子邮件,那么使用多个IP地址来传播电子邮件流量是一个很好的做法。如果邮箱提供商观察到大量来自单个IP地址的电子邮件,则很可能被识别为垃圾邮件。为了保持良好的IP声誉,您需要降低从单个IP地址发送的电子邮件流量。 Kamatera是最好的Linux VPS托管提供商,它允许您在一台主机上拥有多个IP地址。VPS的起价为每月4美元,每个新IP地址的起价为每月1美元。按照下面链接的教程创建具有多个公共IP地址的Linux VPS服务器。 如何在Kamatera上创建Linux VPS服务器 接下来,您可以使用iRedMail在Kamatera VPS上快速设置电子邮件服务器。 如何使用iRedMail在Ubuntu20.04上轻松设置自己的邮件服务器 如何使用iRedMail在Debian 10上轻松设置自己的邮件服务器 如何使用iRedMail在CentOS 8上轻松设置自己的邮件服务器 完成后,回到这里设置Postfix多个IP轮换实例。 您应该使用多少IP地址发送电子邮件? 如果你有一万个电子邮件订户,一个IP地址就足够了。 如果你需要一次发送10万封电子邮件,我建议至少5个IP地址。 Postfix多实例的结构 Postfix SMTP服务器可以配置为在一台主机上运行多个实例。所有实例共享相同的程序文件,但对以下文件使用唯一的目录。 配置文件 假脱机/队列 数据 本教程向您展示了设置2个后缀实例的过程。您可以使用相同的过程来添加第三个、第四个、第五个……实例。 步骤1:设置多个后缀实例 运行以下命令初始化Postfix中的多实例。 sudo postmulti -e init 这将在/etc/postfix/main的底部添加以下两行。cf文件。 multi_instance_wrapper = ${command_directory}/postmulti -p -- multi_instance_enable = yes 接下来,创建一个新的后缀实例。 sudo postmulti -e create -I postfix-smtp1 哪里: -e:编辑模式 -I:实例名,必须以后缀-。 它会自动创建/etc/postfix-smtp1/目录,其中包括主目录。cf和main。cf文件。/etc/postfix-smtp1/main。cf文件的底部有以下几行。 readme_directory = no inet_protocols = ipv4 master_service_disable = inet authorized_submit_users = queue_directory = /var/spool/postfix-smtp1 multi_instance_name = postfix-smtp1 改变 master_service_disable = inet 到 master_service_disable = 因此postfix-smtp1实例可以绑定到TCP套接字。每个后缀实例必须具有以下两个参数的唯一值。 myhostname = inet_interfaces = 例如,主实例(/etc/postfix/main.cf)可以使用 myhostname = smtp.example.com inet_interfaces = 11.22.33.44 postfix-smtp1实例可以使用 myhostname = smtp01.example.com inet_interfaces = 11.22.33.55 因此,每个实例都有一个唯一的主机名,并绑定到不同的IP地址。如果在/etc/postfix/main中添加了其他自定义设置。cf文件,您可以将它们复制到/etc/postfix-smtp1/main。cf文件。建议将您的所有IP地址添加到mynetworks参数中。 /etc/postfix-smtp1/master。cf包含Postfix提供的股票内容。同样,您可以从/etc/postfix/master复制自定义设置。cf文件。 接下来,在队列目录下创建一个etc目录。 sudo mkdir -p /var/spool/postfix-smtp1/etc/ 从主实例复制文件。 sudo cp -r /var/spool/postfix/etc/* /var/spool/postfix-smtp1/etc/ 然后运行以下命令以启用postfix-smtp1实例。 sudo postmulti -i postfix-smtp1 -e enable 现在重新启动主实例。 sudo systemctl restart postfix 然后启动postfix-smtp1实例。 sudo postmulti -i postfix-smtp1 -p start 如果你的配置文件有重复的参数,这个命令会显示给你,你需要删除重复的参数。可能重复的参数包括: mynetworks = inet_protocols = 如果postfix-smtp1实例无法启动,请检查邮件日志文件(/var/log/mail.log或/var/log/maillog)以查看出现了什么问题。 如果你想阻止它,快跑 sudo postmulti -i postfix-smtp1 -p stop 要重新加载配置文件,请运行 sudo postmulti -i postfix-smtp1 -p reload 要列出postfix-smtp1实例的邮件队列,请运行 sudo postqueue -c /etc/postfix-smtp1/ -p 请注意,sudo systemctl restart postfix命令只会重新启动主实例。要列出所有后缀实例,请运行 sudo postmulti -l -a 运行以下命令以检查Postfix是否正在侦听正确的IP地址。 sudo ss -lnpt | grep master 第2步:设置DNS负载平衡 您可以为VPS使用单独的主机名,并为主机名创建两个DNS a记录。这被称为DNS负载平衡。 然后将SMTP客户端(例如自托管电子邮件营销应用程序)配置为使用主机名。它将以循环方式尝试这两个IP地址。 3.设置防火墙 默认情况下,服务器有一个默认网关,它总是使用网关IP地址连接到其他服务器。为了实现更好的电子邮件交付,我们需要做到以下几点。 如果SMTP客户端连接到VPS上的第一个IP地址,则VPS应使用第一个IP地址发送电子邮件。 如果SMTP客户端连接到VPS上的第二个IP地址,则VPS应使用第二个IP地址发送电子邮件。 为了实现这一点,我们需要在服务器防火墙中配置SNAT(源NAT)。SNAT更改源IP地址。 Linux上有几种防火墙软件。以下是常见的。 iptables:Linux世界最著名的防火墙。 nftables:街区里的新孩子,应该取代iptables。 UFW:iptables的包装器,常见于Debian/Ubuntu服务器上。 Firewalld:iptables/nftables的包装器,常见于RHEL、CentOS、Rocky Linux和Alma Linux服务器上。 iptables 如果使用iptables,则需要运行以下两个命令来设置SNAT。 sudo iptables -t nat -A POSTROUTING -s 11.22.33.44 -p tcp --dport 25 -j SNAT --to-source 11.22.33.44 sudo iptables -t nat -A POSTROUTING -s 11.22.33.55 -p tcp --dport 25 -j SNAT --to-source 11.22.33.55 这意味着 如果连接来自第一个IP地址,则将其用作源IP地址。收件人的SMTP服务器会认为电子邮件来自第一个IP地址。 如果连接来自第二个IP地址,则将其用作源IP地址。收件人的SMTP服务器会认为电子邮件来自第二个IP地址。 UFW 如果使用UFW防火墙,请编辑/etc/UFW/before。规则文件。 sudo nano /etc/ufw/before.rules 在该文件底部添加以下行。根据需要更换IP地址。 # NAT table rules *nat :POSTROUTING ACCEPT [0:0] -A POSTROUTING -s 11.22.33.44 -p tcp --dport 25 -j SNAT --to-source 11.22.33.44 -A POSTROUTING -s 11.22.33.55 -p tcp --dport 25 -j SNAT --to-source 11.22.33.55 # End each table with the 'COMMIT' line or these rules won't be processed COMMIT 保存并关闭文件。然后重启UFW。 sudo systemctl restart ufw 防火墙 如果使用Firewalld,则运行以下两个命令来设置SNAT。根据需要更换IP地址。 sudo firewall-cmd --permanent --direct --add-rule ipv4 nat POSTROUTING 0 -s 11.22.33.44 -p tcp --dport 25 -j SNAT --to-source 11.22.33.44 sudo firewall-cmd --permanent --direct --add-rule ipv4 nat POSTROUTING 1 -s 11.22.33.55 -p tcp --dport 25 -j SNAT --to-source 11.22.33.55 重新加载Firewalld以使更改生效。 sudo systemctl reload firewalld 步骤4:为每个IP地址添加PTR记录 Kamatera不允许您在控制面板中编辑PTR记录。相反,你需要打开一张支持票,告诉他们为你添加PTR记录。你可能会想,这并不方便,但这是为了让垃圾邮件发送者远离平台,因此像我们这样的合法电子邮件发送者将拥有良好的IP声誉。 步骤5:配置SMTP身份验证 现在我们需要为postfix-smtp1 postfix实例配置SMTP身份验证。 sudo nano /etc/postfix-smtp1/master.cf 在此文件中添加以下行,以便SMTP客户端可以在TCP端口587上进行身份验证并提交发送的电子邮件。 submission inet n - n - - smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o content_filter=smtp-amavis:[127.0.0.1]:10026 保存并关闭文件。然后停止postfix-smtp01实例。 sudo postmulti -i postfix-smtp1 -p stop 然后重新开始。 sudo postmulti -i postfix-smtp1 -p start 第5步:测试 现在你可以发送测试邮件,看看它是否有效。 故障排除 如果您没有使用iRedMail,并且在邮件日志中看到以下错误(/var/log/mail.log或/var/log/maillog) postfix/submission/smtpd[4125]: warning: SASL: Connect to private/auth failed: No such file or directory postfix/submission/smtpd[4125]: fatal: no SASL authentication mechanisms 然后,需要为postfix-smtp1实例配置一个单独的Dovecot SMTP验证套接字。 sudo nano /etc/dovecot/conf.d/10-master.conf 您的服务验证部分可能如下所示: service auth { unix_listener /var/spool/postfix/private/auth { mode = 0660 user = postfix group = postfix } } 您需要为postfix-smtp1实例添加一个新的unix_侦听器,该实例使用/var/spool/postfix-smp1/目录作为spool目录。 service auth { unix_listener /var/spool/postfix/private/auth { mode = 0660 user = postfix group = postfix } unix_listener /var/spool/postfix-smtp1/private/auth { mode = 0660 user = postfix group = postfix } } 保存并关闭文件。然后重启多佛科特。 sudo systemctl restart dovecot 没有DKIM签名? 如果您使用OpenDKIM,但电子邮件中没有DKIM签名,那么您应该使用以下设置。 打开OpenDKIM配置文件。 sudo nano /etc/opendkim.conf 如果您的文件有下面这样一行,那么OpenDKIM正在使用Unix套接字接受来自Postfix的连接。 Socket local:/var/spool/postfix/opendkim/opendkim.sock 评论一下。我们需要将OpenDKIM配置为使用TCP/IP套接字。 Socket inet:[email protected] 保存并关闭文件。接下来,编辑主菜单。每个Postfix实例的cf文件,在文件中添加以下行,以便Postfix将通过TCP/IP套接字连接到OpenDKIM。 # Milter configuration milter_default_action = accept milter_protocol = 6 smtpd_milters = inet:127.0.0.1:8891 non_smtpd_milters = $smtpd_milters 保存并关闭文件。然后重新启动每个后缀实例。 收尾 我希望本教程能帮助您在单个VPS上设置多个具有IP轮换的Postfix SMTP服务器实例。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?

    2022.03.24 浏览:143