Как отключить SMTP-доступ для определенных пользователей в Exim с помощью Dovecot Authenticator

Мне нужно сделать учетную запись электронной почты Dovecot IMAP только для приема, чтобы пользователи могли просматривать, перемещать и т. д. удалить существующие электронные письма б но без возможности отправлять электронную почту с этой учетной записи.

Отправка осуществляется через exim, принимающий SMTP-соединения от MUA. В качестве аутентификатора он использует Dovecot, например:

dovecot_plain:
     driver = dovecot
     public_name = PLAIN
     server_socket = /var/run/dovecot/auth-client
     server_set_id = $auth1

Как я могу сделать что-то вроде:

   unless_login_name_is = notallowed1@mydomain.com : notallowed2@mydomain.com

Изменить: вот что не работает ...

acl_smtp_mailauth = acl_check_mailauth

...

acl_check_mailauth:                                                                                                                                                                           
  deny condition = ${if eq{$authenticated_sender}{banned.user@example.com} {yes}{no}}

Я подумал, что это может быть неправильное условие, но делаю следующее:

acl_check_mailauth:                                                                                                                                                                           
  deny

тоже не действует. Я прочитал руководство , но не нашел, что оно помогло мне понять, что происходит.

Редактировать 2: попытаться acl_smtp_auth

Как было предложено @wurtel, я попытался использовать этот ACL вместо. Однако теперь я столкнулся с другой проблемой: AUTH приходит в ОБЫЧНОЙ форме, которая выглядит как

PLAIN <base64encodedvalue>

Чтобы получить имя пользователя, мне нужно его декодировать, однако $ {base64d: $ {sg {$ smtp_command_argument} {^ PLAIN} {}}} возвращает пустую строку.

Я думаю, это потому, что при декодировании начинается с байта NUL!

1
задан 29 November 2019 в 11:44
1 ответ

(Благодаря комментариям от @wurtel, которые были полезны в исключении моих начальных подходов)

я достиг этого путем изменения acl_smtp_auth со следующим ACL:

acl_check_mail:

  deny
    condition   = ${lookup{$authenticated_id}lsearch{/etc/exim4/users-not-allowed-to-send-mail}{yes}{no}}
    message     = "Sending mail is not enabled for this account"
    log_message = "Denied sending mail as '$authenticated_id'"

  # Uncomment the following to debug:
  # warn log_message = "acl_check_mail is accepting mail for '$authenticated_id'"

  accept

Затем у меня есть файл в /etc/exim4/users-not-allowed-to-send-mail со строками как

disabled.account@example.com
also.disabled@example.com

Примечание, которое ${lookup} достаточно полезно для не соответствия пустому $authenticated_id строке в файле.

1
ответ дан 3 December 2019 в 22:58

Теги

Похожие вопросы