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

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Mandriva gibt Distribution in die Hände der Community
(268 Punkte bei 24 Stimmen)
Neues vom Systemd
(161 Punkte bei 4 Stimmen)
Mandriva in Nöten
(161 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

904 Hits
Wertung: 0 Punkte (0 Stimmen)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 06/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

Adobe AIR
Adobe-AIR-Programme installieren und (manuell) starten
Tim Schürmann, 14.05.2012 13:09, 0 Kommentare

Es gibt sie noch: neue Anwendungen, die Adobes Integrated Runtime voraussetzen. Aktuellstes und vermutlich auch größtes Beispiel ist das Adventure Botanicula

Aktuelle Fragen

gibt es ein Kommandozeilen Tool, um ein X11-Fenster in ein Anderes einzubetten?
GoaSkin , 21.05.2012 16:44, 0 Antworten
Das XEmbed-Protokoll ist u.A. dazu gedacht, dass man eine X11-Anwendung in eine andere wie ein Wi...
Apache2, Options -Indexes geht nicht
no no, 12.05.2012 19:01, 8 Antworten
Habe in apache2.conf folgendes stehen: Options -Indexes ...
LInux auf Dell LS H500
Andreas Endresl, 09.05.2012 08:54, 2 Antworten
Habe einen alten Dell Latitude LS H500 nur mit ext. Floppy und CD es geht nur immer eines von den...
Datenwiederherstellung unter Ubuntu 12.04 mit "Simple Backup" nach Umzug von Linux Mint
Christian Lottmann, 07.05.2012 13:33, 0 Antworten
Vor dem Umzug auf Ubuntu 12.04 habe ich unter Linux MInt mit "Simple Backup" voll (15.4.2012) und...
DKMS für den propritären NVIDIA-Treiber
Commander Data, 26.04.2012 22:02, 2 Antworten
Hallo an die Gemeinde. Ich habe hier ein interessantes Stück openSuSE gefunden. http://forums.op...