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

Ear*_*ind 22 postfix ip

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

我怎样才能做到这一点?我的后缀版本是 2.3.3。

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

Bil*_*iss 28

你想要smtp_bind_address=66.66.66.67和/inet_interfaces=allinet_interfaces=eth(whatever)66.66.66.67 开启。

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

  • `smtp_bind_address` 设置 IPv4 地址,IPv6 等效为 `smtp_bind_address6` (4认同)
  • smtp_bind_address 是正确的方法,由于我使用的新 IP 没有 rDNS 记录,因此我的电子邮件传递出现延迟。衷心感谢您的帮助。 (2认同)

小智 17

如果您使用“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 地址之一,而不是 192.168.0.1,您要从中发送邮件的地址。

佐尔坦

  • 这不准确。通过将所有接口添加到“inet_interfaces”,或者将其设置为“all”(默认)并配置“smtp_bind_address”,**可以**让 postfix 监听多个接口。通过“smtp_bind_address”(或“smtp_bind_address6”)指定的一个地址将独立用于 Postfix smtp 发送过程。 (2认同)

小智 11

大师.cf

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

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
Run Code Online (Sandbox Code Playgroud)

主文件

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

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

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

transport_random_dependent.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
Run Code Online (Sandbox Code Playgroud)

表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.
Run Code Online (Sandbox Code Playgroud)

仅当您想对同一域使用随机传输时,才需要指令“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
Run Code Online (Sandbox Code Playgroud)

然后,当 postfix 将随机分配三个不同的传输(轮换一到三个)来发送这些电子邮件。