我最近将 postfix 移至 docker 容器中,并在主机上暴露了端口 25 和 587。
执行此操作后,主机上的 cron 现在由于No MTA installed, discarding output
.
看起来 cron 尝试使用该sendmail
命令,该命令通常由 MTA 包提供。在主机上安装 postfix 来提供 sendmail 似乎有点愚蠢,它会尝试侦听端口 25 并与 dockerized postfix 的映射发生冲突。
我尝试安装msmtp
并添加/etc/msmtprc
:
account default
host localhost
auto_from on
maildomain [domain]
Cron 现在尝试通过 postfix 发送邮件,但即使使用 auto_from 和 maildomain 选项,它似乎也使用了裸露或无效的 from 标头,如From: root
或From: root (Cron Daemon)
,这会被拒绝。 opendkim 也无法处理这个问题。
我假设当 postfix 安装在主机上时,postfix 提供了sendmail
整理所有地址并mailname
根据需要附加的地址,但是极简主义的 msmtp 没有这样做?
这里的解决方案是什么?如何sendmail
在主机上获得使用 dockerized 后缀发送邮件的合理命令?
答案1
答案就在于local_header_rewrite_clients
选项。默认值为permit_inet_interfaces
,仅添加本地消息的域(来源IP 地址与后缀正在侦听的接口匹配)。
将其更改为permit_inet_interfaces,permit_mynetworks
允许 postfix 也附加myorigin
中的任何内容mynetworks
(在我的例子中包括 中的 docker 网络172.17.0.0/16
)。