logo-mail

Guide Debian 7 (partie 3/8) : envoyer des mails depuis la ligne de commande

Temps de lecture : 5 minutes

Cet article fait partie d’une série de billets portant sur la mise en place d’un serveur sous Debian Wheezy (voir le sommaire).

Introduction

Le but de cette partie est de permettre l’envoi de mails depuis la ligne de commande.

Ainsi, je ne vous parlerai pas ici de l’installation d’un serveur de mails complet, car cette étape serait bien trop longue et fastidieuse étant donné le résultat attendu.

Comment ça marche ?

Nous allons utiliser pour cela un client SMTP léger, dont le rôle sera d’envoyer les e-mails en passant par un relai SMTP. Dans la majorité des cas, ce relai sera mis à votre disposition par votre prestataire.

Ce type d’envoi sera particulièrement utile pour les utilitaires capables de générer des rapports (fail2ban, cron-apt, …) de leur activité et de les envoyer par mail à l’administrateur du serveur, c’est à dire vous.

Mon prestataire ne propose pas de relai SMTP

Selon le prestataire que vous aurez retenu, vous vous retrouverez généralement face à deux cas de figure :

  • le prestataire dispose d’un STMP en interne pour l’envoi de mail depuis ses serveurs (parfois, la distribution est préconfigurée pour utiliser ce SMTP (ex: Ikoula)
  • le prestataire ne dispose pas d’un SMTP en interne (ex: Dedibox). Dans ce cas, nous allons utiliser un autre relai SMTP

Testons l’envoi de mail

Dans un premier temps, nous allons devoir tester l’envoi de mail car il est possible que votre prestataire l’ait déjà configuré pour vous (chez certains prestataires, les fichiers de confs sont préremplis à l’installation de la distribution) :

Lancer la ligne suivante en y insérant votre adresse mail (il est possible que le mail arrive dans vos spams) :

À partir d’ici, si l’envoi fonctionne, nul besoin d’aller plus loin. Dans le cas contraire, il va nous falloir installer ssmtp. Ne paniquez pas, la configuration est enfantine.

Méthode ssmtp (passer par le SMTP de votre prestataire)

[Source : http://doc.ubuntu-fr.org/ssmtp]

Nous allons commencer par installer le client ssmtp :

Pour tout envoi de mail, un système UNIX tentera de faire appel à la commande sendmail (ceci pour une raison historique). La commande sendmail peut être founie par l’utilitaire sendmail, postfix, ou dans notre cas, par ssmtp.

Si vous obtenez un retour semblable à l’exemple ci-dessous, c’est que la commande sendmail se trouve sur votre sytème.

Il faut maintenant vérifier que ssmtp est l’utilitaire qui se cache derrière cette commande :

La réponse attendue :

Ici, l’on voit que lors d’un appel à sendmail, le sytème appellera en fait le client ssmtp au travers d’un lien symbolique.

Configuration de ssmtp

Afin d’être le plus clair possible, je vous place ici la configuration de mon serveur ( hébergé chez Ikoula). À vous de l’adapter avec les informations de votre prestataire.

Le point à noter est que l’utilisation du SMTP de votre prestataire ne semble pas requérir d’authentification. Ne vous y trompez pas, l’envoi vous est autorisé, car effectué depuis une de leur machine, c’est pourquoi il vous serait impossible d’utiliser leur serveur SMTP depuis une machine située à l’extérieur du réseau sans vous identifier au préalable.

À ce stade, testez de nouveau l’envoi de mail grâce à la commande donnée en début de ce chapitre. Si vous obtenez une erreur, passez à la section suivante.

Un cas particulier, l’envoi de mail depuis root

Vous l’aurez compris, l’envoi de mail jusque ici se fait en tant que root. Chez certains prestataires, il est possible que l’envoi depuis root soit refusé.

Un exemple de refus :

Nous allons pour cela ruser en modifiant l’adresse d’expédition du compte root.

Je rajoute alors la ligne suivante :

Notez que l’utilisateur n’a aucunement besoin d’exister sur votre serveur. En clair, vous pouvez mettre  à peu près n’importe quoi (cette donnée sera utilisée pour le champ from), cela pour la simple et bonne raison que nous n’attendons aucune réponse aux mails qui seront envoyés. De l’envoi et simplement de l’envoi, souvenez-vous !

À partir de ce point, les futurs paquets que vous installerez devraient être capables d’envoyer des mails s’ils sont lancés avec les privilèges du compte root. N’hésitez pas non plus à utiliser la commande mail au sein de vos scripts, pour être averti par exemple de la bonne exécution d’une tâche.

Méthode exim4 (pas de SMTP chez votre prestataire)

Dans ce cas, nous allons utiliser un compte mail qui nous permettra de gérer l’envoi. Deux solutions s’offrent à vous :

  • utiliser un compte type gmail, outlook, etc…
  • créer un compte mail chez votre prestataire de nom de domaine

En ce qui me concerne, j’ai pris l’habitude de créer une adresse dédiée à l’envoi de mail depuis le serveur du type ne-pas-repondre@mondomaine.fr.

Je vous laisse vous renseigner sur la façon de créer une boîte mail avec votre domaine.

Nous allons maintenant configurer exim4 pour envoyer les mails en passant par votre compte :

À adapter selon vos informations de connexion :

Dans mon cas, je passe par le SMTP de Gandi (mail.gandi.net sur le port 587). Il vous faudra donc trouver ces informations pour votre prestataire.

Dans /etc/exim4/passwd.client

Cette ligne nous permet de nous identifier avec notre compte auprès du serveur SMTP.

Puis l’on termine en rechargeant la configuration d’exim4 :

Arrivé à ce point, vous devriez être capable d’envoyer des mails grâce à la commande utilisée plus haut.

Limites d’envoi

Il est important de comprendre que ces techniques permettent un envoi de mail “modéré” depuis la ligne de commande (ou depuis un script PHP, Python, Ruby, etc…). Au-delà d’un certain quota, le SMTP refusera de transmettre vos emails. Pour de l’envoi de masse (newsletter) et pour éviter de finir dans les spams, préférez une solution spécialisée (Mailchimp propose par exemple l’envoi de newsletter gratuitement jusqu’à 2000 inscrits).

 

Tags :

Réagissez à l'article

  • fsebbah

    Bonjour. Question pratique : l’adresse de l’expéditeur est du genre root@nommachine. Comment faire pour la changer ?
    Merci

  • pierro

    Bonjour,
    pour répondre à la question de fsebbah, il faut modifier le fichier /etc/ssmtp/revaliases.
    Par exemple rajouter:
    nom_d_utilisateur:adresse_mail

  • kameleon1er

    Bonjour, des heures (peut-être même des jours) que je tente de faire sortir un courrier par exim4. Et impossible et super incompréhensible.
    Je ne cherche pas à gérer les mails, veut juste recevoir mes alertes sys, et faire sortir les messages saisis dans mes wordpress, et je pensais pas que ça allait être aussi galère.

    Je suis sous Debian 8, VPS ovh avec un domaine + mail chez eux. Ca devrait être facile, bein non.

    J’ai suivi des tas de tutos (plus ou moins précis ; ça compte pour les débutants ; on passe de root à User 1, d’une ligne à l’autre… et j’en passe, bref, je comprend rien.

    PS : quand je suis ta commande /usr/sbin/sendmail -> exim4 (et dire, si je comprend bien, que j’en avais même pas besoin de Exim s’il y a sendmail ??) pour mes besoins je veux dire.

    dc_eximconfig_configtype=’satellite’
    dc_other_hostnames=”
    dc_local_interfaces=’127.0.0.1′
    dc_readhost=‘mon-domaine’
    dc_relay_domains=”
    dc_minimaldns=’false’
    dc_relay_nets=”
    dc_smarthost=’mail.ovh.net::587’(c’est comme ça qu’est configuré mon outlook)
    CFILEMODE=’644′
    dc_use_split_config=’false’
    dc_hide_mailname=’true’
    dc_mailname_in_oh=’true’
    dc_localdelivery=’mail_spool’

    Merci à vous 🙂

    • Mad_noob

      Bonjour,

      A la ligne dc_smarthost=’mail.ovh.net:587′ tu as mis deux :: entre l’adresse et le port. Essai peut être en enlevant un :