Сначала позвольте мне объяснить мою установку. Я использую postfix 2.9.6 в Debian Wheezy. Я не разрешаю AUTH для порта 25 и заставляю MUA использовать вместо этого службу отправки на порту 587. Debian поставляется со следующей конфигурацией в master.cf (по умолчанию с комментариями):
submission inet n - - - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
-o milter_macro_daemon_name=ORIGINATING
Я не понимаю, почему в smtpd_client_restrictions находится разрешение_sasl_authenticated. Чтобы разрешить релейный доступ, он также должен быть добавлен в smtpd_recipient_restrictions (или smtpd_relay_restrictions, для postfix> = 2.10), либо в main.cf, либо, желательно, в дополнительном переопределении для службы отправки в master.cf:
-o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
В любом случае выполняется двойная проверка аутентификации, а при отложенной оценке списков ограничений обе проверки выполняются на этапе RCPT TO. Без ретрансляционного доступа клиенты AUTH могли бы отправлять в $ mydestination, но MTA на порту 25 уже позволяет это. Без отложенной оценки smtpd даже не имел бы информации об AUTH, когда он проверяет клиент.
Есть ли вообще какая-то польза от использования permission_sasl_authenticated в smtpd_client_restrictions? Что для этого нужно?
Это просто чистый способ переопределения main.cf, поскольку обычно smtpd_client_restrictions в main.cf не используется, что равносильно тому, что по умолчанию он установлен на smtpd_client_restrictions = allow.
Вы можете добиться того же результата, переопределив smtpd_recipient_restrictions, как вы говорите в своем вопросе, и в этом случае вам не понадобится оператор smtpd_client_restrictions, возможно, это могло бы иметь незаметное преимущество в производительности, но если бы были другие ограничения, присутствующие в smtpd_recipient_restrictions в main.cf релевантном для аутентифицированных клиентов вам также придется добавить их в master.cf и не забыть синхронизировать их с будущими изменениями.
Также с точки зрения разработчиков пакетов debian переопределение smtpd_client_restrictions является более безопасным вариантом, поскольку гораздо менее вероятно, что он что-то делал в main.cf по сравнению с smtpd_recipient_restrictions.
Отвечая на мой собственный вопрос, но я полагаю, что один из возможных вариантов использования будет следующим:
Если позже я добавил smtpd_client_restrictions в main.cf (по умолчанию он пуст), чтобы заблокировать спам или что-то еще, то наличие переопределения, уже присутствующего для отправки в master.cf, позволило бы клиентам AUTH пропустить эти ограничения. Отсутствие переопределения smtpd_client_restrictions может удивить кого-то, подвергнув клиентов AUTH проверке на спам. Конечно, это не обязательно плохо.
Postfix начал поддерживать смешанные списки ограничений. Избранные строки из: Документы Postfix
Around the time that smtpd_delay_reject was introduced, Postfix was also changed
to support mixed restriction lists that combine information about the client,
helo, sender and recipient or etrn command.
Mixing is needed for complex whitelisting policies. For example, in order to
reject local sender addresses in mail from non-local clients, you need to be
able to mix restrictions on client information with restrictions on sender
information in the same restriction list. Without this ability, many per-user
access restrictions would be impossible to express.
Вышеупомянутые параграфы ясно объясняют, почему смешанные ограничения поддерживаются и требуются.
В вашем случае вы не хотите, чтобы на client
(подключение IP / хоста) после их аутентификации. Предположим, у вас есть такое требование, как «Даже если пользователи проходят аутентификацию, они не должны иметь возможность отправлять электронную почту на someone@somedomain.com
", тогда ваш smtpd_recipient_restrictions
должно быть
#/etc/postfix/main.cf
smtpd_recipient_restrictions = check_recipient_access hash:/etc/postfix/blocked_rcptto
permit_sasl_authenticated
#/etc/postfix/blocked_rcptto
someone@somedomain.com REJECT No mails can reach this user from us
Надеюсь, это поможет.