You are hereinternet / email / mailserver / maildir

maildir


mu - maildir utils

Ik zag deze tweet passeren van @DriesBultynck:
zoekt nog steeds een manier om een reeks mails uit gmail te exporteren naar excel (incl. date + content). Niemand?

Volgens @haploc zou dat wel moeten lukken met Perl, Email::Simple en Spreadsheet::SimpleExcel. Aangezien ik niet zo vlot ben met Perl, heb ik een andere oplossing gezocht en gevonden: mu (kort voor Maildir Utils).

Helaas heeft mu geen kant-en-klaar pakket voor Debian dus moet het van source geïnstalleerd worden.

cd download
wget http://mu0.googlecode.com/files/mu-0.9.7.tar.gz
tar -xvf mu-0.9.7.tar.gz
cd mu-0.9.7

Op mijn systeem ontbraken nog een paar dependencies, met een paar keer ./configure te draaien heb ik ze kunnen achterhalen:

sudo apt-get install build-essential libglib2.0-dev libgmime-2.4-dev libxapian-dev xdg-utils guile-1.8-dev libgtk2.0-dev

Daarna mu configureren:

./configure

Als alles goed gegaan is, dan krijg je op het einde ongeveer zo'n output:

mu configuration is complete.
-----------------------------
Xapian version                       : xapian-config - xapian-core 1.2.3
GLib version                         : 2.24.2
GMime version                        : 2.4.14
GTK+ version                         : 2.20.1
GIO version                          : 2.24.2
Guile version                        : 1.8.7

Build unit tests (glib >= 2.22)      : yes
Build 'mug' toy-ui (requires GTK+)   : yes
McCabe's Cyclomatic Complexity tool  : yes
xdg-open                             : /usr/bin/xdg-open

Have direntry->d_ino                 : yes
Have direntry->d_type                : yes
-----------------------------

Daarna builden en installeren:

make
sudo make install
cd

Klaar? Bijna. mu werkt door een maildir te indexeren als een database, waar je dan queries op kan loslaten. Voor het indexeren gaat mu uit van een aantal zinnige defaults dus het is niet meer dan:

mu index

Afhankelijk van de grootte van de maildir kan dit even duren. Alhoewel. Bij mij viel het nog best mee:

time mu index
mu: indexing messages under /home/amedee/Maildir [/home/amedee/.mu/xapian]
/ processing mail; processed: 69736; updated/new: 69736, cleaned-up: 0
mu: elapsed: 210 second(s), ~ 332 msg/s
mu: cleaning up messages [/home/amedee/.mu/xapian]                                                                                                              
\ processing mail; processed: 69736; updated/new: 0, cleaned-up: 0
mu: elapsed: 2 second(s), ~ 34868 msg/s

real    3m32.500s
user    1m21.021s
sys     0m7.692s

Als je mu regelmatig gebruikt, dan is misschien geen slecht idee om mu index toe te voegen als cron job.

Nu mu geïnstalleerd is, kan je queries draaien zoals

mu find "iText" --format=xml > mu-iText.xml

Dit geeft bij mij als output:

<?xml version="1.0" encoding="UTF-8" ?>
<messages>
        <message>
                <from>1T3XT BVBA &lt;info [at] 1t3xt [dot] info&gt;</from>
                <to>Post all your questions about iText here &lt;itext-questions [at] lists [dot] sourceforge [dot] net&gt;</to>
                <subject>Re: [iText-questions] Adding watermark in front of the page    background color</subject>
                <date>1323524095</date>
                <size>7149</size>
                <msgid>4EE35FFF [dot] 6070006 [at] 1t3xt [dot] info</msgid>
                <path>/home/amedee/Maildir/.mailinglijst.itext-questions/cur/1323524308.25506_3.intrepid:2,</path>
                <maildir>/.mailinglijst.itext-questions</maildir>
        </message>
        <message>
                <from>Balder VC &lt;lists [at] redlab [dot] be&gt;</from>
                <to>itext-questions [at] lists [dot] sourceforge [dot] net</to>
                <subject>Re: [iText-questions] XMLWorker &amp; RTL</subject>
                <date>1323524276</date>
                <size>7769</size>
                <msgid>4EE360B4 [dot] 8040008 [at] redlab [dot] be</msgid>
                <path>/home/amedee/Maildir/.mailinglijst.itext-questions/cur/1323524480.9255_3.intrepid:2,</path>
                <maildir>/.mailinglijst.itext-questions</maildir>
        </message>
        <message>
                <from>Balder VC &lt;lists [at] redlab [dot] be&gt;</from>
                <to>Post all your questions about iText here &lt;itext-questions [at] lists [dot] sourceforge [dot] net&gt;</to>
                <subject>[iText-questions] Fwd: Re:  XMLWorker &amp; RTL</subject>
                <date>1323525006</date>
                <size>19787</size>
                <msgid>4EE3638E [dot] 7020708 [at] redlab [dot] be</msgid>
                <path>/home/amedee/Maildir/.mailinglijst.itext-questions/cur/1323525223.17054_3.intrepid:2,</path>
                <maildir>/.mailinglijst.itext-questions</maildir>
        </message>
</messages>

Meer voorbeelden van queries zijn te vinden op de mu cheatsheet.

Nu is het gewoon nog een kwestie van:

  1. Een lokale IMAP-server installeren die Gmail binnentrekt (zelf ben ik nogal fan van Dovecot)
  2. De gepaste query verzinnen, met XML output.
  3. De XML-file binnentrekken in een spreadsheetprogramma.

Voila, dit is één mogelijke oplossing.

Inbox Zero: munin plugin

Wat voor zin heeft het dat ik Inbox Zero loop te verkondigen als ik het zelf niet in de praktijk breng? Ik zit momenteel met een mesthoop van meer dan 1000 emails.

Om de voortgang van mijn opkuis te zien, heb ik een munin plugin geschreven dat het aantal mails in mijn Inbox maildir telt:

#!/bin/sh
#
# Plugin to monitor Inbox size, for a selected set of users
#
# Usage: Place in /etc/munin/node.d/ (or link it there  using ln -s)
#        Add this to your /etc/munin/plugin-conf.d/munin-node:
#               [inboxzero]
#               user root
#               env.USERS amedee annette
#
#        amedee and annette being a list of the users to monitor.
#        You need to also make sure that awk is installed
#
# 2010-10-03 v 1.0 dungheap:    first version
#
#
# Parameters understood:
#
#       config   (required)
#       autoconf (optional - used by munin-config)
#

#%# family=manual
#%# capabilities=autoconf

if [ "$1" = "autoconf" ] ; then
        if [ -n "$USERS" ] ; then
                echo "yes"
        else
                echo "\$USERS not defined."
        fi
        exit
fi

if [ "$1" = "config" ] ; then
        echo "graph_args --base 1000 --lower-limit 0";
        echo "graph_scale no";
        echo "graph_title Inbox size, by user";
        echo "graph_category mail";
        echo "graph_info This graph shows the number of remaing mails in the Inbox, for monitored users.";
        echo "graph_vlabel number of mails";
        echo "graph_order $USERS";
        for USER in $USERS ; do {
                echo "${USER}.label ${USER}";
                echo "${USER}.type GAUGE";
                echo "${USER}.min 0";
        }
        done;
        exit;
fi

for USER in $USERS ; do {

        find /home/${USER}/Maildir/???/* 2>/dev/null | wc -l |
        awk -v user="$USER" '
        BEGIN {
                INBOX=0
        }

        {
                INBOX+=$0
        }

        END {
        print user".value", INBOX;
        }'
}

done;

Dit geeft als resultaat:



Mbox mailboxen omzetten naar Maildir

Ik gebruik Dovecot met maildir, en heel af en toe moet ik eens een mbox-bestand herverwerken zodat de mail op de juiste plaats beland:

 formail -b -s procmail -m ~/.procmailrc < $mailfile

waarbij $mailfile in mbox-formaat is.

 

Meer info hier.

Reclame... ;-)

Met dank aan
  • Jasmina
  • Celine
  • Pieter
  • Jeff
  • Hans
  • Jurgen
  • Jurgen
  • Marijke
  • Amedee
  • Erik
  • Danny
  • Sofie
  • Lars
  • Christophe
  • Peter
  • Jeroen
  • Jurgen
om mij een gratis herlading twv €15 te bezorgen!

Waar ben ik?