web-dev-qa-db-fra.com

Comment Apache peut-il être autorisé à envoyer un courrier électronique?

J'ai une machine virtuelle CentOS 6.2 exécutant Apache 2.2 et PHP 5.3 que je tente d'envoyer un courrier électronique à l'aide de la fonction mail () de PHP. Je peux envoyer des e-mails à partir de la CLI sans problèmes, mais lorsque PHP essaie, il échoue. Dans le journal de sendmail se trouve ce qui suit:

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

Il semble qu'Apache n'ait pas la permission de faire cela, mais je ne sais pas comment le réparer. J'ai trouvé beaucoup de discussions à ce sujet mais rien de suffisamment spécifique à ce que je fais que je pourrais utiliser. Toute aide serait appréciée. Merci!

11
dev_willis

Vous devez d'abord vérifier si les permissions sont correctes. Voici l'autorisation ci-dessous dans mon système

# 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

Si vos autorisations ou votre propriété sont erronées, modifiez-les à l'aide de chown et chmod. 

Si ce qui précède est correct, désactivez selinux ou, si vous souhaitez activer Selinux, utilisez chcon pour définir le contexte selinux approprié. 

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

Pour désactiver selinux, utilisez temporairement #setenforce 0

4
Ranjith Ruban

Selinux peut être à l'origine du problème, pour vérifier son exécution:

getsebool -a | grep mail

Si cela s'affiche comme ci-dessous, c'est selinux:

allow_postfix_local_write_mail_spool --> off

Vous pouvez le désactiver, mais si vous voulez le garder (et vous devriez le faire, car cela fournit une couche de sécurité supplémentaire), vous devriez faire autre chose:

setsebool -P httpd_can_sendmail on

Cela permettra au httpd d'envoyer des emails, comme lorsque vous utilisez php mail ().

30
Florin Sima

Déteste necro cela, mais aucune des solutions ici ne fonctionnait pour moi. Je connais très peu de choses sur SELinux, mais j'ai fini par découvrir le problème avec ceci (sur CentOS 6):

getsebool httpd_can_sendmail

Ce qui m'a dit que c'est désactivé. Fixe avec

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

Cette commande fonctionne pour moi.

0
Sawan Choubisa