Справочная информация:
Я использую Dovecot в Debian 10 и переключаю серверную часть userdb / passdb с NIS на LDAP, в основном потому, что я хочу узнать о LDAP.
Для NIS у меня было это в dovecot.conf:
userdb {
driver = passwd
}
passdb {
driver = pam
args = dovecot
}
# mail_uid and mail_gid are NOT set
#mail_uid = dovecot
#mail_gid = mail
и это (извлечение) в nsswitch.conf:
passwd: files nis
group: files nis
shadow: files nis
Когда я переключился на LDAP, у меня есть это (извлечение) в dovecot.conf:
userdb {
driver = ldap
args = /etc/dovecot/dovecot-ldap.conf
}
passdb {
driver = ldap
args = /etc/dovecot/dovecot-ldap.conf
}
# mail_uid and mail_gid are still NOT set
#mail_uid = dovecot
#mail_gid = mail
и это (и только это) в dovecot-ldap.conf:
base = ou=Users,dc=pasta,dc=net
uris = ldap://192.168.1.21/
auth_bind = yes
auth_bind_userdn = uid=%u,ou=Users,dc=pasta,dc=net
И NIS, и версия LDAP работают, то есть я могу запустить Mutt и прочитать мою (alexis) почту.
Однако я хочу, чтобы Dovecot искал другие атрибуты из LDAP, например почтовая квота или домашний каталог, но не зацикливайтесь на этих конкретных атрибутах: я пытаюсь узнать, как передавать атрибуты из LDAP в Dovecot, и я просто собираюсь использовать домашний каталог в качестве примера в конфигурации ниже.
Проблема:
Итак, я сообщаю Dovecot, в каких записях LDAP определяется домашний каталог, добавляя это в dovecot-ldap.conf:
user_attrs = homeDirectory=home
Однако, как только я это сделаю, голубятня начнет жаловаться:
dovecot: imap(alexis)<26179><hHrHde6XHLjAqAEQ>: Error: Couldn't
drop privileges: User is missing UID (see mail_uid setting)
Что я пробовал:
Теперь я думаю, что текст mail_uid вводит в заблуждение: он мне не нужен с NIS, так зачем мне вдруг он нужен с LDAP?
И действительно, если я добавлю в dovecot .conf this:
mail_uid = dovecot
mail_gid = mail
тогда жалоба просто меняется на:
dovecot: imap(alexis): Error: Mail access for users with UID 111
not permitted (see first_valid_uid in config file, uid
from mail_uid setting).
Но UID dovecot - это просто значение по умолчанию в Debian 10: я не думаю, что мне следует возиться с этим. И, в любом случае, я не пытаюсь читать почту dovecot , я пытаюсь прочитать свою (alexis) почту, поэтому я действительно думаю, что это сообщение об ошибке вводит в заблуждение.
Я попытался просто поставить высокий числовой UID несуществующего пользователя в mail_uid
с предсказуемыми результатами:
dovecot: imap(alexis)<28748><7lb3y+6XmLjAqAEQ>: Error:
stat(/var/mail/maildir/alexis/tmp) failed: Permission denied
(euid=5000(<unknown>) egid=5000(<unknown>) missing +x perm:
/var/mail/maildir/alexis, dir owned by 1000:1000 mode=0700)
Я мог бы изменить владельца всего в / var / mail по своему усмотрению, но это действительно кажется неправильным.
Так что я снова закомментировал mail_uid
и mail_gid
.
Я подумал, что Dovecot почему-то решил, что нужно переключиться с анонимности Доступ LDAP (для получения атрибутов пользователя, а не для чтения почты) к аутентифицированному доступу LDAP, но добавление пользователя dovecot к LDAP и установка dn
и dnpass
в dovecot-ldap.conf не сделали разница, ошибка осталась:
dovecot: imap(alexis)<26179><hHrHde6XHLjAqAEQ>: Error: Couldn't
drop privileges: User is missing UID (see mail_uid setting)
Но он должен иметь возможность читать атрибуты без аутентификации:
ziti# ldapsearch -Y EXTERNAL -H ldapi:/// -W -b 'cn=config' -LLL "(objectClass=olcDatabaseConfig)"
...
dn: olcDatabase={1}mdb,cn=config
...
olcAccess: {0}to attrs=userPassword by self write by anonymous auth by * none
olcAccess: {1}to attrs=shadowLastChange by self write by * read
olcAccess: {2}to * by * read
...
ziti#
Я видел Не удалось сбросить привилегии: у пользователя отсутствует UID (см. настройку mail_uid) , но Я действительно хочу узнать , что здесь происходит, и , почему он не работает, вместо того, чтобы переключиться на другой драйвер userdb / passdb.
Я много гуглил и нашел много аналогичная проблема (с решениями), но ни одна из них не соответствовала моей ситуации (хотя это не помешало мне попробовать половину из них nyway).
Кто-нибудь может посоветовать, пожалуйста? Спасибо!
Doh... Установка user_attr к чему-то перезаписи значения по умолчанию! (Я невольно предположил, что это добавило заданные значения к значениям по умолчанию.)
, Таким образом, я просто должен был установить user_attrs для определения местоположений весь атрибуты, с которыми нуждалась Голубятня:
user_attrs = homeDirectory=home,uidNumber=uid,gidNumber=gid
Затем это работало.