Під час користування форматом ім'я користувача @ домену Dovecot не вдалося знайти


14

У мене Dovecot v2.0.11 встановлений на сервері FreeBSD, і пошукові запити користувачів для вхідних адрес електронної пошти не вдається, але пошуки для користувачів системи успішні.

Dovecot налаштований на використання системних користувачів, тому мій dovecot.conf має

 userdb {
  driver = passwd
}

і

passdb {
  driver = passwd
}

У мене ввімкнено налаштування автентичності.

Наприклад, у мене є користувач під назвою webmaster, а використання doveadm користувача для "webmaster" працює так:

#doveadm user webmaster
userdb: webmaster
  system_groups_user: webmaster
  uid       : 1020
  gid       : 1020
  home      : /home/webmaster

Однак використання користувача doveadm для пошуку webmaster@myregisteredname.com не вдається:

# doveadm user webmaster@myregisteredname.com
userdb lookup: user webmaster@myregisteredname.com doesn't exist

Це призводить до того, що вхідна пошта для webmaster@myregisteredname.com відскакує з помилкою "невідомий користувач".

Ось помилка входу в систему / var / log / maillog:

Apr 16 20:13:35 www dovecot: auth: passwd(webmaster@myregisteredname.com): unknown user

Ось помилка ввійшла в /var/log/debug.log:

Apr 16 20:13:35 www dovecot: auth: Debug: master in: USER       1       webmaster@myregisteredname.com  service=doveadm
Apr 16 20:13:35 www dovecot: auth: Debug: passwd(webmaster@myregisteredname.com): lookup
Apr 16 20:13:35 www dovecot: auth: Debug: master out: NOTFOUND  1

Користувачі та їх домашні каталоги були імпортовані з іншого сервера, і користувачі налаштовували за допомогою інструмента vipw. Я впевнений, що у імпорті є щось, що я пропустив, і це не "пов'язує" користувача системи із пошуком голуба.

Будь-які ідеї про те, що це може бути?

EDIT: Користуючись порадою BillThor, я оновив dovecot.conf наступним чином:

#doveconf -n passdb userdb
passdb {
  args = username_format=%n
  driver = passwd
}
userdb {
  args = username_format=%n
  driver = passwd
}

Однак зараз, користувач doveadm не вдається по-іншому:

#doveadm user webmaster@pantronx.com
doveadm(root): Error: userdb lookup(webmaster@myregisteredname.com): Disconnected unexpectedly
doveadm(root): Fatal: userdb lookup failed for webmaster@myregisteredname.com

І більше не працює для користувачів без домену:

#doveadm user webmaster
doveadm(root): Error: userdb lookup(webmaster): Disconnected unexpectedly
doveadm(root): Fatal: userdb lookup failed for webmaster

Коли я отримую вищезгадані повідомлення, в / var / log / maillog:

Apr 17 17:30:02 www dovecot: auth: Fatal: passdb passwd: Unknown setting: username_format=%u
Apr 17 17:30:02 www dovecot: master: Error: service(auth): command startup failed, throttling

Відповіді:


15

Користувачі в dovecot за допомогою passdb не включають домен. Userid, який користувач повинен використовувати, це локальна частина, а не повна адреса електронної пошти.

Чеки, які проходять і проходять, працюють як очікується. Установка auth_username_format=%nперед визначенням db пароля працює. Однак домен не підтверджений.


Дякую за відповідь, але і це не працює. Я відредагував своє запитання з оновленими результатами.
сигарман

1
@Coleman: знайшов робоче рішення для Dovecot 1.2. Має працювати і для Dovecot 2. Дивіться редагування моєї відповіді. Знайшов рішення у файлі конфігурації за замовчуванням для ubuntu.
BillThor

13

Я використовую Ubuntu Server 12.04 і спробував вищевикладені рішення. Однак я виявив, що найпростіший і найпростіший спосіб було встановити в 10-auth.conf

auth_username_format = %n

Я використовую PAM для аутентифікації, яка є типовою для Ubuntu 12.04.


3

Я підозрюю, що Dovecot 2.1 або порушив це рішення, або змінив очікувану поведінку.

Я простежив ту ж помилку авторизації на userdb:

userdb {
  driver = passwd
}

Коли місцевий користувач (невіртуальний) отримує електронний лист через exim-> lmtp, він включає домен. Визначення auth_username_format =% Ln виправляє локальну доставку, але порушує віртуальну доставку. Запропонований виправлення додавання args = username_format, здається, ігнорується:

userdb {
  driver = passwd
  args = username_format=%n
}

а журнали містять попередження

Apr  4 11:24:57 moe dovecot: auth: Warning: userdb passwd: Move templates args to override_fields setting

Цікаво, що використання passwd-файлу спрацьовує , але auth шалений, що файл passwd належить root.

userdb {
  driver = passwd-file
  args = username_format=%n /etc/passwd
}

Apr  4 11:26:12 moe dovecot: auth: Error: passwd-file /etc/passwd: User root has invalid UID '0'
Apr  4 11:26:12 moe dovecot: auth-worker(6855): Error: passwd-file /etc/passwd: User root has invalid UID '0'

1

passwd-file: Unknown setting: username_format Для мене причиною був додатковий простір:

passdb {
  driver = passwd-file
  args = scheme=SHA256-CRYPT **extra-space-here**username_format=%u /etc/dovecot/users
}

тобто у мене було два пробіли між CRYPT та uesrname.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.