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

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

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

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

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

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

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

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

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

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

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

Полный пример dovecot.conf ниже. Главный трюк - полная args линия в passdb раздел. Без password=something или nopassword=y, он считает, что почта хранится локально и проксирование не включено, и вы увидите сообщение об ошибке Error: mail_location not set and autodetection failed: Mail storage autodetection failed with 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>