Envoyer un mail depuis le terminal

De Analyse Développement Hacking
Sauter à la navigation Sauter à la recherche

Glider.png

Le wiki : Accueil - Administrateur - Bureautique - Développeur - Intégrateur - Marketing - Multimédia - Objets numériques - Jeux - We make Hack

Le site : Accueil du site - Annuaire - Blog - Forum - Outils - Utilisateur
Le FTP : Accueil du FTP - Le privatebin : Accueil du privatebin
Le Redmine : Accueil du Redmine

Envoyer un mail depuis le terminal

Utiliser la messagerie avec le paquet mutt

Site officiel pour mutt : http://www.mutt.org
Documentation : http://www.mutt.org/doc/manual/

Installer mutt

sudo apt-get install mutt
mutt

Configurer mutt

La configuration de mutt se fait dans le fichier ~/.muttrc ou dans le fichier /etc/Muttrc.
Il est préférable de partir de zéro.
Créer le fichier .muttrc dans votre home utilisateur.
Exemple pour l'utilisateur root :
su
cd ~/
touch .muttrc
nano .muttrc
Créer la configuration de mutt pour Linux
# Depuis Debian Mint Ubuntu, créer deux fichiers de configuration .muttrc pour l'utilisateur root et pour l'utilisateur standard.
# configuration de base
set realname = "Nom utilisateur qui envoie le message"
set header_cache =~/.mutt/cache/headers
set certificate_file =~/.mutt/certificates
set message_cachedir =~/.mutt/cache/bodies

# configuration imap
set spoolfile=imaps://imap.gmail.com:993/INBOX
set imap_user = "{votre @ email}"
set imap_pass = "{votre password}"
set imap_passive="no"
set imap_check_subscribed="yes"
set imap_list_subscribed="yes"

# configuration SMTP
set smtp_url = "smtp://{votre @ email}@smtp.gmail.com:587/"
set smtp_pass = "{votre password}"
set from = "{votre @ email}@gmail.com"
set use_envelope_from=yes # Pour que postfix ou sendmail ne change pas votre from

# En complément
set trash = "imaps://imap.gmail.com/[Gmail]/Trash"
set postponed="+[Gmail]/Draft"
set folder = "imaps://imap.gmail.com:993/"
set imap_check_subscribed
set mail_check = 120
set timeout = 300
set imap_keepalive = 300
set signature='/signature.txt'

# locales FR pour les noms des jours et mois.
# Cette variable est prise en compte sous Mint et Ubuntu.
set locale="fr_FR"
# Cette variable n'est pas prise en compte sous Debian et provoque une erreur.
# Utiliser peut être une autre valeur ?
# set locale="utf-8"

# Format de date
set date_format="%A %d %b %Y à %H:%M:%S (%Z)"

# phrase d'intro pour réponse quotée
set attribution="Le %d, %n a écrit :"
set forward_format="[Fwd: %s]"
set forward_quote

#
mailboxes !

#Editeur
set edit_hdrs
auto_view text/html
#set editor="nano" # Indiquer le choix de votre éditeur de texte.

color attachment magenta default            # attachments
color body brightred default "(ftp|http)://[^ ]+"       # point out URLs
color body brightcyan default [-a-z_0-9.]+@[-a-z_0-9.]+ # e-mail addresses
color bold brightblue default               # boldface text
color error brightwhite red                 # error messages
color hdrdefault magenta default            # default color of message header
color header brightmagenta default ^(From): # From and Subject header
color header brightwhite default ^(Subject): # From and Subject header
color header brightwhite default ^(Date): # Date header
color header white default ^(In-Reply-To):
color indicator brightred default                   # indicator bar
color markers brightblue default            # wrapped line markers (+)
color message brightblack green             # status messages
color normal default default                # default
color quoted yellow default                 # quoted text, 1st quote level
color quoted1 green default                 # quoted text, 2nd quote level
color quoted2 brightblue default            # quoted text, 3rd quote level
color quoted3 blue default                  # quoted text, 4th quoet level
color search black yellow                   # matched search patterns in pager
color signature red default                 # the signature (after sigdashes)
color status default blue                   # status lines
color tilde brightblue default              # ``~ used to pad blank lines
color tree green default                    # thread tree in the index menu
color underline brightgreen default         # underlined text

# Encodage a utiliser
set charset=utf-8
set send_charset=utf-8

set pager_index_lines=7
set pager_stop

Première utilisation

Démarrer mutt

Démarrer mutt avec la commande mutt, en étant root, ou, avec un simple utilisateur.
Le programme va proposer la création automatique des dossiers et fichiers nécessaires pour stocker les mails de l'utilisateur. Accepter.

Erreurs rencontrées

Envoyer un mail avec une configuration de mutt par défaut
Un message d'erreur va être affiché si la configuration de mutt n'est pas configuré pour envoyer des messages.
# Le message d'erreur que j'ai obtenu avant de configurer mutt avec la configuration fonctionnelle partagée plus haut :
Erreur en envoyant le message, fils terminé avec le code 127 (Exec error.).
Impossible d'envoyer le message.
NXDOMAIN Domain name not found
Un deuxième message d'erreur peut être rencontré, si on tente d'envoyer un mail localement, à l'utilisateur root@MonDomaineLocal :
DNS Error: 5084189 DNS type 'mx' lookup of MonDomaineLocal responded with code NXDOMAIN Domain name not found: MonDomaineLocal
Envoyer un mail pour l'utilisateur local en passant par le SMTP de Google, forcément Google ne sait pas comment joindre notre machine.
Il faut utiliser un MTA local à ce moment la, par exemple, installer Postfix pour une utilisation locale uniquement.
Si le message est bien envoyé à un mail valide, par exemple "mail@visionduweb.com", alors, le mail sera bien réceptionné depuis le client de messagerie habituel.
Erreur de variable locale
La variable locale semble bien être prise en compte dans le manuel de Mint ou de Ubuntu pour les valeurs de .muttrc acceptées.
Cette valeur doit être commentée avec un autre système d'exploitation pour éviter une erreur affichée au lancement de mutt.
La variable locale n'est pas présente dans le manuel de mutt / .muttrc officiel. Source : http://www.mutt.org/doc/mutt.1.txt
La variable locale n'est pas présente dans le manuel de mutt / .muttrc proposé par Debian.
La connexion IMAP ne s’établit pas vers Gmail
Quand je lance mutt, la connexion ne s’établit pas.
En acceptant l'appareil depuis Gmail, la connexion devient fonctionnelle comme affiché depuis le terminal lors du démarrage de mutt.
SMTP No authenticators available
Lors de l'envoi du message je rencontre l'erreur suivante après l'identification SMTP : No authenticators available.
Une première piste en ajoutant la variable set smtp_authenticators = 'login' ne me permet pas d'envoyer le message.
(En vert) SSL/TLS connection using TLS1.2 (ECDHE-RSA/CHACHA20-POLY1305/AEAD)
(En rouge) No authenticators available.
J'obtiens cette erreur avec un serveur web basé sur Debian 9 SID.
Avec une machine virtuelle basée sur Debian 9 XFCE, je peux envoyer des mails directement.
SASL est apparemment requis pour que mutt s'authentifie à l'aide de smtps.
Installer le paquet libsasl2-modules me permet d'envoyer le message : sudo apt install libsasl2-modules
APT a répertorié ce paquet comme "recommandé", ce qui n'est pas un bogue, ce paquet n'étant pas indispensable pour exécuter mutt.
Droits en écriture sur le dossier local pour conserver les messages
Quand un envoie de message n'aboutit pas, il est nécessaire d'annuler l'action en cours.
L'option pour annuler l'envoie du message propose de le conserver avec la touche yes pour valider.
Dans mon cas, le dossier [Gmail] appartenait à root au lieu de l'utilisateur local utilisé pour tester l'envoi du message.
/home/USER/Mail/[Gmail]/Draft: Permission denied (errno = 13)
Une fois le propriétaire et le groupe changé pour l'utilisateur par défaut, USER, le message annulé peut être correctement enregistré.
Notes complémentaires de Blabla Linux
Éditer le fichier de conf qui se trouve dans "~/.muttrc " ou plus simplement /home/user/.muttrc
Ajouter ce texte en le modifiant selon t'es propre info (ici pour gmail) :
set from = "ADRESSE_MAIL@gmail.com"
set realname = "NOM_PRENOM_ASSOCIER_A_L'ADRESSE_MAIL"
set imap_user = "ADRESSE_MAIL@gmail.com"
set imap_pass = "PASSWORD"
set folder = "imaps://imap.gmail.com:993"
set spoolfile = "+INBOX"
set postponed ="+[Gmail]/Drafts"
set header_cache =~/.mutt/cache/headers
set message_cachedir =~/.mutt/cache/bodies
set certificate_file =~/.mutt/certificates
set smtp_url = "smtp://ADRESSE_MAIL@smtp.gmail.com:587/"
set smtp_pass = "PASSWORD"
set move = no
set imap_keepalive = 900
Ensuite tu peux envoyer des mails comme ceci :
echo "TITRE_DU_MAIL" | mutt -s "SUJET_DU_MAIL" ADRESSE_DE_DESTINATION

Les commandes de mutt

Lire les mails avec mutt

q   	Quit
d 	Del
u	Undel
s	Save
m	Mail
r	Reply
g	Group
?	Help
Marquer les mails à supprimer avec la touche "d".
Quitter mutt. Un message de confirmation demande si les mails doivent être supprimés.
Vérifier l'encodage des messages
# Démarrer mutt et coller la commande suivante dans l'interface pour vérifier l'encodage et s'assurer de la prise en compte des accents :
:set &charset ?charset
# Le message suivant va être affiché :
charset="utf-8"

Envoyer un mail avec mutt

# Pour envoyer un message il suffit de taper "m".
L'interface d'envoi de mail s'ouvre.
# Saisir le destinataire, par exemple, l'utilisateur root, en local.
To :
# Indiquer le sujet du mail :
Subject :
# Écrire le contenu du message :
Notre premier message.
# Une fois la rédaction du mail terminée, ctrl+x pour enregistrer le message.
# Appuyer sur la touche "y" pour sauvegarder.
# Appuyer sur la touche "y" pour envoyer le courriel.
Si vous recevez le courriel c'est que votre serveur de courriel fonctionne correctement.

Envoyer un message avec une pièce jointe depuis le terminal

mutt -a README -s essai -c mail@visionduweb.com < /dev/null

Documentation complémentaire pour mutt

Mutt : client de messagerie en console : https://doc.ubuntu-fr.org/mutt
Traduction de la documentation de Mutt : http://cedricduval.free.fr/mutt/fr/
Source : https://nickdesaulniers.github.io/blog/2016/06/18/mutt-gmail-ubuntu/
A Command Line Email Client to Send Mails from Terminal : https://www.tecmint.com/send-mail-from-command-line-using-mutt-command/

Utiliser la messagerie avec la commande mail et mailx

Installer mailutils

# Installer mailx contenu dans le paquet mailutils pour utiliser la commande mail :
sudo apt-get install mailutils
# Avoir plus d’information sur ce que mailutils peut gérer :
mu-tool info

Utiliser la commande mail

# Lancer le programme mail :
mail
# Lire un mail avec son numéro et entrée :
1
# Supprimer le message qui a été affiché :
d
# Lire le mail suivant :
f
# Lire tous les mails suivants :
f *
# Supprimer les mails affichés par la commande mail :
# Supprimer les mails de 1 à 5 :
d 1-5
# Supprimer tous les mails :
d *
# Réponse au problème pour envoyer un mail en ligne de commande !
# Plusieurs fois, j'ai été bloqué pour valider l'envoi d'un mail saisi depuis le terminal.
# Utiliser le raccourci suivant pour envoyer le mail une fois le message correctement rédigé :
CTRL D
# Envoyer un mail en ligne de commande :
mail -s "Hello World !" mail@visionduweb.com < /dev/null
# Envoyer un mail en ligne de commande, avec un sujet et un message :
mail -s "This is the subject" somebody@example.com <<< 'This is the message'
# Envoyer un mail en ligne de commande avec un message de confirmation dans le terminal :
HOST="Le serveur Debian."
echo "Mail envoyé le $(date)" | mail -s "Test de mail depuis $HOST" mail@visionduweb.com
# Envoyer le contenu d'un fichier texte par mail :
mail -s "Le contenu du fichier texte" mail@visionduweb.com < README
# Envoyer le contenu d'un fichier texte par mail :
cat README | mail -s "Le contenu du fichier texte" mail@visionduweb.com
# Envoyer le contenu d'un fichier texte dans un mail local :
mail -s "Mail envoyé localement" debian@localhost,root@localhost < README
# Si le message suivant est affiché, l'envoie d'un mail à un serveur distant n'est pas supporté, le mail ne peut pas être envoyé.
# Configurer alors le serveur de mail par défaut de Debian Exim.
Mailing to remote domains not supported
# Accéder aux mails d'un utilisateur :
mail -f /var/spool/mail/user
# A quoi sert ce path ?
/var/mail/
Source complémentaire : https://fr.wikipedia.org/wiki/Mail_(Unix)

Utiliser la commande mailx

# Lancer le programme mailx :
mail
# Envoyer un message en ligne de commande :
echo "test" | mail -s "test mail" mail@visionduweb.com
echo "Mail envoyé le $(date)" | mail -s "Test envoi de mail depuis $HOST" mail@visionduweb.com
# Envoyer un mail avec une copie CC et une copie BCC :
mailx -s "Hello World" mail@visionduweb.com -c debian@localhost -b root@localhost  < README
# Ajouter les paramètres pour le nom de l'expéditeur pour lequel répondre au message :
mailx -s "Hello World" root@localhost -r "Répondre à Visionduweb<mail@visionduweb.com>"
# Ajouter les paramètres pour répondre à, ainsi que le nom de l'expéditeur pour lequel répondre au message :
mailx -s "Hello World" -S replyto="İsmail Baydan <ismail@localhost>" root@localhost
# Envoyer un message avec une pièce jointe en ligne de commande :
# Utiliser -a ou -A, et, finir par un point virgule.
# Avec -a j'obitens "mailx: En-tête invalide".
mailx -s "Some File" mail@visionduweb.com -A README;
# Comment valider l'envoie du mail ?
# CTRL+C Espace, deux fois, pour avorter l'envoie du message.
# Envoyer un message avec une pièce jointe en ligne de commande :
# Utiliser -a ou -A, et, finir par un point virgule.
# Avec -a j'obitens "mailx: En-tête invalide".
echo "le message du mail" | mailx -s "objet du mail" -A "README" mail@visionduweb.com;
# Ajouter du HTML dans un mail :
( echo "Content-Type: text/html"; cat toto.html ) | mail -a piece.pdf -s "mon sujet" -c copie@toto.com destinaraire@toto.com
# Ou :
mailx -a 'Content-Type: text/html' -s "my subject" user@gmail.com < email.html

Autres exemples pour envoyer un mail en ligne de commande Linux

Ok-ko.png https://www.poftut.com/linux-mail-mailx-commands-tutorial-examples-send-email-command-line/
Ko.png https://tecadmin.net/ways-to-send-email-from-linux-command-line/
Ko.png 16 Command Examples to Send Email From The Linux Command Line : https://blog.edmdesigner.com/send-email-from-linux-command-line/
Ok-ko.png Comment traiter l'option invalide -A : https://web.archive.org/web/20190921142934/http://www.juanjchong.com/2014/cant-send-e-mail-from-the-ubuntu-command-line-mailx-invalid-option-a/
Ko.png Avec uuencode et le paquet sharutils : https://www.system-linux.eu/index.php?post/2009/12/17/Mailx-et-fichiers-joints-en-une-ligne

NAVIGATION

PARTICIPER ET PARTAGER

Bienvenue sur le wiki de Vision du Web.
De nombreuses pages sont partagées sur ce wiki.
Créer un compte utilisateur pour participer sur le wiki.
Les pages présentées sur le wiki évoluent tous les jours.
Certaines recherches sont peu abouties et incluent des erreurs.
Utiliser la recherche interne du wiki pour trouver votre contenu.
La page de discussion de Visionduweb vous permet de poser une question.
Utiliser la recherche interne du site pour chercher dans tout le contenu.
Améliorer le contenu des pages avec vos retours depuis l'onglet discussion.
Ce contenu ne doit pas servir à nuire à autrui ou à un système informatique.
Protéger votre système Linux ou Windows avec cette page dédiée à la sécurité.

SOUTENIR CE WIKI

Soutenir le wiki avec un don en monnaie numérique :
AEON - Bitcoins - Bitcoins Cash - Bitcoins Gold - Bitcore - Blackcoins - Basic Attention Token - Bytecoins - Clams - Dash - Monero - Dogecoins - Ğ1 - Ethereum - Ethereum Classique - Litecoins - Potcoins - Solarcoins - Zcash

OBTENIR DE LA MONNAIE NUMERIQUE

Obtenir gratuitement de la monnaie numérique :
Gagner des Altcoins - Miner des Altcoins.