我在 ubuntu vps 中使用 Postfix,有 2 个可用 IP。我希望我的 postfix 可以访问我的其他 IP,并随机使用它们。
我怎样才能做到这一点?
例如:主IP:66.66.66.66 其他IP:66.66.66.67 第二个IP:66.66.66.68
答案1
通过以下方式配置接口绑定:postconf -e "inet_interfaces = all
inet_interfaces(默认值:all)此邮件系统接收邮件的网络接口地址。指定“all”表示在所有网络接口上接收邮件(默认值),指定“loopback-only”表示仅在环回网络接口上接收邮件(Postfix 2.2 及更高版本)。该参数还控制将邮件投递给 user@[ip.address]。
注1:当此参数改变时,需要停止并启动Postfix。
注2:地址信息可以用[]括起来,但这里不要求这种形式。
当 inet_interfaces 仅指定一个非环回地址的 IPv4 和/或 IPv6 地址时,Postfix SMTP 客户端将使用此地址作为出站邮件的 IP 源地址。Postfix 2.2 及更高版本支持 IPv6。
在多宿主防火墙上,单独的 Postfix 实例监听“内部”和“外部”接口,这可以防止每个实例能够到达防火墙“另一侧”的远程 SMTP 服务器。将 smtp_bind_address 设置为 0.0.0.0 可避免 IPv4 的潜在问题,将 smtp_bind_address6 设置为 :: 可解决 IPv6 的问题。
对于多宿主防火墙,更好的解决方案是保留 inet_interfaces 的默认值,而是在 master.cf SMTP 服务器定义中使用显式 IP 地址。这样可以保留 Postfix SMTP 客户端的循环检测,确保防火墙的每一侧都知道另一个 IP 地址仍然是同一主机。将 $inet_interfaces 设置为单个 IPv4 和/或 IPV6 地址主要用于在辅助 IP 地址上虚拟托管域,此时每个 IP 地址服务于不同的域(并且具有不同的 $myhostname 设置)。
另请参阅 proxy_interfaces 参数,了解通过代理或地址转换器转发到 Postfix 的网络地址。
例子:
inet_interfaces = all (DEFAULT) inet_interfaces = loopback-only (Postfix version 2.2 and later) inet_interfaces = 127.0.0.1 inet_interfaces = 127.0.0.1, [::1] (Postfix version 2.2 and later) inet_interfaces = 192.168.1.2, 127.0.0.1
postconf -e
是一个用于维护 Postfix 配置的实用程序。
-e 编辑 main.cf 配置文件,并使用 postconf(1) 命令行上的“name=value”对更新参数设置。该文件被复制到一个临时文件,然后重命名到位。在 postconf(1) 命令行上指定引号以保护特殊字符和空格。
任何配置更改都需要通过重新启动 Postfix 来确认。
答案2
这是一个配置博客,/etc/postfix/main.cf
适用于机器上的所有接口。
myhostname = my_machine_name
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mydestination = my_machine_name, localhost.localdomain, localhost
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = ipv4
如果您使用的是 Ubuntu,您可以运行以下命令通过向导重新配置 Postfix:
sudo dpkg-reconfigure postfix
为什么这些解决方案对您不起作用?
编辑:ifconfig
在您的机器上运行并检查inet addr
连接到该机器上每个接口的。如果您没有看到66.66.66.66
或66.66.66.67
在那里,那么您的机器看不到任何一个地址,因此 postfix 配置毫无意义。