Envoyer des e-mails via des serveurs SMTP
La commande mail par défaut sur le terminal Linux utilise le serveur smtp local (mta) sur le port 25 pour envoyer des e-mails. Cependant, vous devez parfois spécifier un serveur smtp externe à utiliser pour envoyer des e-mails.
Par exemple, vous venez de configurer un serveur smtp, comme Postfix ou Exim, alors vous voudriez le tester pour vérifier s'il reçoit et relaie les e-mails correctement ou non.
Pouvoir envoyer des e-mails à partir de la ligne de commande à l'aide de ce serveur smtp externe est rapide plutôt que d'avoir à configurer un client de messagerie comme Thunderbird sur votre machine locale.
Il existe 2 utilitaires de ligne de commande appelés mailx et swaks qui peuvent être utilisés pour envoyer des e-mails à l'aide d'un serveur smtp externe. Celles-ci sont très utiles lorsque vous devez envoyer des e-mails à partir d'un script bash de manière automatisée.
1. commande mailx
La commande mailx est disponible à partir de nombreux packages différents tels que mailutils, heirloom-mailx, etc. Vous devez d'abord utiliser la commande aptitude pour rechercher le package mailx disponible pour votre système. Voici un exemple
$ aptitude search mailx p bsd-mailx - simple mail user agent p bsd-mailx:i386 - simple mail user agent v mailx - v mailx:i386
Pour savoir quelle commande mailx votre système utilise, exécutez la commande readlink. Voici un exemple de sortie.
$ readlink -f /usr/bin/mailx /usr/bin/bsd-mailx $ readlink -f /usr/bin/mailx /usr/bin/mail.mailutils
Toutes les variantes de mailx ne peuvent pas utiliser des serveurs smtp externes pour envoyer du courrier. Seul celui qui vient du package s-nail (tiré par heirloom-mailx) peut le faire.
Nous utiliserons heirloom-mailx car il permet de spécifier les détails de la connexion smtp en une seule commande et d'émettre et d'envoyer un e-mail rapidement.
$ sudo apt-get install heirloom-mailx
Envoyez maintenant un e-mail avec un serveur smtp externe comme celui-ci -
echo "This is the message body and contains the message" | mailx -v -r "[email protected]" -s "This is the subject" -S smtp="mail.example.com:587" -S smtp-use-starttls -S smtp-auth=login -S smtp-auth-user="[email protected]" -S smtp-auth-password="abc123" -S ssl-verify=ignore [email protected]
Voici une version étape par étape de la même commande -
$ echo "This is the message body and contains the message" | mailx -v \ > -r "[email protected]" \ > -s "This is the subject" \ > -S smtp="mail.example.com:587" \ > -S smtp-use-starttls \ > -S smtp-auth=login \ > -S smtp-auth-user="[email protected]" \ > -S smtp-auth-password="abc123" \ > -S ssl-verify=ignore \ > [email protected]
Assurez-vous d'utiliser les paramètres corrects, comme le numéro de port, le mécanisme d'authentification, etc. La commande produirait une sortie détaillée donnant tous les détails de la communication smtp qui se passe derrière, ce qui la rend très facile à tester et à déboguer.
Remarque : Le paquet heirloom-mailx a été supprimé à partir de la version 18 d'Ubuntu. Vous devez maintenant installer le package s-nail.
$ sudo apt-get install s-nail
La commande s-nail est identique à la commande heirloom mailx. Seul le nom est différent. Exécutez la même commande ci-dessus en remplaçant mailx par s-nail et cela devrait fonctionner.
Si vous utilisez la dernière version de s-nail (14.9.x), la syntaxe pour spécifier les détails du serveur smtp peut être légèrement différente. Consultez le dernier manuel ici
http://manpages.ubuntu.com/manpages/bionic/en/man1/s-nail.1.html
Consultez le post précédent sur la commande mailx ici -
9 exemples de commande mail/mailx pour envoyer des e-mails depuis la ligne de commande sous Linux
2. Commande Swaks
Swaks (couteau suisse pour SMTP) est un simple outil en ligne de commande qui peut être utilisé pour tester les serveurs smtp afin de vérifier s'ils fonctionnent correctement. Il prend également en charge TLS.
Installez swaks sur Ubuntu/Debian avec la commande suivante
$ sudo apt-get install swaks
Envoyez maintenant l'e-mail
$ echo "This is the message body" | swaks --to [email protected] --from "[email protected]" --server mail.example.com --auth LOGIN --auth-user "[email protected]" --auth-password "abc123" -tls
Toutes les options sont assez explicites. L'option "--server" spécifie le serveur SMTP externe à utiliser, "--auth" spécifie le type d'authentification. L'option "-tls" indique à swaks d'utiliser STARTTLS.
Consultez la page de manuel pour plus d'options.