我的邮件服务器的默认配置使用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]