Si vous avez suivi le processus d'installation d'un serveur 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 :
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
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
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