Skip to content

Tip #14: E-Mails mit mutt automatisch verschlüsseln

Ich sinniere schon seit einiger Zeit, wie ich ausgehende E-Mails weitgehend automatisch verschlüsseln kann. Vor längerer Zeit stiess ich dabei auf das Perlskript von Martin Grandrath. Auf der Seite ist gut beschrieben, wie das einzurichten ist. Das problem am Skript ist die relativ lange Startzeit. Es vergehen in der regel mehrere Sekunden bis mutt einsatzfähig ist.

Vor kurzem unterhielt ich mich mit Jörg Sommer darüber. Er hat eine Lösung mit zsh-Mitteln gebastelt. Diese ist zudem noch wesentlich schneller als die obige Variante:


#!/bin/zsh

hook_name=send-hook
blacklist_file=$HOME/Mail/crypt_blacklist
output_file=$HOME/Mail/crypt_hook_list

setopt extendedglob

gpg_dump=( ${(f)“$(gpg --list-keys --with-colons)”} )

# filter out lines without @
people=( ${(f)"$(for line in ${(M)gpg_dump:#(pub|uid):*@*}; do 
  print ${“${(@s.:.)line}”[10]}; done)"} )

typeset -a -U addresses
# possible bad lines:
# • email@example.com  -- only an address
# • name (<…>) 
addresses=( ${${people%>}##*<} )

[[ -r $blacklist_file ]] &&
  addresses=( ${addresses:#${(j:|:)~${${(f)"$(<$blacklist_file)"}:#\#*}}} )

print -l "$hook_name\t~A\tunset crypt_autoencrypt" \
  "$hook_name\t'~t \""${(j:|:)addresses//./\\\\.}"\"'\tset crypt_autoencrypt" \
  > $output_file

Was macht das Skript? Anfangs werden zunächst ein paar Variablen festgelegt und das erweiterte Globbing der zsh eingeschalten. In der Variable gpg_dump wird alsdann die Ausgabe von gpg --list-keys --with-colons gespeichert. Nun folgt ein wenig zsh-Magic. ;-) Die Anweisung hinter people entspricht in etwa der Shellzeile awk -F: ‘/^(pub|uid)/ { print $10 }’ gpg_dump, d.h. dort liegen dann alle E-Mail-Adressen, die auf den Schlüsseln angegeben waren. Schließlich wird für alle Adressen auf der Blackliste ein enstprechender Eintrag erzeugt und die Konfiguration in die Variable output_file geschrieben.Die Adressen in der Blackliste werden entfernt. Was übrig bleibt, schreibt das Skript in Datei, deren Name in output_file gespeichert ist. Dabei muss man beachten, dass mutt nicht unendlich viele Einträge akzeptiert. Es scheint eine Begrenzung irgendwo bei 200 Einträgen zu geben.

Das ist aus meiner Sicht eine gute Alternative zu Martins Skript. Solltet ihr Anmerkungen, Fragen, Kommentare haben, schreibt mir es unten rein oder schreibt direkt eine E-Mail an Jörg.

Update: Eine Zeile im Beitrag war ungenau formuliert. Nach einem Hinweis von Jörg habe ich das verbessert.

Das deutsche zsh-Buch ist da

Cover des zsh-Buches

Beim Schlendern durch eine Bücherei fiel mir gestern, das quasi druckfrische Buch “zsh -- Die magische Shell” auf. Seit einiger Zeit schrieben Julius Plenz und Sven Guckes daran und seit etwa einer Woche ist es im Handel erhältlich.

Im Buch geht es natürlich um die beste Shell der Welt, die zsh. Auf sechs Kapiteln in insgesamt 200 Seiten wird (hoffentlich) alles Wissenswerte gesagt. Hoffentlich deswegen, weil ich das Buch noch nicht komplett gelesen habe. Sobald ich durch bin, werde ich sicher eine Rezension dazu schreiben.

In der Einleitung finden sich kurze Hinweise zur Installation, Konfiguration und zum Prompt. Das zweite Kapitel beschäftigt sich dann mit dem effizienten Arbeiten. Es werden Aliase, Shell-Funktionen und Expansionen erklärt. Der Name des dritten Kapitels “Dateien, Ausgaben und Programmaufrufe” ist selbsterklärend. Kapitel 4 erklärt die interaktive Verwendung und Kapitel 5 das Skripting. Das letzte Kapitel des Buches beschreibt, wie Completions und Widgets selbst geschrieben werden können.

Ich bin sehr gespannt und freue mich, das Buch zu lesen. :-)

Neue Hardware

Der Titel verrät es. Ich habe neue Hardware und zwar für meinen Rechner. Mal wieder kündigte eine Festplatte ihren Tod an und nach kurzem Überlegen entschloss ich mich zu einem Upgrade.

Festplatten sind in meinem Rechner permanent ausfallgefährdet. Deren Lebenszeit liegt bei unter einem Jahr und das, obwohl ich diese nicht besonders beanspruche. Hier liegen momentan zwei kaputte Western Digital, eine Hitachi und eine Seagate (eher “Siegehtnicht”) sowie noch eine, bei der ich wegen des Herstellers nicht mehr sicher bin. Alles sind IDE-Platten. Jetzt steckt eine Hitachi SATA-Platte im Rechner. Ich bin gespannt, wie lange die halten wird.

Neben der Festplatte habe ich mir ein GB mehr RAM gegönnt und vor allem die CPU auf einen neuen Stand gebracht. Vorher war hier ein 1 GHz Athlon am Werkeln. Jetzt versucht sich ein Athlon64 Dual Core. Momentan bin ich noch dabei, Backups einzuspielen, Daten neu zu strukturieren und auch einige neue Software einzustellen. Daher habe ich noch nicht alles austesten können. Jedoch fühlt sich der Rechner wirklich schneller an.

Montage des Ruby Orb

Eine Herausforderung war die Montage des Lüfters. Die CPU sollte durch einen Thermaltake Ruby Orb gekühlt werden. Laut der Spezifikation versprach der Lüfter leise zu sein und dabei viel Luft durchzupusten. Als ich ihn dann in der Hand hielt, staunte ich nicht schlecht. Von der Größe her, sah es so aus, als ob man eher einen Hubschrauber antreiben kann. ;-) Zum Einbau werden zwei Schellen in das Motherboard geschraubt. Darauf kommt dann der Lüfter. Die Schrauben am Lüfter, die auf die Schellen geschraubt werden, sind mit relativ starken Federn versehen. Da der Lüfter zusätzlich auf der mit Wärmeleitpaste versehenen CPU hin- und herrutscht, ist es sehr schwer, die Löcher zu treffen. Wenn ihr das Teil in eure Rechner verbauen wollt, empfehle ich, das zu zweit zu machen. Ich hätte mir einen dritten Arm oder eine helfende Hand gewünscht.

Nach dem Anschalten fängt der Lüfter an, rot zu leuchten. Für Case-Modder ist der wohl auch geeignet. Und er ist ist wirklich leise. Mein Rechner läuft seit einiger Zeit mit einer Load von mehr als vier und beide CPU-Kerne sind beschäftigt. Vom Lüfter ist dennoch kaum etwas zu hören.

Momentan bin ich mit der Wahl der Hardware also recht zufrieden und hoffe, dass diese (inklusive der Festplatte) mich wieder ein paar Jahre aushält.

Tip #13: Dateien mit gleichen Namensbestandteilen löschen

Ich habe in einem Verzeichnis verschiedene Dateien:

jens@tacop:~/ > ls
abc.bar+bar abc.bar+foo abc.foo+bar abc.foo+baz abc.foo+foo

Nun möchte ich alle Dateien löschen, die vor und nach dem + das gleiche Wort haben, in dem Beispiel also abc.bar+bar und abc.foo+foo. Ich hatte die Hoffnung, dass das die zsh von Haus aus können könnte. Auf der Mailingliste zsh-users erhielt ich die erlösende Antwort:

rm *(e:’[[ $REPLY = abc.(#b)(???)+(???) ]] && [[ $match[1] = $match[2] ]]’:)

Selbst zerlegt

Vor ein paar Tagen verlinkte ein Witzenewsletter auf eine meiner Unterseiten. Interessanterweise führte das zu einen großen Anstieg in den Seitenabrufen und ich bekam doch einige Kommentare per Webformular bzw. E-Mail, was sonst eher selten ist. Auf der Seite geht es um ein fiktives Apple-Produkt, die iToilet.

Einer fand die Seite nicht lustig und beschwerte sich lauthals bei mir, dass das so überflüssig wie ein Kropf sei und ich die Seite abmelden solle usw. Das schlimmste Schimpfwort, was ihm dazu einfiel, war: Windowsdepp. Hmm, was sagte sein User-Agent gleich nochmal?

Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14

Do not reply DOT com

Habt ihr schonmal E-Mails mit der Reply-To-Adresse blablabla@donotreply.com bekommen? Nach den Worten von Securityfix scheint das bei amerikanischen Unternehmen üblich zu sein. Ein Unternehmen sendet eine E-Mail raus und möchte keine Antwort bekommen. Also nutzen sie halt als Returnadresse meinunternehmen@donotreply.com. Aber wie das nun mal mit Domainnamen so ist, gehört diese einer anderen Person. Chet Faliszek, der Eigentümer von donotreply.com, postet in seinem Blog They Told You Not To Reply einige interessante E-Mails, die er erhielt. In einigen Fällen versucht er auch die Unternehmen zu warnen, nicht derartige Reply-To-Adressen zu verwenden und erhält merkwürdige Reaktionen:

I’ve had people yell at me, saying these e-mails are marked private and that I shouldn’t read them

Vielleicht sollten die Unternehmen lieber über ihre eigenen Methoden nachdenken.

cronjob