Можно ли использовать PAM с Postfix и Dovecot SASL?

Можно ли использовать PAM с Postfix и Dovecot SASL?

Я настроилПостфиксиспользоватьГолубятня SASLсПАМи пользователи Unix, а также Dovecot LDA (LMTP) для локального хранения почтовых ящиков. После некоторого тестирования выяснилось, что входящая почта отклоняется по следующей причине:

Ошибка: поиск passdb не удался для [пользователь]: настроенные passdb не поддерживают поиск учетных данных

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

Журналы

Тест doveadmпоиска:

$ doveadm auth lookup [user]
Error: passdb lookup failed for [user]: Configured passdbs don't support credentials lookups

Журнал отладки Dovecot после проверки поиска:

$ cat /var/log/dovecot/dovecot-debug.log | tail -5
[date][time] auth: Debug: master in: PASS    1       [user]  service=doveadm debug
[date][time] auth: Debug: pam([user]): Performing passdb lookup
[date][time] auth: Debug: pam([user]): passdb doesn't support credential lookups
[date][time] auth: Debug: pam([user]): Finished passdb lookup
[date][time] auth: Debug: passdb out: FAIL   1       reason=Configured passdbs don't support credentials lookups

Соответствующая конфигурация

Файл /etc/dovecot/conf.d/10-auth.conf:

auth_username_format = %Ln
auth_mechanisms = plain login
!include auth-system.conf.ext

Файл /etc/dovecot/conf.d/auth-system.conf.ext:

passdb {
    driver = pam 
    args = session=yes failure_show_msg=yes dovecot
}
userdb {
    driver = static
    args = uid=vmail gid=vmail home=/var/vmail/%n
}

Это файл /etc/pam.d/dovecotпо умолчанию, который поставляется с пакетом Dovecot для Rocky Linux (который эквивалентен RHEL и аналогичен Fedora):

#%PAM-1.0
auth       required     pam_nologin.so
auth       include      password-auth
account    include      password-auth
session    include      password-auth

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

Все логи указывают на то, что проблема связана с самим Dovecot SASL, а не с конфигурацией Postfix или Dovecot. Любые предложения будут высоко оценены.

решение1

Я понятия не имею, является ли это правильным решением проблемы (сейчас возвращаюсь и читаюкомментарий anxв моем первоначальном посте заставляет меня задуматься, так ли это), но мне удалось заставить работать и поиск, и аутентификацию, добавив вторую passdbзапись в конфигурацию Dovecot.

В конфигурации Dovecot я предшествовалБаза данных паролей PAMзапись спарольбаза данных паролейвход:

# e.g. /etc/dovecot/conf.d/auth-system.conf.ext
passdb { # This is not a typo
         # Passwd can be used both as a passdb and a userdb
    driver = passwd
}
passdb {
    driver = pam
    args = dovecot
}

Это делает поиск пользователя doveadm auth lookup [user]успешным. Однако,парольбаза данных не можетаутентифицироватьпользователей, поскольку пароли больше не хранятся в /etc/passwdфайле в системах Unix. Когда это происходит, поиск продолжается с базой данных паролей PAM, которая корректно аутентифицирует пользователя. Это можно проверить с помощью команды doveadm auth test [user].


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

Связанный контент