it-swarm.com.de

Wie kann Apache E-Mails senden dürfen?

Ich besitze eine virtuelle CentOS 6.2-Maschine, auf der Apache 2.2 und PHP 5.3 ausgeführt werden und von der ich versuche, E-Mails über die mail () -Funktion von PHP zu senden. Ich kann ohne Probleme E-Mails über die CLI senden, aber wenn PHP es versucht, schlägt dies fehl. Im sendmail-Protokoll steht folgendes:

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

Es scheint, als ob Apache keine Berechtigung dazu hat, aber ich bin mir nicht sicher, wie ich das beheben soll. Ich habe viel darüber diskutiert, aber nichts Bestimmtes für das, was ich tue, das ich gebrauchen könnte. Jede Hilfe wäre dankbar. Vielen Dank!

11
dev_willis

Zuerst müssen Sie prüfen, ob die Berechtigung richtig ist. Hier ist die Erlaubnis unten in meinem System

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

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

Wenn Ihre Berechtigungen oder der Besitz falsch sind, ändern Sie sie mit chown und chmod. 

Wenn das Obige richtig ist, deaktivieren Sie Selinux oder wenn Sie möchten, dass Selinux aktiviert ist, verwenden Sie chcon, um den richtigen Selinux-Kontext festzulegen. 

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

Zum vorübergehenden Deaktivieren von selinux verwenden Sie #setenforce 0

4
Ranjith Ruban

Selinux kann das Problem verursachen, um den Lauf zu überprüfen:

getsebool -a | grep mail

Wenn es unten angezeigt wird, ist es selinux:

allow_postfix_local_write_mail_spool --> off

Sie können es deaktivieren, aber wenn Sie es behalten möchten (und Sie sollten eine zusätzliche Sicherheitsebene bieten), sollten Sie etwas anderes tun:

setsebool -P httpd_can_sendmail on

Dadurch kann der httpd E-Mails senden, z. B. wenn Sie php mail () verwenden.

30
Florin Sima

Ich hasse es, dies zu tun, aber keine der Lösungen hier hat für mich funktioniert. Ich weiß sehr wenig über SELinux, aber ich habe das Problem damit (unter CentOS 6) entdeckt:

getsebool httpd_can_sendmail

Was hat mir gesagt, dass es deaktiviert ist. Fixiert mit

setsebool httpd_can_sendmail 1
12
jmaculate

Möglicherweise haben Sie SELinux aktiviert. 

http://selinuxproject.org/page/Main_Page

Sie können den SELinux-Status überprüfen, indem Sie Folgendes tun:

sestatus

Sie sollten etwas sehen wie:

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

Sie können SELinux vorübergehend ausschalten, indem Sie:

echo 0 >/selinux/enforce

und wieder mit 

echo 1 >/selinux/enforce

Wenn Sie Temp. Deaktivieren Sie es, installieren Sie keine RPMs oder nehmen Sie keine Änderungen vor. Ich finde, dass dies zu Problemen bei der erneuten Aktivierung führen kann.

Wenn Sie SELinux dauerhaft deaktivieren möchten, versuchen Sie Folgendes:

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_S_ininux.html

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

Dieser Befehl funktioniert für mich.

0
Sawan Choubisa