我正在构建一个电子邮件服务器,将使用 Postfix 作为 SMTP,使用 Dovecot 作为 IMAP。
该服务器将具有两个接口:
- wwan0 - 此接口具有静态公共 IP 地址,Postfix 将使用它来发送和接收电子邮件,Dovecot 将使用它来远程访问 IMAP - 由于它是 3G 连接,因此此接口的使用上限有限
- wlan0 - 此接口具有由 wifi/ADSL 路由器分配的私有 IP 地址 - 此接口将由 Dovecot 用于本地 IMAP,并用于剩余的非 Postfix 传出流量 - 此接口的使用上限更大
我的理解是我需要:
- 通过将 inet_interfaces main.cf 参数设置为公共静态 IP,告诉 Postfix 仅使用 wwan0 - 这应该使 Postfix 仅在 wwan0 上监听,并通过 wwan0 发送所有传出流量
- 将默认网关设置为 ADSL 路由器 - 这将导致所有剩余流量都通过 ADSL
- 将 Dovecot 设置为监听本地主机,以便所有接口响应 IMAP
对此的进一步扩展是探索如何让默认网关在 ADSL 出现故障时故障转移到 wwan0 连接(有时 ADSL 会掉线,但 WiFi 和路由器会保持运行但无法转发任何流量)。
我知道您可以拥有具有不同指标的多个默认网关,但我不明白这如何能解决 ADSL 故障而非路由器故障(因为网关仍然可以路由但无法转发流量)。
我看到过建议使用脚本检查 ADSL 是否仍然有效(ping 或 HTTP)并更改内核路由表以将流量引导到最佳接口。
我的理解正确吗?
答案1
如果您“将默认网关设置为 ADSL 路由器”,据我所知,这将导致所有(不是剩余的!)流量都流向 ADSL 路由器。因此,Postfix 的传出流量也将通过 ADSL 路由器。这可能不是您想要的...
这个问题的答案是——如果一条路径出现故障,如何让 Linux 更改默认路由?- 包含有关如何实施基于策略的路由的链接,这可能是您情况下最相关的解决方案。
但是,我不确定您的设置。据我所知,您有 2 个 Internet 连接。并且您的邮件服务器连接到这两个连接。那么我不确定为什么您需要始终将传出流量从 Postfix 发送到 wwan0。
我会这样设置:
- Postfix 在 wwan0 上监听
- Dovecot 同时监听
- 所有传出流量都通过 ADSL 路由器(默认路由)
在这种情况下,我只需设置一个具有不同指标的辅助网关(wwan0),而不使用基于策略的路由,并应用脚本来首选(更改指标)故障转移(辅助)网关,当某些资源不再可通过主网关访问时: