Назад | Перейти на главную страницу

Postfix - Есть ли способ отклонить недействительную аутентификацию (даже для моих сетей)?

У меня есть рабочая конфигурация postfix / dovecot, работающая со следующим правилом для отклонения получателей:

smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject

Это работает по назначению (авторизация аутентифицированных пользователей или пользователей из mynetworks, отклонение других). Однако, если пользователю, пришедшему из mynetworks, не удается пройти аутентификацию, он не отклоняется.

Есть такое правило, как reject_invalid_sasl_auth? Что-то, что отклоняет пользователя только в том случае, если он ввел недопустимую аутентификацию, но допускает пользователей без аутентификации.

В противном случае, есть ли другой способ, кроме правил ограничения, для достижения такого поведения (параметр SASL, настраиваемая политика)?

Поскольку вы явно разрешаете только авторизованных пользователей SASL, если пользователь не аутентифицирован, проверяется следующее ограничение в строке - mynetworks, которое, как оказалось, совпадает.

Итак, полностью из-за вашего правила упорядочивания клиентов без авторизации разрешены из ваших доверенных сетей.

Вместо этого рассмотрите возможность настройки следующим образом:

smtpd_client_restrictions = permit_sasl_authenticated, reject
smtpd_recipient_restrictions = permit_mynetworks, reject

ОБРАТИТЕ ВНИМАНИЕ, что когда вы примените это к своему внешнему порту 25 прослушивателя smtpd, это приведет к тому, что вы никогда не будете получать интернет-почту.

Я думаю, что идея могла бы состоять в том, чтобы запустить ваш MTA, где вы получаете почту от других одноранговых узлов (других почтовых серверов) через порт 25. Вы запускаете другой процесс smtpd на порту 587 для получения от аутентифицированных пользователей.

Таким образом, у вас могут быть стандартные правила, например:

smtpd_recipient_restrictions =
  permit_mynetworks
  reject_unauth_destination

в вашем main.cf

OTOH вы настраиваете свой порт 587 следующим образом в master.cf, например:

submission inet  n       -       -       -       -       smtpd
    -o smtpd_enforce_tls=yes
    -o smtpd_sasl_auth_enable=yes
    -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject

ОБНОВИТЬ

Чтобы ответить на комментарий. Это делает две вещи.

Во-первых, если он получает соединение через порт 25, он будет принимать только от mynetworks, он никогда не будет принимать почту, кроме той, которая может быть доставлена ​​локально.

Во-вторых, если он получает соединение через порт 587, он будет принимать почту только от аутентифицированных клиентов.