Я хочу обновить конфигурацию postfix, чтобы она ограничивала домены, на которые можно отправлять письма. Я думаю использовать smtpd_recipient_restrictions с check_recipient_access, основываясь на этом решении:https://serverfault.com/a/412805 Позволяет ли это использовать regex? Я хочу сказать, отправлять письма только на *@mydomain.com и блокировать все остальные. Что-то вроде этого:
smtpd_recipient_restrictions = check_recipient_access hash:/etc/postfix/recipients
где получателями будут:
*@mydomain.com PERMIT,
* REJECT,
Это осуществимо?
Редактировать: Я знаю, что это возможно с помощью transportmap, но мы уже используем check_recipient_access для блокировки нескольких идентификаторов, и я бы предпочел не вводить еще одну конфигурацию, если это возможно.
решение1
Да, см.человек 5 regexp_table.
Формат будет другим, вам нужно будет прописать полные регулярные выражения:
/.*@example\.com/ OK
/.*/ REJECT
или даже короче,
!/.*@example\.com/ REJECT
(действие по умолчанию будет «не найдено», поэтому оно будет продолжено со следующими smtpd_recipient_restrictions
элементами и будет разрешено по умолчанию).
Сохраните его в файл и подключите следующим образом:
smtpd_recipient_restrictions =
...
check_recipient_access regexp:/etc/postfix/my_regexp_recipients.cf,
...
Postfix позволяет указывать регулярные выражения в строке с версии 3.7. Ваша таблица очень короткая, поэтому вы можете получить
smtpd_recipient_restrictions =
...
check_recipient_access regexp:{ { !/.*@example\.com/ REJECT } },
...
и никаких дополнительных файлов.
Будьте осторожны. Вынуждатьсяиметь другие элементы ограничения. Просто настройка таким образом может сделать ваш сервер открытым ретранслятором по отношению к *@example.com
, если вы не примете меры против этого в этом или других smtpd_*_restrictions
параметрах ( reject_sender_login_mismatch
и т. д.).