OVH Community, votre nouvel espace communautaire.

php mail sendmail postfix IPFailover


Romeo
09/07/2015, 10h17
Ne pouvant pas intervenir entre php, sendmail & pickup pour avoir le hostname voulu , je configure smtp_check_header pour chaque sortie vers une IPFO.
Je n'ai pas trouvé mieux pour le moment.

Pour la masquerade, ce n'est pas un souci, car j'impose déjà dans la config une adresse expéditeur pour chaque vhost.

Nowwhat
09/07/2015, 09h15
Désolé.
J'ai abolie l'usage de PHP mail() sur toutes mes Mutus, Dédiés et j'en passe. J'ai carrément désactive ce mail().

Je passe par le smtp sur localhost (127.0.0.1 ou ::1) porte 'submission' (donc authentifié) pour, et peut être je me fait des idées - mieux déclarer la source 'domaine' de mon mail.

PS : ajoute ceci à ton main.cf:
masquerade_domains = ton-domaine-1.tld ton-domaine-2.tld ton-domaine-3.tld

Romeo
08/07/2015, 17h39
re....

Le header "Message-Id" (Message-Id: <20150705115709.A705AAC@nsxxxxx.ovh.net> ) est ajouté par cleanup.
Comment lui expliquer que je ne veux pas le hostname ou reverse du serveur mais plutôt le reverse de l'ipfailover qui correspond au domaine d'un vhost ??

Romeo
08/07/2015, 17h22
Re.. bonjour

Merci pour toutes ces explications.

C'est exactement comme ça que mon serveur est configuré.
D'ailleurs c'est suite à la lecture d'un de tes posts précédent que j'en suis arrivé là.
En résumé, j'ai bien une route pour les mails sortants sur chaque IPFO.
Cà c'est déja fait.

Je confirme qu'a partir de mon client de messagerie configuré pour un domaine quelconque sur le serveur, tous les "headers" sont corrects et aucune trace de nsxxxx.ovh.net C'est parfait

MAIS et là j'en reviens à ma question initiale
Qu'en est il pour l'envoi d'un mail à partir de la fonction "mail()" de php ????

Puisque nous avons sensiblement la même config,
peux tu faire un essai stp à partir d'un script php sur un de tes vhosts
mail("tonadresseperso@tonfai.tld", "le sujet", "le message", "-femailexpediteur@domain.tld");
et consulter les headers du mail reçu

N' y aurait il pas par hasard, quelques traces de nsxxxxx.ovh.net qui se promènent ???

Nowwhat
08/07/2015, 14h44
Bonjour,

En gros, ce qu'il faut faire est instruire postfix qu'il utilise IPFO-1 quand tu envoi un mail avec ton-nom-de-domaine-1
Même chose pour IPFO-2 et ton-nom-de-domaine-2
Etc.

J’utilise moi même postfix, j'ai IPFO (Ipv4) et une dizaine de nom de des domaines.
Car j'ai plusieurs nom des domaines, j’utilise la méthode "Postfix Virtual Domain Hosting".

La solution commence ici:
Dans /etc/postfix/main.cf j'ai ceci:
..
sender_dependent_default_transport_maps = mysql:/etc/postfix/mysql-sdd_transport_maps.cf
..
.

Ce fichier "mysql:/etc/postfix/mysql-sdd_transport_maps.cf" va sélectionner une réponse suivant toutes mes domaines listé dans une table "domains_transport" dans une base des données nommé 'mail' :
hosts = 127.0.0.1
user = user
password = password
dbname = mail
query = SELECT CONCAT(REPLACE(domain,'.','_'),':') FROM domains_transport WHERE domain = CONCAT('%2','.','%1')
Donc, "ton-nom-de-domaine-1.tld" va être traduite en "ton-nom-de-domaine-1_tld"

Dans cette base 'mail, table 'domains_transport" je n'ai qu'une colonne : 'domain ' qui liste toutes mes domaines qui doivent être gérer par nom serveur mail, genre:
ton-nom-de-domaine-1.tld
ton-nom-de-domaine-2.tld
ton-nom-de-domaine-3.tld
ton-nom-de-domaine-4.tld
ton-nom-de-domaine-5.tld
ton-nom-de-domaine-6.tld
ton-nom-de-domaine-7.tld
etc...

Puis, dans le fichier /etc/postfix/master.cf j'ai:
Code:
ton-nom-de-domaine-1_tld unix  -       -       n       -       -       smtp
   -o smtp_bind_address6=2001:41d0:2:927b::2
   -o smtp_bind_address=46.105.79.38
   -o smtp_helo_name=mail.ton-nom-de-domaine-1_tld
   -o syslog_name=ton-nom-de-domaine-1_tld-transport
   -o myhostname=mail.ton-nom-de-domaine-1_tld
   -o smtp_use_tls=yes
   -o smtp_tls_security_level=may
   -o smtp_tls_cert_file=/root/startssl/ton-nom-de-domaine-1_tld/ssl.crt
   -o smtp_tls_key_file=/root/startssl/ton-nom-de-domaine-1_tld/ssl-decrypted.key
   -o milter_macro_daemon_name=ORIGINATING
Résultat : pour chaque nom de domaine sur mon serveur, le bon IPv4 (et le bon IPv6) seront sélectionnées.
Comme le bon certificat, le bon prefise pour le logs - et le bon HELO.
Attention par défaut postfix utilise le Ipv6 - et si ça ne marche pas, il retente avec un IPv4 (sauf si t'es pas IPv6-ready encore)

Ça l’air assez complique mais - c'est la méthode le plus souvent utilisé car beaucoup de serveurs mails ont plus qu'un IPv4, et plus qu'un nom de domaine.
Toutes les domaines, boites mails, mot de passe, quotas etc etc sont dans une base MySQL (ou n'importe quel autre base des données) ce qui te permet de 'trafiquer' les données avec p.e. phpmyadmin sans redémarrer postfix.
Ajouter un n-ieme IPFOv4 : tu rajoute un morceau de paramétrage a master.cf et ça roule (ajoute aussi le nom de domaine lié dans la base - table) - paramètre l'antivirus /antispam et grosso modo c'est fait.

=> http://permalink.gmane.org/gmane.mai...ix.user/227434
(et des milliers d'autres références sur le net)


edit: Mon serveur a été livré avec 1 IPv4 (reverse genre @nsxxxxx.ovh.net) et quelques milliards de IPv6.

Je te conseille FORTEMENT d'utiliser pour toutes tes nom de domaine "ton-nom-de-domaine-X.tld" d'utiliser un IPFOv4 - JAMAIS l'IPv4 de ton serveur.
Certains domaines peuvent être partagé sur un IPv4 (avec les conséquence pour le reverse bien sur).
Toutes tes domaines doivent avoir LEUR PROPRE IPv6 (t'as aura assez, promis).

N'utilise JAMAIS l'IPv4 de ton serveur sauf peut être pour l'accès SSH.
Ne montre rien d'autre dessus (pas de ntp, dns, pop, map, web, https, etc etc )

Romeo
08/07/2015, 13h44
Bonjour,

J'essaie désespérément de faire fonctionner un serveur mail avec plusieurs ipfailover et virtualhost et nom de domaine

J'y suis presque, afin que les mails envoyés et reçus s'adaptent en fonctions des nom de domaines.

Ci dessous les entêtes du mail que je reçois lorsque je fait un envoi à partir d'un script php avec la fonction "mail()"
L'expéditeur du mail est user1@mondomaine.com
Le déstinataire est adresseperso@free.fr


Return-Path: user1@mondomaine.com
Received: from zimbra42-e7.priv.proxad.net (LHLO
zimbra42-e7.priv.proxad.net) (172.20.243.192) by
zimbra42-e7.priv.proxad.net with LMTP; Mon, 5 Jul 2015 11:57:12 +0200
(CEST)
Received: from mondomaine.com(mx26-g26.priv.proxad.net [172.20.243.96])
by zimbra42-e7.priv.proxad.net (Postfix) with ESMTP id 9354D2C3BA9
for ; Mon, 6 Jul 2015 19:57:12 +0200 (CEST)
Received: from mondomaine.com ([IPFAILOVER])
by mx1-g20.free.fr (MXproxy) with ESMTPS for adresseperso@free.fr
(version=TLSv1/SSLv3 cipher=AES256-SHA bits=256);
Mon, 5 Jul 2015 11:57:12 +0200 (CEST)
Received: by nsxxxxx.ovh.net (Postfix, from userid 33)
id A705AAC; Mon, 5 Jul 2015 11:57:09 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=mondomaine.com;
Message-Id: <20150705115709.A705AAC@nsxxxxx.ovh.net>

Je ne parviens pas à faire afficher le reverse de mon ipfailover à la place de nsxxxxx.ovh.net
En effet, nsxxxxx.ovh.net correspond au reverse de l'ip reel du serveur qui est dans /etc/hostname

Le reverse de l'ipfailover est bien configuré
mondomaine.com => IPFAILOVER
IPFAILOVER => mondomaine.com

Une solution consisterait à réécrire la portion de texte avec une regex
mais je souhaiterai plutôt prendre le problème au départ qui doit être du côté de la fonction mail de php ou sendmail
Le but final est de ne plus avoir aucune trace de l'ip réel ou nsxxxxx.ovh.net mais uniquement l'ipfailover, son reverse, et mondomaine.com qui apparaissent dans les entêtes.

Cordialement,
Romeo