===== 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''