Вопрос или проблема
У меня есть проблема, которую я не могу решить уже несколько дней. Когда я использую имя и пароль, я могу отправить письмо. В отладочном выводе 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 или к более опытным администраторам, которые могут предложить индивидуальные рекомендации.