Skip to content

exim4 sucks, once more

Der Tag fängt so richtig beschissen an. Man schaltet den Rechner an, findet ein Highlight in $IRC_CHANNEL und streitet sich mit wildfremden Leuten.

In den ersten paar Zeilen lese ich Worte wie

  • fucking
  • stupid
  • how the hell
  • bollocksy
  • moronic bullshit

Die Geschichte ist eigentlich schnell erzählt: Der Benutzer A hat unsere exim4-Packages installiert, hat die Dokumentation nicht finden (wollen) und beschwert sich jetzt bitterlich. Dabei will A doch einfach nur eine nackte exim4.conf benutzen. Ich gebe ihm den Hinweis, dass er sie nur nach /etc/exim4/exim4.conf werfen muss. Ein anderer User B gibt den (ungeschickten) Hinweis, dass A /var/lib/exim4/config.autogenerated nach /etc/exim4/exim4.conf kopieren soll. A beschwert sich - zu Recht - darüber, dass das File keine Kommentar enthält und bekommt den ersten Hinweis auf /usr/share/doc/exim4-base/README.Debian.gz.

Ich gebe ihm den - besseren, aber noch nicht optimalen - Hinweis, dass er /etc/exim4/exim4.conf.template kopieren soll. Seine Reaktion: "but it's full of debconf bollocks". Ok, er mag debconf nicht. Die weitere Schimpfkanonade umfasst Dinge wie "bastardised", "should be purged" und gipfelt in einem "Zugschlus: you're a troll, you can fuck off and die" gefolgt von einem "again, fuck off, you're not helping". Hallo? Wo sind wir denn hier?

An diesem Punkt entscheide ich mich, A in Zukunft zu ignorieren. Leider lasse ich mich weiter provozieren.

Einige andere Leute ergreifen meine Partei und sagen, dass sie die von mir derzeit gepflegten Packages mögen, wenn sie auch etwas gewöhnungsbedürftig sind. A weist darauf hin, dass ich offensichtlich crack rauche, und fragt dann, ob es möglich wäre, das Gegenstück zu /var/lib/exim4/config.autogenerated zu bekommen, ohne dass die Kommentare rausgestripped werden. Da platzt mir der Kragen, schicke ihm ein "man update-exim4.conf, --keepcomments, duh. Idiot." an den Kopf und schiebe noch ein "shit. helped him. should have really put him on ignore hinterher.

Er regt an, dass ich das ins README schreibe. Davon bin ich gar nicht begeistert, denn irgendwann braucht's dann ein README zum README, das wegen "wir haben alle verfügbare Doku nochmal ins README geschrieben" epische Ausmaße angenommen hat. Dann wird mir vorgeworfen, ich sollte doch kommunizieren lernen, ohne Worte wie "Idiot" zu gebrauchen. Dazu hätte ich mich nicht hinreissen lassen dürfen, richtig, und es ist auch nicht gut, jetzt mit dem klassischen "wer hat denn angefangen" zu kontern. Mein Fehler. Schade, dass man sowas nicht ungeschehen machen kann.

Zwischenfazit: Never argue with idiots. They'll pull you down to their level and then beat you with experience.

Abschließend driftet die Diskussion wieder ins Grundsätzliche ab, vom klassischen "Use a different MTA" bis zu "/var/lib/exim4/config.autogenerated is a conffile, it should be in /etc, and manual changes should be preserved" ist fast alles dabei. Interessanterweise unterbleibt die Debian-exim-Diskussion, und ich danke vorlon dafür, dass er mich in der Conffile-Debatte unterstützt hat. Die Package hat somit den "offiziellen" Segen eines Releasemanagers als Policy Compliant. Die Diskussionsgegner ziehen alle Register inklusive kreativem Quoting aus der Policy und dem klassischen "Was ich nicht mitgequotet habe ist nicht so gemeint wie Du es interpretierst".

Schliesslich wird mir nahegelegt, dass exim4 nicht der Default MTA sein sollte, so lange ich noch Maintainer bin. Ich denke ernsthaft darüber nach, die "Vertrauensfrage" zu stellen, oder die Package gleich komplett hinzuwerfen. Man macht's eh immer nur falsch.

Ich habe kein Problem mit Kritik. Ich habe ein Problem mit Kritik, wenn sie ohne Vorschläge besserer Alternativen vorgebracht wird und verletzend ist. Und insbesondere habe ich ein Problem damit, an die Wand gestellt zu werden, wenn ich zurückschiesse wenn mir jemand dumm kommt.

Ich bekam insgesamt folgende Vorschläge:

  • Dupliziere vorhandene Informatioin im README.
  • Führe eine Debconf-Frage ein, ob die Debconf-Konfiguration gewünscht ist.

Ich mag diese Änderungen allesamt nicht:

  • Ein längeres README wird nicht gelesen.
  • Eine einmal erzeugte exim-Konfiguration, die danach keine Updates mehr erhält, erzeugt Supportrequests.

Und wenn es nur darum geht, rauszubekommen dass sich der User mit dieser nicht empfohlenen Konfiguration selbst in den
Fuß geschossen hat.

  • Ein Admin, der die von uns gelieferten Automatismen abschaltet, muss die Doku gelesen und verstanden haben. Also reicht es auch, das abschalten der Automatismen in der Doku zu beschreiben - wenn er die Automatismen per Mausklick los wird, steht er zwei Tage später weinend bei uns auf der Matte und beschwert sich dass sein System nicht tut - weil der die verfluchte Doku immer noch nicht gelesen hat.
  • Konventionell mit einem Konfigurationsfile arbeiten, das vom Debconf-Code verändert wird, heißt:d
    • das File kann kein dpkg-Conffile sein => man muss alle Updates manuell nachziehen, man muss das File im Debconf-Code parsen. Und das ist für exim4.conf erschreckend nichttrivial. Wir machen das jetzt schon für update-exim4.conf.conf und /etc/default/exim4, ein Albtraum.
    • Da im Exim-Konfigfile sehr viel von der Reihenfolge abhängt, müsste man viele Stellen haben, an denen der Debconf-Code Änderungen durchführt.
    • Das file nicht mehr anfassen, wenn es einmal verändert wurde, gibt dem Benutzer keine Updates mehr und erzeugt somit Supportrequests.
  • Ausserdem haben wir es immer schon so gemacht wie wir es derzeit machen, und ich hätte gerne etwas bessere Argumente für eine Veränderung.

Die Diskussion endete - immerhin - damit, dass A für die Dinge die er gesagt hat ansatzweise um Entschuldigung bat
("I guess I'd like to apologise to you too"). Aber ich sehe immer noch keinen Sinn darin, das README mit weiteren Referenzen aufzublähen.

War ein Scheißeinstieg in einen nicht allzu guten Tag. Wo bekomme ich die Ruhe her, um mich nicht mehr in dieser Form provozieren zu lassen?


Nachtrag: A ist inzwischen abgekühlt, wir haben die Sache wie Profis geklärt, er hat mir im zweiten Anlauf auch geglaubt, dass die Konfiguration eines Smarthost-Clients mit SMTP AUTH über TLS nur eine Sache des Passworteintrags in /etc/exim4/passwd.client ist und benutzt jetzt unser Automatik-Setup mit manuell editierter /etc/exim4/update-exim4.conf.conf.

Mit etwas mehr Gelassenheit hätte ich dieses Ziel auch ohne Nervenkrieg erreichen können.

Trackbacks

No Trackbacks

Comments

Display comments as Linear | Threaded

Hans Bonfigt on :

Was ich viel schlimmer finde: Wenn ich unter Debian bei der Erstinstallation konfiguriere als 'only local', warum macht das Teil beim Start und alle 30 Minuten einen DNS-Lookup und triggert damit meinen DSL-Router ? Ich wollte ja in der Konfigurationsdatei nachgucken, aber da sind ja hunderte davon. Ach, wäre das schön, ein einfacher MTA ohne die neuen Pflichtgoodies ...

Christoph Biedl on :

Regel Nummer 1: Das "Be liberal what you accept" aus dem robustness principle hat Grenzen. Holprige Sprache, katastrophale Rechtschreibung, fehlende Information kann man noch auffangen. Wenn aber jemand wie hier derartig über die Stränge schlägt, dann hat er entweder ein massives Kommunikationsproblem, das Du ihm nicht lösen wirst. Wahrscheinlicher aber popelt er seit ein paar Stunden erfolglos rum, packt's nicht und wirft jetzt die gesammelte Wut über sein Unvermögen auf das erste sich anbietende Opfer - und das bist nunmal Du als Maintainer. Erstmal auf Verdacht andere beschuldigen, auch bekannt als "Inkompetenz durch gesteigerte Arroganz überdenken" ist eine sehr menschliche, aber extrem belastende Verhaltensweise, die mich regelmäßig an der Welt verzweifeln läßt, aber, Hey, rationales Verhalten ist mega-out. Nochmal deutlicher: Wer sein Vokabular aus dem Siebensprachigen Schimpfwörterbuch zusammensammelt, der hat ein Problem. Mit sich selber. Deswegen rettet Zurücktreten nichts, auch wenn es so einfach aussieht (und vom Fernsehen als geeignetes Mittel zur Konfliktlösung propagiert wird). Und wenn das nun im IRC stattfindet - Du bist nicht zu 24/7-support verpflichtet, also kannst Du Dir auch mal die Zeit nehmen, auf einen Schlag in die Magengrube mit Schweigen zu reagieren. Schließlich mußt auch mal für eine Weile in ein Meeting und anschließend verquatscht Du Dich mit einer Kollegin beim Mittagessen. Im advanced level ist auch schon mal aus Versehen der IRC-Server bei Dir nullgeroutet und das merkst Du leider erst ein paar Stunden später. Abgang mit /part zeigt allerdings nur, daß Du nicht die Nerven behalten hast. Erstaunlich für mich schon, daß Du so lange durchgehalten hast. Ich hätte mich erheblich früher mit einem "Meld Dich wieder, wenn Du mehr als einen Satz ohne Schimpfworte hinbekommst." ausgeklinkt.

Regel Nummer 2: Du mußt Dein Baby nicht gegen die ganze Welt verteidigen - sondern nur gegen einen einzigen Verzweifelten, der sich nur so heftig aufbläst, daß er größer aussieht als alle anderen zusammen. Du kannst darauf vertrauen, daß es genug andere Leute gibt, die die Drecksarbeit machen. Gerade, weil Du Dein Paket erfolgreich platziert hast. Die übernehmen es dann, so einen Kerl erstmal ruhigzustellen und dann zu verarzten (wahlweise: Merkbefreiung ausstellen), so daß Du beim eigentlich Problem entweder gar nichts mehr tun mußt oder nur noch in Details optimieren. Wer sich derartig versteigt, beim Konfigurieren und anschließend in der Wortwahl, der dürfte selten ein so kompliziertes Problem haben, daß man dafür den Maintainer des Pakets einfliegen muß.

In meiner Anstellung habe ich in den letzten Monaten mehr als einmal erlebt, daß Leute gegen diese Stellung öffentlich erheblichen Dünnsinn geschrieben haben, aber darauf mußte ich gar nicht eingehen: Andere, Unbeteiligte haben Dieter Nuhr aus dem Hut gezogen und harte Worte gewählt, die ich aus meiner Stellung heraus lieber nicht in den Mund genommen hätte. Gibt natürlich privat ein Dankeschön. Ich selbst mußte das Popcorn gar nicht mehr absetzen, sehr recovery.

(Und wenn Dein Blog jetzt wieder so eine grottige Formatierung hinlegt, dann antworte ich nie wieder droh)

Marc 'Zugschlus' Haber on :

Was ich viel schlimmer finde:Wenn ich unter Debian bei der Erstinstallation konfiguriere als 'only local', warum macht das Teil beim Start und alle 30 Minuten einen DNS-Lookup undtriggert damit meinen DSL-Router ?

Minimal-DNS hast Du ausgewählt? Der lokale Hostname mit Bordmitteln ohne Zuhilfenahme des Internets auflösbar (siehe {{/usr/share/doc/exim4-base/README.Debian.gz}}, erster Punkt unter "Run-Time Issues)?

Ich wollte ja in der Konfigurationsdatei nachgucken, aber da sind ja hunderte davon.

Vermutlich wird nur {{/etc/exim4/exim4.conf.template}} und {{/etc/exim4/update-exim4.conf.conf}} ausgewertet, siehe {{/usr/share/doc/exim4-base/README.Debian.gz}}, Abschnitt ab "What are these gazillion number of files".

Ach, wäre das schön, ein einfacher MTA ohne die neuen Pflichtgoodies ...

Nimm doch einfach einen anderen. Oder erkenne, dass die ganzen "Pflichtgoodies" den MTA vereinfachen. Eventuell ist ja {{ssmtp}} in Deinen Setups das Mittel der Wahl, aber leider gibt es genug Umgebungen in denen ein MTA, der bei Abwesenheit des Smarthosts Mail verliert nicht taugt.

Marc 'Zugschlus' Haber on :

Regel Nummer 1:Das "Be liberal what you accept" aus dem robustness principle hat Grenzen. Holprige Sprache, katastrophale Rechtschreibung, fehlende Information kann man noch auffangen. Wenn aber jemand wie hier derartig über die Stränge schlägt, dann hat er entweder ein massives Kommunikationsproblem, das Du ihm nicht lösen wirst. Wahrscheinlicher aber popelt er seit ein paar Stunden erfolglos rum, packt's nicht und wirft jetzt die gesammelte Wut über sein Unvermögen auf das erste sich anbietende Opfer - und das bist nunmal Du als Maintainer.

So wie ich das sehe hat er in einem IRC-Channel vented, ohne zu wissen dass der Maintainer zugegen ist.

Nochmal deutlicher: Wer sein Vokabular aus dem Siebensprachigen Schimpfwörterbuch zusammensammelt, der hat ein Problem. Mit sich selber. Deswegen rettet Zurücktreten nichts, auch wenn es so einfach aussieht (und vom Fernsehen als geeignetes Mittel zur Konfliktlösung propagiert wird).

Das ist ja nicht nur dieser eine Fall gewesen - ich hab einfach die Nase voll, dass es Millionen von Leuten gibt, die laut rumtönen, dass die Packages scheisse sind und man es doch viel besser anders machen könnte. Dass die genannten "Alternativen" allesamt schon achtundfünfzigmal durchdacht und ebenso achtundfünfzigmal als "nicht mit vertretbarem Aufwand machbar" oder "nicht Policycompliant" oder "schlimmer als wir es derzeit tun" verworfen wurden, ist unsere Inkompetenz.

Und wenn das nun im IRC stattfindet - Du bist nicht zu 24/7-support verpflichtet, also kannst Du Dir auch mal die Zeit nehmen, auf einen Schlag in die Magengrube mit Schweigen zu reagieren.

Dazu bedarf es Coolness. Die ich nicht habe.

Ich hätte mich erheblich früher mit einem "Meld Dich wieder, wenn Du mehr als einen Satz ohne Schimpfworte hinbekommst." ausgeklinkt.

Das hab ich zweimal versucht, und hab mich immer mehr provozieren lassen.

Du mußt Dein Baby nicht gegen die ganze Welt verteidigen - sondern nur gegen einen einzigen Verzweifelten, der sich nur so heftig aufbläst, daß er größer aussieht als alle anderen zusammen.

Er ist ja nicht der einzige, der Andreas' und meine Arbeit Scheiße findet.

kju on :

Er ist ja nicht der einzige, der Andreas' und meine Arbeit Scheiße findet.

Und? Es gibt immer Leute die etwas doof finden, überflüssig oder nicht brauchen. Ich habe neulich 'rsysklogd' entwickelt, einen sehr schlanken sysklogd der nur remote loggen kann und sonst nichts. Prompt hatte ich in meinem Weblog einen dummen Kommentar "wieso? das kann der normale sysklogd doch schon lange!".

Sieh es so: Entweder jemand kapiert, warum etwas ist wie es ist, oder er kapiert es nicht. Mach es nicht zu Deiner Aufgabe, solche Leute wissend machen zu wollen.

Hans Bonfigt on :

Na klar kann er seinen Hostnamen selber auflösen. hosts = local,bind,nis und der Hostname ist in der /etc/hosts. Oder hat exim seinen eigenen Resolver ?

Irgendwann schreibe ich einen einfachen Mini-MTA, der noch so nützliche Funktionen hat wie das automatische Bouncen von Scheiß wie K=F6-ISO-8859-blablabla. Designziel: 500 Zeilen. Local Delivery, Queueing und Übergabe an Smarthost.

Marc 'Zugschlus' Haber on :

Na klar kann er seinen Hostnamen selber auflösen. hosts = local,bind,nis und der Hostname ist in der /etc/hosts.

Und das funktioniert auch? Welchen DNS-Request schickt die Kiste denn da alle 30 Minuten raus?

Oder hat exim seinen eigenen Resolver ?

Nein.

Irgendwann schreibe ich einen einfachen Mini-MTA, der noch so nützliche Funktionen hat wie das automatische Bouncen vonScheiß wie K=F6-ISO-8859-blablabla. Designziel: 500 Zeilen. Local Delivery, Queueing und Übergabe an Smarthost.

Kurz gesagt: Vergisses. Allein das Mailbox-Locking kriegst Du in 1000 Zeilen nicht hin. Oder willst Du das in APL schreiben?

Hans Bonfigt on :

Ich weiß nicht mehr, welche DNS-Anfrage exim 'rausschickt, da keiner meiner Rechner noch exim fährt.

Was das Mailbox-Locking angeht: Wer hindert Dich, das gesamte File in /var/spool/mail komplett exklusiv zu locken ?

Jan Walzer on :

Sieh es so: Entweder jemand kapiert, warum etwas ist wie es ist, oder er kapiert es nicht. Mach es nicht zu Deiner Aufgabe, solche Leute wissend machen zu wollen.

ACK. Halleluja.

Marc: Bleib' bei deinen Paketen

Florian Laws on :

Maildir ist doch lockfrei, oder?

Aber 500 Zeilen halte ich in C dennoch für unrealistisch - bestenfalls als Einreichung für den Obfuscated C Contest.

Florian Laws on :

Meine Meinung zum exim4-Konfigschema kennst Du ja ;-), deswegen nur paar Anmerkungen zum Thema Doku.

Ich muss "die Doku" (welche eigentlich?) nicht unbedingt gelesen und verstanden haben. Ich kann vielleicht die Exim-Konfigurations-Sprache auswendig. Gäbe mir debconf die Möglichkeit, das monolithische Schema auszuwählen, käme ich also ohne (Debian-)Doku-Lesen aus.

Ausserdem: Die Frage, wie man vom Debian-exim4-Konfigschema auf das normale monolithische Konfigfile umstellt, dürfte wohl eine der häufigsten Fragen zum Package sein, allerdings muss ich im README erstmal sieben Bildschirmseiten lesen, bevor die Frage beantwortet wird.

Eine weitere Idee wäre auch, die Upstream-Standard-exim.conf mitzuliefern, so dass Monolithen-Fans diese als Ausgangspunkt für ihre Konfiguration verwenden kann.

Und zum Abschluss: Wäre es schlimm, die autogenerierte Konfiguration von vornherein zu generieren, ohne dass die Kommentare entfernt werden?

Hans Bonfigt on :

Lockfrei oder nocht Lockfrei: Unter AIX mach ich das Mailboxfile halt mit O_RSHARE auf und gut ist.

Naja, und 500 Zeilen sind etwas wenig, zugegeben.

95% aller MTA-Benutzer nutzen maximal 5% der Funktionalität. Da wäre es doch schön, wenn es etwas Einfaches gäbe, das auch ohne Metatools zu konfigurieren ist.

Und zwar von jemandem, der nicht, wie ein gewisser M.H., der mit einem großstadttelephonbuchdicken Buch über ESMTP in die Kneipe geht - oh ja, das habe ich mit eigenen Augen gesehen.

Überhaupt: ESMTP - schon der Begriff zeigt, daß hier etwas aus dem Ruder gelaufen ist.

Gruß Hans

Marc 'Zugschlus' Haber on :

Maildir ist lockfrei, aber dafür ist das Drumrum /new/cur/tmp und die Ermittlung der Dateinamen nicht so wirklich trivial.

Marc 'Zugschlus' Haber on :

Ich muss "die Doku" (welche eigentlich?)

Manpages. README.Debian.

nicht unbedingt gelesen und verstanden haben. Ich kann vielleicht die Exim-Konfigurations-Sprache auswendig. Gäbe mir debconf die Möglichkeit, das monolithische Schema auszuwählen, käme ich also ohne (Debian-)Doku-Lesen aus.

Ein User, der das wirklich braucht, und zehn pseudoelitäre DAUs, die sich ihren MTA zerkonfigurieren und dann öffentlich ranten, dass Debian ja so scheiße ist.

Die Verwendung einer manuell gebauten Exim-Konfiguration ist Munition, die dazu reicht, ganze Beine vom Körper zu entfernen, da muss ich den Leuten nicht auch noch die Waffe in die Hand drücken, auf den Fuß richten und ihnen den Druckpunkt des Abzugs zeigen.

Ausserdem: Die Frage, wie man vom Debian-exim4-Konfigschema auf das normale monolithische Konfigfile umstellt, dürfte wohl eine der häufigsten Fragen zum Package sein,

da wäre ich mir nicht so sicher.

allerdings muss ich im README erstmal sieben Bildschirmseiten lesen, bevor die Frage beantwortet wird.

Neuere Versionen des READMEs haben ein Inhaltsverzeichnis. Leider nicht mehr rechtzeitig für Sarge.

Ausserdem haben so viele Leute Informationen in der README haben wollen, dass das beim besten Willen nicht mehr alles auf die erste Bildschirmseite gepasst hat.

Eine weitere Idee wäre auch, die Upstream-Standard-exim.conf mitzuliefern, so dass Monolithen-Fans diese als Ausgangspunkt für ihre Konfiguration verwenden kann.

Gute Idee. Notiert.

Und zum Abschluss: Wäre es schlimm, die autogenerierte Konfiguration von vornherein zu generieren, ohne dass die Kommentare entfernt werden?

Das würde die Benutzer dazu motivieren in der {{/var/lib/exim4/config.autogenerated}} herumzueditieren, was es zu verhindern gilt. Ich sehe das so wie {{sendmail.cf}}: Das ist Code, Finger weg.

Brian Rosenberger on :

Leider sieht das automatisch generierte Logfile auch mit update-exim.conf --keepcomments -o /etc/exim4/exim4.conf noch recht unkomfortabel aus. Ein Blick in das alte exim3.conf sieht dagegen aufgeräumt aus. Mit viel Mühe hat sich hier wohl jemand exim4.conf Dateien zusammengebastet. Gefunden hier: http://apt.may.co.at/sample.conf/exim4/

Brian Rosenberger on :

Sample exim4.conf hier gefunden: http://apt.may.co.at/sample.conf/exim4/

ich hoffe, dass hilft einigen Usern, die debian auf Servern einsetzen aus dem Dateiwirrwar.

PS: update-exim.conf --keepcomments -o /etc/exim4/exim4.conf produziert keine schöne Konfig.

Marc 'Zugschlus' Haber on :

Das, was Du da gefunden hast, ist eine von einem User mit gesundem Halbwissen aus dem Upstream-Beispiel angepasste Konfiguration. Ich hab beim dritten bösen Schnitzer aufgehört zu zählen.

Mein Rat: Finger weg.

Was ist in Deinen Augen eine "schöne" Konfiguration? Eine die funktioniert? Eine die ohne große Änderungen viele Wünsche erfüllen kann? Oder ist Dein Wunsch rein kosmetisch?

Add Comment

Markdown format allowed
Enclosing asterisks marks text as bold (*word*), underscore are made via _word_.
Standard emoticons like :-) and ;-) are converted to images.
E-Mail addresses will not be displayed and will only be used for E-Mail notifications.
Form options