Envoyer un email avec pièce jointe avec la commande mail sous Linux

Ce matin, mon collègue me demande s’il n’y aurait pas de problème avec l’envoi d’email avec des pièces jointes d’une certaine taille sur un petit Postfix que nous utilisons en interne pour envoyer des logs et ce genre de choses.
Je regarde la configuration est augmente la taille maxi des messages, et je veux faire un test. Mais je crois que je n’ai jamais envoyé d’email depuis Linux avec la commande mail avec pièce jointe. Une rapide recherche me guide vers la commande uuencode. Sous CentOS, celle-ci est disponible dans le paquet sharutils :

$ sudo yum install sharutils

Le programme installé, je fais un test en envoyant une pièce jointe :

$ uuencode file.txt file.txt | mail fabien@feub.net

Et voici comment ajouter du texte dans le corps du message avec la pièce jointe :

$ (date; uuencode file.txt file.txt) | mail fabien@feub.net

date est juste la commande pour afficher la date courante, cela pourrait être un cat :

$ (cat monfichier; uuencode file.txt file.txt) | mail fabien@feub.net

Cette méthode fonctionne plutôt bien à quelques exceptions près. Certains clients de messagerie ne décodent pas la pièce jointe. L’encodage uuencode n’étant pas standardisé, un message ne sera simplement pas décodé et un message comme celui ci-dessous peut apparaitre :

[the content of the mail message was saved to the file "mail.uue"]

Il est alors possible de le décoder à la main :

$ uudecode mail.uue
The file "file.txt" was written to the current directory