21

Envoyer des mails depuis PHP avec Ubuntu et esmtp !

MailJ’ai actuellement un projet de site web qui a besoin d’envoyer un mail… rien de bien extraordinaire en fait. Mais envoyer un mail depuis PHP sur une station Ubuntu est moins facile qu’il n’y parait.

1ère solution: installer Postfix ou Sendmail, 2 gros bazookas pour une petite mouche.

2ème solution: installer nullmailer ou installer esmtp. Chez moi, nullmailer ne marchant pas pour des raisons obscures et sombres, j’ai installé esmtp qui fonctionne à merveille.

Installation:
sudo apt-get install esmtp

Configuration:
sudo vim /etc/esmtprc

Il suffit d’indiquer un serveur smtp (celui de son FAI, par exemple), éventuellement un login/pass au besoin.

Pour l’utiliser avec gmail, en revanche, c’est un poil plus complexe, mais la documentation d’esmtp est bien faite.

Enfin, pour terminer, il suffit de faire un lien symbolique de /usr/bin/sendmail vers esmtp comme suit pour que tout fonctionne parfaitement:
sudo ln -s /usr/bin/esmtp /usr/bin/sendmail

21 Comments

  1. La différence avec Postfix ou Sendmail, c’est qu’avec ces deux derniers il me semble, tu n’as pas besoin de smtp de ton fournisseur d’accès.

  2. effectivement, postfix et sendmail sont des serveurs mails donc font office de SMTP . mais on peut aussi les configurer pour relayer les messages à une autre serveur smtp (celui de son FAI par exemple).

    le problème c’est que certain FAI bloquent en sortie les serveurs smtp, il faut passer obligatoirement par leur serveur (Free propose une option sur son interface de gestion, je ne sais pas ce qu’il en est chez les autres)

  3. Bonjour,

    En quoi est-ce plus simple/intéressant d’utiliser esmtp plutôt que d’utiliser directment le serveur de l’hébergeur ou même du FAI ? Surtout dans le cas ou les mails sont relayés vers celui-ci.

    Cordialement.

  4. @Chris: tout a fait, mais le but ici est d’avoir un serveur fonctionnel en 5 minutes et de ne pas avoir une usine à gaz du genre de postfix ou sendmail.

    @Pascal: les FAI ne bloque pas les serveurs smtp sans quoi plus personne ne pourrait envoyer de mail. Il ne bloque, éventuellement, que le port 25. Chez free, par exemple, le port 25 est bloqué par défaut, il faut aller dans l’interface d’admin pour le débloquer ou bien utiliser une connexion ssl et le port 587

    @Jean-Christophe Caron: partant du principe qu’on n’installe pas ubuntu sur un serveur dédié (qui est plutôt une distribution desktop) et que de toute façon, sur un hébergement (dédié ou non) il y a bien souvent déjà un serveur mail d’installer et de configurer, je destinais ce billet au pc desktop.
    En l’occurence, je développe actuellement quelque chose sur mon ordinateur personnel, à la maison. Afin de tester l’envoi de mail de mon application, j’ai du installer un serveur de mail.
    J’ai installé sendmail qui ne voulait rien savoir puisque mon domaine n’était pas full qualified, j’ai zappé postfix et ai installé nullmailer (lien dans le billet) qui n’a pas voulu fonctionner pour des raisons obscures. En revanche, esmtp fonctionne à merveille chez moi, y compris avec gmail.

  5. Merci pour vos précisions Guy. :)

    C’est vrai que pour tester une application c’est quand même plus pratique que de configurer la grosse usine.

    Je retiens, ça pourrait m’être utile.

  6. Le login/pass est obligatoire ? Il n’y a que ça à configurer ? Le système (et PHP) reconnaît tout seul qu’il doit utiliser esmtp pour envoyer des mails ? J’ai installé esmtp, configuré /etc/esmtprc (smtp.orange.fr) et quand j’essaye d’envoyer un mail avec PHP le mail n’arrive pas.

  7. Le login/pass de quoi? Le login/pass du FAI dépend du FAI… et plus généralement du serveur smtp. Le login/pass de gmail est obligatoire ainsi que le reste de la manipulation décrite dans la documentation d’esmtp.

    Il n’y a que ça à configurer… en revanche, il manquait effectivement quelque chose à mon petit billet… que je me suis empressé de rajouter tout en bas: il faut faire un lien symbolique pour que tout les logiciels qui veulent utiliser sendmail… croient l’utiliser :)

  8. La configuration est toute simple et pourtant je n’arrive pas à le faire marcher. Gni. :|

  9. J’utilise le serveur smtp.orange.fr, j’ai essayé avec mon nom d’utilisateur tout seul, en ajoutant @wanadoo.fr et rien ne marche. J’ai vu les mails envoyés à la fin de /var/mail/www-data, par contre je ne sais pas comment ils sont arrivés là. J’ai aussi essayé d’envoyer un mail avec le logiciel mail mais ça ne fait rien, il n’y a ni message d’erreur ni mail envoyé.

  10. Je bute sur l’utilisation de gmail comme serveur SMTP.
    En suivant la procédure de la doc d’esmtp, je parviens à envoyer des messages via gmail à partir de la ligne de commande d’un compte utilisateur donné :/usr/bin/esmtp -t -i < mail.test

    Mais pour le compte www-data (compte utilisé par Apache/PHP pour lancer esmtp), rien à faire…
    Je n’arrive pas à savoir où placer les certificats Verisign pour le compte www-data. /var/www ne donne rien…

    Des idées ?

  11. Las, je suis passé à msmtp qui fait la même chose et reste tout à fait simple. msmtp intègre un poil d’options supplémentaires permettant de configurer des comptes SMTP en TLS pour tous les utilisateurs (alors qu’avec esmtp on est obligé de configurer ces comptes utilisateur par utilisateur). http://msmtp.sourceforge.net/
    Disponible sur Ubuntu et Debian, naturellement : apt-get install msmtp

  12. Mmmm. Ca semble tres interessant. Exactement ce qu’il me faut. Malheuresement, pour moi non plus cela ne marche pas. Pour le smtp de ma boite n’a pas besoin d’authentification. J’ai bien rajouté le lien symbolique. :(

  13. En fait je viens de faire un phpinfo et je viens de m’appercevoir que sendmail n’est pas dans /usr/bin/sendmail mais dans /usr/sbin/sendmail
    (du moins sur mon ubuntu et mon serveur php5)

    Merci! ca marche tres bien maintenant

  14. super le tuto

    je viens de passer 2 jours pour installer un serveur mail sans résultat

    grace a vous j’ai pu en venir a bout

    merci a tous

    Cordialement akira

  15. J’ai tout fait et j’ai un pb : quand j’active la page php qui doit envoyer un mail de test, elle reste bloquée …

    Si je met en commentaire toutes les lignes de mon fichier /etc/esmtprc par contre la page ne reste pas bloquée, la fonction mail() renvoie true et bien sur rien n’est parti réellement.

    Je déduis de ce changement de comportement que le lien php=> esmtp se déroule bien mais que ca n’atteient pas gmail. J’ai un iptables mais le port 25 est ouvert dans les 2 sens. Je sais plus quoi faire …

    Voila ce que contient mon fichier de config de esmtp :

    identity abcd@gmail.com
    hostname smtp.gmail.com:857
    username « abcd@gmail.com »
    password « xxxxxxxxx »
    starttls required

    mda « /usr/bin/procmail -d %T »

  16. Merci pour le tuto ;) simple et efficace… que demander de plus?

    Tony

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *