私の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
これらすべてのリンクは何のためのものですか?
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
Httpd_can_sendmailというSELINUXブール型ポリシーもあります。これもtrueに設定する必要があると確信しています。
システムを継承していて、/ var/spool/mqueueの場所をそれ以外の場所に変更する場合、sendmail.mcを変更してsendmail.cfを再作成するか、sendmail.cfディレクトリを編集して、 sendmailと「Permission denied」と文句を言い、上記のどれも役に立たない-これを試してください。 SELINUXなどを完全に無効にした場合でも.
私は何年にもわたって、ユーザーが何であるか、sendmailのsetgidが何であるか、またはディレクトリのアクセス許可と所有権情報が何であるかに関係なく、上記の提案のすべてを長年にわたって経験してきましたが、まだエラーが発生します。いずれの場合も、sendmailの既存のインストール済みバージョンに問題があることがわかりました。それが最新であっても。 everyの場合、次の方法で問題を解決できました。
再インストールすると問題が解決するようです。
/ etc/sysconfig/sendmailを、変更したQUEUEDIRを使用してsendmail.cfファイルの場所で更新し、 "journalctl daemon-reload"を実行して修正する必要がある場合があります。
これは、sendmailのOEMインストールバージョンのユーザー/グループsmmspがないなどの問題ですが、これは最新のLinuxインストールでこの問題を解決する最も簡単な方法です。