我在具有多个外部接口和多个内部接口的系统上运行 postfix,并且我希望 postfix 从外部接口接受本地传送的电子邮件并接受从内部接口中继的电子邮件。
问题在于内部接口的网络地址是动态的,并且会随着接口的启动和关闭而变化(它是一个 docker 服务器,内部接口是 docker 服务启动时根据设置时可用的不可路由网络自动设置的网桥)。
我知道内部接口是如何命名的,所以我想使用类似以下命令设置 postfix:
mynetworks = if:docker0 if:docker1
但显然这不是该mynetworks
做的。有没有办法在 postfix 中设置这样的设置?
答案1
不
如果你阅读/搜索 postfix 参数的整个页面人postconf,那么显然所有参数(包括mynetworks
)都不处理网络接口。Postfix 仅处理更高层,例如 IP 地址、域名等。
解决方法是使用脚本来检测 IP 地址是否发生变化。此脚本会将新 IP 地址写入文件。然后将mynetworks
参数设置为该文件
mynetworks = /path/to/script/output
示例脚本可见这一页。
一些说明:
- 你的脚本应该解析并验证 IP 地址格式覆盖之前。否则 postfix 可能会出现错误或停止工作。
postfix reload
当它改变时不要忘记执行。
知道谁应该触发脚本
- 定时任务
- Docker 服务(我对 docker 和它的朋友没有经验:))
- 当网络接口状态变为 up 时(如Debian 上的帖子或者Ubuntu 中的 if-up.d 文件夹)