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

saslauthd и PAM: ошибка «Слишком много открытых файлов» - перезапуск saslauthd исправляет это - что не так?

У меня есть почтовый сервер Postfix, на котором запущен Debian Squeeze. SASL-аутентификация для безопасного SMTP поддерживается saslauthd, который полагается на pam, который полагается на winbind.

Эта закономерность, кажется, повторяется каждые пару недель:

  1. Изначально в /var/log/auth.log ошибок нет - postfix SMTP работает нормально
  2. Ошибки появляются в журнале через неделю и более:

    5 декабря 15:45:22 myhostname saslauthd [32586]: PAM не может выполнить dlopen (/lib/security/pam_winbind.so): /lib/security/pam_winbind.so: невозможно открыть файл общих объектов: слишком много открытых файлов 5 декабря 15 : 45: 22 myhostname saslauthd [32586]: PAM добавляет неисправный модуль: /lib/security/pam_winbind.so
    5 декабря, 15:45:22 myhostname saslauthd [32586]: PAM не может выполнить dlopen (/lib/security/pam_deny.so): /lib/security/pam_deny.so: невозможно открыть файл общих объектов: слишком много открытых файлов
    5 декабря 15:45:22 myhostname saslauthd [32586]: PAM добавляет неисправный модуль: /lib/security/pam_deny.so
    5 декабря 15:45:22 myhostname saslauthd [32586]: PAM _pam_load_conf_file: невозможно открыть /etc/pam.d/common-auth
    5 декабря 15:45:22 myhostname saslauthd [32586]: ошибка загрузки PAM (ноль)
    5 декабря, 15:45:22 myhostname saslauthd [32586]: PAM _pam_init_handlers: ошибка чтения /etc/pam.d/other
    5 декабря, 15:45:22 myhostname saslauthd [32586]: PAM _pam_init_handlers: [Критическая ошибка - немедленное прерывание]
    5 декабря 15:45:22 myhostname saslauthd [32586]: ошибка PAM при чтении файла конфигурации PAM
    5 декабря 15:45:22 myhostname saslauthd [32586]: PAM pam_start: не удалось инициализировать обработчики
    5 декабря 15:45:22 myhostname saslauthd [32586]: DEBUG: auth_pam: pam_start failed: Критическая ошибка - немедленное прерывание
    5 декабря 15:45:22 myhostname saslauthd [32586]: do_auth: ошибка аутентификации: [user = dteed] [service = smtp] [realm =] [mech = pam] [причина = ошибка запуска PAM]
    5 декабря 15:45:32 myhostname saslauthd [32586]: server_exit: мастер завершил работу: 32586
    5 декабря 15:45:32 myhostname saslauthd [1696]: detach_tty: master pid: 1696
    5 декабря 15:45:32 myhostname saslauthd [1696]: ipc_init: прослушивание сокета: / var / run / saslauthd / mux

В это время аутентификация всегда будет неудачной. Это можно проверить в testsaslauthd. Простой перезапуск saslauthd исправит проблему еще на неделю или две.

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

Вот файл /etc/pam.d/smtp:

account     required    pam_permit.so
auth        sufficient    pam_winbind.so debug
auth        required      pam_deny.so

Я не хочу запускать saslauthd в методе отладки (переднего плана). Я не думаю, что мне нужно больше процессов saslauthd - я использую 5, и этого было достаточно на предыдущем сервере с меньшей мощностью. Безопасный SMTP - это вариант, который не так широко используется нашими пользователями, но, вероятно, его использует одно соединение каждые пару минут.

Похоже, это ошибка, о которой сообщают в winbind самбы, хотя пожаловался saslauthd. Вот отчет об ошибке:

https://bugzilla.samba.org/show_bug.cgi?id=7265

Обходной путь, пока он не будет выпущен, - перезапускать winbind и saslauthd каждые несколько дней (в cron).