dovecot userdb passwd-file default_fields uid가 %변수를 확장하지 않음

dovecot userdb passwd-file default_fields uid가 %변수를 확장하지 않음

나는 각 '도메인'이 시스템 사용자인 매우 간단한 공유 메일 서버를 설정하려고 합니다. 즉, 'example.com'은 /home/example.com/, uid 5001 및 gid '를 가진 실제 사용자입니다. example.com'의 5001입니다.

각 도메인\사용자는 집 안에 자신만의 메일 디렉터리를 갖고 있으며 해당 도메인과 연결된 가상 메일 사용자가 포함된 일반 비밀번호 파일을 가지고 있습니다.

Dovecot 버전 및 구성 정보:

# dovecot -n
# 2.2.13: /etc/dovecot/dovecot.conf
# OS: Linux 3.2.0-4-amd64 x86_64 Debian 7.8
auth_mechanisms = plain login
auth_verbose = yes
disable_plaintext_auth = no
mail_location = mbox:~/mail:INBOX=/var/mail/%u
namespace inbox {
  inbox = 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 =
}
passdb {
  args = username_format=%n /home/%d/mail_users
  driver = passwd-file
}
protocols = " imap lmtp pop3"
ssl = no
userdb {
  args = username_format=%n /home/%d/mail_users
  default_fields = uid=%d gid=%d home=/home/%d/mail/%n mail=maildir:/home/%d/mail/%n
  driver = passwd-file
}

pop3\imap 포트에 연결을 시도할 때마다 서버에서 다음 오류가 발생합니다.

dovecot: auth: Fatal: passwd-file userdb: Invalid uid: %d
dovecot: master: Error: service(auth): command startup failed, throttling for 2 secs
dovecot: imap-login: Disconnected: Auth process broken (disconnected before auth was ready, waited 0 secs): user=<>, rip=192.168.30.10, lip=192.168.20.201, session=<2rgGLBkQ/wDAqB4K>

클라이언트는 다음을 봅니다.

$ telnet 192.168.20.201 imap
Trying 192.168.20.201...
Connected to 192.168.20.201.
Escape character is '^]'.
* BYE Disconnected: Auth process broken
Connection closed by foreign host.

위키 확인 중(http://wiki2.dovecot.org/UserDatabase#Userdb_settings)에는 default_fields 값이 %변수를 지원한다고 명시되어 있으므로 이 작업에 필요한 다른 구성이 누락되었는지 확실하지 않습니다.

클라이언트가 USER\LOGIN 명령을 실행하기 전에 발생하므로 %d 도메인 부분을 추출할 사용자 이름이 없으므로 실패했다는 것을 이해합니다. 내가 이해하지 못하는 것은 클라이언트가 인증 시도를 하기 전에 Dovecot 인증 시도가 있는 이유입니다.

구성을 고정 uid\gid로 변경하면

default_fields = uid=example.com gid=example.com home=/home/%d/mail/%n mail=maildir:/home/%d/mail/%n

연결이 허용되면 적절한 인증 명령을 실행할 수 있습니다. 그러나 example.com 도메인이 아닌 사용자의 사서함에 액세스하는 것은 물론 실패합니다.

관련 정보