我正在使用 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=all
或inet_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
主配置文件
禁用所有其他传输图,即:#transport_maps = xxxxx
启用依赖传输图(需要 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 检查等将失败。
我通常不会发布第三方/商业网站,因为它们往往会消失,但类似于此:
^ 非常容易应用于其他防火墙/设备。
您还需要一个策略来执行相反的操作。仅允许来自您想要到达给定 LAN 服务器的公共 IP 的入站流量。但是,您可能已经弄清楚了这一点。
如果需要从实际服务器(在您的情况下是 www 与电子邮件)提供(监听或其他方式)多个公共 IP,则此处批准的其他答案将起作用。即便如此,您仍应正确设置 WAN<->NAT<->LAN,尽管在配置软件端/postfix/apache/nginx/等之前,请按照上述操作。