我的邮件服务器的默认configuration使用reject_authenticated_sender_login_mismatch设置来防止任意用户A以用户B(在FROM字段中)发送电子邮件。 我意识到这是一个很好的策略,因为即使是一个被盗用的用户帐户,基本上我的邮件服务器也会作为垃圾邮件中继。
不过,我想允许特定用户(通过白名单)以任何用户的身份发送邮件。 例如,我希望我的Web服务器将自己的身份validation为[email protected]但是可以代表[email protected] , [email protected]等发送电子邮件。
所有其他经过身份validation的用户应该只能以自己的身份发送电子邮件。
我想我正在使用/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;
我不知道如何修改这个来完成我想要的。
我想出了如何修改/etc/postfix/sender-login-maps.cf的查询以允许具有“admin”权限的用户(如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]设置为pipe理员(您可以在用户数据库中或通过您的账户configuration界面),则[email protected]将被允许发送邮件为[email protected] , [email protected]等。这对我来说似乎是一个合理的政策。