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

PAM не будет аутентифицироваться с помощью mysql (make_scrambled_password устарел)

Я потратил некоторое время на поиски этого, и, похоже, я единственный, у кого проблема с PAM, не аутентифицируемым через mysql из-за текущих обновлений, поэтому я подумал, что опубликую здесь свою проблему, и если я найду решение, я опубликую здесь также для другие, чтобы следовать.

Короче - я запускаю postfix с saslauthd и dovecot. Оба проходят аутентификацию через pam, используя mysql в качестве источника учетных данных.

Все работало нормально до сегодняшнего обновления - я больше не могу подключиться к почтовому серверу, и вот что я вижу в журналах:

PAM unable to dlopen(/usr/lib/security/pam_mysql.so): /usr/lib/security/pam_mysql.so:     undefined symbol: make_scrambled_password
PAM adding faulty module: /usr/lib/security/pam_mysql.so
DEBUG: auth_pam: pam_authenticate failed: Module is unknown
do_auth         : auth failure: [user=xxxx] [service=smtp] [realm=xxxx] [mech=pam] [reason=PAM auth error]

Так что я могу ошибаться, но, насколько я понимаю, pam_mysql.so использует устаревший make_scrambled_password, который больше не поддерживается mysql.

Я не знаю, каким будет решение, и буду признателен, если кто-нибудь даст совет.


Я проверил исходный код на странице проекта и вижу, что используется устаревшая функция. Так что, похоже, это ошибка в pam_mysql, и потребуется обновление ([ошибка сообщена на странице pam_mysql sourceforge] [1], а также в системе отслеживания ошибок сообщества Arch (https://bugs.archlinux.org/task/39083?project=5&pagenum=1))


Я видел некоторые обходные патчи в Интернете (https://lists.fedoraproject.org/pipermail/scm-commit/2011-June/613231.html), однако я не уверен, подходит ли это для производственной среды. Вроде придется самому прошивать. Я отправлю сюда патч, чтобы другие могли его использовать.

Большое спасибо, Грег

Поддержка pam_mysql прекращена из-за того, что проект не работал почти 6 лет. Решением будет миграция и использование другого бэкэнда pam.

Я использовал cyrus sasl - теперь он был удален и заменен на dovecot, который предоставляет серверную часть аутентификации smtpd, распознаваемую postfix. Я настроил dovecot для использования sql изначально (без pam в середине).