Envoi des e-mails

De Wiki.

Règles d'adressage

Pour que les mails expédiés depuis les serveurs d'hébergements puissent être correctement routés, il faut respecter une cohérence dans les adresses d'expéditeur (from) et de destinaire (to).

define ("DEF_CONTACT_FROM", "FONDATION EADS <fondation-contact@fondation.eads.net>"); 
define ("DEF_CONTACT_TO", "FONDATION EADS <fondation-contact@eads.net>");

Le mail from doit être cohérent avec la machine effectuant l'envoi.

Eviter en tout premier lieu d'utiliser une adresse from sur le même domaine que l'adresse to. En effet, le serveur de messagerie de destination refusera quasi-assurément les messages car ils seront considérés comme frauduleux, car seul ce serveur est sensé signer les messages pour ce domaine.

Aussi, pour éviter de signer les mails avec un domaine n'appartenant pas au serveur, recourir à une adresse reply-to, qui elle n'aura pas de restriction.

Moteurs et configuration serveur

Les envois de mails sont effectués par les moteurs sendmail ou smtp via les bibliothèques PHP de Pear.

Ces scripts Pear requièrent que la fonction PHP popen() soit utilisable (celle-ci est parfois désactivée par des hébergeurs paranoïaques).

Le protocole préconisé est smtp- plus sûr, et autorisant plus de personnalisation des mails que sendmail.

Sur nos site, il est possible de faire sur smtpsur le localhost, ou sur notre serveur smtp dédié 80.247.235.90 si le trafic le justifie.

Les defines suivants permettent de régler l'usage de sendmail ou smtp :

  • DEF_MAIL_HOST - valeur possible : "localhost", adresse IP, nom machine, pour utiliser des protocoles spécifiques, syntaxe : ssl://localhost
  • DEF_MAIL_ENGINE - valeurs possibles : sendmail ou smtp
  • DEF_SENDMAILPATH - path du binaire sendmail, si non saisi, la valeur de ini_get('sendmail_path') est lue
  • DEF_USEPHPMAILFUNCTION - par défaut à 0, si réglé à 1, l'usage de Pear est désactivé et la fonction mail() native de PHP est alors utilisée

Pour l'usage de SMTP, les options suivantes sont disponibles :

  • DEF_MAIL_PORT - par défaut 25
  • DEF_MAIL_LOGIN - optionnel
  • DEF_MAIL_PASS - optionnel

Gestion env. de dev, préprod et production

Ne surtout pas maintenir des versions différentes des fichiers de conf entre les différentes plate-formes, n'en utiliser qu'un, différencié par des tests if.

if (preg_match('/hephaistos/', $_SERVER['HTTP_HOST']) == 1 ) {
	// dev
	define ("DEF_CONTACT_TO_ADMIN", "technique@couleur-citron.com");
	define ("DEF_CONTACT_FROM", "Couleur Citron <technique@couleur-citron.com>"); 
	define ("DEF_CONTACT_TO", "Couleur Citron <technique@couleur-citron.com>"); 
	define ("DEF_CONTACT_FROM_NAME", "Couleur Citron");
	define ("DEF_CONTACT_FROM_EMAIL", "technique@couleur-citron.com");
	define ("DEF_CONTACT_TO_JOURNEE_ENVOL", "technique@couleur-citron.com");