Date Tags Mail / C / GPL

Dem guten alten vacation Tool unter Linux merkt man sein Alter mittlerweile deutlich an. Was mir im täglichen Umgang fehlt, ist der Umgang mit Umlauten bei der Ersetzung von $SUBJECT. Außerdem kommt es immer wieder vor, das Abwesenheitsbenachrichtigungen vergessen werden – es wäre schön, bei der Einrichtung direkt ein Datum für das Ende anzugeben.

Weil aber insgesamt das Verteilen von Mail via procmail aus guten Gründen nicht mehr so hip ist, scheint sich niemand ernstlich um diese Unannehmlichkeiten  zu kümmern, oder zumindest kenne ich nichts, was vacation unter procmail angenehm ersetzen könnte.

Ich habe deshalb versucht, mir ein schöneres vacation-Tool zu basteln – gvctn. Die Funktionsweise ist an vacation angelehnt, aber es gibt einige Unterschiede:

  • Die Nachricht muss UTF-8 kodiert sein (wovon nacktes ASCII eine Teilmenge ist. Neben der eigentlichen Nachricht sollte sie genau zwei Header enthalten: Das From und das Subject.  Beide können Umlaute enthalten und werden dann bei Verwendung korrekt kodiert.
  • Header wie MIME-Type, In-Reply-To, References und Auto-Submitted werden vom Programm eingefügt und korrekt befüllt. Das heißt insbesondere, das man keine HTML Mails verschicken kann, weil der MIME Typ auf text/plain gesetzt wird (das entspricht auch den Empfehlungen von  RFC 3834).
  • Die Adressen, an die eine Antwort geschickt wurde, werden in einer GDBM Datei gespeichert (das war mir lizenztechnisch sympatischer als die Berkley DB mit Oracle). Zusätzlich können dort mit der Syntax @domain komplette Domains und mit localpart@ komplette Local Parts gesperrt werden. Auflisten kann man die Liste mit „-l“, einzelne Einträge kann man mit „-d“ löschen. Mit „-x“ kann man aus stdin Einträge ergänzen. Bei der (zwingend nötigen) Initialisierung mit „-i“ werden schon einige Standardeinträge gesetzt.
  • Zu den Ausschlussgründen für automatische Antworten zählen auch 8-Bit-Zeichen in Headern, falls man sie nicht explizit erlaubt.
  • Das Logging ist stark verbessert - es werden alle nötigen Informationen über syslog in der Facility Mail gespeichert - sowohl erfolgreiche Antworten als auch die Gründe, warum nicht geantwortet wurde.

Das Programm ist oberflächlich getestet. Ein Wort der Warnung - ich bin kein C Profi, also gegebenenfalls genauer hinschauen. Den Code findet man zumindest hier; außer gdbm braucht man noch glib und libgmime 2.4.