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


21

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

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

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

Answers:


25

您想要smtp_bind_address=66.66.66.67并且inet_interfaces=all或者inet_interfaces=eth(whatever)说66.66.66.67已打开。

进行更改,然后停止/启动后缀。如果要更改,您不能只是重新加载inet_interfaces


我尝试了smtp_bind_address选项,但是我的邮件服务器不再发送邮件了。而且我不认为inet_interfaces必须更改,因为我不想在该服务器上接收邮件。请注意,此IP仅用于发送邮件。
EarthMind

请发布您的信息,postconf -n以便我们了解您在说什么。如果需要,可以将IP匿名化为私有IP(10.xxx等),然后将域匿名化。(com | net | org | whatever)。
比尔·韦斯

2
smtp_bind_address是正确的方法,由于我正在使用的新IP没有rDNS记录,因此电子邮件发送受到了延迟。谢谢您的帮助。
EarthMind

3
smtp_bind_address设置IPv4地址,等效的IPv6是smtp_bind_address6
Paul Tobias

16

如果使用“ 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,您要使用该IP地址发送邮件。

佐尔坦


我认为当时我希望邮件服务器只侦听一个IP地址,以接收传入和传出的电子邮件。但是,不过,我感谢您提供的额外信息。谢谢。
EarthMind 2013年

1
ipv6可以使用吗?如果是这样,我可以包括两个地址并绑定到每个地址吗?使用此解决方案,我仍然通过ipv6而不是我指定的ipv4地址接收外发邮件
billynoah 2015年

我添加了-o smtp_bind_address6=1:2:3:4:5:6:7:8,似乎可以正常工作。
Billynoah 2015年

1
这是不正确的。这可能使后缀侦听多个接口,通过添加他们都inet_interfaces-或者只是将其设置为all(默认)配置smtp_bind_address。然后,通过smtp_bind_address (或smtp_bind_address6)指定的一个地址将独立用于Postfix smtp发送过程。
maxschlepzig

我在我的master.cf文件中添加了-o smtp_bind_address,但它不起作用。我在main.cf中使用了它,它确实起作用了。
Areeb Soo Yasir

10

master.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

main.cf

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

  2. 启用从属传输映射(需要后缀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

表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”。

例如,您要从mydomain.com使用3个不同的IP发送邮件。

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

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

然后,当postfix将随机分配三种不同的传输方式(旋转一到三)以发送此电子邮件时。


3

编辑/etc/postfix/main.cf并确保存在以下行

inet_interfaces = 66.66.66.67, localhost

然后运行“ postfix reload”


2
这仅将IP地址设置为侦听SMTP连接,而不是用于发送外发邮件的IP地址。
ub3rst4r 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.