web-dev-qa-db-ja.com

Apacheに電子メールの送信を許可するにはどうすればよいですか?

Apache2.2とPHP 5.3を実行しているCentOS6.2仮想マシンがPHPのmail()関数を介してメールを送信しようとしています。CLIからメールを問題なく送信できますが、= PHP試行すると失敗します。sendmailログには次のようになります:

Oct  9 11:42:03 localhost sendmail[3080]: NOQUEUE: SYSERR(Apache): can not chdir(/var/spool/clientmqueue/): Permission denied

Apacheにはこれを行う権限がないようですが、修正方法がわかりません。私はこれについて多くの議論を見つけましたが、私が使用できることについて十分に具体的なものは何もありません。どんな助けでもいただければ幸いです。ありがとう!

11
dev_willis

まず、許可が正しいかどうかを確認する必要があります。これが私のシステムでの以下の許可です

# ls -l /usr/sbin/sendmail.sendmail-r-xr-sr-x root smmsp /usr/sbin/sendmail.sendmail

# ls -l /var/spool/clientmqueuedrwxrwx--- smmsp smmsp /var/spool/clientmqueue

権限または所有権が間違っている場合は、chownおよびchmodを使用して変更してください。

上記が正しい場合は、selinuxを無効にするか、selinuxを有効にする場合は、chconを使用して正しいselinuxコンテキストを設定します。

http://docs.fedoraproject.org/en-US/Fedora/13/html/Security-Enhanced_Linux/sect-Security-Enhanced_Linux-Working_with_SELinux-SELinux_Contexts_Labeling_Files.html

Selinuxを一時的に無効にするには、#setenforce 0を使用します

4
Ranjith Ruban

Selinuxが問題を引き起こす可能性があり、実行を確認します。

getsebool -a | grep mail

以下のように表示される場合は、selinuxです。

allow_postfix_local_write_mail_spool --> off

無効にすることもできますが、それを維持したい場合(そして、セキュリティの追加レイヤーを提供するため、そうする必要があります)、別のことを行う必要があります。

setsebool -P httpd_can_sendmail on

これにより、php mail()を使用する場合と同様に、httpdが電子メールを送信できるようになります。

31
Florin Sima

これを壊すのは嫌いですが、ここでの解決策はどれも私にはうまくいきませんでした。私はSELinuxについてほとんど知りませんが、これに関する問題を発見することになりました(CentOS 6で):

getsebool httpd_can_sendmail

それは私にそれが無効になっていると言った。で修正

setsebool httpd_can_sendmail 1
12
jmaculate

SELinuxが有効になっている可能性があります。

http://selinuxproject.org/page/Main_Page

次の手順でSELinuxのステータスを確認できます。

sestatus

次のようなものが表示されます。

SELinux status:                 enabled
SELinuxfs mount:                /selinux
Current mode:                   enforcing
Mode from config file:          enforcing
Policy version:                 24
Policy from config file:        targeted

SELinuxは、次の方法で一時的にオフにできます。

echo 0 >/selinux/enforce

そして戻って

echo 1 >/selinux/enforce

あなたが臨時雇用者をするならば。オフにし、RPMをインストールしたり、変更を加えたりしないでください。これにより、再度有効にする際に問題が発生する可能性があることがわかりました。

SELinuxを永続的に無効にしたい場合は、以下を試してください。

https://access.redhat.com/knowledge/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Security-Enhanced_Linux/sect-Security-Enhanced_Linux-Working_with_SELinux-Enabling_and_Disabling_SELinux.html

1
jeffatrackaid
getsebool -a | grep mail
allow_postfix_local_write_mail_spool --> off
setsebool -P httpd_can_sendmail on

このコマンドは私のために働いています。

0
Sawan Choubisa