Monthly Archives: November 2007

SMTP-DSN: Warum einfach …

… wenn es auch kompliziert geht.

Hintergrund ist folgender: Ich habe für eine Plattform ein Mailinglisten-System implementiert. Das war notwendig, weil es dort sehr spezielle Regeln zur Generierung der Empfänger gibt, die jedes Mal dynamisch angewendet werden müssen. Bestandteil dieses System ist natürlich auch die Erzeugung von Bounces, um Fehler und Ausnahmezustände mitzuteilen.

Dabei ist mir etwas aufgefallen: Es gibt drei nette RFCs, die sich mit dem Format dieser Delivery Status Notifications (DSN oder kurz Bounce) beschäftigen:

Diese Konventionen regeln, wie eine Bounce-Message aufgebaut ist, wie die Informationen abgelegt werden, welche Fehlercodes es gibt und so fort.

Und nun kommt unser kompliziertes Leben: Kein Mail User Agent, den ich kenne, wertet die Bounces anhand dieser RFCs aus! Statt dessen bekommt der – mittlerweile oft laienhafte – E-Mail-Nutzer eine kryptische Fehlermeldung zu sehen, die häufig so interpretiert wird, dass die Adresse nicht existiert. Das ist ein beliebter Grund für Bounces, aber oft auch falsch.

Liebe MUA-Programmierer: Warum gibt es keine Ansicht fuer Bounces, in der die Informationen aufgeschlüsselt sind und auch den Nutzern, die E-Mails nicht per telnet lesen können, verständlich gemacht werden? Das würde einen weißen (nein, eigentlich schwarzen) Fleck auf der Landkarte der E-Mail-Kommunikation beseitigen.

Binary H(e)art

binary heart Heute schrieb die ettercat einen Link auf nebenstehenden Comic von xkcd.com ins IRC. Die Seite hat mich schon des öfteren mit wirklich lustigen Comics begeistert, zumal einige nur mit entsprechendem Geek-Hintergrundwissen wirklich lustig sind. Nummer 99 – »binary heart« – trifft vom Untertitel der Seite (»A webcomic of romance,
sarcasm, math, and language.«) klar den romantischen Teil. Aber ganz ehrlich, seid Ihr nicht auch total neugierig, ob sich hinter den Nullen und Einsen im Bild nicht noch eine zusätzliche Botschaft verbirgt? Ich war es jedenfalls und da nur selbst dekodieren schlau macht, hab ich frei nach dem Perl-Motto »Es gibt mehr als einen Weg, etwas zu tun« die Zeichen einzeln abgetippt und ein kleines Skript geschrieben.

Hart (siehe Titel ;-)) war da dran einerseits das Abtippen vom Comic – man verrutscht schon sehr leicht in Zeile und Spalte – und andererseits um Mitternacht die eingerosteten Perl-Kenntnisse zu reaktivieren. Wer sich gern selbst an einem Progrämmchen in beliebiger Sprache probieren will, kann sich die binär codierte Nachricht runterladen, die Textdatei, wo ich mal die Einsen und Nullen abgetippt habe.

Ach und für die ganz Neugierigen oder zur Kontrolle des eigenen Programms hier noch die Auflösung:

iloveyOuilOveyouiloveyOuilOveyOuiloveyouilOveyouilOveyOuilOv

ext3-Dateisystem verkleinern mit Knoppix

Hatte ich schon erwähnt, dass ich im September umgezogen bin? Bin ich, nur in anderes Viertel, aber mit jemandem zusammen in eine neue WG, der wie ich ebenfalls einen kleinen Server zu Haus stehen hatte. Da die Hardware heutzutage leistungsfähig genug ist und Xen zuverlässig läuft, sind wir dabei Schritt für Schritt die Dienste von den beiden ehemaligen Servern auf eine Maschine mit ein paar virtuellen Xen-Hosts zu packen. Da ich ungern an Produktivsystemen neue Dinge ausprobiere, teste ich solche Sachen auf einem anderen Rechner. Gestern hatte ich dank dieser Anleitung auf besagtem Testrechner unter Debian Etch in kurzer Zeit einen laufenden Xen-Wirt eingerichtet. Die 40GB-Platte war dort ungefähr zu gleichen Teilen in /home und / geteilt – klassische Partitionen. Da ich Xen gern mit LVM testen wollte und die Partitionen kaum belegt waren, entschied ich mich für eine Neuaufteilung: 8 GB für das root-Filesystem und der Rest für LVM. Auf dem Testsystem sind außer Testinstallationen keine wichtigen Daten, also die erste Gelegenheit für mich, mal resize2fs auszuprobieren…

Beim Verkleinern einer Partition soll man erst mit resize2fs das Dateisystem (ich benutze eigentlich immer ext3) verkleinern und dann mit fdisk die Partition selbst noch verkleinern. Das Manual sagt, dass die Partition natürlich nicht kleiner gemacht werden soll als das Dateisystem – logisch. Zunächst jedoch will resize2fs nochmal e2fsck aufgerufen haben:

e2fsck -f /dev/hdb3
resize2fs -p /dev/hdb3 8G

Dann habe ich fdisk /dev/hdb aufgerufen, hdb3 gelöscht und neu angelegt. Der vorgeschlagene Beginn der Partition war der gleiche wie zuvor, habe ich extra kontrolliert und dann die Partition mit +8300M neu angelegt. Reboot und siehe da: reicht wohl nicht, es kommt die Beschwerde, dass das Dateisystem 2 097 152 Blöcke hat, die Partition aber nur 2 026 458. Also nochmal Knoppix booten und Partition neu anlegen. Interessant ist dann zunächst die Ausgabe von fdisk -l

fdisk zeigt hier auch Blöcke an, aber die Anzahl ist verschieden zu der, die zuvor e2fsck beim Boot des Systems zeigte – genau genommen exakt viermal so groß. Aber irgendwie stimmt das auch ungefähr mit den 8300 Megabyte von vorhin überein, in Kilobyte versteht sich. Ich habe dann also diesmal beim Neuanlegen der Partition +8388608K angegeben, das vierfache von dem Wert, den das System vorher beim Booten für die Größe des Dateisystem genannt hatte. Der kam wie gesagt ursprünglich von den 8G beim resize2fs. fdisk machte dann ein paar Blöcke mehr draus, als ich Kilobyte eingegeben hatte, umso besser. Da der Kernel noch nichts von der Änderung der Partitionstabelle durch fdisk wusste, lohnte ein e2fsck unter Knoppix nicht und ich hab gleich neu gestartet.

Das Debian etch beschwerte sich dann nicht mehr über ein Filesystem, das größer war als die Partition, ließ aber dennoch einen Check drüber laufen. Der weitere Systemstart verlief problemlos. Das LVM richte ich dann später ein…

happy

Interessant finde ich jedoch noch die Frage, was ich hätte eingeben müssen, um von vornherein die passenden Größen für resize2fs und fdisk parat zu haben, einfach auch 8G bei fdisk wäre nämlich deutlich zu wenig gewesen. Ziel: möglichst wenig Platz auf der Partition verschenken. Wer da Ideen hat, den bitte ich um Kommentare!

Die Auferstehung des Zaurus: Anforderungen

Nach dem ersten Beitrag zu diesem Thema geht es nun um die Anforderungen, die ich an ein mobiles PIM-Gerät stelle. Natürlich beziehe ich mich an dieser Stelle wieder speziell auf meinen Zaurus, jedoch denke ich, dass auch für andere Geräte interessante Anregungen dabei sind.

Ich gehe dabei von drei Aspekten aus:

  • Benutzerfreundlichkeit (im Neusprech auch als Usability bekannt)
  • Sicherheit
  • Aktualität der Daten

Benutzerfreundlichkeit bedeutet dabei, dass sich die Software unterwegs gut bedienen lassen muss, also auf eine vorhersehbare Interaktion und gegebenenfalls auch eine stiftlose Bedienung zugeschnitten ist.

Wer gerade in der Stadt unterwegs ist, möchte nicht ständig den Blick auf dem Display haben, weil die Bedienschritte selbst bei Routineaufgaben ständig unerwartete Wendungen nehmen (einige Mobiltelefone sind mit dieser Interface-Krankheit geradezu verseucht) und auch nicht jedes Mal den Stift herausholen, um nachzuschauen, was am Tag noch ansteht oder einen Punkt auf der TODO-Liste abzuhaken. Das besonders kleine Display und eine mögliche Bedienung des Touch-Screens mit dem Finger müssen bedacht werden.

Genauso wichtig ist aber, dass die Anwendungen selbst auf ihren speziellen Verwendungszweck zugeschnitten sind. Eine Kalenderanwendung wird verwendet, um nachzuschauen, welcher Termin als nächstes ansteht oder um einen Termin zu vereinbaren. Dabei sehe ich immer wieder Anwendungen, die den Prozess der Terminvereinbarung eher behindern als unterstützen: Nicht nur, dass es keine Unterstützung zum Finden freier Termine gibt, häufig wird z.B. auch verlangt, dass erst einmal Betreff und Ort eingegeben werden, bevor es möglich ist, eine Zeit festzulegen. Hier wird missachtet, dass bei der Terminvereinbarung die Zeit im Mittelpunkt steht – die übrigen Metadaten lassen sich selbständig und im Nachhinein ergänzen. Gleiches passierte mir schon regelmäßig beim Anlegen von Kontakteinträgen: Es gibt nicht wenige Mobiltelefone, die zuerst die Eingabe des Namens verlangen, bevor eine Telefonnummer eingegeben werden kann. Wenn ich jedoch das Telefon heraushole, um eine Nummer zu speichern, ist es eben die Nummer, die mir zuerst und vor allen Dingen von meinem Gegenüber diktiert wird. Und diese Nummer möchte ich zuerst speichern können. Das sind Kleinigkeiten, die sich jeoch ganz massiv auf die Zweckmäßigkeit des Gerätes auswirken.

Wichtig für mich ist vor allem eine schnelle Übersicht der Dinge, an die ich zu dem Zeitpunkt denken sollte, zu dem ich auf meinen PDA schaue.

Sicherheit wird dann wichtig, wenn unbefugte Personen Zugriff auf meinen PDA erhalten. Sei es in einem unbeaufsichtigten Moment oder bei Verlust des Gerätes. Schlimmer als die Notwendigkeit, Hardwareersatz und die verlorenen Daten zu beschaffen ist nämlich der Umstand, dass diese Daten in fremden und sehr wahrscheinlich den falschen Händen sind.

Ebenfalls nicht zu verachten ist die Möglichkeit, dass man abends, nachts oder zu einer beliebigen anderen Zeit auf der Straße angehalten und zur Herausgabe seines Gerätes gezwungen wird. Mir ist das zum Glück noch nie passiert, aber bei der Entscheidung Hardware oder Gesundheit gewinnt eindeutig letztere. Wenn es dann möglich ist, die Daten zu entfernen oder wenigstens unzugänglich zu machen, verliert diese Situation an Schrecken.

Wie erreicht man das? Die Lösung setzt sich für mobile Datenträger und auch auf einigen Desktops mittlerweile schon durch: Sämtliche persönlichen oder sensiblen Daten sollten ausschließlich verschlüsselt abgelegt werden. Beim Einschalten des Gerätes muss eine PIN eingegeben werden (unter Berücksichtigung der Benutzerfreundlichkeit), die den Crypto-Container freischaltet. Wer versucht, unbefugt an die Daten zu gelangen, wird nichts vorfinden, was von Nutzen ist. Da der Zaurus über einen SD-Port verfügt, bietet sich an, diesen Container auf einer SD-Karte abzulegen. So sind auch Datensicherungen sehr schnell gemacht, weil nur ein Image der SD-Karte gezogen werden muss. Einen halbwegs intelligenten Räuber kann man vielleicht sogar noch dazu überreden, auf die SD-Karte zu verzichten. So bleiben aktuelle Daten erhalten.

Grundsatz sollte auf jeden Fall sein, keine sensiblen Daten offen und unverschlüsselt zu lassen. Mit einer vernünftigen Verschlüsselung hat der PDA einen gewaltigen Vorteil gegenüber jedem low-tech-Papierplaner.

Aktualität der Daten muss durch entsprechende Synchronisationsverfahren gewährleistet werden. Nur wenn die Daten überall auf dem neusten Stand sind, kann man sich auch auf sie verlassen und auf deren Basis Entscheidungen treffen.

Der Zaurus, wie ich ihn beschrieben habe, hat zwei Schnittstellen: Den USB-Port und eine CF-WLAN-Karte.

Der USB-Port ist in ein Cradle integriert, das auch zum Aufladen des Gerätes verwendet werden kann. Beim Einstellen des Gerätes sollte also ein Abgleich sämtlicher Daten erfolgen. Wenn möglich, vollautomatisch. Auftretende Konflikte sollten an einem beliebigen Gerät gelöst oder später bearbeitet werden können. (Warum schließlich soll ich mich mit dem Mini-Display des PDA abmühen, wenn direkt daneben ein ausgewachsener Desktop-PC steht?)

Die Synchronisation mittels WLAN sollte ähnlich laufen, kann jedoch auch von unterwegs erfolgen. Zu beachten ist hier, dass es auch zu einem Abbruch der Verbindung kommen kann, also eine entsprechende Transaktionsverwaltung nötig ist.

Ziel der synchronen Datenhaltung ist, jede Information auch nur einmal eingeben zu müssen und sie trotzdem an jedem meiner PIM-Geräte zur Verfügung zu haben.

Fazit: Wer sich sein eigenes Handy oder einen handelsüblichen PDA betrachtet, wird schnell feststellen, dass keines der Geräte alle diese Aspekte erfüllt. Spätestens bei der Verschlüsselung wird auf aktive Sicherheit gesetzt und nicht beachtet, dass insbesondere Speichererweiterungen auch am System vorbei ausgelesen werden können. Benutzerinterfaces sind häufig nur verkleinerte Varianten eines Desktops und für kleine Touch-Screens oder die Bedienung mit nur wenigen Tasten ungeeignet. Auch die Synchronisation klappt in den wenigsten Umgebungen reibungslos. Es gibt viel Nachholbedarf, bis ein PDA wirklich effektiver ist, als ein Papierplaner und man mit solch einem Gerät Zeit spart.

Örbenn Ledschänd

Ich hätte es nicht geglaubt, wenn mir jemand anders erzählt hätte, was ich erlebt habe. Ich hätte es als Urban Legend abgetan, in den Bereich dieser neuzeitlichen Mythen, mit denen man so gerne Büros, Stammtische, konspirative Gentoo-Installationsparties und Flashmobs (Fläschmopps — ist das nicht der sprechende Hund von Loriot?) unterhalten kann. Ich hätte mich geweigert, es als wahr zu akzeptieren. Bis eben… (ja, mir ist bewusst, dass ein Absatz wie dieser ebenfalls dazu gehört, wenn man eine fiktive Urban Legend erzählt :-) )

Die Ausgangssituation: Kollege A. beratschlagt sich im Büro mit mir über die Abgründe der gepflegten Zeigerarithmetik und der Typenkonvertierung in der schönen Sprache C(++).

Der Plot: Unsere hitzige Erörterung wird durch Teamassistentin Y. (gelernte Bürokauffrau) unterbrochen, die gerade einige Informationen verteilt. Es dauert keine zwei Minuten, dann kommt Kollege K. herein, der wissen möchte, warum wir gerade über ihn lästern. Kollegin Y. hätte es ja gerade mitgehört und überhaupt fühlt er sich nicht wohl, wenn hinter seinem Rücken Unwahrheiten erzählt werden.

Verdutzt schauen A. und ich uns an und brechen wenige Augenblicke später in schallendes Gelächter aus. Einige Sekunden und eine kurze Erklärung später dann auch der bis dahin sehr konsternierte K.

Meine Worte gegenüber A. waren “Beim Casten passiert leicht mal eine kleine Katastrophe, wenn man nicht höllisch aufpasst.” Und K. heißt Karsten.

Eisfair Entwicklertreffen 2007

Am letzten Wochenende fand das Entwicklertreffen der Entwickler- und Testteams von Fli4l und Eisfair statt. Es waren zwar doppelt so viel Leute von Fli4l da wie von Eisfair, aber für mich war es dann doch eher ein Eisfair-Treffen. Wir hatten sehr viele interessante Gespräche, gute Diskussionen, eine total abgefahrene Keysigning-Party für CAcert und GnuPG (brauch noch jemand Formulare?) und viel Spaß. Ich fand es sehr spannend die Leute auch mal persönlich kennenzulernen, die man sonst nur von E-Mails kennt.

Besonders interessant war die diskutierte Roadmap für Eisfair-2. Vieles davon ist noch intern, einiges sind bisher nur Ideen, aber die Weichen sind gestellt. Es wird zwar kein direktes Upgrade von Eisfair-1 auf Eisfair-2 geben, aber dank Paketen wie Backup-Zip und dem Support in der Newsgroup sollte später auch eine Migration möglich sein. Mit dem Sprung auf Eisfair-2 wird komplett auf UTF-8 umgestellt, wann wenn nicht jetzt?

Außerdem gab’s noch ein paar Anekdoten, wo ich mit meinen jugendlichen 26 Jahren schon gestaunt habe. Ich war schon sehr überrascht, dass Leute Festplatten, die nicht mehr anlaufen, mit einem gezielten Hammerschlag überreden. Dann wurden natürlich alle Daten runter kopiert und die Festplatte danach verschrottet. Jemand anders konnte aber noch einen drauf setzen: Festplatte aufschrauben, die Platten von Hand zum Drehen überreden also quasi anschieben, bei offenem Gehäuse alles runterkopieren, zum Spaß noch auf die ersten Headcrashs warten und dann ebenso in die Tonne. Was will man machen, wenn die Daten wichtig sind und die Motoren zu fest sind zum Anlaufen? *lol*

Alter schützt vor Treibern nicht

Mein aktuelles Bastelprojekt ist ein alter Rechner. Eingebaut ist ein Pentium mit 133 MHz, ein wenig EDO-RAM, eine alte Soundkarte vom Typ Terratec Base 1, 3com Netzwerkkarte und eine große Festplatte, auf der Daten gesichert werden. Für Konsole reicht das gut hin und Musik kann er auch abspielen. Installiert hatte ich Debian Etch.

Die Kiste hängt an einem 17″-Röhrenmonitor, eine Konsole mit 80×25 Zeichen ist nett, aber 800×600 Pixel sind locker drin – immerhin 100×37 Zeichen. Damit lässt sich gut chatten, für E-Mails ist genug Platz und auch im Midnight Commander steigt die Übersicht. Das ganze steht und fällt mit dem dafür nötigen Betrieb der Grafikkarte im Framebuffer-Modus. Bei neuen Karten geht das leicht über den VESA-Treiber, einfach vga=789 an die Kernel-Optionen von Grub angehängt und fertig. Leider ist in dem Rechner eine alte S3 Trio64V+ eingebaut und die unterstützt der VESA-Treiber nicht.

Zum Glück gibt es noch andere Framebuffer-Treiber. Bei der ersten Recherche im Netz stellte sich aber Ernüchterung ein. S3 nur für PPC oder Amiga, warum auch immer. Dann stieß ich auf eine erst ein paar Monate alte Neuigkeit. Da hatte doch tatsächlich jemand für Kernel 2.6.21 noch einen neuen Treiber für die Karte geschrieben. Ich finde das reichlich bemerkenswert, schließlich reden wir hier von einer Grafikkarte aus den späten Neunzigern!

Der Ehrgeiz war geweckt, jetzt galt es das Ding zum Laufen zu bringen. Zunächst schaute ich, was nach Debian Etch an Kernel-Versionen bereit stand. Der aktuelle Testing-Zweig bringt 2.6.22 mit, also machte ich ein Dist-Upgrade von Etch nach Lenny. Das war nicht weiter aufregend, allerdings noch nicht alles. Um den Treiber jetzt auch zu benutzen waren (als root!) folgende Schritte notwendig:

  • s3fb in die Datei /etc/initramfs-tools/modules eintragen
  • update-initramfs -u -k all
  • in /boot/grub/menu.lst die entsprechende Zeile wie folgt ändern:
    # defoptions=video=s3fb:800x600@85

Anschließend neu booten und freuen. Der Rechner läuft tatsächlich mit Framebuffer-Konsole auf S3 Trio64V+.

happy

Meine erste Demo – ohne mich

Heute, am 9. November, hat der Bundestag das Gesetz zur Umsetzung der entsprechenden EU-Richtlinie zur Vorratsdatenspeicherung mit der Mehrheit der großen Koalition verabschiedet. heise online schreibt:

Der rechtspolitische Sprecher der Grünen, Jerzy Montag, sprach dagegen in dem heftigen Schlagabtausch von einem “tiefschwarzen Tag für die Bürgerrechte in Deutschland”.

Dem kann ich mich nur uneingeschränkt anschließen. Für mich persönlich gehen damit drei Wochen mit erhöhtem Adrenalinspiegel zu Ende. Es begann damit, dass Juliane am 17.10. bei Webuni den Aufruf für bundesweite Demonstrationen und Kundgebungen weiterleitete, die am 6.11. stattfinden sollten. Die Diskussion entwickelte sich so, dass ich mich in der Woche darauf (zusammen mit Tux) zur Polizeidirektion begab und eine entsprechende Veranstaltung für Magdeburg anmeldete. Wir hatten uns eine kleine Kundgebung an der Goldschmiedebrücke ausgemalt, niemand anders schien Zeit und Lust zu haben und ich vergaß in einem schwachen Moment meine universitären und privaten Verpflichtungen.

Die folgenden Tage bestanden für mich aus massiver Unlust morgens aufzustehen, stressbedingter Appetitlosigkeit und der Kommunikation mit Leuten, die ich nicht kannte über Sachen die ich nie zuvor gemacht hatte. Zu den unbekannten Dingen gehörte weniger das Pflegen des Orga-Wikis sondern vielmehr die Gespräche mit den Jungen Liberalen und der Grünen Hochschulgruppe, die Koordination von Entwurf und Druck der Plakate und Flyer, Verteilen der Aufgaben für den Demotag selbst und so einiges mehr. Am Ende wurde dann trotz zwei Wochen Vorlauf sogar noch die Zeit knapp.

Dank der Hilfe von vielen engagierten Leuten ging dann am Dienstag alles glatt über die Bühne und wurde sogar noch ein kleiner Erfolg. (An dieser Stelle nochmal vielen Dank dafür!) Ich lag um diese Zeit allerdings leider mit einer fiesen Magen-Darm-Infektion im Bett und nutzte die Zeit den Film »Das Leben der anderen« zu schauen – passend zum Thema und sehr bewegend. Gegen Ende sagt dort der Minister Hempf sinngemäß, dass es in der Bundesrepublik nichts mehr gäbe, wogegen man rebellieren könne. Bei der Mitteilung des AK-Vorratsdatenspeicherung von heute heißt es:

Zur weiteren Arbeit des Arbeitskreis Vorratsdatenspeicherung, der die Proteste der letzten Wochen und Monate koordiniert hat, erklärt Ricardo Cristof Remmert-Fontes: “Der Arbeitskreis Vorratsdatenspeicherung wird weiter die Frage stellen, in welcher Gesellschaft wir in Zukunft leben wollen und daran arbeiten, das Bewusstsein für die Grundwerte unserer freien Gesellschaft zu fördern. Wir sind erst am Anfang unserer gemeinsamen Arbeit.”

In diesem Sinne schalte ich jetzt mal meine Playlist um von den zur Stimmung passenden »Murder Ballads« von Nick Cave zur besten Band der Welt: Die Ärzte mit »Deine Schuld«.