У меня есть почтовый сервер для использования dovecot с виртуальными пользователями:
passdb {
driver = passwd-file
args = username_format=%n /etc/vmail/%d/users
}
userdb {
driver = static
args = uid=109 gid=111 home=/home/vmail/%d/%n
}
Теперь мне нужно установить квоты хранилища для некоторых пользователей. По-видимому, это невозможно с static
драйвер, поэтому я решил, что самый простой способ включить его - переключиться на passwd-file
. Однако я изо всех сил пытаюсь заставить его работать.
Используя тот же passdb
как указано выше и
userdb {
driver = passwd-file
args = username_format=%n /etc/vmail/%d/users
default_fields = uid=vmail gid=vmail home=/home/vmail/%d/%n
}
93.184.216.34 Я получаю следующие ошибки:
dovecot: imap: Ошибка: аутентифицированный пользователь не найден в userdb, идентификатор поиска аутентификации = 345505793 (client-pid = 30121 client-id = 1)
dovecot: auth: Error: passwd-file (username @ example.org, 93.184.216.34,): пользователь не найден из userdb
Я перепробовал много вариантов и прочитал много страниц вики dovecot, включая AuthDatabase / PasswdFile, но я не могу правильно интерпретировать документацию.
Как мне транспонировать мой static
конфигурация в passwd-file
с минимальными доработками?
/etc/vmail/%d/users
файлы имеют стандартную форму
user:{SHA512}…
А вот результат dovecot userdb
для этих настроек:
userdb {
args = username_format=%n /etc/vmail/%d/users
auth_verbose = default
default_fields = uid=vmail gid=vmail home=/home/vmail/%d/%n
driver = passwd-file
name =
override_fields =
result_failure = continue
result_internalfail = continue
result_success = return-ok
skip = never
}
Я ошибочно предположил, что поля кроме user
и password
были необязательными, так как default_fields
позаботится о них.
Фактически, документация состояния (выделено мной)
[Файл паролей] имеет следующий формат:
user:password:uid:gid:(gecos):home:(shell):extra_fields
Для базы паролей достаточно иметь только поля пользователя и пароля. Для базы данных пользователей необходимо также установить uid, gid и желательно также home (см. VirtualUsers). Поля (gecos) и (shell) Dovecot не используются.
Так что эти поля на самом деле обязательны. Но поскольку они уже установлены default_fields
, они могут быть пустыми:
user:{SHA512}pwd:::
Я понял это случайно, потому что единственная рабочая учетная запись была той, на которой я тестировал квоту (используя для каждого пользователя userdb_quota_rule
дополнительное поле)…
В doveadm user user@example.org
также был очень полезен для устранения этой проблемы.