Php mail() : Exim4, PHP5, APACHE2.4 + mpm-itk

Bonjour à tous !
Je poste ici parce que la solution n’a pas été évidente à trouver.

Environnement :
[ul]Debian 8.2 stable
Apache 2.4 (ne concerne pas < 2.4)
Exim4
PHP5[/ul]

Mon serveur apache tourne avec le module mpm-itk qui permet d’utiliser un utilisateur différent pour chaque vhost ce qui a beaucoup d’avantages dans le cas d’un mutualisé.

Le problème était que je n’arrivais pas à envoyer de mail via la fonction PHP que je testais grâce à ce script simple :

<?php if(mail('vivedebian@debian.fr', 'My Subject', 'message')){ echo "le message à été envoyé"; }else{ echo "Erreur d'envoi du message"; } ?>

Executé en root, aucun problème, en revanche, executé via un site web (donc un autre utilisateur que root ou www-data) j’avais un échec. Après avoir fouillé dans PHP ou encore dans les logs d’apache, rien de particulier ne remontait.
C’est en fait dans /var/log/exim4/paniclog que j’ai trouvé l’erreur suivante :

2016-02-01 12:52:52 unable to set gid=1007 or uid=0 (euid=0): forcing real = effective

J’ai donc modifié le mode mpm-prefork (sur lequel est basé mpm-itk) en ajoutant la ligne :

LimitUIDRange 0 2000

Entre les balises

<IfModule mpm_prefork_module> StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxRequestWorkers 150 MaxConnectionsPerChild 0 LimitUIDRange 0 2000 </IfModule>

Reload de apache et exim4 et c’est tout :041

Maintenant tout fonctionne, les formulaires de contact du site web fonctionnent de nouveau :slightly_smiling:

La doc qui m’a aidé :
mpm-itk.sesse.net/

A bientôt :slightly_smiling: