Рейтинг:0

Can PAM be used with Postfix and Dovecot SASL?

флаг ae

I have set up Postfix to use Dovecot SASL with PAM and Unix users, and Dovecot LDA (LMTP) for local mailbox storage. After some testing, turns out incoming mail gets declined with the reason:

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

That's both troublesome and troubling - I opted for PAM-based authentication because all sources I found suggested it's the simplest and most reliable way. It's hard for me to troubleshoot what's going wrong at this moment - I'm not sure if it's truly an issue with PAM or if something's wrong with my configuration.

Logs

The doveadm lookup test:

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

Dovecot debug log after the lookup test:

$ 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

Relevant configuration

The /etc/dovecot/conf.d/10-auth.conf file:

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

The /etc/dovecot/conf.d/auth-system.conf.ext file:

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

The /etc/pam.d/dovecot file is the default that came with the Rocky Linux (that equals RHEL and is the same as Fedora) Dovecot package:

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

However, I also tried the configuration as suggested by the official Dovecot PAM documentation and it didn't yield any different results. I am confident in the rest of my configuration, as I spent considerable time studying the options, but I still barely understand the PAM config...

All logs point at the issue being with the Dovecot SASL itself, not with the Postfix or Dovecot configuration. Any suggestions would be much appreciated.

anx avatar
флаг fr
anx
Драйвер PAM passdb просто дает вам результат бинарной аутентификации *success/failure*, и ваша userdb не помогает определить, какие пользователи существуют. Что вы *хотите* сделать, когда придет сообщение для `[email protected]`?
Marty Cagas avatar
флаг ae
Предпочтительно ответ _"Недоставленная почта возвращена отправителю"_, но если я правильно понимаю, это задача Postfix, а не Dovecot. Dovecot просто нужно проверить, существует ли этот пользователь на машине через SASL, и вернуть ответ Postfix. Аутентификация на этом этапе не происходит, но она должна работать, когда пользователи пытаются прочитать свои почтовые ящики через IMAP/POP3.
anx avatar
флаг fr
anx
(Если быть точным, даже лучше: постфикс, получив указание `reject_unverified_recipient`, узнает через LMTP, что Dovecot не смог найти этого пользователя, и сообщает об этом при входящем соединении. Ответственность за генерацию ответного сообщения лежит на ретрансляторе отправителя, это означает, что ваша установка не должна генерировать обратное рассеяние.)
Рейтинг:0
флаг ae

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

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

# например /etc/dovecot/conf.d/auth-system.conf.ext
passdb { # Это не опечатка
         # Passwd можно использовать как в качестве passdb, так и в качестве userdb
    водитель = пароль
}
БД {
    водитель = Пэм
    аргументы = голубятня
}

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


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

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.