Postfix+sasslauthd+PAM 我如何拒绝/允许特定用户进行身份验证?

Postfix+sasslauthd+PAM 我如何拒绝/允许特定用户进行身份验证?

我在 RedHat 上安装了一个简单的 postfix,多年来一直运行良好,并使用 TLS/saslauthd/PAM 允许用户进行身份验证以从外部网络中继邮件。所有用户都是本地 Linux 帐户,因此使用 PAM 的 saslauthd 方法通常效果很好。

有几个本地帐户不用于用户登录,并且 shell 设置为 /sbin/nologin,但这些帐户仍然通过 saslauthd 通过 SMTP 公开。我还没有找到任何明显的方法向 saslauthd 提供应拒绝身份验证的帐户列表。基本上,我正在寻找一种方法来将用户帐户列入白名单或黑名单,以便始终拒绝他们的 SMTP 中继权限。我不希望所有现有的本地帐户都被允许中继邮件,只有我选择的帐户才被允许。有没有一种方便的方法可以做到这一点,而不会对我当前的身份验证链进行重大更改?

答案1

一种方法是使用pam_列表文件并让它拒绝您提供给它的某些文本文件中列出的用户。

答案2

这是一种黑客行为,但你可以使用信封发件人授权,http://www.postfix.org/SASL_README.html#server_sasl_authz然后使用reject_sender_login_mismatch来阻止未经授权的用户。

答案3

我怀疑 Postfix 本身是否可以排除指定的 SASL 用户。不过,您可以创建自定义Postfix 策略服务根据您选择的任何标准允许或拒绝访问。我创建了普克斯波尔德框架作为实现此目标的基础,但 pfxpold 需要自定义 Perl 类,可能对您的应用程序来说太重了。不过,低利用率系统上的简单策略检查可以分解为几行 shell 脚本。

相关内容