比较来自世界各地的卖家的域名和 IT 服务价格

防止发送邮件 Postfix 通过错误的网络接口

我有一个邮件服务器 Postfix, 主机具有多个网络适配器,其中一个是虚拟设备 tun0. 我需要这个邮件服务器在任何适配器上进行连接,并仅在虚拟设备上发送电子邮件。 tun.

我有一个配置,
https://serverfault.com/questi ... il-on
, 这决定了 smtp_bind_address = 10.20.30.40, 在哪里 10.20.30.40 - 与设备关联的此地址 tun0. 此服务器服务器不支持 IPV6.

多年来它完美无缺 - 只要有一天的设备 tun0 没有死 - 和 Postfix 通过默认网络设备发送电子邮件 eth0 (10.0.0,1), 但不是 tun0.

它是预期的行为吗? 我可以更改设置吗? Postfix 始终通过发送电子邮件 tun0 (10.20.30.40) - 如果在队列中留下邮件 tun0 无法使用?

如果这是相关的,那就是 Ubuntu 16.04.2 LTS 和 Postfix 版本 3.1.0-3. tun0 使用 OpenVPN 版本 2.3.10-1ubuntu2.1

- 编辑以添加其他详细信息 -

$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.0.0.1 0.0.0.0 UG 0 0 0 eth0
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
10.20.30.40 0.0.0.0 255.255.255.255 UH 0 0 0 tun0

此服务器上有几个服务,其中 Postfix 只有一个。 只有电子邮件必须通过 10.20.30.40 - 必须通过默认网关路由所有其他服务。
已邀请:

小姐请别说爱

赞同来自:

那会发生什么 postfix 将使用定制

smtp_bind_address

首先。 在你的情况下,它是一个静态的 ip, 拴 tun0. 当他赚钱时,它会关闭 tun0. 如果一个 tun0 不起作用,然后是客户

bind

将无法强迫 postfix 返回默认行为而不纠正终点 tcp 客户端,因此它将使用连接到的默认路由 eth0.

这似乎, postfix 不为拒绝提供合适的重新定义 smtp_bind_address.

所以,答案 - 只是阻止港口上的发出电子邮件 25 界面 eth0 使用表规则 IP. 这将导致所有电子邮件都在队列中站在队列中发生一段时间,或者在发生故障之前或直到它返回之前 tun0.

以下类似的事情应该有效:

iptables -A OUTPUT -i eth0 -p tcp --dport 25 -j DROP

这将防止通过端口发送整个电子邮件。 25 通过 eth0 它直接从您的服务器发送 (没有路由). 它不会阻止发送的邮政交通 tun0.

知食

赞同来自:

好久不见了 postfix. 但我认为你应该使用智能主机继电器。

知识主人 - 这是电子邮件消息传递代理的类型,允许服务器 SMTP 将电子邮件直接发送到中间邮件服务器,而不直接到收件人服务器。

转发器将是与邮政域中发件人的SPF记录对应的邮件服务器。 您的互联网提供商必须能够为您作为智能主机电子邮件中继行动。

可能与您设置参数一样简单

/etc/postfix/main.cf

例如 relayhost = mx1.mydomain.com:587

那么您不需要处理发送的界面邮件。

龙天

赞同来自:

通过我能够在实验室组装和测试的判断,似乎它是构思的。 smtp_bind_address 切换到另一个 inet_interface, 如果它不可用。

也许你可以配置另一个例子 Postfix, 只有一个 inet_interface 的

10.20.30.40

, 和外向 postmap / relay 到那个? 也许你可以通过多个适配器并强行发送一个IP地址。

要回复问题请先登录注册