Мы пытаемся использовать PostFix, чтобы проверить, разрешено ли электронному адресу отправителя отправлять на конкретный электронный адрес.
Другой способ описать это - это то, что я хочу, чтобы определенные адреса электронной почты разрешали только входящие сообщения (не входящие в систему SMTP) с определенных адресов электронной почты.
Будет ли что-то подобное работать? main.cf:
smtpd_recipient_restrictions =
[other restrictions here]
check_sender_access
mysql:/etc/postfix/restricted_senders_to_recipents.cf
limited_senders_to_recipents.cf:
user = uname
password = pword
hosts = 127.0.0.1
dbname = dbname
#!!!PSEUDOCODE!!!
query = SELECT allowed FROM members WHERE sender = %sender AND recipent = %recipent;
Это возможно? Если то как?
Я знаю, что псевдонимы в MySQL работают именно так, поскольку мы уже его используем. (http://www.postfix.org/mysql_table.5.html)
Короткий ответ - ВЕРОЯТНО НЕТ.
Postfix поддерживает ограничение на отправителя / получателя / клиента с Postfix для каждого клиента / пользователя / и т. Д. Контроль доступа с участием smtpd_restriction_classes
. С вашим требованием вы должны динамически установить smtpd_restriction_classes
параметр, но он не работает с постфиксом.
В качестве обходного пути вы можете использовать Milter (см. документация) или что-то вроде Postfwd или ПолитикаD
Кажется, вы можете сделать это в два этапа.
Сначала создайте smtpd_sender_restriction, который представляет собой поиск в mysql для адресов, принадлежащих классу пользователей, которым нужен acl:
smtpd_recipient_restrictions = reject_non_fqdn_sender,
...
mysql:/etc/postfix/protected_users.cf
Затем, поскольку этот поиск mysql вернет класс пользователей, вы можете назначить этот класс пользователей для выполнения другого поиска, чтобы решить, можно ли отправить почту:
smtpd_recipient_restrictions = reject_non_fqdn_sender,
...
proxy:mysql:/etc/postfix/protected_users.cf
whitelist = check_sender_access прокси: mysql: /etc/postfix/whitelist.cf, отклонить
Этот поиск из двух частей должен делать то, что вам нужно.