Auto-adaptation du "domaine à utiliser pour le courrier sortant"

WRInaute discret
Bonjour,

Je viens tout récemment de me prendre un serveur dédié sur OVH qui est presque complètement configuré mais il me reste encore quelques détails à régler du côté de l'envoi/réception d'e-mails.

J'ai configuré Postfix dans le but de pouvoir gérer l'envoi d'e-mails. Dans l'option du domaine à utiliser pour le courrier sortant, la valeur par défaut était ks245673.kimsufi.com (le nom de mon serveur).

En gros, en en envoyant un mail par PHP depuis une adresse du genre contact@mondomaine.com, les utilisateurs recevaient bien l'e-mails de la part de "contact@domaine.com" mais il était clairement indiqué qu'il avait été envoyé par ks245673.kimsufi.com
J'ai donc changé le "domaine à utiliser pour le courrier sortant" et j'ai mis à la place mondomaine.com.

Du coup, ça fonctionne très bien et les gens reçoivent les e-mails de mon site directement de la part de ce domaine (ce qui évite donc aussi que ça passe dans les spams).

Maintenant, je gère plusieurs sites hébergés sur le même serveur. Le problème, c'est que je ne crois pas qu'on puisse personnaliser ça dans Postfix : actuellement, si j'envoie un mail de contact@monautredomaine.com, il sera considéré comme envoyé de contact@mondomaine.com.

J'aimerais donc, si c'est possible, faire que PHP (ou postfix, je sais pas comment il faudrait gérer ça) adapte automatiquement cette valeur selon l'endroit d'où est envoyé le mail (ou tout simplement selon la valeur indiquée dans "From").

Personnellement, j'utilise Webmin quand cela est possible pour gérer Postfix (ce qui m'évite les erreurs de manipulation). Dans les options, j'ai : Quel domaine utiliser pour le courrier sortant, puis 3 possibilités :
- Utiliser le nom de machine (envoie depuis ks245673.kimsufi.com)
- Utiliser le nom de domaine (envoie depuis kimsufi.com, sans sous-domaine)
- Entrer une valeur : mondomaine.com (envoit toujours depuis mondomaine.com)

Voilà, des solutions (si j'ai été suffisamment clair :/) ? J'utilise webmin mais je peux tout à fait modifier directement les fichiers ;)
 
WRInaute discret
Euh... Je dois reconnaître que ce n'était pas très clair :/

En fait voilà, il s'agit du fichier /etc/postfix/main.cf
Dans ce dernier, j'ai la variable mydomain qui vaut "mondomaine.com". Du coup, les mails sont automatiquement envoyés depuis ce domaine.

Comment faire si on a plusieurs NDD pour pouvoir entrer plusieurs noms dans cette variable ? Ou sinon, comment faire pour que cette variable s'adapte automatiquement en fonction du domaine actif (donc qui est dans l'url de la page php qui souhaite envoyer le mail) ?

En espérant que c'est plus clair cette fois-ci :D

Merci beaucoup d'avance car c'est vraiment LE gros problème du moment pour moi ^^' (déjà que mes mails arrivent tous dans les spams avec mon nouveau serveur -_-')
 
WRInaute discret
Alors deux solution, c'est con j'ai perdu mes conf maison : en plus c'est mon dernier sujet avant d'être viré :mrgreen:


mydomain = le domaine au choix ou par defaut
mydestination = $myhostname, localhost.$mydomain, $mydomain, domaine1, domaine2, domainpipi, etc,

test ça et dis moi !


Sinon; tas un truc sympa c'est postfix couplé à mysql ! jvais essayé de te trouver la doc de sarge ; mais c'est pareil pour toute les distrib / faut juste adapter

et je vais te filer la doc française postfix monstrueusement coollllllllllllll
 
WRInaute discret
ha ben tas de la chance ils ont refait le site ; avec ça tu vas te faire un vrai provider :lol: :mrgreen:

http://workaround.org/ispmail/sarge

ya qu'à lire c'est hyper lisible / je t'assure

Tu peux tout faire avec / du redirect / du compte mail / gestion multi domaine / du ssl pop imap / certificat / antispam / virus / tout !!!!! / le café / c'est la doc qu'il te faut

Bon jfais vite avant d'être blacklist :mrgreen:
 
WRInaute discret
Merci :)

Donc oui, j'avais installé postfix avec mysql en suivant ce tuto : http://www.lafermeduweb.net/billet/tutorial-creer-un-serveur-web-compl ... r-168.html

Malheureusement, certaines parties n'étaient pas très claires, dont justement à propos de ça pour l'envoi avec mydomain, etc. Je vais lire ton tuto qui a l'air très complet dès que j'en aurai le temps, demain je pense :)

J'ai essayé de faire comme tu as dit, j'ai modifié mydestination en ajoutant mondomaine.com mais le problème c'est que les mails de PHP continuent d'être envoyés depuis le nom de la machine (donc la valeur dans mydomain). Il ne manque pas qqch d'autre ?
 
WRInaute discret
intéressant ce lien ! plus frais :mrgreen: merci


7804j a dit:
Merci :)

Donc oui, j'avais installé postfix avec mysql en suivant ce tuto : http://www.lafermeduweb.net/billet/tutorial-creer-un-serveur-web-compl ... r-168.html
?





Envoi moi par mail le dossier complet /etc/postfix

le fichier /etc/hostname

le /etc/mailname

Et seulement si t'as logrotate pitié sinon non !

/var/log/mail.log

avant d'envoyer les logs donne moi les numeros en tapant ça :

stat -c %s /var/log/mail.log


lionel.belarbi@gmail.com bienvenue saleté de bot
 
WRInaute discret
Le retour de stat -c %s /var/log/mail.log me donne 218610

Mais sinon, oulà... Ca risque d'être chaud pour te donner le dossier complet. Je sais que certains fichiers contiennent des mots de passe et quelques trucs que je préfère garder ^^'

Je vais quand même essayer de te donner le plus d'infos possible.

Pour le mail.log, il contient environ 2000 lignes avec toujours la même chose :
Code:
Dec 11 21:43:57 ks28664 postfix/smtpd[18171]: fatal: open database /etc/aliases.db: No such file or directory
Dec 11 21:43:58 ks28664 postfix/master[4678]: warning: process /usr/lib/postfix/smtpd pid 18171 exit status 1
Dec 11 21:43:58 ks28664 postfix/master[4678]: warning: /usr/lib/postfix/smtpd: bad command startup -- throttling

Mais déjà, voilà le résultat d'un ls sur /etc/postfix :

Code:
dynamicmaps.cf  master.cf                 mysql-virtual_aliases_comptes.cf  mysql-virtual_domaines.cf  postfix-files   post-install
main.cf         mysql-virtual_aliases.cf  mysql-virtual_comptes.cf          mysql-virtual_quotas.cf    postfix-script  sasl
Dis-moi si t'as besoin du contenu d'un fichier.

Et voici le main.cf :

Code:
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
disable_vrfy_command = yes
smtpd_helo_required = yes

# appending .domain is the MUA's job.
append_dot_mydomain = no

# Pour faire simple, il est conseillé d'utiliser le reverse DNS de votre serveur.
myhostname = ks28664.kimsufi.com
mydestination = $myhostname, localhost.$mydomain, $mydomain, geek-test.com
mynetworks = 127.0.0.0/8, 91.121.96.184
mailbox_size_limit = 0
recipient_delimiter = +
mail_pool_directory = /var/mail

virtual_alias_maps = mysql:/etc/postfix/mysql-virtual_aliases.cf,mysql:/etc/postfix/mysql-virtual_aliases_comptes.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual_domaines.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual_comptes.cf
virtual_mailbox_base = /var/spool/vmail/
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000

virtual_create_maildirsize = yes
virtual_mailbox_extended = yes
virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql-virtual_quotas.cf
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = "La boite mail de votre destinataire est pleine, merci de reessayez plus tard."
virtual_overquota_bounce = yes


# adresses d'expedition
smtpd_sender_restrictions =
        permit_mynetworks,
        warn_if_reject reject_unverified_sender

# adresses de destination
smtpd_recipient_restrictions =
        permit_mynetworks,
        reject_unauth_destination,
        reject_non_fqdn_recipient

# client
smtpd_client_restrictions =
        permit_mynetworks
myorigin = $mydomain

Voilà, regarde si ça peut t'aider ou s'il te faudrait plus de détails sur un fichier, et merci de ton aide :D

P.S : Pourquoi tu parles toujours de ban imminent ? Ca m'intrigue ^^'
 
WRInaute passionné
Pour le mail.log, il contient environ 2000 lignes avec toujours la même chose :
Code:
postalias /etc/aliases
et un reload ça devrait fixher ça.

Sinon pour ton "FROM" PHP qui n'est pas bon, c'est que tu utilises "basiquement" la fonction mail.
Voilà une petite fonction qui te permet de mettre un vrai FROM:
Code:
function sendemail($To, $Subject, $Body, $From = 'noreply@admin-serv.net', $Footer = EMAIL_FOOTER) {
        $Headers = 'MIME-Version: 1.0' . CLRF;
        $Headers .= 'Content-type: text/plain; charset=UTF-8' . CLRF;
        $Headers .= 'Content-Transfer-Encoding: 8bit' . CLRF;
        $Headers .= 'From: Admin Serveur <' . $From . '>' . CLRF;
        $Headers .= 'Reply-To: ' . $From . CLRF;
        $Body = wordwrap($Body, 70);
        $Body .= CLRF . CLRF . $Footer;
        $Subject = '=?UTF-8?B?' . base64_encode($Subject) . '?=';
        if (!mail($To, $Subject, $Body, $Headers, "-f " . $From)) {
                return false;
        } else {
                return true;
        }
}
Adapte un peu car je t'ai juste C/C la mienne.
Car là dans ton cas tu n'as qu'un seul domaine émetteur.
Si tu avais 500 domaines hébergées sur ton serveur, tu aimerais peut-être pouvoir adapter.
 
WRInaute discret
Actuellement, pour l'envoi d'e-mails, j'utilise cette fonction :

Code:
function envoyer_mail($expediteur, $email_expediteur, $adresse, $bcc, $subject, $message_texte, $message_formate)
{
	$message_formate = nl2br($message_formate);
	$mail = $adresse; // Déclaration de l'adresse de destination
	if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $mail)) // O,n filtre les serveurs qui bugs
	{
		$passage_ligne = "\r\n";
	}
	else
	{
		$passage_ligne = "\n";
	}
	//=====Déclaration des messages au format texte et au format HTML
	$message_txt = $message_texte;
	$message_html = '<a href="http://www.dofus2.org" title="Dofus2.org"><img src="http://www.dofus2.org/banniere.png" alt="Dofus2.org" title="Dofus2.org" /></a><br/><br/>' . $message_formate;
	//==========
	 
	//=====Création de la boundary
	$boundary = "-----=".md5(rand());
	//==========
	 
	//=====Définition du sujet
	$sujet = $subject;
	//=========
	 
	//=====Création du header de l'e-mail
	$header = "From: \"".$expediteur."\"<".$email_expediteur.">".$passage_ligne;
	$header.= "Reply-to: \"".$expediteur."\" <".$email_expediteur.">".$passage_ligne;
	
	if($bcc != NULL)
	{
	
		$cci = $bcc;
		$header.= "Bcc:";
		foreach($cci as $element)
		{
			$header.= $element;
		
		
		}
		$chaine = substr($header,0,-2);
			
		$header = $chaine;		
		$header.= $passage_ligne;
	
	}

	
	$header.= "MIME-Version: 1.0".$passage_ligne;
	$header.= "Content-Type: multipart/alternative;".$passage_ligne." boundary=\"$boundary\"".$passage_ligne;
	//==========
	 
	//=====Création du message
	$message = $passage_ligne.$boundary.$passage_ligne;
	//=====Ajout du message au format texte
	$message.= "Content-Type: text/plain; charset=\"UTF-8\"".$passage_ligne;
	$message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
	$message.= $passage_ligne.$message_txt.$passage_ligne;
	//==========
	$message.= $passage_ligne."--".$boundary.$passage_ligne;
	//=====Ajout du message au format HTML
	$message.= "Content-Type: text/html; charset=\"UTF-8\"".$passage_ligne;
	$message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
	$message.= $passage_ligne.$message_html.$passage_ligne;
	//==========
	$message.= $passage_ligne."--".$boundary."--".$passage_ligne;
	$message.= $passage_ligne."--".$boundary."--".$passage_ligne;
	//==========
	 
	//=====Envoi de l'e-mail
	mail($mail,$sujet,$message,$header);
	//===========


}

Je l'ai un peu adaptée à mes besoins mais ce n'est pas moi qui l'ai créée. A-t-elle l'air correcte ?

Mais le problème ne vient pas de là, je crois. En effet, si je regarde par exemple l'e-mail reçu dans gmail, voilà ce que je vois :


Delivered-To: hihi.jozi@gmail.com
Received: by 10.182.66.168 with SMTP id g8cs18304obt;
Sun, 11 Dec 2011 11:53:41 -0800 (PST)
Received: by 10.216.137.141 with SMTP id y13mr1809531wei.12.1323633220007;
Sun, 11 Dec 2011 11:53:40 -0800 (PST)
Return-Path: <www-data@kimsufi.com>
Received: from ks28664.kimsufi.com (ks28664.kimsufi.com. [91.121.96.184])
by mx.google.com with ESMTP id fh21si9857299wbb.63.2011.12.11.11.53.39;
Sun, 11 Dec 2011 11:53:39 -0800 (PST)
Received-SPF: pass (google.com: best guess record for domain of www-data@kimsufi.com designates 91.121.96.184 as permitted sender) client-ip=91.121.96.184;
Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of www-data@kimsufi.com designates 91.121.96.184 as permitted sender) smtp.mail=www-data@kimsufi.com
Received: by ks28664.kimsufi.com (Postfix, from userid 33)
id 38AD0286005B; Sun, 11 Dec 2011 20:53:33 +0100 (CET)
To: hihi.jozi@gmail.com
Subject: Email de test pour jonathan
X-PHP-Originating-Script: 2001:test.php
From: "Geek-test.com"<contact@geek-test.com>
Reply-to: "Geek-test.com" <contact@geek-test.com>
MIME-Version: 1.0
Content-Type: multipart/alternative;
boundary="-----=91498159cfa82fe4c0ec1d77cf7127c7"
Message-Id: <20111211195333.38AD0286005B@ks28664.kimsufi.com>
Date: Sun, 11 Dec 2011 20:53:33 +0100 (CET)


-----=91498159cfa82fe4c0ec1d77cf7127c7
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit

Salut Jonathan, Ã propos de dofus

-------=91498159cfa82fe4c0ec1d77cf7127c7
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: 8bit

<a href="http://www.dofus2.org" title="Dofus2.org"><img src="http://www.dofus2.org/banniere.png" alt="Dofus2.org" title="Dofus2.org" /></a><br/><br/>Salut Jonathan, Ã propos de dofus

-------=91498159cfa82fe4c0ec1d77cf7127c7--

-------=91498159cfa82fe4c0ec1d77cf7127c7--

Gmail a donc bien reçu, en plus des champs "From", l'adresse de mon serveur (kimsufi.com), que je ne voudrais justement pas voir affichée et remplacer automatiquement par mon domaine.

Oui, actuellement j'ai un seul domaine émetteur car je n'ai pas encore configuré les autres mais j'en possède au total 6.
 
Discussions similaires
Haut