===== Envoyer des mails avec pièce jointe en 1 ligne de commande (mutt + msmtp)=====
La problématique : je souhaite pouvoir récupérer un fichier depuis mon serveur sous debian, malgré une connexion bridée (firewall et tout ça).\\
La solution : le mail (via gmail) et la pièce jointe\\
Les outils : bash, msmtp et mutt
====Installation ====
Rapidement, on sait faire maintenant :
aptitude install msmtp mutt
====Configuration====
===msmtp===
C'est tout simple, il suffit de se créer un fichier ''.msmtprc'' dans son home ''~/'', dedans on met ceci :
account default
tls on
host smtp.gmail.com
port 587
from mon_user@gmail.com
auth on
user mon_user
password mon_mot_de_passe
tls_starttls on
tls_certcheck on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
Cette config est valable pour gmail qui demande des authentifications sécurisées (tout ce qui est relatif à tls dans cette config)\\ et valable pour debian, l'emplacement des certificats de confiance pouvant être différent sur une autre distribution
===mutt===
Il faut maintenant dire à mutt d'utiliser msmtp, c'est facile, il faut créer un fichier ''.muttrc'' dans son home ''~/'', avec la config suivante :
set sendmail="/usr/bin/msmtp"
set use_from=yes
set realname="Votre_vrai_nom_ou_pas"
set from=nom_user@gmail.com
set envelope_from=yes
On devrait pouvoir trouver des explications cohérentes pour expliquer cette config (voir du coté de la documentation de msmtp), je me contente d'avoir une config qui marche
====La ligne de commande magique====
la voilà :
echo "corps du message" | mutt -s "sujet" -a fichier_à_envoyer -- adresse@destinai.re
====Aller plus loin====
Vu qu'il s'agit de m'envoyer des mails à moi, et uniquement cet usage, on peut raccourcir cette ligne à 2 mots en utilisant un script perso et un alias
===le script perso===
on se crée un petit fichier ''.sendme'' dans son home ''~/'', et on ecrit les lignes suivantes :
#!/bin/bash
CHEMIN=`pwd`
FICHIER=$1
echo "fichier envoyé par un script utilisant mutt et msmtp depuis mon serveur" | \
mutt -s " Fichier : $CHEMIN/$FICHIER" -a "$CHEMIN/$FICHIER" -- mon@adresse.mail
# avec ou sans le / mais mettre le tout sur une ligne
=== l'alias===
on édite (ou on crée s'il n'existe pas) son fichier ''~/.bashrc'', et on rajoute l'alias qui va bien :
alias sendme="bash /home/user/.sendme"
===utilisation===
Désormais, où que vous soyez dans votre système de fichiers, tant que vous êtes logué en console, vous pouvez vous écrire un mail avec une pièce jointe, histoire de récupérer tel fichier de config, telle photo ou tel morceau de musique :
sendme fichier
===encore plus loin ?===
On peut imaginer que vous ayez un copain vachement doué en sysadmin, votre mentor et que vous souhaitez lui faire parvenir vos fichiers de config qui ne marchent pas pour qu'il dévermine tout cela, on peut imaginer créer un dossier ''~/.sendme'' avec plusieurs scripts ''sendme'' pour se l'envoyer à soi-meme, mais aussi ''sendJoe'' ou autre.. ne pas oublier de rajouter des alias dans ''.bashrc''