GNU/Linux >> Tutoriels Linux >  >> Linux

Envoyer du courrier à partir de la ligne de commande avec un serveur smtp externe sous Linux

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.


Linux
  1. 4 façons d'envoyer une pièce jointe à partir de la ligne de commande Linux

  2. Envoyer un e-mail à partir d'un terminal Linux ou d'un script à l'aide de la commande mail

  3. Linux / UNIX :Comment envoyer des e-mails avec des pièces jointes à l'aide de la commande mailx

  4. Comment envoyer un e-mail à partir de la ligne de commande ?

  5. Comment puis-je envoyer automatiquement du courrier crypté gpg à partir de la ligne de commande linux ?

Comment envoyer un e-mail avec une pièce jointe à partir de la ligne de commande

commande mailx sous Linux - envoyer et recevoir du courrier Internet

Envoyer un e-mail sous Linux à partir de la ligne de commande

Comment surveiller la santé du serveur Linux avec des outils de ligne de commande

Mutt, Mail et Telnet - Envoyez des e-mails à partir de la ligne de commande Linux ou du terminal

Comment envoyer un message brut sous Linux ?