• [^] # Re: Mail.app fait comme ca

    Posté par . En réponse au journal Maildir, Mbox et autres. Évalué à 2.

    Complètement HS, mais j'ai remarqué y'a peu que Mail.app utilise une base sqlite pour stocker tout un paquet d'informations. Fermer l'application, puis aller dans ~/Library/Mail/ et ouvrir avec sqlite3 le fichier "Envelope Index".

    On trouvera notamment la liste des adresses mails utilisées pour les auto complétions...

    sqlite> .schema
    CREATE TABLE addresses (ROWID INTEGER PRIMARY KEY, address, comment, UNIQUE(address, comment));
    CREATE TABLE attachments (ROWID INTEGER PRIMARY KEY, message_id INTEGER, name, type, UNIQUE(message_id, name));
    CREATE TABLE mailboxes (ROWID INTEGER PRIMARY KEY, url UNIQUE);
    CREATE TABLE messages (ROWID INTEGER PRIMARY KEY AUTOINCREMENT, message_id, in_reply_to, remote_id INTEGER, sender INTEGER, subject_prefix, subject INTEGER, date_sent INTEGER, date_received INTEGER, date_last_viewed INTEGER, mailbox INTEGER, remote_mailbox INTEGER, original_mailbox INTEGER, flags INTEGER, read, flagged, size INTEGER, color, encoding, pad);
    CREATE TABLE properties (ROWID INTEGER PRIMARY KEY, key, value, UNIQUE (key));
    CREATE TABLE recipients (ROWID INTEGER PRIMARY KEY, message_id INTEGER, type, address_id INTEGER);
    CREATE TABLE sqlite_sequence(name,seq);
    CREATE TABLE subjects (ROWID INTEGER PRIMARY KEY, subject);
    CREATE TABLE threads (ROWID INTEGER PRIMARY KEY, message_id INTEGER, reference, is_originator);


    addresses <= liste des mails stockés
    attachments <= lien entre un message et un nom de piece jointe
    mailboxes <= structure des mailbox (répetoires etc.)
    etc.

    Attention quand même à bidouiller avec modération, c'est du sqlite donc ça ne gère pas les clés étrangères, et je ne sais pas l'impact que peut avoir la suppression d'éléments dans une ou autre des tables sans nettoyer derrière les autres tables.

    M'enfin ça ouvre de belles perspectives à qui veut récupérer les adresses mails des contacts d'un utilisateur lambda sous macos, pour peu qu'on ait un accès en local sur la machine. Cela dit, il faut aussi voir que ces bases existent aussi sous thunderbird etc., c'est juste facile à trouver ici ^^