openldap을 사용자 계정 백엔드로 사용하여 (Ubuntu Bionic 아래) dovecot 인스턴스를 설정합니다. 사용자 이메일은 다음과 같습니다
# find /home/virtual_mail/emont/ -type d -ls
2228468 4 drwxrwx--- 8 exim mail 4096 Jun 5 15:48 /home/virtual_mail/emont/
2228741 4 drwxrwx--- 5 exim mail 4096 Jun 4 12:08 /home/virtual_mail/emont/.foo1
2228744 4 drwxrwx--- 2 exim mail 4096 Jun 4 12:08 /home/virtual_mail/emont/.foo1/cur
2228746 4 drwxrwx--- 2 exim mail 4096 Jun 4 12:08 /home/virtual_mail/emont/.foo1/tmp
2228745 4 drwxrwx--- 2 exim mail 4096 Jun 4 12:08 /home/virtual_mail/emont/.foo1/new
2228471 20 drwxrwx--- 2 exim mail 20480 Jun 4 12:09 /home/virtual_mail/emont/cur
2228473 4 drwxrwx--- 2 exim mail 4096 Jun 3 15:49 /home/virtual_mail/emont/tmp
exim uid는 1000이고 mail gid는 8입니다.
이제 나는 비둘기장에서 최소한의 권한으로 이러한 항목에 액세스하기를 원하지만 그렇게 할 수는 없습니다.
# doveadm -D mailbox list -u emont
[..]
doveadm(emont): Debug: Effective uid=0, gid=0, home=/home/emont
내가 이것을 가지고 있더라도 (dovecot-ldap.conf.ext에, 아래도 참조하십시오):
user_attrs = homeDirectory=home,1000=uid,8=gid
즉, 나는 다음과 같은 것을 볼 것으로 예상합니다.
# doveadm -D mailbox list -u emont
[..]
doveadm(emont): Debug: Effective uid=1000, gid=8, home=/home/emont
저는 LDAP 인증 백엔드로 비밀번호 조회를 사용하고 있습니다(https://wiki.dovecot.org/AuthDatabase/LDAP/PasswordLookups) 그 부분은 잘 작동합니다(사용자/그룹을 얻었고 인증이 성공했습니다).
구성 덤프는 다음과 같습니다.
# doveconf -n
# 2.2.33.2 (d6601f4ec): /etc/dovecot/dovecot.conf
# Pigeonhole version 0.4.21 (92477967)
# OS: Linux 4.15.0-101-generic x86_64 Ubuntu 18.04.4 LTS ext4
auth_debug = yes
auth_verbose = yes
mail_location = maildir:/home/virtual_mail/%u
namespace inbox {
hidden = no
inbox = yes
list = yes
location =
mailbox Drafts {
special_use = \Drafts
}
mailbox Junk {
special_use = \Junk
}
mailbox Sent {
special_use = \Sent
}
mailbox "Sent Messages" {
special_use = \Sent
}
mailbox Trash {
special_use = \Trash
}
prefix = INBOX.
separator = .
type = private
}
passdb {
args = /etc/dovecot/dovecot-ldap.conf.ext
driver = ldap
}
protocols = " imap pop3"
service imap-login {
inet_listener imaps {
port = 993
ssl = yes
}
}
ssl_cert = </etc/dovecot/private/dovecot.pem
ssl_client_ca_dir = /etc/ssl/certs
ssl_key = # hidden, use -P to show it
userdb {
args = /etc/dovecot/dovecot-ldap.conf.ext
driver = ldap
}
LDAP의 경우 다음도 있습니다.
# grep -v ^# dovecot-ldap.conf.ext | sort | uniq
base = dc=example,dc=de
blocking = yes
dn = uid=queryimap,cn=users,dc=example,dc=com
dnpass = xxxxxxx
hosts = myldap.example.com:7389
ldap_version = 3
scope = subtree
tls = yes
tls_ca_cert_file = /etc/myssl/mysslcert.pem
tls_require_cert = hard
user_attrs = homeDirectory=home,1000=uid,8=gid
내가 뭘 잘못하고 있는지에 대한 제안이 있습니까? 미리 감사드립니다.
답변1
나는 해결책을 찾았다고 믿습니다./etc/dovecot/conf.d/10-mail.conf
first_valid_uid = 1000
last_valid_uid = 1000
[...]
first_valid_gid = 8
last_valid_gid = 8
이제 다음과 같은 예상 결과를 얻습니다.
# doveadm -D mailbox list -u emont
[...]
doveadm(emont): Debug: Effective uid=1000, gid=8, home=/home/emont
그래도 이에 대한 피드백을 환영합니다. 건배