Переход Dovecot со статического на файл-пароль userdb driver

У меня есть почтовый сервер, настроенный на использование 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 . Однако мне сложно заставить его работать.

Используя тот же 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, auth lookup id = 345505793 (client-pid = 30121 client-id = 1)

dovecot: auth: Error: (скрыто ) пользователь не найден в userdb

Я пробовал много вариантов и прочитал много страниц вики dovecot, включая AuthDatabase / PasswdFile , но я не могу правильно интерпретировать документацию.

Как это сделать. Я переношу свою статическую конфигурацию в файл passwd с минимальными изменениями?

/ 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
}
0
задан 8 May 2019 в 20:33
2 ответа

Я ошибочно предположил, что поля, отличные от пользователя и пароля , необязательны, поскольку default_fields позаботятся о них.

] Фактически, в документации говорится (выделено мной)

[Файл паролей] имеет следующий формат:

пользователь: пароль: uid: gid: (gecos): home: (shell): extra_fields

Для базы паролей достаточно иметь только пользователя и поля пароля. Для пользовательской базы данных необходимо также установить uid, gid и, желательно, также home (см. VirtualUsers). Поля (gecos) и (shell) Dovecot не используются.

Таким образом, эти поля фактически являются обязательными. Но поскольку они уже установлены default_fields , они могут быть пустыми:

user:{SHA512}pwd:::

Я понял это случайно, потому что единственная рабочая учетная запись была той, на которой я тестировал квоту (с использованием для каждого пользователя userdb_quota_rule дополнительное поле)…

Пользователь doveadm (скрытый) также был очень полезен для отладки этой проблемы.

0
ответ дан 5 December 2019 в 02:59

Просто чтобы дополнить ваш ответ, вам нужно только два двоеточия после поля пароля, чтобы значения по умолчанию в userdb были подобрал.

/etc/dovecot/local.conf
-----------------------
passdb { 
  driver = passwd-file
  args = scheme=CRYPT username_format=%u /etc/dovecot/passwd
}

userdb {
    driver = passwd-file
    args = username_format=%u /etc/dovecot/passwd
    default_fields = uid=vmail gid=vmail home=/srv/vmail/%u
#    driver = static
#    args = uid=vmail gid=vmail home=/srv/vmail/%u
}
/etc/dovecot/passwd
-------------------
user@example.com:{SHA512}longPasswordHash::

Проверка с помощью doveadm дает также домашнюю папку:

$ doveadm user user@example.com
field   value
uid     5000
gid     5000
home    /srv/vmail/user@example.com
mail    maildir:/srv/vmail/user@example.com/Maildir
2
ответ дан 15 November 2020 в 18:57

Теги

Похожие вопросы