Send mails from command line
la commande mail est une commande essentielle qui devrait être disponible sur n’importe quel serveur linux afin que divers services et autres applications web puissent générer et transmettre des emails.
Dans un post précédent sur mail command, nous avons vu comment la commande mail peut être utilisée pour envoyer des e-mails à partir de la ligne de commande sur votre serveur linux.,
Dans ce tutoriel, nous allons utiliser une version améliorée de la commande mail. Il s’appelle mailx (ou simplement mail lorsqu’il est installé), et il peut faire beaucoup plus de choses que ce que l’ancienne commande mail du paquet GNU mailutils peut faire.
comment ça marche
la commande mail / mailx a besoin d’un serveur smtp local (Mta) en cours d’exécution afin de livrer les emails. L’itinéraire emprunté par l’e-mail est un peu comme ceci –
mail -> sendmail -> local MTA -> recipient MTA
le MTA du destinataire serait le serveur smtp de gmail si votre destinataire est quelqu’un à gmail.com par exemple., Pour le MTA local, vous devez installer un serveur smtp comme Postfix. Une installation de base de Postfix avec une configuration minimale fonctionnerait dans la plupart des cas.
installer la commande mailx
sur les systèmes basés sur Ubuntu/Debian la commande mailx est disponible à partir de 2 paquets différents-
1. héritage-mailx
2. bsd-mailx
nous utiliserons le paquet heirloom-mailx car il a plus de fonctionnalités et d’options.
sur les systèmes basés sur CentOS/Fedora, il n’y a qu’un seul paquet nommé « mailx » qui est le paquet heirloom.,
pour savoir quel paquet mailx est installé sur votre système, vérifiez la sortie « Man mailx » et faites défiler jusqu’à la fin et vous devriez voir quelques informations utiles.
# ubuntu/debian$ sudo apt-get install heirloom-mailx# fedora/centos$ sudo yum install mailx
en utilisant la commande mailx
Une fois installée, la commande mailx peut être directement référencée avec le nom mail, il vous suffit donc de taper cela dans la ligne de commande.
1. Simple mail
exécutez la commande suivante, puis mailx vous attend pour entrer le message de l’e-mail. Vous pouvez appuyer sur Entrée pour les nouvelles lignes. Lorsque vous avez terminé de taper le message, appuyez sur Ctrl + D et mailx afficherait EOT.,
Après que mailx envoie automatiquement l’e-mail à la destination.
$ mail -s "This is the subject" Hi someoneHow are youI am fineByeEOT
2. Prendre un message à partir d’un fichier
le corps du message de l’e-mail peut également être extrait d’un fichier.
$ mail -s "This is Subject" < /path/to/file
Le message peut également être rattachée à l’aide de la commande echo –
$ echo "This is message body" | mail -s "This is Subject"
3. Plusieurs destinataires
Pour envoyer le message à plusieurs destinataires, spécifier tous les e-mails séparés par une virgule
$ echo "Ceci est le corps du message" | mail-s "C'est l'Objet" ,
4., CC et BCC
Les options « -c » et « -b » peuvent être utilisées pour ajouter des adresses CC et BCC respectivement.
$ echo "Ceci est le corps du message" | mail-s "C'est l'Objet" -c
5. Spécifiez à partir du nom et de l’adresse
pour spécifier un nom et une adresse « à partir », utilisez l’option « -r ». Le nom doit être suivi de l’adresse enveloppée dans « ».
$ echo "Ceci est le corps du message" | mail-s "C'est l'Objet" -r "Harry<>"
6., Spécifiez l’adresse « Reply-To »
l’adresse reply to est définie avec la variable d’option interne « replyto » en utilisant l’option « -s ».
7. Pièces jointes
Les pièces jointes peuvent être ajoutées avec l’option « -a ».
$ echo "Ceci est le corps du message" | mail-s "C'est l'Objet" -r "Harry<>" -un /chemin/vers/fichier
8. Utiliser un serveur SMTP externe
Il s’agit d’une fonctionnalité exclusive, que vous obtenez uniquement avec heirloom mailx et non BSD mailx, ou la commande mail de gnu mailutils ou la commande mutt.,
la commande mailx peut utiliser un serveur smtp externe pour relayer le message en avant. La syntaxe est un peu longue mais a du sens.
Voici une ventilation
Vous pouvez utiliser les serveurs SMTP gmail et envoyer des e-mails via votre compte gmail. C’est tellement cool!
pour gmail spécifiquement, vous devez activer les paramètres des applications moins sécurisées avant de pouvoir envoyer du courrier comme ça.
9. Verbose-regarder la communication smtp
lorsque vous utilisez des serveurs smtp externes, vous pouvez choisir de regarder la totalité de la communication smtp effectuée en arrière-plan., Ceci est particulièrement utile lors du test ou du débogage de serveurs smtp.
Dépannage
Dans le cas où les messages ne sont pas remis correctement, vous devez vérifier quelques petites choses. La première chose à vérifier est qu’un serveur smtp (MTA) s’exécute localement. La commande netstat peut dire que
Si un serveur stmp comme Postfix est en cours d’exécution et que les mails ne fonctionnent toujours pas, essayez de reconfigurer Postfix par exemple. Sur les systèmes Ubuntu/Debian, cela peut être fait avec la commande dpkg-reconfigure
$ sudo dpkg-reconfigure postfix
puis réessayez, la commande mail et cela devrait fonctionner., Si ce n’est toujours pas le cas, essayez de contacter votre fournisseur de serveur.
aucun courrier des systèmes locaux
Si vous essayez d’envoyer des courriers de votre ordinateur local à une adresse gmail, votre courrier serait très probablement rejeté, alors n’essayez pas de le faire.
en effet, les ordinateurs ordinaires connectés à Internet address ont une adresse ip qui n’est associée à aucun domaine valide en tant que tel, et gmail vérifie strictement ces informations d’identification avant d’approuver tout courrier à passer.,
Notes et ressources
outre mailx, il existe d’autres outils tels que Swaks et smtp-cli qui peuvent être utilisés pour envoyer des mails à partir de la ligne de commande et prendre en charge diverses fonctionnalités telles que la spécification de serveurs smtp et l’ajout de pièces jointes, etc.
cependant, la commande mailx est disponible dans les référentiels par défaut de la plupart des distributions courantes, elle peut donc être installée facilement. En outre, il maintient une syntaxe très similaire à celle de la commande mail, ce qui en fait un remplacement de l’ancienne commande mail.,
la commande mailx est même capable de lire des mails à partir de serveurs IMAP distants, mais c’est quelque chose que nous avons gardé à l’écart de ce post et que nous parlerions plus tard. Pour en savoir plus consultez la page de manuel pour la commande mailx avec « l’homme mailx ».