web-dev-qa-db-ja.com

Sendmail chdir(/ clientmqueue)権限が拒否されました

私のcentosサーバーは 'mail'コマンドを使用してメールを送信できますが、phpからは送信できません。 Maillogさんのコメント:

sendmail[18010]: NOQUEUE: SYSERR(nginx): can not chdir(/var/spool/clientmqueue/): Permission denied

私の権限は次のとおりです。

lrwxrwxrwx 1 nginx nginx 30 Oct 30 20:27 /usr/lib/sendmail -> /etc/alternatives/mta-sendmail 
lrwxrwxrwx 1 nginx nginx 21 Oct 30 20:27 /usr/sbin/sendmail -> /etc/alternatives/mta

lrwxrwxrwx 1 nginx nginx 27 Oct 30  2012 /etc/alternatives/mta -> /usr/sbin/sendmail.sendmail
lrwxrwxrwx 1 nginx nginx 26 Oct 30  2012 /etc/alternatives/mta-sendmail -> /usr/lib/sendmail.sendmail

lrwxrwxrwx 1 nginx nginx     16 Oct 30  2012 /usr/lib/sendmail.sendmail -> ../sbin/sendmail
-rwxr-xr-x 1 root  smmsp 775064 Aug 11  2011 /usr/sbin/sendmail.sendmail

これらすべてのリンクは何のためのものですか?

4
Adripants

Sendmail-8.12 +インストール:ファイル許可

Sendmail-8.12 +バイナリはセット[〜#〜] group [〜#〜]idとしてインストールする必要があります。
(/ usr/sbin/sendmail.sendmailの場合)

これは、sendmail(.org)ディストリビューションの SECURITY ファイルで説明されています。

-r-xr-sr-x  root   smmsp    ... /PATH/TO/sendmail
drwxrwx---  smmsp  smmsp    ... /var/spool/clientmqueue
9
AnFi

Httpd_can_sendmailというSELINUXブール型ポリシーもあります。これもtrueに設定する必要があると確信しています。

3
Paul L

システムを継承していて、/ var/spool/mqueueの場所をそれ以外の場所に変更する場合、sendmail.mcを変更してsendmail.cfを再作成するか、sendmail.cfディレクトリを編集して、 sendmailと「Permission denied」と文句を言い、上記のどれも役に立たない-これを試してください。 SELINUXなどを完全に無効にした場合でも.

私は何年にもわたって、ユーザーが何であるか、sendmailのsetgidが何であるか、またはディレクトリのアクセス許可と所有権情報が何であるかに関係なく、上記の提案のすべてを長年にわたって経験してきましたが、まだエラーが発生します。いずれの場合も、sendmailの既存のインストール済みバージョンに問題があることがわかりました。それが最新であっても。 everyの場合、次の方法で問題を解決できました。

  1. mcファイルからビルドしない場合は、sendmail.mcまたはsendmail.cfのバックアップを作成します。
  2. エイリアス、virtusertableなどのバックアップを作成します。場合によっては、再インストールによってエイリアスが上書きされることがあります(通常は保存されますが...)。
  3. sendmailをアンインストールします(例:「yum remove sendmail -y」または「apt remove sendmail -y」)
  4. sendmailを再インストールします(たとえば、「yum install sendmail sendmail-cf -y」または「apt install sendmail sendmail-cf -y」

再インストールすると問題が解決するようです。

/ etc/sysconfig/sendmailを、変更したQUEUEDIRを使用してsendmail.cfファイルの場所で更新し、 "journalctl daemon-reload"を実行して修正する必要がある場合があります。

これは、sendmailのOEMインストールバージョンのユーザー/グループsmmspがないなどの問題ですが、これは最新のLinuxインストールでこの問題を解決する最も簡単な方法です。

0
TekOps