2012-10-09 15 views
9

Ho una macchina virtuale CentOS 6.2 con Apache 2.2 e PHP 5.3 che sto provando a inviare email tramite la funzione mail() di PHP. Posso inviare email dalla CLI senza problemi, ma quando PHP tenta fallisce. Nel registro Sendmail è il seguente:Come può essere consentito ad Apache di inviare e-mail?

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

Sembra Apache non hai il permesso di fare questo, ma io non sono sicuro di come risolvere il problema. Ho trovato molte discussioni su questo, ma non abbastanza specifico per quello che sto facendo che potrei usare. Qualsiasi aiuto sarebbe apprezzato. Grazie!

+2

Come state cercando di inviare questa email? Apache non dovrebbe mai aver bisogno di chdir nelle directory di spool della posta - dovrebbe solo parlare con l'MTA della posta locale. –

+0

Dai un'occhiata a questa soluzione: http://forums.freebsd.org/showthread.php?t=32273 –

risposta

4

Prima di tutto bisogna verificare se il permesso siano corrette. Ecco l'autorizzazione al di sotto del mio sistema

# 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

Se le autorizzazioni o di proprietà è sbagliato quindi modificare utilizzando chown e chmod.

Se quanto sopra è corretto, disabilitare selinux o se si desidera abilitare selinux utilizzare chcon per impostare il contesto selinux corretto.

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

Per disabilitare selinux utilizzare temporaneamente #setenforce 0

+1

Era SELinux. Ora funziona! Grazie! –

+1

Non disabilitare SELinux :(Esiste un valore booleano 'httpd_can_sendmail' per consentire al server Web di inviare posta che dovrebbe funzionare in questo caso. Impostalo con' setsebool -P httpd_can_sendmail 1' e includi l'opzione '-P' per renderlo persistente attraverso i riavvii. L'opzione –

1

È possibile che SELinux sia abilitato.

http://selinuxproject.org/page/Main_Page

È possibile controllare lo stato di SELinux facendo:

sestatus

Si dovrebbe vedere qualcosa di simile:

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

È possibile disattivare SELinux fuori temporaneamente tramite:

echo 0 >/selinux/enforce 

e indietro con

echo 1 >/selinux/enforce 

Se fai Temp. spegnerlo, non installare RPM o apportare modifiche. Trovo che ciò possa causare problemi nel riattivarlo.

Se si desidera disabilitare in modo permanente SELinux, quindi provare:

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

+0

Grazie per queste informazioni! –

28

SELinux può causare il problema, per verificare run:

getsebool -a | grep mail 

Se viene visualizzato come muggito è selinux:

allow_postfix_local_write_mail_spool --> off 

È possibile disattivarlo, ma se si desidera mantenere (e si dovrebbe in quanto fornisce un ulteriore livello di sicurezza) si dovrebbe fare qualcosa di diverso:

setsebool -P httpd_can_sendmail on 

Questo permetterà al httpd di inviare messaggi di posta elettronica, come quando si utilizza PHP mail().

+4

-P lo rende permanente, quindi dopo il riavvio sarà di nuovo acceso :) – VSB

+2

ho usato solo "setsebool -P httpd_can_sendmail su" e ho risolto il problema. Grazie – PookPook

11

Odio questo, ma nessuna delle soluzioni ha funzionato per me. So molto poco di SELinux, ma ho finito per scoprire il problema di questo (su CentOS 6):

getsebool httpd_can_sendmail 

Il che mi ha detto che è disabilitato. Riparato con

setsebool httpd_can_sendmail 1 
+0

Ha funzionato magnificamente - grazie per la pubblicazione. – daveywc

+0

Questo ha funzionato per me in centos –

+0

Sei un salvatore .. Grazie .. –

Problemi correlati