我在RedHat上安装了一个简单的postfix安装,运行良好多年,并使用TLS / saslauthd / PAM来允许用户通过身份validation来从外部networking中继邮件。 所有用户都是本地Linux帐户,所以使用PAM的saslauthd方法一般运行良好。
有几个本地帐户不用于用户login,并将shell设置为/ sbin / nologin,但这些帐户仍然通过SMTP通过saslauthd公开。 我还没有find任何明显的方法来提供saslauthd帐户列表,应拒绝authentication。 基本上,我正在寻找一种白名单或黑名单用户帐户的方式,以便他们总是拒绝SMTP中继许可。 我不希望所有现有的本地帐户被允许中继邮件,只有那些我select的邮件。 有没有一个方便的方法来做到这一点,而不是我的当前身份validation链的重大变化?
一种方法是使用pam_listfile ,并拒绝用户提供的文本文件中列出的用户。
它是一个黑客,但你可以使用信封发件人授权, http://www.postfix.org/SASL_README.html#server_sasl_authz然后使用reject_sender_login_mismatch阻止未经授权的用户。
我怀疑给定的SASL用户排除在本地可能在Postfix。 但是,您可以创build一个自定义的Postfix策略服务 ,根据您select的任何标准来允许和拒绝访问。 我已经创build了pfxpold框架作为其基础,但是pfxpold需要一个定制的Perl类,可能对您的应用程序来说太重了。 尽pipe如此,对低利用率系统的小规模政策检查可以分解为几行shell脚本。