Home / LinuxUser / 2003 / 09 / Mailfolder in der Shell durchsuchen

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

War doch klar...
(243 Punkte bei 15 Stimmen)
Re: War doch klar...
(179 Punkte bei 5 Stimmen)
Re: Skype für 64-Bit-Prozessor u. Suse 12.1
(161 Punkte bei 4 Stimmen)
Kubuntu verliert Finanzierung
(130 Punkte bei 4 Stimmen)
Offen fürs Geschäft
(80 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Shopping
Topsuche
 
Yatego Deutschlands größte Shoppingmall. 10000 Shops,
3.5 Mio Artikel. Alle Bestseller, Servertechnik und Technik Themenwelten.

Notebooks und Netzwerkhardware bei Mercateo günstig kaufen.
Internet Telefonie mit VoIP Telefonen von Gigaset
Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.
Günstige Digitalkameras finden Sie im Preisvergleich.

Hide & Seek

Mailfolder in der Shell durchsuchen

01.09.2003 Grepmail findet mit einer Hand voll Optionen in Ihren Mail-Ordnern beinahe alles. Neben dem Kommandozeilen-Interface gibt es für die Software auch eine grafische Oberfläche.

Das Rezept, um RPM-Pakete zu bauen, enthielt welche Optionen? Und wie lautete die URL, die sich nun unauffindbar in einem Stapel Nachrichten versteckt? Als Anwender, der mehr als ein paar Mails pro Tag bekommt und nebenbei auch noch Mailing-Listen bezieht, kennen Sie dieses Problem. Mit grepmail haben Sie jedoch ein flexibles Tool zur Hand, mit dem Sie selbst im dicksten Mail-Ordner den Überblick behalten.

Quellen und Installation

Inzwischen dürfte jede der großen Distributionen eine Version des beliebten Suchprogramms an Bord haben. Sollten Sie auf Ihren CDs nichts entdecken, können Sie sich unter [1] ein entsprechendes Paket suchen. Als Alternative steht Ihnen ein Tar-Archiv [2] zur Verfügung.

Die zweite Möglichkeit können wir Neueinsteigern allerdings nicht mit gutem Gewissen empfehlen. Ein Blick in die Datei README, die dem gezipptes Archiv beiliegt, macht schnell klar, warum: grepmail ist ein Perl-Skript und benötigt verschiedene Perl-Module. Diese müssen Sie unter Umständen aus dem Internet ziehen [3] und ohne Distributions-Tools wie YaST installieren. Aus diesem Grunde wollen wir auf die Installation aus dem Tar-Archiv nicht weiter eingehen. Fortgeschrittenen Anwendern legen wir die hervorragend dokumentierte README-Datei ans Herz.

Mehr Interna zum Programm finden Sie auf der Homepage des Projektes [4]. Dort liegen auch Add-Ons bereit, die Sie mit Mailern wie mutt, Gnus oder pine verwenden können.

Bevor wir loslegen, noch ein Hinweis: grepmail arbeitet ausschließlich mit Mbox, dem traditionellen Unix-Format für Mailfolder. Das bedeutet, dass jede Mailbox aus einer Datei besteht. Darin liegen die einzelnen Nachrichten durch eine Leerzeile voneinander getrennt. Die Formate Maildir oder MH hingegen verwenden pro E-Mail eine seperate Textdatei [5] zur Speicherung.

Wenn Sie also mit grepmail experimentieren möchten und bis dato Maildir oder MH verwenden, müssen Sie Ihre Post ins Mbox-Format konvertieren – natürlich nicht, ohne zuvor ein Backup Ihrer Mails zu erstellen.

Als kleiner Trost für die Konvertierungsarie ist das Such-Tool dafür in der Lage, sich durch archivierte und komprimierte Mbox-Dateien zu wühlen.

Abbildung 1: Hilflos vor dem Mailer: Wer soll da was finden?

Suchet, und Ihr werdet finden!

Nehmen wir gleich mit ein Beispiel aus der Zeitgeschichte. Wie oft und in welchen Mail-Ordnern wurde das Wort Steuern erwähnt?

[andreas]~ > grepmail -rb Steuern ~/mail/*
/home/andreas/mail/gerd: 0
[…]
/home/andreas/mail/linux: 0
/home/andreas/mail/linux-debian: 0
/home/andreas/mail/linux-suse: 1
/home/andreas/mail/linux-user: 0
/home/andreas/mail/mbox: 0
/home/andreas/mail/michael: 0
[…]
/home/andreas/mail/zwortwaal: 0

Einmal. Und zwar im Ordner, der zur SuSE-Mailing-Liste gehört. Sehen wir uns die Optionen des Befehls grepmail näher an. Das -r zeigt uns den Fundort und die Häufigkeit des Suchwortes Steuern an. Mit -b beschränkt das Tool seine Suche auf die Textkörper (body) der Nachrichten. Als nächstes nutzen wir den Parameter -h, um nur die Header der Mail in die Suche einzubeziehen. Wir möchten wissen, wie oft der Mailer Gnus verwendet wurde:

[andreas]~ > grepmail -rh "User-Agent: Gnus" ~/mail/* | grep -v " 0$" 
/home/andreas/mail/gerd: 5
/home/andreas/mail/gmx: 1
/home/andreas/mail/linux: 20
/home/andreas/mail/linux-debian: 11
/home/andreas/mail/linux-suse: 5
/home/andreas/mail/mbox: 6
/home/andreas/mail/netzliteratur: 8
/home/andreas/mail/posted: 64
/home/andreas/mail/sent-mail: 333
/home/andreas/mail/sudelbuch: 4
/home/andreas/mail/xtest: 3

Da uns eine Null als Ergebnis nicht interessiert, haben wird die Ausgabe von grepmail in eine Pipe geschrieben. Der Output wird durch den Befehl grep geleitet, der jede Ausgabe mit einer Null unterdrückt. Das Verwenden von Pipes, um Programme miteinander zu verketten, ist eine Stärke der Kommandozeilen-Tools. So erhalten wir mit dem Befehl…

[andreas]~ > grepmail -b "spam" linux-debian | grep "^From: " | sort > liste.txt

…eine alphabetisch geordnete Liste aller Absender des Mailfolders ~/mail/linux-debian, die das Wort spam im Textkörper der Nachricht tragen. Neu am obigen Kommando ist, dass wir statt eines kompletten Pfades zur Mailbox (~/mail/linux-debian) den Ordner selbst (linux-debian) angegeben haben. Grepmail schaut nämlich von sich aus in die Verzeichnisse ~/Mail, ~/mail oder orientiert sich an der Umgebungsvariablen $MAIL.

Abbildung 2: In welchen Mailfoldern steckt die URL?

Um die Mails als Ganzes zu lesen, können Sie die Ausgabe durch einen Pager wie less oder more leiten:

[andreas]~ > grepmail -b -d"between today and 4/15/2003" "spam" sent-mail | less

Auch hier suchen wir wieder nach spam im Text der Nachrichten – diesmal jedoch nur in Mails im Absendezeitraum zwischen heute und dem 15. April 2003. Die Option -d versteht eine Reihe von Zeitdefinitionen. Sie reichen von yesterday über 3 weeks ago bis zum genauen Kalenderformat Monat/Tag/Jahr. Auch ein before, since oder after vor einer Zeitangabe bereitet dem Tool keine Schwierigkeiten.

Nun ist das Lesen von E-Mails mit einem Pager alles andere als angenehm. Beispielsweise zeigt er Umlaute, die quoted-printable kodiert sind, nicht korrekt an. Abhilfe schafft hier das Umleiten der Suchtreffer in eine neue Mbox-Datei:

[andreas]~ > grepmail -mbi yast ~/mail/* > mbox_neu

In diesem Beispiel fahnden wir in allen Mailboxen (~/mail/*) nach dem SuSE-Tool yast. Die Option -i steht für case-insensitive. Das bedeutet: Gleichgültig ob YaST, YAST oder yAst, es wird jede Groß- und Kleinschreibung im Wort akzeptiert. Das -m fügt in die Kopfzeilen jeder Nachricht einen so genannten X-Header ein, der anzeigt, aus welchem Folder die Mail stammt:

X-Mailfolder: /home/andreas/mail/linux-suse

Die Ausgabe lassen wir in die Datei mbox_neu im aktuellen Verzeichnis schreiben. Mutt [6] zeigt dann den Inhalt an (Abbildung 3):

[andreas]~ > mutt -f mbox_neu

Abbildung 3: Die Ausgabe von grepmail mit Mutt

Die Option -v des folgenden Beispiels haben Sie bereits kennen gelernt. Nur betraf sie oben im Text den Befehl grep, um die Nullen von der Ausgabe abzugrenzen. Jetzt kopieren wir alle Mails der Mailbox ~/mail/linux in die Datei mbox_neu – mit Ausnahme von Nachrichten, die durch Microsoft Outlook und Yahoo Groups Message Poster erstellt wurden:

[andreas]~ > grepmail -hv "X-Mailer: (Microsoft Out|Yahoo Groups)" ~/mail/linux > mbox_neu

Auf ähnliche Art und Weise entfernen wir Doubletten, also doppelte Nachrichten, aus einer Mailbox:

[andreas]~ > grepmail -u ~/mail/gmx < mbox_neu

grepmail orientiert sich dank der Option -u an der Eindeutigkeit jeder Message-ID in der Mailbox. Ein Vergleichstest, der die Gesamtzahl der Nachichten im Folder anzeigt, verrät, dass in der Datei mbox_neu eine E-Mail aussortiert wurde:

[andreas]~ > grepmail -r . ~/mail/gmx
/home/andreas/mail/gmx: 7
[andreas]~ > grepmail -r . mbox_neu
mbox_neu: 6

Freilich beherrscht das Programm auch das Hantieren mit Größen. Der Parameter -s gibt die Höchstgrenze in Bytes an:

[andreas]~ > grepmail -ri -Y "^TO:" debian -s 4000 ~/mail/* | grep -v " 0$"
/home/andreas/mail/linux-debian: 20
/home/andreas/mail/sent-mail: 13

Nehmen wie das Kommando Stück für Stück auseinander. Mit den Optionen -r und -i haben Sie bereits Bekanntschaft geschlossen. Der Abschnitt -Y "^TO:" debian ist die Abkürzung des ellenlangen Such-Strings "^((Original-)?(Resent-)?(To|Cc|Bcc)|(X-Envelope|Apparently(-Resent)?)-To):.*debian", der mit dem Parameter -h ausgeführt wird. Er passt auf so ziemliche jede Zieladresse im Header, die den Namen der Linux-Distribution enthält. Das -s 4000 beschränkt die Suche schließlich auf Nachrichten unter 4000 Bytes.

Damit sind wir schon fast am Ende unserer Experimente mit grepmail. Weitere Optionen und Shortcuts zu regulären Ausdrücken finden Sie mit dem Befehl man grepmail im Handbuch. Zu guter Letzt riskieren wir noch einen Blick auf das Add-On grepm[7] und das Frontend gtkgrepmail.

Abbildung 4: Gtkgrepmail bietet die Suche in den Mails unter einer grafischen Oberfläche an

Einem Freund empfehlen    Druckansicht Bookmark and Share
Kommentare

724 Hits
Wertung: 0 Punkte (0 Stimmen)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 03/2012

Aktuelle Ausgabe kaufen:

Heft bestellen Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,50 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 56,10) können Sie im LNM-Shop bestellen.

Tipp der Woche

Duden Korrektor unter 64-Bit
Duden Korrektor unter 64-Bit
Tim Schürmann, 06.02.2012 10:36, 0 Kommentare

Der Duden Korrektor bietet eine äußerst nützliche Rechtschreib- und Grammatikkorrektur für LibreOffice und bringt in der aktuellen Version 8 e...

Aktuelle Fragen

Ubuntu 11.10 Compiz 3D Cube flackern
Moritz Obenauer, 12.02.2012 12:25, 0 Antworten
Hallo! Ich habe Ubuntu 11.10 mit Unity und den Compiz 3D Cube ein gerichtet. Er funktioniert...
Suse 12.1 Bootvorgang bleibt seit Update stehen
Wimpy *, 12.02.2012 09:22, 1 Antworten
Seit Update auf Kernel 3.1.9-1.4-desktop i686 bleibt der Bootvorgang stehen. Es erscheint der gr...
N24 Stick (Huawei E173) und Ubuntu 11.04
Patrick Obenauer, 11.02.2012 11:54, 1 Antworten
Hallo zusammen! Ich benutze einen alten Laptop, der mit Ubuntu 11.04 flott und problemlos läuft....
Wie kann man beim Einsatz von Compiz die Fenster-Dekoration einstellen?
GoaSkin , 10.02.2012 20:12, 0 Antworten
Hallo, ich nutze Linux Mint mit dem Gnome-Derivat Mate. Da die Distribution Compiz nicht autom...
rndc reload zone - failed bad zone
Ludwig jun. B., 06.02.2012 16:08, 2 Antworten
Schönen guten Tag, ich habe folgendes Problem. Immer wenn ich folgendes Kommando ausführen bek...