Билет Kerberos не принят Exim4

Вопрос или проблема

У меня есть проблема, которую я не могу решить уже несколько дней. Когда я использую имя и пароль, я могу отправить письмо. В отладочном выводе saslauthd я вижу: response: OK

Но когда я использую метод GSSAPI (который работает для Dovecot – Kerberos также работает хорошо), тикет не принимается Exim:

gssapi_server authenticator (gssapi): Проблема получения имени пользователя Cyrus SASL: общая ошибка

Это сообщение появляется, когда Exim получает тикет Kerberos или неправильное имя пользователя или пароль. Это общее сообщение. Разница в том, что в случае тикета Kerberos ничего не появляется в отладочном выводе saslauthd.

Я не понимаю, что может быть не так. Логи ошибок слишком скудные. Я не могу найти никаких руководств о том, как настроить Exim 4 с использованием GSSAPI. Если есть что-то, то это в основном устаревшее. (Предыдущая рабочая конфигурация, которая у меня была, с 2016 года.)

Ответ или решение

Проблема с получением билета Kerberos в Exim4 может быть вызвана несколькими факторами, и, как вы отметили, сообщение об ошибке не дает четкой информации о причине. Рассмотрим основные возможные причины и решения данной проблемы.

1. Конфигурация Exim4

Первое, на что стоит обратить внимание — это корректность конфигурации Exim4 для использования GSSAPI. Убедитесь, что в вашей конфигурации Exim4 правильные директивы для аутентификации через GSSAPI. В файле конфигурации Exim4 (обычно /etc/exim4/exim.conf, или /etc/exim4/conf.d/auth/30_exim4-config_primary) вам нужно указать следующее:

authenticator gssapi {
  server_condition = "${if and {def:tls_initiated} {def:myhostname}}"
  server_set_id = "gssapi"
  server_authenticators = gssapi
}

Убедитесь, что переменные myhostname и другие параметры правильно установлены.

2. Проверка конфигурации SASL

Другим важным шагом является корректная настройка saslauthd. Убедитесь, что saslauthd запущен с поддержкой GSSAPI. Например, для проверки запустите:

ps aux | grep saslauthd

Вы должны увидеть, что он запущен с флагом -a gssapi.

Кроме того, проверьте файл конфигурации saslauthd (например, /etc/default/saslauthd), чтобы убедиться, что указаны корректные параметры. Например:

START=yes
MECHANISMS="gssapi"
MECHANISMS_OPTIONS="socket=/var/run/saslauthd/mux"

3. Проверка прав на доступ к Kerberos

Убедитесь, что сервис Exim имеет соответствующие привилегии и доступ к Kerberos. Проверьте, что вы используете правильный ключ для сервиса Exim в файле конфигурации Kerberos (/etc/krb5.conf) и используете правильный служебный принципал в базе данных Kerberos. Пример принципала:

exim/myhostname@YOUR.REALM.COM

4. Логи и отладка

Для получения дополнительных сведений о проблеме активируйте более подробный уровень логирования в Exim. Добавьте или измените директиву log_level в конфигурации Exim на более высокий уровень:

log_level = 1

Также вы можете включить отладочный режим для saslauthd, добавив -d в его команду запуска.

Проверьте логи /var/log/exim4/mainlog и все другие логи Exim на наличие сообщений об ошибках, связанных с аутентификацией.

5. Проверка версии библиотек

Убедитесь, что используемая версия библиотек GSSAPI и SASL совместимы друг с другом и с вашей версией Exim4. Это можно сделать, выполнив команды:

dpkg -l | grep libsasl2
dpkg -l | grep gssapi

Заключение

Проблема с аутентификацией и получением билета Kerberos в Exim4 может быть вызвана рядом факторов, включая конфигурацию Exim, настройки saslauthd, права доступа к Kerberos и совместимость используемых библиотек. Проверка каждого из этих аспектов поможет выявить и устранить источник проблемы.

Если проблемы продолжаются и вы не можете найти решение, возможно, имеет смысл обратиться к сообществу Exim или к более опытным администраторам, которые могут предложить индивидуальные рекомендации.

Оцените материал
Добавить комментарий

Капча загружается...