• Contenu
  • Bas de page
logo ouidoulogo ouidoulogo ouidoulogo ouidou
  • Qui sommes-nous ?
  • Offres
    • 💻 Applications métier
    • 🤝 Collaboration des équipes
    • 🛡️ Sécurisation et optimisation du système d’information
    • 🔗 Transformation numérique
  • Expertises
    • 🖥️ Développement logiciel
    • ♾️ DevSecOps
    • ⚙️ Intégration de logiciels et négoce de licences
      • Atlassian : Jira, Confluence, Bitbucket…
      • Plateforme monday.com
      • GitLab
      • SonarQube
    • 📚​ Logiciel de CRM et de gestion
    • 🎨 UX/UI design
    • 🌐 Accessibilité Numérique
    • 🗂️​ Démarches simplifiées
    • 📝 Formations Atlassian
  • Références
  • Carrières
    • 🧐 Pourquoi rejoindre Ouidou ?
    • ✍🏻 Nous rejoindre
    • 👨‍💻 Rencontrer nos collaborateurs
    • 🚀 Grandir chez Ouidou
  • RSE
  • Ressources
    • 🗞️ Actualités
    • 🔍 Articles techniques
    • 📖 Livres blancs
    • 🎙️ Interviews Clients
Nous contacter
✕
Ouidou augmente sa capacité de services avec une agence à Nantes
Ouidou augmente sa capacité de services avec une agence à Nantes
2 mars 2022
Formation managers 2022
Formation managers 2022
10 mars 2022
Ressources > Articles techniques > Le setup de mail que j’utilise

Le setup de mail que j’utilise

Article écrit par Eddie Barraco

C’est sans doute la partie dans toute ma stack technique qui a le plus évolué avec le temps. Depuis quelques années, elle s’est pourtant bien stabilisée. C’est de cela dont j’ai envie de parler aujourd’hui.

Quelques contraintes que j’ai pour mes solutions :

  • Dois me permettre d’utiliser n’importe quel éditeur de texte
  • Gère une grande liste de boites mail, de manière unifiée
  • Les outils doivent être interchangeables et avoir des alternatives (ou être simple pour que je les maintienne)
  • Permet de chercher des mails
  • Peut se brancher à d’autres outils
  • Dois me permettre de faire le ménage

Isync

J’utilise donc un ensemble d’outils qui marchent de pair. Pour synchroniser les mails du serveur IMAP de mon fournisseur jusqu’à mon stockage local j’ai deux possibilités équivalentes :

  • offlineimap
  • mbsync (aka Isync)

J’ai choisi mbsync. Nous le configurons ainsi :

# ~/.mbsyncrc IMAPAccount synbioz Host imap.gmail.com User ebarraco@synbioz.com PassCmd "pass Web/accounts.google.com/ebarraco@synbioz.com" CertificateFile /etc/ssl/certs/ca-certificates.crt SSLType IMAPS  IMAPStore synbioz-remote Account synbioz  MaildirStore synbioz-local Path ~/.mail/synbioz/ Inbox ~/.mail/synbioz/INBOX  Channel synbioz Far :synbioz-remote: Near :synbioz-local: Patterns * Create Both SyncState * 

On lance la commande mbsync pour synchroniser cette boite mail dans le dossier ~/.Mail/synbioz. Ce dossier ressemble à ça :

$ ls ~/.mail/synbioz/ Archive  Brouillons  Drafts  INBOX  Sent  Spam  Trash $ ls ~/.mail/synbioz/INBOX/ cur  new  tmp 

Chacun des dossiers contient un cur, new et tmp. C’est le format Maildir

Pour rendre la synchronisation plus rapide lorsqu’on a plusieurs fournisseurs :

#!/bin/sh # ~/bin/email_sync  grep Channel ~/.mbsyncrc  	| cut -d' ' -f2  	| xargs -n1 -P 0 mbsync -qX 

Lancer email_sync vas synchroniser en parallèle toutes les boites mails.

Mblaze

Maintenant que les mails sont en local, nous voulons les lister, les afficher, y répondre, etc.

J’utilise pour cela Mblaze. Ce projet s’inspire de MH appliqué au format Maildir (et non mbox).

Mblaze fournit un ensemble de commandes qui permettent d’utiliser les fichiers mails stockés au format Maildir. L’idée est de chaîner plusieurs commandes pour faire ce qu’on souhaite. Les taches les plus courantes peuvent être simplifiées dans un script. Quelques exemples :

# Liste les mails d'un dossier $ mlist ~/.mail/synbioz/INBOX/ /home/stacy/.mail/synbioz/Archive/cur/1642849468.15544_227.yellow-orcess,U=227:2,RS /home/stacy/.mail/synbioz/Archive/cur/1642849502.15544_720.yellow-orcess,U=720:2, /home/stacy/.mail/synbioz/Archive/cur/1642849496.15544_592.yellow-orcess,U=592:2, /home/stacy/.mail/synbioz/Archive/cur/1642849485.15544_435.yellow-orcess,U=435:2, /home/stacy/.mail/synbioz/Archive/cur/1644068637.3764_3.yellow-orcess,U=818:2, /home/stacy/.mail/synbioz/Archive/cur/1642849491.15544_525.yellow-orcess,U=525:2, /home/stacy/.mail/synbioz/Archive/cur/1642849445.15544_14.yellow-orcess,U=14:2,S /home/stacy/.mail/synbioz/Archive/cur/1642849481.15544_365.yellow-orcess,U=365:2, /home/stacy/.mail/synbioz/Archive/cur/1642849455.15544_107.yellow-orcess,U=107:2,RS /home/stacy/.mail/synbioz/Archive/cur/1642849493.15544_541.yellow-orcess,U=541:2, 
# Permet d'en tirer des informations $ mlist ~/.mail/synbioz/INBOX/ | mscan  .      2021-07-02 David Verove      > Re: Infos pour création de factures Odoo  .      Tue Jan 18 Suivi de projet I   [G-OXYGENE - Développement #11886] (Validation) REQ_GES_0048 Gestion des avoirs sur une facture d  .      2020-11-26 Martin Catty      > Invitation mise à jour: Suivi - jeu. 26 nov. 2020 11am - 11:30am (CET) (ebarraco@synbioz.com)  .      2021-01-18 mducrocq@synbioz.   Entretiens de suivis  .      2020-12-17 Notion            > 1 update in Synbioz         2020-07-28 Martin Catty        Préparation des entretiens 
# msort permet de trier, ici par date $ mlist ~/.mail/synbioz/INBOX/ | msort -rd | mscan  .      Tue Jan 18 Suivi de projet I   [G-OXYGENE - Développement #11886] (Validation) REQ_GES_0048 Gestion des avoirs sur une facture d  .      2021-07-02 David Verove      > Re: Infos pour création de factures Odoo  .      2021-01-18 mducrocq@synbioz.   Entretiens de suivis  .      2020-12-17 Notion            > 1 update in Synbioz  .      2020-11-26 Martin Catty      > Invitation mise à jour: Suivi - jeu. 26 nov. 2020 11am - 11:30am (CET) (ebarraco@synbioz.com)         2020-07-28 Martin Catty        Préparation des entretiens 

Les nouveaux mails synchronisés ont le statut « nouveau » et sont stockés dans le dossier new du format Maildir. Mblaze nous permets de les lister et de les marquer comme vu avec la commande minc.

La commande suivante attrape les nouveaux mails, leur retire leur caractère nouveau et passe la main à mscan qui en affiche un résumé :

$ minc ~/.mail/synbioz/INBOX | mscan >.  1   Mon  15:12 Peter John Hartma   [PATCH sxmo-utils v2 00/22] Pinenote Patches 

Nous avons plusieurs boites mail, donc nous souhaitons rendre cela plus rapide :

#!/bin/sh # ~/bin/mnew  # mdirs liste tous les dossiers d'une boite (INBOX, Sent, etc.) mdirs "$HOME"/.mail |  	xargs minc |  	mthread -r 

Nous n’avons plus qu’à utiliser email_sync && mnew | mless pour synchroniser et afficher tous les nouveaux mails de toutes nos boites.

mless est généralement l’outil principal pour parcourir les mails. Il ouvre les mails listés dans un page less :

$ mlist ~/.mail/synbioz/INBOX/ | msort -rd | mless  .  14  Tue Feb  1 Suivi de projet [Développement #11906] (To be released in prod) REQ_BUR_0050 Demande  .  15  Tue Feb  1 Andréa XXXXX      + Kick off refonte Bureau des consultants >.  16  Tue Feb  1 Nicolas Cavigneau > Re: XXXXXXXX | Description des XXXX (#306)  .  17  Tue Feb  1 Nicolas Cavigneau > Re: XXXXXXXX | feat: add descriptions to product XXXXXXXXX (!280)  From: "Nicolas Cavigneaux (@ncavigneaux)" <bot@synbioz.com> Subject: Re: XXXXXXXX | Description des XXXX (#306) To: ebarraco@synbioz.com Date: Tue, 01 Feb 2022 15:01:25 +0100 (6 days, 21 minutes, 4 seconds ago)  --- 1: multipart/alternative size=2003 --- --- --- 2: text/plain size=250 ---    Nicolas Cavigneaux commented:   Back validé et mergé 

En haut de cette page, on voit le mail courant indiqué par un > en début de ligne. On tape la commande :n et :p pour naviguer vers le mail suivant et précédent. On ferme less avec q.

On affiche le mail courant avec mshow. On peut rouvrir la liste de mails avec mless directement.

mblaze utilise deux fichiers pour conserver le contexte actuel ~/.mblaze/seq et ~/.mblaze/cur.

Quelques scripts additionnels qui me simplifient la vie :

#!/bin/sh # ~/bin/mls  mdirs "$HOME"/.mail |  	grep "$1$" |  	xargs mlist |  	mthread -r 

Me permet de lister tous les mails du dossier INBOX de toutes les boites avec mls INBOX | mless. Les mails sont triés par thread du plus récent au plus ancien.

#!/bin/sh # ~/bin/mmv  REGEX="$(printf 's|[^/]+/[^/]+/[^/]+$|%s|' "$1")"  mshow -t . |  	head -n 1 |  	sed "$REGEX" |  	xargs mrefile . 

Me permet de déplacer le mail courant dans le dossier « Archive » de sa boite mail avec mmv Archive. Je peux donc archiver facilement les mails sans me soucier de sa boite d’origine et sans avoir besoin de changer de contexte.

Pour composer un mail ou pour y répondre on peut utiliser respectivement mcom et mrep. Mblaze vas nous préparer le modèle du mail avec les en-têtes correspondants et ouvrir l’éditeur de texte.

To: XXX / XXXXXXXX <XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX> Cc: Bcc: Subject: Re: XXXXXXXX | feat: add descriptions to product XXXXXXXXX (!280) From: Eddie Barraco <ebarraco@synbioz.com> In-Reply-To: <69c406662334a6e2f24c36cf8557c381@git.synbioz.com> Message-Id: <20DCRCY035H7Z.26F60R3KQ1ZW1@yellow-orcess.my.domain>  > Merge request URL: https://git.synbioz.com/XXX/XXXXXXXX/-/merge_requests/280 > > > Merge request !280 was merged > Merge request URL: https://git.synbioz.com/sba/XXXXXXXX/-/merge_requests/280 > Branches: feat/XXXXXXXX-desc to develop > Author: Eddie Barraco > Assignee: Martin Catty > Reviewers:  Merci cher bot ! 

Une fois le fichier sauvegardé et l’éditeur clos, Mblaze demande via un menu interactif s’il doit envoyer ou si nous souhaitons encore le modifier.

[ebarraco@ebarraco.synbioz ~]$ mrep What now? ([s]end, [c]ancel, [d]elete, [e]dit, [m]ime, [p]review, sign, encrypt) 

Mblaze n’est pas capable d’envoyer le mail par lui-même. Pour cela il va passer la main au programme que nous verrons juste après.

Mes routines deviennent donc :

  • Pour voir les nouveaux mails : email_sync && mnew | mless
  • Pour lister tous les mails à traiter : mls INBOX | mless
  • Pour appliquer le patch du mail courant : mshow -r | git am -3
  • Pour archiver le mail courant : mmv Archive && mless

Le pager mless a aussi quelques raccourcis qu’on peut étendre. Vous trouverez ici la version que j’utilise actuellement mless

En l’état, je ne quitte quasiment jamais mless. J’appuie sur a pour archiver le mail, t pour le mettre dans la corbeille, r pour répondre, et w pour récupérer les nouveaux mails (ou synchroniser). Je peux revenir à ma liste INBOX avec i, je quitte à tout moment le pager avec q et le rouvre avec mless.

Plutôt simple finalement ? Non ? Bon…

msmtp

Pour gérer l’envoi des mails, j’utilise msmtp. C’est un programme très simple qui lit une configuration, attrape le contenu du mail qu’on lui donne et envois ledit mail. Son fichier de configuration est :

# ~/.msmtprc # Set default values for all following accounts. defaults auth           on tls            on tls_trust_file /etc/ssl/certs/ca-certificates.crt logfile        ~/.msmtp.log  account        synbioz host           smtp.gmail.com port           587 from           ebarraco@synbioz.com user           ebarraco@synbioz.com passwordeval   "pass Web/accounts.google.com/ebarraco@synbioz.com" 

On doit également configurer Mblaze pour l’utiliser.

# ~/.mblaze/profile Sendmail: msmtp Sendmail-Args: --read-envelope-from --read-recipients Local-Mailbox: Eddie Barraco <ebarraco@synbioz.com> 

C’est avec msmtp que mblaze enverra le mail lorsqu’on utilise mcom, mrem, mfwd. Notez au passage qu’avec --read-envelope-from msmtp utilise la configuration correspondante au From.

Notmuch

J’ai mes mails en local, pleins d’outils pour les lister, les déplacer. Je peux en composer de nouveau ou répondre à certains. Maintenant comment est-ce que je fais une recherche ?

Mblaze offre un moyen simple de le faire :

$ mlist ~/.mail/synbioz/Archive/ |  	magrep -a "/:project synbioz" |  	mless 

Cependant, il est peu performant et peu pratique. Je ne le recommande pas si vous chercher dans une grande liste de mail.

J’utilise un outil appelé Notmuch pour indexer et rechercher dans mes mails.

~/.notmuch-config  [database] path=.mail  [user] name=Eddie Barraco primary_email=ebarraco@synbioz.com  [new] tags=inbox ignore=  [search] exclude_tags=deleted;spam;  [maildir] synchronize_flags=false  [crypto] gpg_path=gpg2 

On indique à Notmuch de ne pas toucher lui-même aux fichiers.

On lance l’indexation avec notmuch sync. Cette action prend du temps la première fois et sera plus rapide par la suite. Nous allons d’ailleurs abstraire cette tache grâce à notre script email_sync.

#!/bin/sh # ~/bin/email_sync  grep Channel ~/.mbsyncrc  	| cut -d' ' -f2  	| xargs -n1 -P 0 mbsync -qX  mnew  notmuch sync 2>/dev/null >&2 

On simplifie encore une fois notre routine. On lance email_sync | mless pour synchroniser le mail, les indexer et afficher les nouveaux.

Ce petit raccourci va nous simplifier les recherches :

#!/bin/sh # ~/bin/msearch  exec notmuch search --output=files "$@" 

On l’utilise ainsi :

$ msearch "Martin Catty" and "subject:/fiche de paie/" |  	msort -rd |  	mless … # une liste de mail $ msearch body:"Proposition commerciale" and folder:/Trash/ |  	msort -rd |  	mless … # une plus grande liste de mail 

Je me sers de Notmuch pour lister les mails automatiques et ainsi les nettoyer. Vous trouverez mon script ici mcleanup.

Enfin

J’ai choisi d’utiliser un ensemble de petits outils plutôt qu’un programme qui cherche à tout faire. Cela me donne une plus grande flexibilité, mais également de meilleures performances. Je peux travailler sur ma machine fixe actuelle ou sur un microordinateur sans même m’en rendre compte.

À lire aussi

Fresque numérique miniature image
16 avril 2025

Fresque du Numérique

Lire la suite

intelligence artificielle Ouicommit miniature image
17 mars 2025

Ouicommit – L’intelligence artificielle en entreprise, on y est ! 

Lire la suite

Image miniature Hackathon Women in Tech
13 mars 2025

Hackathon Women in Tech :  un engagement pour une tech plus inclusive 

Lire la suite

image miniature les nouveautés Atlassian
26 février 2025

Les nouveautés Atlassian en 2025

Lire la suite

Articles associés

Fresque numérique miniature image
16 avril 2025

Fresque du Numérique


Lire la suite
intelligence artificielle Ouicommit miniature image
17 mars 2025

Ouicommit – L’intelligence artificielle en entreprise, on y est ! 


Lire la suite
Image miniature Hackathon Women in Tech
13 mars 2025

Hackathon Women in Tech :  un engagement pour une tech plus inclusive 


Lire la suite

À propos

  • Qui sommes-nous ?
  • Références
  • RSE
  • Ressources

Offres

  • Applications métier
  • Collaboration des équipes
  • Sécurisation et optimisation du système d’information
  • Transformation numérique

Expertises

  • Développement logiciel
  • DevSecOps
  • Intégration de logiciels et négoce de licences
  • Logiciel de CRM et de gestion
  • UX/UI design
  • Accessibilité Numérique
  • Démarches simplifiées
  • Formations Atlassian

Carrières

  • Pourquoi rejoindre Ouidou ?
  • Nous rejoindre
  • Rencontrer nos collaborateurs
  • Grandir chez Ouidou

SIEGE SOCIAL
70-74 boulevard Garibaldi, 75015 Paris

Ouidou Nord
165 Avenue de Bretagne, 59000 Lille

Ouidou Rhône-Alpes
4 place Amédée Bonnet, 69002 Lyon

Ouidou Grand-Ouest
2 rue Crucy, 44000 Nantes

Ouidou Grand-Est
7 cour des Cigarières, 67000 Strasbourg

  • Linkedin Ouidou
  • GitHub Ouidou
  • Youtube Ouidou
© 2024 Ouidou | Tous droits réservés | Plan du site | Mentions légales | Déclaration d'accessibilité
    Nous contacter