Maildir 폴더, 가상 사용자 메일 폴더 소유자 및 권한에 대한 Postix 또는 Dovecot 디버그 로그

Maildir 폴더, 가상 사용자 메일 폴더 소유자 및 권한에 대한 Postix 또는 Dovecot 디버그 로그

Maildir 및 소유자와 권한이 있는 폴더에 대한 전체 튜토리얼을 찾을 수 없으며 이미 찾았다면 공유해 주세요.

어쨌든 Postfix, Dovecot 로그 또는 기타 도구를 사용하여 Maildir 구성과 관련된 오류 출력을 얻을 수 있는 방법이 있는지 궁금합니다. (이 폴더의 소유자가 잘못되었거나 권한이 부족하거나 생성되지 않은 경우에도)

나는 당신이 나에게 당신의 폴더와 구성을 보내라고 말할 것이라는 것을 알고 있지만, 향후 다른 경우에 대해 이것을 디버깅하는 방법을 알고 싶습니다.

내가 정말로 알고 싶은 것은 예를 들어 다음과 같습니다. 내 가상 사용자는 /home/user/domain/usermail/Maildir을 가지고 있습니다.

home, user, domain, usermail 및 Maildir을 가져야 하는 권한과 소유자는 무엇입니까?

제가 가장 관심을 두는 것은 폴더 권한과 관련된 문제를 디버그하는 방법을 배우는 것입니다.

dovecot.conf에 다음이 있습니다.

 verbose_ssl=yes
 mail_debug=yes
 auth_debug=yes
 auth_verbose=yes

그리고 이 줄의 master.cf postfix conf에서

smtp    inet    n       -       n       -       -       smtpd -v
submission inet n       -       n       -       -       smtpd -v

BTW는 drwxr-s--- 사용자 메일 폴더에 대한 권한이 괜찮습니까?

답변1

가상 사용자의 경우 시스템 사용자 계정을 생성하고 메일을 소유하게 한 다음 Postfix 및 Dovecot에서 해당 사용자의 UID 및 GID를 구성해야 합니다.

내 관련 부분은 다음과 같습니다 dovecot.conf.

userdb {
  driver = static
  args = uid=8 gid=12 home=/var/spool/mail/%n
}

mail_location = maildir:~
mail_uid = 8
mail_gid = 12

userdb는 사용자 이름과 비밀번호만 포함된 매우 간단한 비밀번호와 유사한 파일이며 그 밖의 모든 것은 userdb {...}위의 실제 블록에 하드코딩되어 있으므로 UID와 GID, 사용자의 "홈"은 /var/spool/mail사용된 로그인에 관계없이 시작됩니다(가정). 이는 사전에 passwd 파일에 정의되어 있습니다. 그렇지 않으면 액세스가 거부됩니다.

mail_location메일이 maildir 형식이고 ~위의 userdb에서 얻은 "home" 경로에 해당하는 (home)에 있음을 알려줍니다. mail_gid/uid메일을 소유해야 하는 해당 시스템 사용자에게 메일의 소유권을 다시 설정합니다. 분명히 Postfix에서도 동일해야 합니다.

접미사 main.cf:

virtual_mailbox_base = /var/spool/mail
virtual_mailbox_maps = hash:/etc/postfix/vmailboxes
virtual_uid_maps = static:8
virtual_gid_maps = static:12

Dovecot과 동일한 기본 디렉토리에는 /etc/postfix/vmailboxes구문이 있으므로 <mail user account> <mail directory>/예를 들어 serverfault serverfault/Postfix에 수신된 모든 메일이 serverfault@domain로 끝날 것임을 알려주는 구문이 있습니다 /var/spool/mail/serverfault. 이는 사용자 이름으로 로그인할 때 Dovecot이 해당 메일을 찾는 위치에 해당합니다 serverfault.

virtual_uid/gid_maps미리 선택/생성한 시스템 사용자에게 메일의 소유권을 다시 설정하려면 Dovecot과 동일해야 합니다 .

오류를 표시하는 데 필요한 로깅에 대한 특정 옵션을 모릅니다. 가상 메일 폴더의 권한을 엉망으로 만들면 Dovecot이 특별한 구성 없이 로그에서 비명을 지르기 시작합니다(dovecot.conf에 로깅 관련 옵션 없음). :

Mar 07 12:54:04 sanctuary dovecot[2175]: imap(username): Error: chdir(/var/spool/mail/username/) failed: Permission denied (euid=8(mail) egid=12(mail) missing +x perm: /var/spool/mail/username, dir owned by 0:0 mode=0700)
Mar 07 12:54:04 sanctuary dovecot[2175]: imap(username): Error: chdir(/var/spool/mail/username) failed: Permission denied
Mar 07 12:54:04 sanctuary dovecot[2175]: imap(username): Error: opendir(/var/spool/mail/username) failed: Permission denied (euid=8(mail) egid=12(mail) missing +r perm: /var/spool/mail/username)
Mar 07 12:54:04 sanctuary dovecot[2175]: imap(username): Error: opendir(/var/spool/mail/username) failed: Permission denied (euid=8(mail) egid=12(mail) missing +r perm: /var/spool/mail/username)
Mar 07 12:54:04 sanctuary dovecot[2175]: imap(username): Error: stat(/var/spool/mail/username/tmp) failed: Permission denied (euid=8(mail) egid=12(mail) missing +x perm: /var/spool/mail/username, dir owned by 0:0 mode=0700)
Mar 07 12:54:04 sanctuary dovecot[2175]: imap(username): Error: stat(/var/spool/mail/username/tmp) failed: Permission denied (euid=8(mail) egid=12(mail) missing +x perm: /var/spool/mail/username, dir owned by 0:0 mode=0700)
Mar 07 12:54:04 sanctuary dovecot[2175]: imap(username): Error: stat(/var/spool/mail/username/tmp) failed: Permission denied (euid=8(mail) egid=12(mail) missing +x perm: /var/spool/mail/username, dir owned by 0:0 mode=0700)
Mar 07 12:54:09 sanctuary dovecot[2175]: imap(username): Error: chdir(/var/spool/mail/username/) failed: Permission denied (euid=8(mail) egid=12(mail) missing +x perm: /var/spool/mail/username, dir owned by 0:0 mode=0700)
Mar 07 12:54:09 sanctuary dovecot[2175]: imap(username): Error: chdir(/var/spool/mail/username) failed: Permission denied
Mar 07 12:54:09 sanctuary dovecot[2175]: imap(username): Error: stat(/var/spool/mail/username/.Sent Messages/tmp) failed: Permission denied (euid=8(mail) egid=12(mail) missing +x perm: /var/spool/mail/username, dir owned by 0:0 mode=0700)
Mar 07 12:54:09 sanctuary dovecot[2175]: imap(username): Error: stat(/var/spool/mail/username/tmp) failed: Permission denied (euid=8(mail) egid=12(mail) missing +x perm: /var/spool/mail/username, dir owned by 0:0 mode=0700)
Mar 07 12:54:09 sanctuary dovecot[2175]: imap(username): Error: stat(/var/spool/mail/username/.Sent Messages/tmp) failed: Permission denied (euid=8(mail) egid=12(mail) missing +x perm: /var/spool/mail/username, dir owned by 0:0 mode=0700)
Mar 07 12:54:09 sanctuary dovecot[2175]: imap(username): Error: stat(/var/spool/mail/username/tmp) failed: Permission denied (euid=8(mail) egid=12(mail) missing +x perm: /var/spool/mail/username, dir owned by 0:0 mode=0700)
Mar 07 12:54:10 sanctuary dovecot[2175]: imap(username): Error: stat(/var/spool/mail/username/.Sent Messages/tmp) failed: Permission denied (euid=8(mail) egid=12(mail) missing +x perm: /var/spool/mail/username, dir owned by 0:0 mode=0700)
Mar 07 12:54:10 sanctuary dovecot[2175]: imap(username): Error: stat(/var/spool/mail/username/tmp) failed: Permission denied (euid=8(mail) egid=12(mail) missing +x perm: /var/spool/mail/username, dir owned by 0:0 mode=0700)

권한이 엉망인 이메일을 보내려고 할 때 Postfix와 동일합니다.

Mar 07 12:56:45 sanctuary postfix/virtual[2736]: warning: maildir access problem for UID/GID=8/12: create maildir file /var/spool/mail/username/tmp/1425729405.P2736.sanctuary: Permission denied
Mar 07 12:56:45 sanctuary postfix/virtual[2736]: warning: perhaps you need to create the maildirs in advance
Mar 07 12:56:45 sanctuary postfix/virtual[2736]: E752F186: to=<username@sanctuary>, relay=virtual, delay=0.05, delays=0.03/0.01/0/0.01, dsn=4.2.0, status=deferred (maildir delivery failed: create maildir file /var/spool/mail/username/tmp/1425729405.P2736.sanctuary: Permission denied)

답변2

나는 당신이 dovecot-ldaMaildir에 메일을 전달하기 위해 사용하고 있다고 가정합니다. IIRC는 dovecot-lda누락된 권한에 대한 자세한 정보를 보여줍니다.

dovecot-ldadovecot의 전역 로깅 기능에 액세스할 수 없습니다. 따라서 별도로 로깅을 구성해야 합니다 dovecot-lda. 따라서 비둘기장 구성에서 "protocol lda {"를 찾아 필요에 따라 log_path매개 변수를 변경해야 합니다. info_log_pathdovecot-lda가 쓸 수 있는 파일보다 여기에 파일을 넣으면 syslog를 사용하려는 경우(매개변수를 비워 두는 경우) /dev/log의 권한을 수정해야 합니다.

dovecot wiki에 자세한 내용이 있습니다.http://wiki2.dovecot.org/LDA

참고: 로컬 메일 배달에 문제가 있는지 알아내려면 smtp 및 postfix의 자세한 로그인 제출이 필요하지 않습니다.

관련 정보