Il existe d'autres clients de ligne de commande basés sur un terminal qui peuvent également être utilisés pour envoyer des e-mails tels que sendmail, mutt, SSMTP, telnet, mais dans ce guide, nous nous concentrerons sur le mail
commande.
La commande mail appelle le binaire sendmail standard (/usr/sbin/sendmail) qui se connecte à son tour au MTA local pour envoyer le courrier à sa destination. Le MTA local est un serveur SMTP exécuté localement qui accepte les e-mails sur le port 25.
Cela signifie qu'un serveur smtp comme Postfix devrait être en cours d'exécution sur la machine sur laquelle vous avez l'intention d'utiliser la commande mail. Si aucun n'est en cours d'exécution, vous obtenez le message d'erreur "send-mail :Impossible d'ouvrir le courrier :25".
Installation
Installez avec cette commande :
Pour Ubuntu
sudo apt-get install mailutils
Pour centos 7
sudo yum install -y mailx
Pour centos 8/Alma Linux/Rhel
sudo dnf install -y mailx
Testez que la commande est correctement installée avec cette commande :
mail
La commande ci-dessus vérifie s'il existe un e-mail pour l'utilisateur actuel. Vous devriez voir une sortie comme celle-ci :
➜ mail
No mail for centos
Utilisation
Envoi d'e-mails simples
Utilisez cette commande pour envoyer un e-mail à [email protected]
. Le -s
l'argument de la ligne de commande sert à spécifier le sujet.
mail -s "Test mail" [email protected]
La commande ci-dessus se bloquera en appuyant sur Entrée en attendant que vous tapiez votre message. Lorsque vous avez terminé, utilisez Ctrl-D
pour informer le client de messagerie que vous avez terminé et que l'e-mail est prêt à être envoyé.
❯ mail -s "Test mail" [email protected]
Hey John,
Please remember to send me the Linux Book.
Regards,
Me.
EOT
Le EOT
a été saisi lorsque j'ai appuyé sur Ctrl-D
. Une fois que vous faites cela, la commande mail enverra le message pour livraison et c'est fait.
Envoyer un message avec le contenu d'un fichier
Utilisez cette commande pour envoyer un message depuis le fichier /path/to/file.txt
.
mail -s "Test mail" [email protected] < /path/to/file.txt
Vous pouvez également utiliser cette doublure unique où vous répercutez le contenu à envoyer, puis le redirigez vers la commande mail.
echo "Hello world" | mail -s "Test mail" [email protected]
Envoyer un e-mail à plusieurs destinataires
Pour envoyer un e-mail à plusieurs destinataires, vous pouvez utiliser une liste d'e-mails séparés par des virgules comme dans cet exemple :
echo "Hello world" | mail -s "Test mail" [email protected],[email protected]
Ajouter des destinataires CC et BCC
Une copie carbone invisible (BCC) et une adresse en copie carbone (CC) peuvent également être jointes. Utilisez -c <email>
pour CC et -b <email>
pour cci.
Cet exemple spécifie CC et BCC :
echo "Hello world" | mail -s "Test mail" -c [email protected] -b [email protected]
Spécifiez le nom et l'adresse de l'expéditeur
Vous pouvez utiliser l'option -r
pour spécifier le nom et l'adresse de l'expéditeur comme indiqué ci-dessous :
echo "Hello world" | mail -s "Test mail" –r "Kip<[email protected]>" [email protected]
Alternativement, vous pouvez utiliser -a
pour ajouter un en-tête supplémentaire à joindre au message. Voici un exemple de la façon de fournir FROM
dans le cadre de cela.
echo "Hello world" | mail -s "Test mail" [email protected] -aFrom:[email protected]
Pour spécifier le nom de l'expéditeur, utilisez la syntaxe suivante :
echo "Hello world" | mail -s "Test mail" [email protected] --aFrom:Kip\<[email protected]\>
Veuillez noter que nous devons échapper aux flèches less et great car elles ont une signification particulière pour l'invite du shell. Lorsque vous émettez la commande à partir d'un script, vous l'omettez.
Spécifier l'adresse "Répondre à"
Utilisez le replyto
pour spécifier l'adresse de réponse comme dans cet exemple :
echo "Hello world" | mail -s "Test mail" [email protected] [email protected]
E-mail avec une pièce jointe
Envoyer un e-mail depuis [email protected]
à [email protected]
avec une pièce jointe.
mail -s "The File you requested" -a ~/Documents/file.txt -r [email protected] [email protected] <<EOF
Hi jane,
Please find the file requested attached.
Kind Regards,
John.
EOF
E-mail à un utilisateur du système local
Pour envoyer un e-mail à un utilisateur du système local, spécifiez uniquement le nom d'utilisateur à la place du destinataire. Vous pouvez ajouter le nom d'hôte mais ce n'est pas nécessaire en utilisant @hostname
.
mail -s "Test Subject" username
Activation de Verbose
Si vous avez besoin de vérifier ce qui se passe pendant le traitement de l'e-mail, activez la sortie détaillée avec l'argument -v
. C'est utile pour le dépannage, par exemple lorsque vous souhaitez vérifier les commandes SMTP utilisées par la commande mail. Voici un exemple :
mail -v -s "Hello theere" [email protected] <<< 'This is the message'