web-dev-qa-db-ja.com

CentOS7でのdovecotとpostfixのACL / MAC権限

私は このチュートリアルでは、CentOS 7WebサーバーにPostfixDovecotを設定します を使用しています。しかし、Sudo echo "TEST" | mail -s "testmail" newuser@localhost && Sudo tail -f /var/log/maillogを使用してテストメールを送信しようとすると、Dovecotにメールを保存するためのディレクトリを作成する権限がないことを示すエラーが表示されます。 DovecotPostfixの権限を設定してCentOS 7で正しく機能できるようにするにはどうすればよいですか?

linuxは初めてです。 adduserchmodchownoctal 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/selinuxを設定してから、SELINUX=disabledを設定することで問題を解決しました。これは開発中に許容されます。より完全な解決策は、SELinuxルールを設定して、postfixとdovecotが本番環境に移行する前に機能できるようにすることです。

注:SELinuxのステータスを確認することを提案する七百四十二なので、彼を正解としてマークしています。

5
CodeMed

キーはここにあります:failed: Permission denied (euid=1001(newusername) egid=1001(newusername) missing +w perm: /home/newusername, dir owned by 0:0 mode=0755

Dovecotは/home/newusername/{whatever your maildir is}にnewusername:newusernameとして書き込もうとしていますが、ディレクトリはユーザー0:0(ルート)が所有しています。権限モードは755であるため、所有者のみが+ w権限を持っています

また、SELinuxを使用している場合は、ACLでdovecotがmaildirに書き込むことができることを確認してください。

2
Outurnate

私は同じ問題に遭遇しました。親はまた、selinuxを無効にすることで機能するようになったと述べました。ヒントありがとうございます。 SELを無効にすることは私にとって選択肢ではありませんでした。

したがって、selinuxを無効にしたくない場合は、以下を試してください。

  • 「problem」ディレクトリの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を表示する必要があります
  • home_root_tselinuxコンテキストであってはなりません。

Observation: homedirをrootとして作成すると、rootコンテキストが取得され、次にによって作成されたすべてのオブジェクトが取得されます。ユーザーはルートコンテキストを持ちます。

  • この実行を修正するには:
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
  • test:newuserhome内にファイルまたはディレクトリを作成し、SELコンテキストを確認してください
  • それでも新しいファイルに適切なコンテキストの実行が表示されない場合:
semanage fcontext -a -e /home /home/newusername
restorecon -vR /home/newuserhome

うまくいけば、「通常の」ホームディレクトリの適切なコンテキストがあり、アクセスが許可されているはずです。

0
ionescu77