我有一个使用Postfix的sendmail二进制文件发送电子邮件的本地帐户(它们被PHP-FPM进程使用)的Linux服务器。
所有电子邮件都通过本地Postfix发送到一个中央的邮件pipe理中心,在一定程度上(它们比互联网上的电子邮件更受信任),从而将来自主机服务器的电子邮件视为值得信赖的。
问题是,任何本地用户都可以作为任何发送者发送电子邮件(sendmail二进制文件的参数-f或Return-Path)。
我想限制每个用户允许的发件人 – 即定义哪个用户可以发送电子邮件作为哪个发件人/发件人域。 当用户发送电子邮件作为错误的发件人时,应该删除电子邮件。
我没有find任何解决scheme将UID或本地用户名映射到发件人。
我find的唯一解决scheme是使用SMTP代替,为每个本地用户创build一个Postfix帐户和密码,然后在smtpd_sender_restrictions使用像reject_sender_login_mismatch这样的指令。 这是更难以configuration和维护,并没有使用的好处,用户已被系统authentication的事实,我想避免这一点。
我自己的问题的答案是围绕sendmail二进制文件创build一个shell包装,以执行所有必要的检查,并在PHP-FPM的configuration中使用此包装,而不是使用sendmail二进制文件。
AFAIK没有其他解决scheme。