Astuce : mise à jour du script pour optimiser Mail

Nicolas Furno |

Vous utilisez Mail.app, le client mail par défaut de macOS, et vous constatez que ses performances baissent au fil du temps ? C’est « normal » : la base de données utilisée par l’application devrait être optimisée de temps en temps pour maintenir des performances identiques. Pour une raison ou une autre, Apple ne le fait pas automatiquement et même si la situation s’est améliorée ces dernières années, le client mail de macOS ralentit au fil du temps.

Régler ce problème est toutefois assez facile. Il existe un script en AppleScript qui optimise la base de données utilisée par Mail et améliore les performances de manière assez significative. C’est surtout visible si vous avez plusieurs boîtes de réception et que chaque boîte contient un grand nombre de messages. Le passage d’une boîte à l’autre est immédiat après avoir lancé le script, tout comme le passage d’un message à l’autre.

Le script dans sa dernière version à gauche, la fenêtre qui s’affiche après exécution à droite. Cliquer pour agrandir
Le script dans sa dernière version à gauche, la fenêtre qui s’affiche après exécution à droite. Cliquer pour agrandir

Nous avions évoqué ce script il y a deux ans, mais il nécessitait une mise à jour pour High Sierra. Si vous l’utilisiez, vous pouvez télécharger la dernière version à cette adresse et mettre à jour votre script. L’optimisation fonctionnera désormais pour toutes les versions macOS depuis au moins Lion. Nous l’avons utilisé sans problème sur Sierra et High Sierra, mais vérifiez bien que vous avez une sauvegarde des mails avant de l’utiliser, au cas où.

Si c’est la première fois que vous entendez parler du script, voici comment l’utiliser. Le plus simple est de télécharger en cliquant sur le lien « Download ZIP » affiché en haut à droite sur cette page. À l’intérieur de l’archive, cliquez deux fois sur le fichier et il s’ouvrira dans l’éditeur de script de macOS. Il ne vous reste plus qu’à l’exécuter, soit avec le raccourci ⌘R, soit en cliquant sur l’icône en forme de triangle dans la barre d’outils. Conservez ensuite le script sur le volume de stockage du Mac pour le lancer de temps en temps, ou alors configurez un lanceur comme Alfred pour l’exécuter directement.

avatar Espcustom | 

Je connaissais pas. Merci du tuyau ?

avatar djio101 | 

Merci beaucoup !

avatar sangoke | 

Je connaissais pas non plus je vais tester ça sous peu ???

avatar Bruno de Malaisie | 

Il y a-t-il quelque chose du même ordre pour Mail sous iOS?
Ça m’intéresserait...

avatar cecile_aelita | 

@mag
"C’est surtout visible si vous avez plusieurs boîtes de réception et que chaque boîte contient un grand nombre de messages"

a partir de quel taille (nb de message) vous estimez que ca commence a avoir un interet?
je dois avoir une boite mail avec 10-12 000 mails je dirais (entre ceux recu et ceux envoyé). Donc plutot une petite boite mail.
merci de votre retour

avatar Nicolas Furno | 

@ romainB84 :

De toute manière, ça ne coûte rien d'essayer. Il n'y aura pas forcément de différence, mais le script ne fera pas de mal.

Pensez bien à vérifier que vous avez une sauvegarde avant malgré tout, on ne sait jamais.

avatar ecosmeri | 

@nicolasf

Une sauvegarde est necessaire quand la boite aux lettres est synchro icloud?

avatar Nicolas Furno | 

@ ecosmeri :

Dans tous les cas. Mais c'est plus pour éviter un scénario catastrophe et, par exemple, une corruption de la base de données. Et ça doit pas arriver, le script est très simple, c'est juste que l'on n'est jamais trop prudent.

Au pire, en IMAP ou Exchange, on peut toujours tout supprimer et reconfigurer les comptes, en effet. C'est long, mais c'est faisable.

avatar cecile_aelita | 

ok merci nicolas !
je verrais.
Apres pour le moment je ne ressent aucune lenteur du coté de mail (ou alors c'est que je m'y suis habitué !! et mon mac est plus tout jeune !! 2012)

avatar instantcook | 

Je suis toujours sceptique devant ce type de solution : si c'est si simple, sans risque et automatisable, pourquoi n'est ce pas intégré d'office par Apple ?
Quelqu'un qui s'y connaît a-t-il jeté un œil aux lignes de commandes du script ?
Merci

avatar Nicolas Furno | 

@ instantcook

Aucune idée sur pourquoi Apple le fait pas, j'imagine qu'ils estiment que c'est pas nécessaire. Comme ça s'est amélioré aussi ces dernières années, peut-être que c'est de moins en moins utile aussi ?

En tout cas, le script est très simple. La partie importante tient en une ligne, et il s'agit uniquement d'exécuter la commande vacuum sur la base de données qui est au format SQLite3. C'est une commande standard d'optimisation, rien de dangereux normalement.

avatar Avenger | 

@ instantcook

Justement, avec Apple et d'autres éditeurs de solutions informatiques, quand c'est simple et sans risque, cela leur semble visiblement inintéressant. Pour beaucoup de développeurs, c'est moins excitant à programmer. La logique qui semble prévaloir, à l'heure actuelle, c'est "Pourquoi faire simple quand on peut faire compliqué".

avatar Nouvoul | 

Un peu HS, mais comment retrouver le comportement de Mail glisser (déplacer) un message de la boîte de réception vers une boîte particulière ?
C'était possible avant High Sierra, maintenant je dois passer par le menu "déplacer vers..." ?

avatar Avenger | 

@ Nouvoul,

En effet, complètement hors sujet. Il y a le forum d'aide pour poser ce type de question.
Cela dit, le "glissé-déposé" fonctionne parfaitement chez moi, sous 10.13.

avatar Nouvoul | 

J'ai déjà posé cette question sur le forum, avec d'autres, sans réponse; merci de ton avis.

avatar Jipy | 

Il me semble qu'Onyx fait çà aussi, non ?

avatar stefhan | 

Ah merci pour l’info et le partage ! ?

avatar sinbad21 | 

Je me demande si la commande Reconstruire dans le menu Boîte aux lettres de Mail ne fait pas exactement la même chose.

avatar Mattaustrale | 

Comment on installe cet apple script?

avatar FollowThisCar | 

Suffit de le double-cliquer, ce qui ouvre son app : AppleScript Editor.

avatar FollowThisCar | 

Merci Nicolas, et voici mon retour :

* Le nouveau script ne marche pas sur Mavericks 10.9.5
=> "Error: unable to open database "V2": unable to open database file".

* Du coup j'ai retrouvé l'ancien Maintenance Mail, qui, lui, a accepté sans rechigner, et il m'indique avoir réduit la base de données de 77 à 73 MB.

avatar Diafwl | 

Pour résoudre le problème avec Maverick, il suffit d'ajouter la ligne :
if "10.9" ≤ os_version then set mail_version to "~/Library/Mail/V2/Maildata/Envelope\\ Index"
juste après :
considering numeric strings

avatar Liena | 

Mon dieu ! Merci beaucoup pour cette astuce !!! Extra ! ?

avatar A884126 | 

Je suppose que c'est le même type de scripte que propose Onyx ou MacCleaner, n'est pas ?

avatar Mattaustrale | 

Merci Follow this car.

c'est mis à jour.
J'ai un problème que je traine depuis une importation d'un mail Imap. Il a mis tous les mails a la date d'importation et pas a leur date réel de réception ou d'envoi. J'ai vérifié sur le serveur de mail en webmail. Les dates sont bonnes. C'est mail qui deconne. Avez vous une astuce?

avatar Issou la chancla | 

Sur mac depuis 2008 et première fois que j'entends parler de ce script :(

avatar Nicolas Furno | 

@ForzaDesmo

Le script s’en charge en fait.

avatar dan38 | 

Autre erreur dans le script pour Macos 11 :
if "10.11" ≤ os_version then set mail_version to "~/Library/Mail/V3/MailData/Envelope\\ Index"
(D à MailData) et 10.11

avatar r e m y | 

@dan38
Le disque dur du Mac étant dans un format insensible à la casse, remplacer une majuscule par une minuscule dans un nom de fichier ou de dossier n'a pas d'influence.

avatar Loustik | 

Testerai ça dès que possible.
Je n’en avais pas du tout entendu parler.
Merci macge

avatar xDave | 

Je sais pas pour vous mais je fais des boîtes pour trier mes mails par thème.
Ça m'a toujours facilité la gestion. *

Je suis étonné de voir des personnes avec une BAL In remplie de milliers de mails et qui s'étonnent de la lenteur de leur client (webmail ou autre)...

*semaine dernière j'ai fait des archives de vieux dossiers Mail que j'ai zippé ensuite et que je vais mettre sur une sauvegarde (pure maniaquerie mais bon). En zip j'ai déjà gagné plusieurs Mo et je me disais que j'avais stocké ça depuis des siècles pour rien.

avatar A884126 | 

@xDave

Cette lenteur sera due à une configuration en POP3 mais si la boîte est en IMAP les emails restent sur le serveur donc pas de ralentissement.

avatar r e m y | 

@A884126

En IMAP les emails sont synchronisés avec le serveur, mais ils sont bien telechargés en local et gérés localement par Mail (déconnecte-toi d'Internet, tu verras que tes emails restent consultables)!

Donc POP ou IMAP c'est kif-kif pour MAIL!

avatar julien1986 | 

J'ai une erreur avec le script :
error "Error: database is locked" number 5

Comment faire ?
Merci

avatar A884126 | 

@julien1986

Télécharger gratuitement Onyx qui fait la même chose.

avatar r e m y | 

@A884126

Et qui produira la même erreur si la base sql est effectivement verrouillée...

avatar A884126 | 

@r e m y

Je ne parle pas de suppositions mais de faits. Cela fonctionne très bien sur le dernier MBP sous High Sierra avec Onyx et CleanMyMac de MacPaw. Enfin chez moi, et cela depuis des années.
Je vous conseille de tester. Pour quoi faire compliquer quand on peut faire simple.?

avatar Scamandre | 

Bonjour,
J'utilisais ce script sous High Sierra, mais depuis que je suis passé à Mojave, il ne fonctionne plus, et je ne comprends pas pourquoi. Le problème vient du processus sqlite3, qui m'indique :
"Error: unable to open database \"/Users/username/Library/Mail/V6/MailData/Envelope Index\": unable to open database file" number 1
Comme si sqlite3 ne pouvait plus lire la base de données. Curieux. Si quelqu'un a une idée ?

CONNEXION UTILISATEUR