CentOS 7의 dovecot 및 postfix에 대한 ACL/MAC 권한

CentOS 7의 dovecot 및 postfix에 대한 ACL/MAC 권한

나는 사용하고있다이 튜토리얼은 웹 서버를 Postfix설정하기 위한 것입니다.DovecotCentOS 7. 그러나 Dovecot을 사용하여 테스트 이메일을 보내려고 하면 sudo echo "TEST" | mail -s "testmail" newuser@localhost && sudo tail -f /var/log/maillogDovecot에 이메일을 저장하는 데 사용되는 디렉터리를 생성할 권한이 없다는 오류 메시지가 나타납니다. 권한을 설정 Dovecot하고 Postfix작업하려면 어떻게 해야 합니까 CentOS 7?

나 여기 처음이야 linux. adduser, chmod, 및 기타 명령 chown에 대해서는 알고 있지만 octal permissions이 특정 요구 사항에 어떻게 적용되는지 모르고, 이해하지 못한 채 실험하여 잘못된 것을 만들고 싶지 않습니다.

다음은 오류 메시지에서 가장 관련성이 높은 부분입니다.

Error: user import: Initialization failed: Namespace '':  
mkdir(/home/import/Maildir) failed:  
Permission denied (euid=1001(import) egid=1001(import)  
missing +w perm: /home/import, UNIX perms appear ok (ACL/MAC wrong?))

전체 오류 메시지는 다음과 같습니다.

Dec 30 19:03:42 mydomain postfix/pickup[8093]: A22E78221C13: uid=1000 from=<anotherusername>
Dec 30 19:03:42 mydomain postfix/cleanup[8121]: A22E78221C13: message-id=<[email protected]>
Dec 30 19:03:42 mydomain postfix/qmgr[8094]: A22E78221C13: from=<[email protected]>, size=463, nrcpt=1 (queue active)
Dec 30 19:03:42 mydomain dovecot: lda(newusername): Error: user newusername: Initialization failed: Namespace '': mkdir(/home/newusername/Maildir) failed: Permission denied (euid=1001(newusername) egid=1001(newusername) missing +w perm: /home/newusername, dir owned by 0:0 mode=0755)
Dec 30 19:03:42 mydomain dovecot: lda(newusername): Fatal: Invalid user settings. Refer to server log for more information.
Dec 30 19:03:42 mydomain postfix/local[8123]: A22E78221C13: to=<[email protected]>, orig_to=<newusername@localhost>, relay=local, delay=0.15, delays=0.06/0.02/0/0.07, dsn=4.3.0, status=deferred (temporary failure)

편집하다:

그런 다음 실행하고 sudo chown -R newusername:newusername /home/newusername다시 반복 sudo echo "TEST" | sudo mail -s "testmail" newuser@localhost && sudo tail -f /var/log/maillog하지만 여전히 다음 오류가 발생합니다.

Dec 30 20:42:29 mydomain postfix/qmgr[8094]: E0DF28221C14: from=<[email protected]>, size=463, nrcpt=1 (queue active)
Dec 30 20:42:29 mydomain dovecot: lda(newusername): Error: user newusername: Initialization failed: Namespace '': mkdir(/home/newusername/Maildir) failed: Permission denied (euid=1001(newusername) egid=1001(newusername) missing +w perm: /home/newusername, UNIX perms appear ok (ACL/MAC wrong?))
Dec 30 20:42:29 mydomain dovecot: lda(newusername): Fatal: Invalid user settings. Refer to server log for more information.
Dec 30 20:42:29 mydomain postfix/local[8531]: E0DF28221C14: to=<[email protected]>, orig_to=<newusername@localhost>, relay=local, delay=1101, delays=1101/0.02/0/0.06, dsn=4.3.0, status=deferred (temporary failure)
Dec 30 20:45:40 mydomain postfix/pickup[8529]: CF3CB80B33C4: uid=0 from=<root>
Dec 30 20:45:40 mydomain postfix/cleanup[8551]: CF3CB80B33C4: message-id=<[email protected]>
Dec 30 20:45:40 mydomain postfix/qmgr[8094]: CF3CB80B33C4: from=<[email protected]>, size=455, nrcpt=1 (queue active)
Dec 30 20:45:40 mydomain dovecot: lda(newusername): Error: user newusername: Initialization failed: Namespace '': mkdir(/home/newusername/Maildir) failed: Permission denied (euid=1001(newusername) egid=1001(newusername) missing +w perm: /home/newusername, UNIX perms appear ok (ACL/MAC wrong?))
Dec 30 20:45:40 mydomain dovecot: lda(newusername): Fatal: Invalid user settings. Refer to server log for more information.
Dec 30 20:45:40 mydomain postfix/local[8553]: CF3CB80B33C4: to=<[email protected]>, orig_to=<newusername@localhost>, relay=local, delay=0.15, delays=0.08/0.02/0/0.05, dsn=4.3.0, status=deferred (temporary failure)

답변:

이 문제는 SELinux로 인해 발생합니다. 나는 sudo nano /etc/sysconfig/selinuxthen 을 설정하여 이 문제를 해결했습니다 SELINUX=disabled. 이는 개발 중에 허용됩니다. 보다 완벽한 솔루션은 프로덕션에 들어가기 전에 postfix와 dovecot이 실행될 수 있도록 SELinux 규칙을 설정하는 것입니다.

참고: 칠백사십이님이 SELinux 상태를 확인해 보라고 제안해 정답으로 표시했습니다.

답변1

핵심은 여기에 있습니다:failed: Permission denied (euid=1001(newusername) egid=1001(newusername) missing +w perm: /home/newusername, dir owned by 0:0 mode=0755

Dovecot은 newusername:newusername에 쓰려고 시도 /home/newusername/{whatever your maildir is}하지만 해당 디렉터리는 사용자 0:0(루트)이 소유하고 있습니다. 권한 모드가 755이므로 소유자만 +w 권한을 갖습니다.

또한 SELinux를 사용하는 경우 ACL이 dovecot이 maildir에 쓸 수 있도록 허용하는지 확인하세요.

답변2

나는 같은 문제에 직면했다. 부모는 또한 selinux를 비활성화하여 달성했다고 언급했습니다. 힌트를 주셔서 감사합니다. SEL을 비활성화하는 것은 나에게 옵션이 아닙니다.

따라서 selinux를 비활성화하지 않으려면 다음을 시도하십시오.

  • "문제" 디렉터리의 SELinux 컨텍스트를 확인하세요.
ls -Z /home/newusername
drwx------. centos       centos       unconfined_u:object_r:user_home_dir_t:s0 centos
drwx------. newusername  newusername  unconfined_u:object_r:home_root_t:s0 newusername
  • user_home_dir_t컨텍스트로 표시되어야 합니다.
  • selinux 컨텍스트 가 아니어야 합니다 home_root_t.

관찰하다:homedir을 루트로 생성하면 루트 컨텍스트를 얻게 되며, 사용자가 생성한 모든 객체는 루트 컨텍스트를 갖게 됩니다.

  • 이 실행을 수정하려면 다음을 수행하세요.
restorecon -vR /home/newuserhome
  • SELinux 컨텍스트를 다시 확인하면 다음이 표시됩니다.
ls -Z /home/newusername
drwx------. centos       centos       unconfined_u:object_r:user_home_dir_t:s0 centos
drwx------. newusername  newusername  unconfined_u:object_r:user_home_dir_t:s0 newusername
  • 시험:내부적으로 파일이나 디렉토리를 생성 newuserhome하고 SEL 컨텍스트를 확인하십시오.
  • 새 파일에 여전히 올바른 컨텍스트가 표시되지 않으면 다음을 실행하세요.
semanage fcontext -a -e /home /home/newusername
restorecon -vR /home/newuserhome

이제 "일반" 홈 디렉토리의 올바른 컨텍스트를 갖고 액세스를 허용할 수 있기를 바랍니다.

관련 정보