Прокси-сервер для аутентификации Dovecot IMAP с использованием Kerberos / GSSAPI

Я пытаюсь настроить Dovecot как аутентифицирующий обратный прокси-сервер перед уже работающим сервером IMAP для выполнения следующих действий:

  • Dovecot аутентифицирует пользователей с помощью Kerberos / GSSAPI (для разрешения единого входа).
  • При правильной аутентификации подключите Dovecot прокси к существующему серверу IMAP с аутентифицированным именем пользователя, используя обычное AUTH = ОБЫЧНЫЙ метод, но со случайным / пустым паролем. Я хочу именно этого, поскольку у меня будет внутренний IMAP-сервер доверять аутентифицирующему прокси, но он по-прежнему требует входа в PLAIN IMAP с фиктивным паролем.

Как далеко я продвинулся. ?

Основная проблема, с которой я сталкиваюсь, - это их сочетание. Страница аутентификации Kerberos / GSSAPI начинается со следующего:

Механизм аутентификации Kerberos не требует наличия passdb , но вам нужен userdb , чтобы Dovecot мог искать пользователя- конкретную информацию, например, где хранятся их почтовые ящики.

Что ж, для меня это звучит как двойная анти-функция: мне в первую очередь нужен passdb для прокси, а я не хочу он должен знать, «например, где хранятся их почтовые ящики», поскольку он должен просто проксировать все на внутренний сервер.

Итак, может ли кто-нибудь указать мне правильное направление здесь?

(Я только начинаю с Dovecot, так что терпите меня. Кроме того, использование Dovecot не является обязательным требованием. Сервер IMAP, который я использую в качестве бэкэнда, - это шлюз Kopano, который, похоже, не поддерживает SSO , но имеет позвольте мне обойти аутентификацию по паролю .)

1
задан 24 July 2019 в 02:35
2 ответа

Установите атрибуты passdb, чтобы включить pass = мастер-пароль . Dovecot требуется пароль для проверки прокси-сервера. Очевидно, что с GSSAPI у него его нет, поэтому укажите свой мастер-пароль (или с помощью kopano вы можете указать что угодно, если у вас установлен bypass_auth ). См. Документы Dovecot , в частности раздел «Главный пароль».

2
ответ дан 3 December 2019 в 18:24

В конце концов все заработало благодаря подсказкам Алекса в другом ответе и заключительной помощи в списке рассылки Dovecot, где Тимо - исходный автор Dovecot - ответил

Полный пример dovecot.conf ниже. Главный трюк - это полная строка args в разделе passdb . Без password = something или nopassword = y он считает, что почта хранится локально, а проксирование не включено, и вы увидите ошибку Error: mail_location not set and сбой автоматического определения: сбой автоматического определения хранилища почты с home = (not set) . Дополнительные небольшие оговорки в комментариях.

protocols = imap

passdb {
  driver = static
  args = proxy=y host=127.0.0.1 port=1143 pass=masterpass nopassword=y
}

# Deliberately omitted userdb, because this is a proxy.

# Kerberos authentication settings
auth_mechanisms = gssapi
auth_gssapi_hostname = mailhost.mydomain.tld
auth_realms = MY-REALM.DOMAIN.TLD
auth_default_realm = MY-REALM.DOMAIN.TLD
# This keytab file contains keys for principal imap/mailhost.mydomain.tld@MY-REALM.DOMAIN.TLD
# Unlike SSL keys/certs, do not use '= <', but plain '=' to path of file.
auth_krb5_keytab = /etc/dovecot/imap.keytab
# Pass only local username part to the backend.
auth_username_format = %n

# Logging to foreground with some verbose logging for authentication.
log_path = /dev/stderr
auth_verbose = yes

# Require StartTLS or plain TLS for any interaction.
ssl = required
ssl_cert = </path/to/cert.crt
ssl_key = </path/to/key.pem
ssl_prefer_server_ciphers = yes
ssl_min_protocol = TLSv1.2
ssl_cipher_list = ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384

Затем в журнале будет показано:

imap-login: Info: proxy(username): started proxying to 127.0.0.1:1143: user=<username>, method=GSSAPI, rip=1.2.3.4, lip=9.9.9.9, TLS, session=<iJvnvg6P8KEKAAYE>
1
ответ дан 3 December 2019 в 18:24

Теги

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