如何让 Postfix 使用另一个 IP 地址?

如何让 Postfix 使用另一个 IP 地址?

我正在使用 Postfix 邮件服务器,有 6 个可用 IP。我想为 Postfix 邮件服务器使用另一个 IP 来发送邮件,而不是使用 Web 服务器。

我该怎么做?我的 postfix 版本是 2.3.3。

例如:主IP:66.66.66.66 其他IP:66.66.66.67

答案1

您想要smtp_bind_address=66.66.66.67并且inet_interfaces=allinet_interfaces=eth(whatever)66.66.66.67 处于开启状态。

进行更改,然后停止/启动 postfix。如果你正在更改,则不能直接重新加载inet_interfaces

答案2

如果您使用“smtp_bind_address”解决方案,那么您的邮件服务器也将只在指定的 IP 地址上监听传入邮件。同样的情况也适用于“inet_interfaces”解决方案。如果您想在多个 IP 地址/接口上监听传入邮件,这可能不是理想的解决方案。

我的解决方案更好,因为我建议不要更改默认的“smtp_bind_address”和“inet_interfaces”设置,这样您的邮件服务器仍会监听所有 IP 地址上的传入邮件。

只需要在您的 /etc/postfix/master.cf 文件中做一些小的改动。

更改此部分:

smtp unix - - - - - smtp
# 当将邮件作为备份 MX 中继时,禁用 fallback_relay 以避免 MX 循环
中继 unix - - - - - smtp
        -o smtp_fallback_relay=

更改为:

smtp unix - - - - - smtp
        -o smtp_bind_address=192.168.0.1
# 当将邮件作为备份 MX 中继时,禁用 fallback_relay 以避免 MX 循环
中继 unix - - - - - smtp
        -o smtp_bind_address=192.168.0.1
        -o smtp_fallback_relay=

当然,您必须使用您自己的 IP 地址之一(即您想要用来发送邮件的 IP 地址),而不是 192.168.0.1。

佐尔坦

答案3

主配置文件

创建不同的接口。每个域一个:

rotate1  unix -       -       n       -       -       smtp
          -o syslog_name=postfix-rotate1
          -o smtp_helo_name=domainone.com.br
          -o smtp_bind_address=173.111.111.1

rotate2  unix -       -       n       -       -       smtp
          -o syslog_name=postfix-rotate2
          -o smtp_helo_name=domaintwo.com.br
          -o smtp_bind_address=173.111.111.2

主配置文件

  1. 禁用所有其他传输图,即:#transport_maps = xxxxx

  2. 启用依赖传输图(需要 postfix 2.7.x 或更高版本)

sender_dependent_default_transport_maps = mysql:/etc/postfix/config/transport_random_dependent.cf

传输_随机_依赖.cf

例子:

user = postfix
password = mypassword
dbname = postfixdb
hosts = localhost
query = SELECT transport FROM transport_random WHERE domain = '%d' AND status='1' ORDER BY RAND() LIMIT 1

表 transport_random

Column "transport" = rotate1, rotate2, rotate3, rotate4 (etc)
Column "domain" = sender domains (replaced by %d)
Column "status" = boolean (0 or 1) if is enabled the transport.

仅当您想对同一域使用随机传输时,指令“RAND() LIMIT 1”才是必要的。

例如,您想从 3 个不同的 IP 从 mydomain.com 发送。

然后,您使用 3 个不同的 IP 创建 3 个传输(rotate1、rotate2 和 rotate3),然后在 mysql 行中设置:

transport = rotate1 | domain = mydomain.com
transport = rotate2 | domain = mydomain.com
transport = rotate3 | domain = mydomain.com

然后,postfix 将随机使用三种不同的传输方式(轮流使用一到三)来发送这些电子邮件。

答案4

如果是给您的连续 IP 块到达您的 WAN 网关,并且您希望主机使用与 WAN 上显示的第一个地址不同的地址,则必须创建 NAT/防火墙解决方案。如果是这样,请忽略其余答案。在这种情况下,他们的做法是错误的。

更一般地,由于这是用于电子邮件服务器,因此您肯定希望有一个策略来强制传出连接反映您使用的所选公共 IP。否则反向 DNS 检查、SPF 检查等将失败。

我通常不会发布第三方/商业网站,因为它们往往会消失,但类似于此:

https://www.sonicwall.com/support/knowledge-base/how-do-i-present-to-the-internet-an-internal-ip-with-another-public-ip-from-the-wan-subnet/180919132734964/

^ 非常容易应用于其他防火墙/设备。

您还需要一个策略来执行相反的操作。仅允许来自您想要到达给定 LAN 服务器的公共 IP 的入站流量。但是,您可能已经弄清楚了这一点。

如果需要从实际服务器(在您的情况下是 www 与电子邮件)提供(监听或其他方式)多个公共 IP,则此处批准的其他答案将起作用。即便如此,您仍应正确设置 WAN<->NAT<->LAN,尽管在配置软件端/postfix/apache/nginx/等之前,请按照上述操作。

相关内容