Я пытаюсь настроить 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>