파일 전달을 위한 Dovecot 인증

파일 전달을 위한 Dovecot 인증

현재 나는 dovecot 및 파일 전달 인증과 관련된 몇 가지 문제에 직면하고 있습니다.

환경에 대한 몇 가지 세부정보는 다음과 같습니다.

  • 센토스 7(3.10.0-042stab142.1)
  • 접미사(2:2.10.1-9.el7)
  • 비둘기 로프트(1:2.2.36-6.el7)

접미사 부분은 괜찮아 보이는데, 로컬로 메일 보내기/받기 및 외부 도메인으로 전달이 작동합니다. 몇몇 사용자의 경우 imap 기능을 활성화해야 합니다.

"doveconf -n"에서 발췌:

auth_debug_passwords = yes
auth_mechanisms = plain login
first_valid_uid = 1000

mail_debug = yes
mail_location = maildir:/var/mail/vhosts/<mydomain>/
mbox_write_locks = fcntl

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 = scheme=SHA512-CRYPT username_format=%Lu /etc/dovecot/mydomain_passwd 
  driver = passwd-file 
} 

service auth { 
  unix_listener /var/spool/postfix/private/auth {
    group = postfix
    mode = 0666
    user = postfix 
  } 
  unix_listener auth-userdb {
    group = vmail
    mode = 0666 
  }
 } 
service imap-login { 
  inet_listener imap {
    port = 143 
  } 
  inet_listener imaps {
    port = 993
    ssl = yes 
  }
 }
ssl = required 
ssl_cert = </etc/letsencrypt/live/mydomain/fullchain.pem

ssl_cipher_list = ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA

ssl_dh_parameters_length = 2048
ssl_key =  # hidden, use -P to show it
ssl_prefer_server_ciphers = yes

userdb { 
  args = username_format=%Lu /etc/dovecot/mydomain_passwd 
  default_fields = uid=5000 gid=5000 home=/var/mail/vhosts/mydomain/%Ln 
  driver = passwd-file
}

콘텐츠 "mydomain_passwd":

Zelestra@mydomain:{SHA512-CRYPT}$6$69/Qa2lPaBz3q6Gy$2zL7zAsgp6JckiziPUxJc927p.YSAyQlAYCKIJ2uvA.uR6pPfktEcHO4mbnAO3LEVVYT6jNrSPykO.STuTJJH0:5000:5000::/var/mail/vhosts/mydomain/zelestra::

"doveadm user"를 사용하여 사용자를 테스트하려고 하면 다음과 같은 결과가 나타납니다.

Jul  6 13:56:36 h2891775 dovecot: auth: Debug: master in: USER#0111#011zelestra#011service=doveadm
Jul  6 13:56:36 h2891775 dovecot: auth: Debug: passwd-file(zelestra): lookup: user=zelestra file=/etc/dovecot/mydomain_passwd
Jul  6 13:56:36 h2891775 dovecot: auth: passwd-file(zelestra): unknown user
Jul  6 13:56:36 h2891775 dovecot: auth: Debug: userdb out: NOTFOUND#0111
Jul  6 13:56:43 h2891775 dovecot: auth: Debug: master in: USER#0111#011zelestra@mydomain#011service=doveadm
Jul  6 13:56:43 h2891775 dovecot: auth: Debug: passwd-file(zelestra@mydomain): lookup: user=zelestra@mydomain file=/etc/dovecot/mydomain_passwd
Jul  6 13:56:43 h2891775 dovecot: auth: passwd-file(zelestra@mydomain): unknown user
Jul  6 13:56:43 h2891775 dovecot: auth: Debug: userdb out: NOTFOUND#0111

메일 클라이언트에서 테스트하는 경우(테스트 중에 내장된 Mac):

Jul  6 14:03:03 h2891775 postfix/smtpd[14258]: disconnect from tmo-081-218.customers.d1-online.com[<some IP>]
Jul  6 14:03:03 h2891775 dovecot: auth: Debug: client in: AUTH#0115#011PLAIN#011service=imap#011secured#011session=5GStp8SpXxJQu1Ha#011lip=<some IP>#011rip=<some IP>#011lport=143#011rport=4703#011local_name=mail.mydomain#011resp=AFplbGVzdHJhQGtvbnppbGRlcmFzcGVrdGUuZGUARDN2MWwuM3JheQ== (previous base64 data may contain sensitive data)
Jul  6 14:03:03 h2891775 dovecot: auth: Debug: passwd-file(zelestra@mydomain,<some IP>,<5GStp8SpXxJQu1Ha>): lookup: user=zelestra@mydomain file=/etc/dovecot/mydomain_passwd
Jul  6 14:03:03 h2891775 dovecot: auth: passwd-file(zelestra@mydomain,<some IP>,<5GStp8SpXxJQu1Ha>): unknown user
Jul  6 14:03:05 h2891775 dovecot: auth: Debug: client passdb out: FAIL#0115#011user=zelestra@mydomain#011original_user=Zelestra@mydomain
Jul  6 14:03:05 h2891775 dovecot: imap-login: Aborted login (auth failed, 5 attempts in 10 secs): user=<zelestra@kmydomain>, method=PLAIN, rip=<some IP>, lip=<some IP>, TLS: Disconnected, session=<5GStp8SpXxJQu1Ha>

"doveadm user *@mydomain"과 같은 조회를 수행하면 다음과 같은 출력이 표시됩니다.

Zelestra@mydomain

뭔가 빠진 것 같지만 현재는 어디를 봐야 할지, 추가 문제 해결 방법을 모르겠습니다.

운 없이 이 작업을 여러 번 수행했습니다.

  • 비둘기장 위키/하우투를 읽어보세요.
  • foo를 검색하고 foo를 교환해도 결과가 나오지 않습니다. 이 질문의 변형에 대한 도움을 받으십시오.

지금 제가 대답하고 싶은 질문은 다음과 같습니다.

a) doveadm의 와일드카드 검색에서는 결과가 나오지만 특정 검색에서는 결과가 없는 이유는 무엇입니까?

b) 비둘기장 imap 부분을 작동시키고 클라이언트에 대한 올바른 인증을 얻는 방법에 대한 팁

감사합니다

답변1

roaima에게 감사드립니다. "userdb/passwd"의 내용을 소문자 항목으로 변경했더니 제대로 작동했습니다.

따라서 제가 생각하는 한 이것은 userdb 및 passdb에 대한 "소문자로 숨기기" 옵션입니다. 데이터베이스에 있는 정보가 아닌 입력된 정보만 변환합니다. 불행하게도 문서에는 이에 대한 언급이 없으며 이는 내가 기대하는 동작도 아닙니다.

관련 정보