웹 호스트로부터 CentOS 6.6이 설치된 VPS 서버를 받았습니다. 다양한 사람들이 사용하는 여러 도메인이 있으므로 이 서버는 여러 역할을 수행합니다.
- 네임서버(BIND 사용) (작동합니다!)
- 여러 도메인을 위한 웹사이트 호스팅(Apache/MySQL 사용)(작동합니다!)
- 여러 도메인용 메일 서버(postfix, dovecot, vimbadmin 및 roundcube 사용)(문제)
- 각 웹사이트의 FTP 서버(아직 설치되지 않음)
내 Linux 기술이 그다지 좋지 않기 때문에 모든 역할을 설치하는 데 도움이 되도록 인터넷에 있는 매뉴얼/하우투 문서를 사용했습니다. 여러 도메인에 대한 메일 서버를 설치 및 구성하는 경우(수동:https://rtcamp.com/tutorials/mail/server/postfix-dovecot-ubuntu/)모두 제일 좋다. 메시지를 보낼 수 있지만 /var/vmail/
메일 폴더( )에서 메시지를 검색할 수는 없습니다. 저는 웹메일 환경으로 Roundcube 웹사이트를 사용하고 있습니다.
/var/logs/maillog
파일의 오류 메시지
dovecot: imap([email protected]): Error: open(/var/vmail/address.com/account/dovecot.index.log) failed: Permission denied (euid=5000(vmail) egid=5000(vmail) missing +r perm: /var/vmail/address.com/account/dovecot.index.log, euid is not dir owner)
dovecot: imap([email protected]): Error: file_dotlock_create(/var/vmail/address.com/account/dovecot-uidlist) failed: Permission denied (euid=5000(vmail) egid=5000(vmail) missing +w perm: /var/vmail/address.com/account, euid is not dir owner)
폴더/파일 권한( ls -l
)
-rw-rwx---. 1 vmail vmail 248 Feb 7 15:52 dovecot.index.log
-rw-rw----. 1 vmail vmail 24 Feb 7 16:32 dovecot.mailbox.log
-rw-rwx---. 1 vmail vmail 51 Feb 7 15:52 dovecot-uidlist
-rw-rwx---. 1 vmail vmail 8 Feb 7 16:32 dovecot-uidvalidity
-r--rwxr--. 1 vmail vmail 0 Feb 7 15:51 dovecot-uidvalidity.54d62668
폴더/파일 권한( ls -Z
)
-rw-rwx---. vmail vmail unconfined_u:object_r:var_t:s0 dovecot.index.log
-rw-rw----. vmail vmail unconfined_u:object_r:var_t:s0 dovecot.mailbox.log
-rw-rwx---. vmail vmail unconfined_u:object_r:var_t:s0 dovecot-uidlist
-rw-rwx---. vmail vmail unconfined_u:object_r:var_t:s0 dovecot-uidvalidity
-r--rwxr--. vmail vmail unconfined_u:object_r:var_t:s0 dovecot-uidvalidity.54d62668
이러한 권한은 새 사서함을 만든 후 dovecot 응용 프로그램에 의해 설정됩니다.
추가 검색을 통해 setenforce
해당 명령을 찾았습니다. 명령을 입력 setenforce 0
하면 roundcube 애플리케이션에서 메일을 검색할 수 있습니다 . 메일을 검색하지 못하도록 다시 설정하세요.
그런데 무슨 일이야? 왜 아무 문제 없이 roundcube 앱에서 메시지를 보낼 수 있는데 setenforce 1
.unconfined_u
[2015-02-09] 추가 디버깅 필요
이 grep -i AVC /var/log/audit/audit.log
명령을 사용하여 디버깅하면 다음 줄이 표시됩니다(이것은 tail -n-19...입니다).
type=AVC msg=audit(1423466977.294:254776): avc: denied { write } for pid=13124 comm="imap" name="$myaccount$" dev=dm-0 ino=149839 scontext=system_u:system_r:dovecot_t:s0 tcontext=unconfined_u:object_r:var_t:s0 tclass=dir
type=AVC msg=audit(1423466977.294:254777): avc: denied { read write } for pid=13124 comm="imap" name="dovecot-uidlist" dev=dm-0 ino=149846 scontext=system_u:system_r:dovecot_t:s0 tcontext=unconfined_u:object_r:var_t:s0 tclass=file
type=AVC msg=audit(1423467003.011:254782): avc: denied { read } for pid=13139 comm="imap" name="$myaccount$" dev=dm-0 ino=149839 scontext=system_u:system_r:dovecot_t:s0 tcontext=unconfined_u:object_r:var_t:s0 tclass=dir
type=AVC msg=audit(1423467003.011:254783): avc: denied { read } for pid=13139 comm="imap" name="$myaccount$" dev=dm-0 ino=149839 scontext=system_u:system_r:dovecot_t:s0 tcontext=unconfined_u:object_r:var_t:s0 tclass=dir
type=AVC msg=audit(1423467003.035:254784): avc: denied { read } for pid=13139 comm="imap" name="$myaccount$" dev=dm-0 ino=149839 scontext=system_u:system_r:dovecot_t:s0 tcontext=unconfined_u:object_r:var_t:s0 tclass=dir
type=AVC msg=audit(1423467003.035:254785): avc: denied { read } for pid=13139 comm="imap" name="$myaccount$" dev=dm-0 ino=149839 scontext=system_u:system_r:dovecot_t:s0 tcontext=unconfined_u:object_r:var_t:s0 tclass=dir
type=AVC msg=audit(1423467003.093:254786): avc: denied { read } for pid=13139 comm="imap" name="tmp" dev=dm-0 ino=415518 scontext=system_u:system_r:dovecot_t:s0 tcontext=unconfined_u:object_r:var_t:s0 tclass=dir
type=AVC msg=audit(1423467003.093:254787): avc: denied { write } for pid=13139 comm="imap" name="cur" dev=dm-0 ino=415516 scontext=system_u:system_r:dovecot_t:s0 tcontext=unconfined_u:object_r:var_t:s0 tclass=dir
type=AVC msg=audit(1423467003.093:254788): avc: denied { read write } for pid=13139 comm="imap" name="dovecot.index.log" dev=dm-0 ino=149840 scontext=system_u:system_r:dovecot_t:s0 tcontext=unconfined_u:object_r:var_t:s0 tclass=file
type=AVC msg=audit(1423467003.093:254789): avc: denied { read } for pid=13139 comm="imap" name="dovecot.index.log" dev=dm-0 ino=149840 scontext=system_u:system_r:dovecot_t:s0 tcontext=unconfined_u:object_r:var_t:s0 tclass=file
type=AVC msg=audit(1423467003.093:254790): avc: denied { write } for pid=13139 comm="imap" name="$myaccount$" dev=dm-0 ino=149839 scontext=system_u:system_r:dovecot_t:s0 tcontext=unconfined_u:object_r:var_t:s0 tclass=dir
type=AVC msg=audit(1423467003.094:254791): avc: denied { write } for pid=13139 comm="imap" name="$myaccount$" dev=dm-0 ino=149839 scontext=system_u:system_r:dovecot_t:s0 tcontext=unconfined_u:object_r:var_t:s0 tclass=dir
type=AVC msg=audit(1423467003.094:254792): avc: denied { read write } for pid=13139 comm="imap" name="dovecot-uidlist" dev=dm-0 ino=149846 scontext=system_u:system_r:dovecot_t:s0 tcontext=unconfined_u:object_r:var_t:s0 tclass=file
type=AVC msg=audit(1423467003.206:254793): avc: denied { read } for pid=13139 comm="imap" name="tmp" dev=dm-0 ino=415518 scontext=system_u:system_r:dovecot_t:s0 tcontext=unconfined_u:object_r:var_t:s0 tclass=dir
type=AVC msg=audit(1423467003.207:254794): avc: denied { write } for pid=13139 comm="imap" name="cur" dev=dm-0 ino=415516 scontext=system_u:system_r:dovecot_t:s0 tcontext=unconfined_u:object_r:var_t:s0 tclass=dir
type=AVC msg=audit(1423467003.207:254795): avc: denied { read write } for pid=13139 comm="imap" name="dovecot.index.log" dev=dm-0 ino=149840 scontext=system_u:system_r:dovecot_t:s0 tcontext=unconfined_u:object_r:var_t:s0 tclass=file
type=AVC msg=audit(1423467003.207:254796): avc: denied { read } for pid=13139 comm="imap" name="dovecot.index.log" dev=dm-0 ino=149840 scontext=system_u:system_r:dovecot_t:s0 tcontext=unconfined_u:object_r:var_t:s0 tclass=file
type=AVC msg=audit(1423467003.207:254797): avc: denied { write } for pid=13139 comm="imap" name="$myaccount$" dev=dm-0 ino=149839 scontext=system_u:system_r:dovecot_t:s0 tcontext=unconfined_u:object_r:var_t:s0 tclass=dir
type=AVC msg=audit(1423467003.208:254798): avc: denied { write } for pid=13139 comm="imap" name="$myaccount$" dev=dm-0 ino=149839 scontext=system_u:system_r:dovecot_t:s0 tcontext=unconfined_u:object_r:var_t:s0 tclass=dir
type=AVC msg=audit(1423467003.208:254799): avc: denied { read write } for pid=13139 comm="imap" name="dovecot-uidlist" dev=dm-0 ino=149846 scontext=system_u:system_r:dovecot_t:s0 tcontext=unconfined_u:object_r:var_t:s0 tclass=file
답변1
SElinux를 허용 모드로 설정하고 작동하는지 시도해 볼 수 있습니까?
sudo setenforce permissive
SElinux 정책이 잘못된 것 같습니다. 정책은 다음과 같아야 합니다.
drwx------. vmail vmail system_u:object_r:mail_spool_t:s0 example.org
다음을 통해 정책을 올바르게 설정할 수 있습니다.
sudo semanage fcontext -a -t mail_spool_t "/var/vmail(/.*)?"
sudo restorecon -Rv /var/vmail