Artikelformat

OS X Tipp: Apples Mail.app unter El Capitan beschleunigen //Update

Dass sich Apple mit seiner hauseigenen Mail.app immer wieder selbst auf den Füßen steht, zieht sich seit etlichen Jahren durch diverse OS X Versionen… Wobei man auch sagen muss, dass Mail, zumindest gefühlt, unter El Capitan wesentlich runder als noch unter Yosemite läuft.

Bildschirmfoto 2015-10-28 um 13.18.33-minishadow

Trotz alledem ist Mail auch unter El Capitan teilweise unerträglich langsam. Möchtest du nun aber nicht alternative Mailprogramme wie beispielsweise MailMate oder Airmail nutzen, kann das Entrümpeln des SQLite Indexes von Mail Wunder wirken und die App signifikant beschleunigen.

Was ist zu tun?

In Apples Script-Editor (~/Programme/Dienstprogramme) muss ein neues Dokument erstellt und nachfolgendes Script eingefügt werden.

Dabei darauf achten, dass, wie im Screenshot oben zu sehen, die Sprache auf AppleScript steht und das Ganze im Dateiformat Skript (.scpt) abgespeichert wird.

(*
Speed up Mail.app by vacuuming the Envelope Index
Code from: http://www.hawkwings.net/2007/03/03/scripts-to-automate-the-mailapp-envelope-speed-trick/
Originally by "pmbuko" with modifications by Romulo
Updated by Brett Terpstra 2012
Updated by Mathias Törnblom 2015 to support V3 in El Capitan and still keep backwards compability
*)

tell application "Mail" to quit
set os_version to do shell script "sw_vers -productVersion"
set mail_version to "V2"
considering numeric strings
    if "10.11" <= os_version then set mail_version to "V3"
    if "10.12" < os_version then set mail_version to "V4"
end considering

set sizeBefore to do shell script "ls -lnah ~/Library/Mail/" & mail_version & "/MailData | grep -E 'Envelope Index$' | awk {'print $5'}"
do shell script "/usr/bin/sqlite3 ~/Library/Mail/" & mail_version & "/MailData/Envelope\\ Index vacuum"

set sizeAfter to do shell script "ls -lnah ~/Library/Mail/" & mail_version & "/MailData | grep -E 'Envelope Index$' | awk {'print $5'}"

display dialog ("Mail index before: " & sizeBefore & return & "Mail index after: " & sizeAfter & return & return & "Enjoy the new speed!")

tell application "Mail" to activate


Nun kopiert man das erstellte Skript nach ~/Library/Scripts und kann es fortan über das Skriptmenü der OS X Menüleiste (muss vorher im Skript-Editor aktiviert werden) oder auch Schnellstartern wie Alfred oder LaunchBar manuell starten.

Das Skript ist außerdem abwärtskompatibel, so dass auch ältere Versionen von OS X davon profitieren.

Bildschirmfoto 2015-10-28 um 14.57.08

Vielleicht ganz grob zum Verständnis:
Mit diesem Skript wird Mail beendet, der Index bereinigt und Mail anschließend wieder gestartet. Dazu wird eine Meldung zur Größe des Mailindexes vor und nach der Bereinigung angezeigt.

Bildschirmfoto 2015-10-28 um 13.24.43-minishadow

(via)

Update - 05.09.2017

Ich habe das Skript gerade aktualisiert, damit es auch zu macOS 10.12 Sierra kompatibel ist.

Problematisch ist in diesem Zusammenhang die gesetzte Version von Mail, die bei Yosemite "V2", El Capitan "V3" und Sierra "V4" ist.

Autor: Björn

Ich bin Björn und quasi der COO von aptgetupdateDE. Ich kümmere mich um die PR und allerlei Kontaktaufnahmen zu Herstellern und Softwareentwicklern. Erreichbar bin ich bei Twitter und natürlich per E-Mail.

18 Kommentare

  1. Warum ist das Script bei mir nicht über Alfred aufrufbar? Er will bei Google danach suchen … :-/

    • Apple behandelt Dateien, die innerhalb von ~/Library/Scripts liegen als Systemdateien. Das bedeutet, dass sie für Spotlight nicht sichtbar sind. Da der Index von Alfred auf Spotlight aufsetzt, kannst du die in dem Verzeichnis gespeicherten Skripte nicht mit Alfred finden.

      Lösung 1:
      Das Skript in einem für Spotlight sichtbaren Verzeichnis speichern.

      Lösung 2:
      In Alfred einen eigenen Workflow mit einem Datei-Filter für die Skripte erstellen und bei ‚Search Scope‘ den Haken bei ‚Show files marked as System File‘ setzen. Danach sollte das Skript gefunden werden.
      -> KLICK

      Lösung 3 (bevorzuge ich):
      Diesen Workflow in Alfred integrieren und das besagte AppleScript mit .as starten

      You’re welcome! ;)

  2. Was heißt denn „bereinigt“? Der Index hat ja auch seinen Sinn. Vermutlich dürfte doch zumindest die Suche nach älteren Mails langsamer werden, oder?

  3. Folgende Ergänzung um das Script im OS X Menü abrufbar zu haben und zudem direkt Mail zuzuweisen:
    – Im Apple Script Editor die Option „Skriptmenü in der Menüleiste anzeigen“ aktivieren
    – Zusätzlich dort Programmskripts einblenden „oben“ aktivieren
    – Das Skript zum Beispiel unter dem Namen „Mail optimieren.scpt“ im Ordner (ggf anlegen)
    /Users/MEINBENUTZERNAME/Library/Scripts/Applications/Mail
    ablegen. Das Skript erscheint dann nur in Mail im Skript-Menü

  4. Hi,
    guter Tipp.
    Man kann in Alfred in den Optionen auch einfach den Haken bei „AppleScripts“ im Default Tab setzen und dann wird das Script auch gefunden.

    • Ist das wirklich so? Glaube ich nicht, da sich der (Spotlight-)Index dadurch ja nicht ändert und unsichtbare Dateien auf einmal sichtbar werden…

      Ich bin jetzt aber auch nicht (mehr) der ausgewiesene Alfred Experte aber die Skripte müssen meiner Meinung nach, selbst mit dem Haken bei AppleScript, zwingend außerhalb von ~/Library/Scripts liegen, um von Alfred gefunden werden zu können.

  5. Die Zeile
    if "10.10" <= os_version then set mail_version to "V3"
    ist leider nicht richtig. In OSX 10.10 ist noch Version V2 aktiv, sprich die Zeile muss
    if "10.11" <= os_version then set mail_version to "V3"
    lauten.

  6. Pingback: ostermeier.net » Internet-Logbuch vom 12. November 2015

  7. moin

    nach dem alptraum mail von einem 10.8er auf ein komplett frisches 10.11 ohne migration zum laufen zu bringen, hat sich der index nun wohl nen bisgen zerschossen.

    früher hat man/ich einfach den index gelöscht, welcher dann beim starten von mail komplett neu aufgebaut wurde und gut war.

    was ist denn unter dem scheiss 10.11er sinnvoller, die alte prozedur oder das hier beschrieben sql bereinigen?

    dank und gruss

    • Bei nem frisch aufgesetzten OS X würde ich zuerst die alte Prozedur mit dem Löschen des Indexes probieren.

      Erst wenn das, aus welchen Gründen auch immer, fehlschlägt, nimm die hier beschriebene Methode.

      • der index ist aber recht alt, halt vom alten system und da von 10.6
        trotzdem erst löschen versuchen?

        lg

        • Vielleicht liegt genau da das Problem. Lösch ihn einfach. Da kann ja nix kaputt gehen. Die Mails liegen ja auf dem Server.

          • ausser die zwangs icloud mail habe ich aus prinzip keine imap accounts

            bequemlichkeit geht in diesem zwingherrensystem IMMER zu unseren ungunsten!!!
            werden alle in den kommenden jahren bitter zu spüren bekommen….