Я пытаюсь настроить постфикс, чтобы разрешить ретрансляцию при ограниченном наборе условий:
Вот соответствующие биты конфигурации:
smtpd_sasl_auth_enable=yes
relay_domains=example.com
smtpd_recipient_restrictions=permit_auth_destination,reject_unauth_destination
smtpd_client_restrictions=permit_sasl_authenticated,reject
Проблема в том, что для этого требуется выполнение ОБЕИХ ограничений, а не либо-либо. То есть он разрешает ретрансляцию только в том случае, если клиент аутентифицирован И домен получателя - @ example.com.
Вместо этого он нужен мне, чтобы разрешить ретрансляцию, если выполняется одно из требований. Как мне сделать это, не прибегая к запуску SMTP на двух отдельных портах с разными правилами?
Примечание:
Контекст - это MTA, предназначенный только для исходящего использования (привязанный к 127.0.0.1) на общем веб-сервере, который всем владельцам сайтов разрешено ретранслировать почту на один из «принадлежащих» доменов (хотя и не на локальный сервер), а также для ограниченному кругу «доверенных» владельцев сайтов разрешено пересылать почту без ограничений при условии, что у них есть действующий вход по SMTP.
И, конечно же, я разобрался через 6 минут после публикации вопроса.
Вы можете поставить permit_sasl_authenticated
в твоем smtpd_recipient_restrictions
установка и удаление smtpd_client_restrictions
все вместе.
smtpd_sasl_auth_enable=yes
relay_domains=example.com
smtpd_recipient_restrictions=permit_auth_destination,
permit_sasl_authenticated,reject_unauth_destination
Тот факт, что эта опция не задокументирована в http://www.postfix.org/postconf.5.html#smtpd_recipient_restrictions оказался источником немалого разочарования в этом случае.