В конфигурации моего почтового сервера по умолчанию используется reject_authenticated_sender_login_mismatch
Установка из smtpd_sender_restrictions
для предотвращения отправки произвольным пользователем A электронной почты от имени пользователя B (в поле FROM). Я понимаю, что в целом это хорошая политика, потому что даже одна взломанная учетная запись пользователя может открыть мой почтовый сервер как ретранслятор спама.
Однако я хотел бы разрешить конкретный пользователей (через белый список) для отправки почты как любой пользователь. Например, я хотел бы, чтобы мой веб-сервер аутентифицировал себя как x@example.com
но затем можно будет отправлять электронную почту от имени user1@example.com
, user2@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;
Я не уверен, как изменить это, чтобы добиться того, что я хочу.
Я понял, как изменить запрос в /etc/postfix/sender-login-maps.cf
чтобы разрешить любому пользователю с правами администратора (как определено в users.sqlite
table) для отправки электронной почты как любой другой пользователь в том же домене:
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);
В общем, если x@example.com
установлен как администратор (что вы можете сделать в базе данных пользователей или через интерфейс конфигурации вашей учетной записи), затем x@example.com
будет разрешено отправлять почту как user1@example.com
, user2@example.com
и т.д. Мне это кажется разумной политикой.