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

ale*_*exw 6 postfix

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

但是,我想允许特定用户(通过白名单)以任何用户的身份发送邮件。例如,我想有我的Web服务器本身作为身份验证x@example.com,最后是能够代表发送电子邮件user1@example.comuser2@example.com等等。

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

我认为我正在使用该/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;
Run Code Online (Sandbox Code Playgroud)

我不知道如何修改它来完成我想要的。

ale*_*exw 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);
Run Code Online (Sandbox Code Playgroud)

所以基本上,如果x@example.com设置为管理员(您可以在用户数据库中或通过您的帐户配置界面执行此操作),那么将被允许以、等方式x@example.com发送邮件。对我来说,这似乎是一个合理的策略。user1@example.comuser2@example.com