====== Fonction mail de PHP et mails en lignes de commande ======
Si vous avez suivi le processus d'installation d'un serveur [[email|email]] complet vous pouvez envoyer et recevoir des mails depuis un client. Cependant il peut être intéressant d'automatiser l'envoi de mail depuis votre serveur.
Deux cas de figure peuvent se présenter :
* L'envoi de mails depuis la ligne de commande
* L'envoi de mails depuis PHP via la fonction mail()
===== msmtp =====
Msmtp est un client qui permet d'envoyer des mails depuis la ligne de commande. Il est très simple d'utilisation mais aussi très complet. C'est cet outils qui permettra à un programme d'envoyer des mails et d'utiliser mail() de PHP.
Il s'installe sous Debian et Ubuntu via :
''apt-get install msmtp''
==== Configuration ====
Le principe de ce client est d'attribuer à chaque utilisateur Unix un fichier de config ''~/.msmtprc'' qui stockera toutes les informations de connexion. Exemple pour un utilisateur ''toto'' :
account toto
host smtp.domaine.tld
port 25
from toto@domaine.tld
auth on
user toto@domaine.tld
password mot_de_passe
tls on
tls_starttls on
tls_certcheck off
account default: toto
Comme ce fichier le laisse transparaître, les informations de connexions sont exactement les mêmes que pour n'importe quel client de messagerie, ce qui veut dire que vous pouvez configurer n'importe quel compte de messagerie comme gmail par exemple.
**Attention** : le mot de passe est en clair dans le fichier, seul l'utilisateur doit avoir accès à ce fichier ''chmod 600 ~/.msmtprc''
Msmtp fonctionne comme sendmail, le programme usuel d'envoi de mail sous Unix. Il est d'ailleurs compatible avec ses options. Ainsi si vous avez un fichier contenant un texte à envoyer par mail :
''cat fichier_mail | msmtp destinataire@domaine.tld''
==== PHP ====
Beaucoup de CMS utilisent l'envoi de mails depuis PHP pour créer des comptes ou notifier d'un message privé. Pour cela ils utilisent la fonction mail() de PHP. Cette fonction peut être assez compliquée à configurer, mais l'utilisation de msmtp facilite grandement les choses.
Il suffit alors de configurer l'envoi de mail pour le compte responsable du serveur web, généralement ''www-data''. On va donc configurer un fichier ''.msmtprc'' pour cet utilisateur. Cependant au lieu de mettre ce fichier dans le homedir on va le placer à l'extérieur de ce répertoire, histoire de pas avoir de fuite malencontreuse de mot de passe à cause d'un serveur web trop permissif :
''/etc/php5/cgi/mail.ini''
account webmaster
host smtp.domaine.tld
port 25
from webmaster@domaine.tld
auth on
user webmaster@domaine.tld
password mot_de_passe
tls on
tls_starttls on
tls_certcheck off
account default: webmaster
''chmod 600 /etc/php5/cgi/mail.ini''
Ensuite il faut indiquer à PHP qu'il doit utiliser msmtp. Dans ''/etc/php5/cgi/php.ini'' :
sendmail_path = msmtp -C /etc/php5/cgi/mail.ini -t -i
mail.add_x_header = Off