我有一个带有本地帐户的 Linux 服务器(它们由 PHP-FPM 进程使用),它们使用 Postfix 的 sendmail 二进制文件来发送电子邮件。
所有电子邮件都通过本地 Postfix 发送到中央邮件中心,该中心认为来自托管服务器的电子邮件在某种程度上是值得信赖的(它们比来自互联网的电子邮件更受信任)。
问题是任何本地用户都可以作为任何发件人发送电子邮件(-f
sendmail 二进制文件或返回路径的参数)。
我想限制每个用户允许的发件人 - 即定义哪个用户可以发送电子邮件作为哪个发件人/发件人域。当用户随后将作为错误发件人发送电子邮件时,应丢弃该电子邮件。
我没有找到将 UID 或本地用户名映射到发件人的任何解决方案。
我找到的唯一解决方案是使用 SMTP,为每个本地用户创建一个 Postfix 帐户和密码,然后使用类似reject_sender_login_mismatch
in 的指令smtpd_sender_restrictions
。这更难以配置和维护,并且没有利用用户已经通过系统身份验证这一事实的好处,我想避免这种情况。
我自己的问题的答案是围绕 sendmail 二进制文件创建一个 shell 包装器来执行所有必要的检查,并在 PHP-FPM 的配置中使用这个包装器而不是 sendmail 二进制文件。
AFAIK没有其他解决方案。