que vous soyez un développeur travaillant non-stop dans la ligne de commande Linux ou un administrateur de serveur voulant des journaux ou d’autres données extraites des systèmes administrés, savoir comment envoyer des e-mails à partir de la ligne de
dans cet article, vous trouverez des exemples de la façon d’envoyer des e-mails à partir du terminal. Nous examinerons les configurations personnalisées et expliquerons comment configurer les connexions SMTP aux comptes de messagerie ou aux fournisseurs de services de messagerie., Je vais vous montrer comment installer les paquets console mailer nécessaires et fournir un arrière-plan pour les options de ligne de commande basées sur les manuels du paquet.
configuration des paquets Mailer en ligne de commande
tous les paquets mailer tout au long du tutoriel sont disponibles via le Gestionnaire de paquets avancé de Debian, de sorte que les étapes d’installation de l’exemple ci-dessous peuvent être utilisées pour tous les paquets présentés.,
Veuillez noter que ces logiciels peuvent être installés par défaut d’autres gestionnaires de paquets yum
ou dnf
en fonction de votre système Linux distribution.
dans la plupart des cas, sendmail
ou postfix
est disponible dans chaque distribution Linux prête à l’emploi ou du moins c’est ce que disent les articles de blog similaires. Soit je suis malchanceux, soit les autres avaient tort, mais j’ai dû en installer un manuellement. Cependant, vous avez certainement besoin de l’un d’eux pour la livraison des e-mails.,
configuration de Sendmail avec le Package SSMTP
je vais continuer avecsendmail
et le package SSMTP. SSMTP contient le packagesendmail
sous le capot comme vous le verrez et il facilite la configuration, ce qui est assez difficile poursendmail
sinon.
l’Étape 1., Vérifiez si le paquet Mailer en ligne de commande est installé
tapez le nom du paquet mailer comme vous le feriez pour exécuter la commande, pour vérifier s’il est disponible:
-
Si le paquet est installé, la commande s’exécute et l’invite change — tout en essayant d’exécuter la commande — et vous verrez un curseur clignotant suivi du message
Recipient names must be specified
dans le cas desendmail
. Conclusion: le paquet est installé., -
Si le paquet n’est PAS installé, vous recevrez un message d’avertissement et une suggestion comment l’installer:
Dans cet exemple, j’ai essayé si le sendmail
commande fonctionne. Après avoir ajouté le package SSMTP, cette commande et la commande ssmtp
fonctionneront et changeront l’invite de commande dans le terminal. Regardons-les!
l’Étape 2., Installation de la ligne de commande sendmail Mailer Package
comme la sortie du terminal l’a suggéré, nous devons exécuter la commande d’installation du Gestionnaire de paquets avancé — généralement avec l’autorisation root — pour installer le paquet nécessaire. Comme mentionné précédemment, les configurations sont beaucoup plus simples pour sendmail
lorsque vous supprimez la complexité de la configuration. Cela peut être fait avec SSMTP:
sudo apt install ssmtp
Étape 3. Vérifiez l’Installation
Une fois l’installation terminée, vous pouvez vérifier sisendmail
est capable de transférer des messages., Tapez le code ci-dessous dans le terminal:
echo "Subject: hello" | sendmail [email protected]
Il doit envoyer l’e-mail si tout fonctionne correctement. Ici, la chaîne"hello"
acheminée vers la commandesendmail
sera l’objet du message envoyé, tandis que l’adresse e-mail définie est naturellement le destinataire de l’e-mail.
Vous exécutez la commande… et, oups: sendmail: Cannot open mailhub:25
. La raison en est que nous n’avons pas fourni de paramètres mailhub du tout. Afin de transférer des messages, Vous avez besoin d’un serveur SMTP configuré., C’est là que SSMTP fonctionne très bien: il vous suffit de modifier son fichier de configuration Une fois, et vous êtes prêt à partir.
l’Étape 4. Configuration de SSMTP
localisons le fichier de configuration à/etc/ssmtp/ssmtp.conf
. Ici, vous devez mettre le code ci-dessous pour configurer un relais SMTP:
cela signifie que vous configurez un service externe qui transférera réellement
vos e-mails. Lorsque vous fournissez des informations d’identification à Gmail par exemple, vous verrez les messages envoyés depuis le terminal dans le répertoire « courrier envoyé » de votre boîte aux lettres. Les configurations semblent similaires avec d’autres services aussi.,
c’était la configuration de base poursendmail
et les étapes d’installation pour tout paquet de Mailer en ligne de commande fréquemment utilisé. Ensuite, nous allons passer à l’installation et à l’essai de divers autres paquets.
envoi D’e-mails à l’aide de la commande SSMTP
c’est un joli petit outil que nous venons de configurer pour la livraison du courrier. Comme sa page man
le suggère, c’est un émulateur minimaliste de sendmail
. En tant que tel, SSMTP permet aux utilisateurs de transférer des e-mails via un serveur SMTP à partir de la ligne de commande Linux., Il fournit les moyens de se connecter à un mailhub avec un fichier de configuration approprié. Si votre fichier de configuration a été correctement configuré, tous vos soucis concernant l’envoi d’e-mails en ligne de commande peuvent disparaître.
implémentation de base de la commande SSTMP:
Si vous utilisez simplement SSMTP, la commande doit se présenter comme suit:
ssmtp [email protected] < mail.txt
Après la commande ssmtp
, vous devez mettre l’adresse du destinataire, puis vous pouvez inclure un fichier qui s’affichera Ici, vous pouvez définir des en-têtes pour le message, lister d’autres destinataires et définir le type de contenu., De cette façon, vous pouvez envoyer des e-mails HTML. SSMTP interprétera votre message et utilisera correctement les valeurs fournies. Voici un exemple de code HTML que vous pourriez envoyer:
Vous ne pouvez pas vraiment donner d’autres options avec SSMTP car elles ne sont pas respectées par son design minimaliste.
dépannage:
Si vous rencontrez l’erreur suivante sur la ligne de commande:
c’est probablement parce que Gmail ne traite pas SSMTP comme une application sécurisée. Pour se débarrasser de cette erreur, vous devez modifier les paramètres de votre compte Gmail – vous pouvez rechercher plus d’informations sur les risques potentiels ainsi.,
envoi D’e-mails à l’aide de la commande Sendmail
depuis un certain temps, sendmail est l’agent de transfert de courrier classique du monde UNIX. Il a été introduit en 1979 et sa nature hautement configurable et son évolutivité en ont fait le go-to par défaut pour les administrateurs de serveur.,
Nous avons déjà vu comment envoyer des e-mails de base par la commande ssmtp
, alors voyons la différence en utilisant sendmail
:
echo "Subject: hello" | sendmail -v [email protected] < mail.txt
j’ai jeté le -v
argument, qui rendra visible la communication entre le serveur de messagerie et votre agent de transfert de messagerie.
Il existe de nombreuses configurations que vous pouvez utiliser si vous configurez votre propre serveur de messagerie et y implémentez sendmail. Cependant, cela n’entre pas dans le champ d’application de cet article. Nous reviendrons sur le sujet dans un prochain. Restez à l’écoute.,
envoi D’e-mails à l’aide de la commande CURL
Cet outil est également extrêmement courant pour le transfert de données à partir d’un serveur. Il prend en charge de nombreux protocoles, comme HTTP, FTP, POP3 ou SMTP. Le paquet CURL est largement utilisé dans le monde entier, une raison principale est qu’il a une implémentation PHP native et PHP a longtemps été le langage de script côté serveur par défaut.
Installation:
Vérifier si le paquet est déjà installé., Si vous n’exécutez pas ce qui suit:
sudo apt install curl
lorsque vous avez terminé, vous pouvez accéder à la feuille de triche pour les options disponibles pour CURL en exécutantcurl -h
. La version plus détaillée est accessible par le man curl
ou curl --manual
. Si vous voulez acquérir des connaissances approfondies en utilisant cURL, il y a cet Ebook pratique qui contient tout ce que vous voudriez savoir.
implémentation de base pour l’envoi d’e-mails avec CURL:
pour envoyer un e-mail avec CURL, vous devez configurer la connexion SMTP., Le plus souvent, les serveurs de messagerie sortants de Google ou Yahoo sont utilisés pour tester L’envoi d’e-mails avec SMTP. Veuillez noter que vous devez activer l’accès aux applications moins sécurisées dans les paramètres Gmail et que des paramètres de sécurité supplémentaires similaires peuvent également s’appliquer à Yahoo.
dans l’extrait de commande terminal ci-dessus, les paramètres--url
Et--user
définissent les paramètres de connexion SMTP. La section Mot de passe du paramètre--user
est le mot de passe de votre compte pour l’adresse e-mail donnée. Naturellement, vous pouvez également utiliser des fournisseurs de services de messagerie en nuage., Je vais montrer que l’utilisation de Mailgun dans la section suivante.
implémentation avancée pour l’envoi d’e-mails avec CURL:
pour travailler avec des plates-formes de diffusion d’e-mails, vous devez d’abord obtenir une clé API. Dans ce tutoriel, je vais montrer L’exemple D’envoi de courrier électronique CURL en utilisant Mailgun, donc si vous êtes bloqué pendant le processus d’inscription, suivez ce guide d’installation pour vous mettre sur la bonne voie.
La syntaxe est assez simple. Vous l’avez peut-être déjà remarqué, mais vous devez terminer chaque ligne de la commande avec des caractères \
., C’est un caractère de continuation de ligne, la commande peut être exécutée sans tous dans une ligne aussi bien. L’autre chose à retenir est l’option -F
. Un extrait de la page de manuel:
-F, --form <name=content> (HTTP) This lets curl emulate a filled-in form in which a user has pressed the submit button. This causes curl to POST data using the Content-Type multipart/form-data according to RFC 2388. This enables uploading of binary files etc. To force the 'content' part to be a file, prefix the file name with an @sign.
Comme je l’ai déjà encouragé, c’est une bonne pratique de plonger dans les manuels lorsque vous utilisez ces commandes de mailer en ligne de commande. Comme le dit le manuel CURL, vous créez essentiellement un formulaire à envoyer. Chaque ligne est une entrée donnée sous la forme d’une paire name=content
. Lorsque vous joignez des fichiers à partir de votre machine locale, vous avez besoin d’un @
devant le nom du fichier.,
Voici à quoi ressemblera l’e-mail livré:
Vous pouvez faire la même chose en utilisant la plupart des autres plates-formes de livraison d’e-mail, comme Sendgrid par exemple.
envoi D’e-mails HTML depuis la ligne de commande avec CURL:
Vous pouvez appliquer la même logique de construction d’un formulaire dans un fichier texte, ce qui vous permet d’envoyer facilement des messages HTML:
Si vous exécutez la commande simple du premier exemple…
dépannage:
vous aurez peut-être besoin du commutateur --insecure
, qui permet à CURL d’effectuer des connexions et des transferts SSL « non sécurisés »., CURL renverra un message d’erreur si le serveur distant utilise un certificat auto-signé ou si le certificat du serveur distant n’est pas signé par une autorité de certification répertoriée dans le fichier de certificat de L’autorité de certification.
envoi D’e-mails à L’aide de la commande Swaks
comme leur documentation l’indique, Swaks est un outil de test SMTP flexible, scriptable et orienté transaction. Il est capable de gérer les fonctionnalités et les extensions SMTP telles que TLS, l’authentification et le pipelining et plusieurs versions des protocoles SMTP. Il prend également en charge plusieurs méthodes de transport, y compris les sockets de domaine UNIX, les sockets de domaine internet et les tuyaux vers les processus générés.,
Installation:
sudo apt install swaks
de Base pour la mise en œuvre d’envoi d’emails avec Swaks:
pour vous connecter à un compte SMTP, vous devez fournir le serveur -s
, l’utilisateur -au
, le mot de passe -ap
et l’adresse -t
(où vous voulez envoyer votre mail) de drapeaux. La balise -tls
drapeau est également important si vous vous connectez sur le port 587
.,
swaks --to [email protected] -s smtp.gmail.com:587 -tls -au <user-account> -ap <account-password>
les informations d’identification peuvent également être fournies via des invites de ligne de commande, si vous spécifiez uniquement d’authentifier -a
, sans renseigner l’utilisateur et le mot de passe via les options de ligne de commande.
implémentation avancée pour l’envoi d’e-mails avec Swaks:
swaks --to [email protected] -s smtp.gmail.com:587 -tls -au <user-account> -ap <account-password> --attach -d ./mail.txt
Il existe d’autres options que nous ne toucherons pas maintenant. Dirigons-nous vers notre prochain paquet de courrier!
envoi D’e-mails à l’aide de la commande Mutt
Mutt est différent des clients de messagerie précédents, car il s’agit d’un client de messagerie en ligne de commande riche en fonctionnalités., Vous pouvez l’utiliser pour lire des e-mails à partir du terminal Linux, se connecter aux boîtes aux lettres des utilisateurs locaux ou aux serveurs POP/IMAP. Mutt prend en charge plusieurs formats de boîte aux lettres tels que mbox, MH, maildir, MMDF, le contrôle total des en-têtes de message lors de la composition des e-mails, et le marquage et les couleurs multiples des messages pour gérer les messages.
Installation:
sudo apt install mutt
implémentation de base pour l’envoi d’e-mails avec mutt:
à ce moment, vous ne serez pas surpris par la structure de la commande., Vous pouvez fournir un corps de message vide avec < /dev/null
:
# mutt -s "Test Email" [email protected] < /dev/null
implémentation avancée pour l’envoi d’e-mails avec mutt:
pour envoyer des e-mails, y compris des pièces jointes, vous avez besoin de l’indicateur -a
. De cette façon, vous pouvez envoyer des fichiers utiles, comme les journaux système, à une adresse spécifiée.
# mutt -s "System logs" -a /opt/backup.sql [email protected] < /dev/null
Vous pouvez également envoyer un e-mail HTML si l’extension de fichier que vous ajoutez au corps du message est au format HTML., Mutt reconnaîtra le type de fichier et le résoudra afin qu’il n’envoie pas votre code HTML en texte brut:
mutt -s "Email subject" [email protected] < email.html
c’est pour l’envoi d’e-mails avec mutt. Si vous l’avez sur votre machine, je suggère d’essayer comment vous pouvez travailler avec la configuration entrante de votre boîte aux lettres et la gestion des messages entrants. Si vous le faites, veuillez partager vos réflexions dans la section des commentaires ci-dessous. Je me félicite de toute opinion sur les paquets présentés dans le tutoriel.
envoi D’e-mails à l’aide de la commande Mailx
Mailutils est un paquet composé pour plusieurs cas d’utilisation., Il est conçu pour servir les utilisateurs réguliers, les administrateurs système et les développeurs. Nous n’aborderons que ses fonctionnalités de base concernant le transfert d’e-mail. Si vous êtes intéressé par d’autres fonctionnalités, consultez sa page man
.
Installation:
sudo apt install mailutils
implémentation de base pour l’envoi d’e-mails avec mailx:
le paquet mailx a 2 syntaxe de commande égale (mail
Et mailx
fonctionnent exactement de la même manière)., La commande la plus simpliste consiste en la commande mail/mailx
et l’adresse à laquelle envoyer le courrier, mais vous inclurez probablement le sujet et au moins un corps de message textuel. Une telle commande devrait ressembler à ceci:
echo "message body" | mail -s "subject" [email protected]
en utilisant la commandeecho
et en redirigeant la sortie vers la commandemail
, vous pouvez éviter les invites supplémentaires de mailx pour les adresses Cc et le corps du message.,
implémentation avancée pour l’envoi d’e-mails avec mailx:
Pour l’exemple avancé, nous enverrons à nouveau un e-mail HTML à part entière. Nous devons fournir le fichier HTML de notre choix avec le caractère <
et ajouter le » append flag » avec le type de contenu. Le code complet se présente comme suit:
mailx -a 'Content-Type: text/html' -s "This is advanced mailx indeed!" < email.html "[email protected], [email protected]"
Vous pouvez également définir une adresse de retour avec des --return-address=<EMAIL-ADDRESS>
, ce qui peut être utile., Une autre option utile, que je n’ai pas pu résoudre à travailler avec HTML email parallel, est de fournir des pièces jointes dans le même message: -A "mail.txt"
. Bien que vous puissiez lister plusieurs destinataires, une seule pièce jointe peut être jointe. Vous pouvez configurer un serveur SMTP externe si cela vous convient.
utilisation de la commande openssl alternative de Telnet
Telnet est un protocole de communication interactif pour la communication avec un autre hôte. Il peut être utilisé pour ouvrir une connexion SMTP à un autre serveur et transférer des messages électroniques., Cependant, comme le protocole n’est pas sécurisé, la plupart des serveurs rejetteront ce type de communication. C’est là Qu’Openssl entre en jeu car il est construit avec la sécurité SSL/TLS incluse. Il est invoqué de la même manière que telnet avec un argument host, et il exécute implicitement une commande open:
j’ai indenté les entrées que vous devez fournir lorsque le canal de communication est ouvert. Ces entrées sont explicites, mais une chose que j’ai besoin de détailler est le hachage du mot de passe. Il peut s’agir d’un hachage encodé en base64, que vous pouvez obtenir avec la commande suivante: echo -en '\[email protected]\000gmailpassword' | base64
., Les caractères d’échappement de la chaîne ne peuvent pas être omis. Si le paquet base64 n’est pas installé, il est disponible via les gestionnaires de paquets.
comme vous pouvez le voir ci-dessus, ce moyen d’envoi d’e-mails ne fournit qu’une interface pour les messages textuels, il a donc ses limites dans les cas d’utilisation. D’autre part, il montre toutes les informations échangées avec le serveur de messagerie, ce qui rend le débogage vraiment facile.
dépannage des problèmes de messagerie
vérifiez les journaux de messagerie
Vous devez localiser votre fichier journal en naviguant vers le dossier correspondant. Je préfère utiliser mon éditeur de code (par exemple., Sublime Text) pour cela afin que je puisse avoir les journaux avec la syntaxe highlight:
$ sudo subl /var/log
en fonction de votre distribution Linux actuelle, vous devrez peut-être regarder une source différente.
Le journal peut contenir des informations utiles sur les problèmes de délivrabilité. À ce stade, lorsque vous faites défiler vers le bas de ceci:
Vous pouvez inspecter si la livraison est réussie ou comprendre pourquoi le processus a échoué.,
Il peut arriver que votre console ne montre aucune erreur, mais dans le journal de messagerie, vous pouvez voir que le message a été mis en file d’attente pour la livraison, de sorte que le processus ne s’est pas arrêté sur votre machine, mais a probablement été refusé par le serveur de messagerie que vous essayiez d’atteindre.
exécuter toutes les commandes dans une séquence
donc, tout est prêt pour le test final. Toutes les commandes du terminal mailer sont rassemblées ici dans un fichier de script. Une fois que vous avez téléchargé le dossier de travail contenant le fichier de script, accédez au dossier contenant et rendez le script exécutable: chmod u+x mail.sh
., Si vous avez tous les fichiers que j’ai fournis prêts, vous pouvez commencer à tester les commandes mailer affichées dans le tutoriel. Il vous suffit de remplacer le "<RECIPIENT ADDRESS>"
à votre adresse e-mail de test dans le code et d’exécuter ./mail.sh
dans la ligne de commande.
Une fois le script terminé, votre boîte de réception sera remplie avec les e-mails de test.
Bien fait!
résumé
dans cet article, je vous ai montré de nombreuses façons d’envoyer des e-mails à partir de la ligne de commande Linux. Espérons que, sur la base de ce que vous avez vu, vous pouvez également installer et configurer ces services sur votre machine.,
Le post a montré les paquets de Mailer de ligne de commande les plus couramment utilisés et comment envoyer des e-mails avec eux, et à la fin, j’ai créé un script shell qui rassemble toutes les commandes utilisées dans l’article. Vous pouvez télécharger les fichiers de travail des projets ici, et si vous installez les paquets introduits dans le tutoriel et remplissez également vos informations d’identification et les détails du destinataire, vous pouvez exécuter le script à votre guise.