在 postfix 中,如何只允许某些用户像其他用户一样发送邮件?

在 postfix 中,如何只允许某些用户像其他用户一样发送邮件?

我的邮件服务器的默认配置使用reject_authenticated_sender_login_mismatch设置smtpd_sender_restrictions来阻止任意用户 A 以用户 B 的身份发送电子邮件(在发件人字段中)。我意识到这通常是一个很好的策略,因为即使只有一个用户帐户被盗,也会基本上打开我的邮件服务器作为垃圾邮件中继。

不过,我想允许具体的用户(通过白名单)以任何用户。例如,我希望我的 Web 服务器能够以 用户身份进行身份验证,[email protected]然后能够代表[email protected]用户[email protected]、用户等发送电子邮件。

所有其他经过身份验证的用户只能以自己的身份发送电子邮件。

我认为我对这个文件的理解是正确的/etc/postfix/sender-login-maps.cf,它目前包含:

dbpath=/home/user-data/mail/users.sqlite
query = SELECT permitted_senders
FROM (
    SELECT permitted_senders, 0 AS priority
    FROM aliases
    WHERE source='%s'
    AND permitted_senders IS NULL
    UNION
    SELECT email as permitted_senders, 2 AS priority
    FROM users
    WHERE email='%s'
    )
ORDER BY priority LIMIT 1;

我不知道如何修改它以实现我想要的。

答案1

我弄清楚了如何修改查询/etc/postfix/sender-login-maps.cf以允许任何具有“管理员”权限(如表中所定义users.sqlite)的用户像同一域中的任何其他用户一样发送电子邮件:

SELECT permitted_senders
FROM (
    SELECT permitted_senders
    FROM (
        SELECT permitted_senders, 0 AS priority
        FROM aliases
        WHERE source='%s'
        AND permitted_senders IS NULL
        UNION
        SELECT email as permitted_senders, 2 AS priority
        FROM users
        WHERE email='%s'
        )
    ORDER BY priority LIMIT 1
    )
UNION
SELECT email as permitted_senders
FROM users
WHERE privileges="admin"
AND SUBSTR(email, INSTR(email, '@') + 1) = SUBSTR('%s', INSTR('%s', '@') + 1);

因此基本上,如果[email protected]被设置为管理员(您可以在用户数据库中或通过您的帐户配置界面进行此操作),那么将被允许以、等身份[email protected]发送邮件。在我看来这似乎是一项合理的政策。[email protected][email protected]

相关内容