Apache : scripts mail php affichent user@NOMDUSERVEUR

Bonjour,

Après avoir parcouru la doc de Postfix et pas mal de forum, je m’en remets à un gourou Postfix qui passera par ici.

J’ai des serveurs Web qui hébergent environ 300-400 clients.
Tout ça tourne avec Nginx, Apache, Plesk et Postfix.
Les clients ont donc la possibilité d’envoyer des mails via leur webmail ou un script php. (ou via un smtp s’ils en font la demande)
Toutes les nuits, sont lancés des scripts PHP, (à l’insu ou non des propriétaires des hébergements) pour envoyer du SPAM.
Résultat, les IP des serveurs ont une mauvaise réputation et j’ai beaucoup de mails légitimes qui sont refusés.

Pour limiter les dégats, j’ai mis en place policyd sur notre smtp, pour mettre des quotas d’envoi par domaine expéditeur.
Dans le main.cf de postfix, j’ai fait un relais vers mon smtp.
Ca fonctionne très bien.
Tous les mails passent maintenant par le smtp et sont comptabilisés dans ma base de données, avec les quotas.

Là ou il y a un problème, c’est que lorsqu’un script PHP est lancé, le domaine qui apparait (dans les logs notamment) est celui du serveur et non pas le domaine du client qui a lancé le script. (donc pour les quotas, ca va pas.)
A priori, Postfix prend en compte dans son fichier main.cf, la valeur de myorigin et l’applique à tous.

Donc ma question est :
Comment faire pour que Postfix affiche le nom de domaine de l’hébergement qui lance un script PHP en lieu et place de la variable myorigin ?

Merci d’avance

Up ? personne n’a rencontré ce problème ?

Je poste la solution au cas où ca intéresserait quelqu’un.

La fonction mail de php est gérée par Apache, c’est donc Apache qui “écrit” le user from sous la forme user@nomduserveur

Il faut, pour chaque vhost, créer un fichier php.ini, ou s’il existe déjà y ajouter la commande :
/usr/sbin/sendmail -t -i -fEXEMPLE@NOMDUDOMAINE.
(à faire avec un script si comme moi vous avez 500 vhosts hébergés sur le serveur)

Dans mon cas, le php.ini est lu seulement pour les clients dont le module fastcgi est activé.
Pour les autres, j’ai du créer un fichier vhost.conf :
<Directory /var/www/vhosts/exemple.net/httpdocs>
php_admin_value sendmail_path “/usr/sbin/sendmail -t -i -f EXEMPLE@NOMDUDOMAINE”

Après ça, tous les mails provenant d’un script php apparaissent comme il faut pour permettre à Policyd / Cluebringer de gérer les quotas d’envois par domaine.