Tag Murks

Dieser Tag versammelt Posts zu kaputter Technik von anderen Leuten. Vor allem zu der Sorte kaputter Technik, die nicht kaputt sein müsste, wenn nicht an kritischen Stellen jede Menge lustlose oder schurkige Leute unterwegs wären. Wobei: janaja, zumindest mit der Lustlosigkeit kann ich in vielen dieser Situationen schon empathisieren.

  • Ach Bahn, Teil 14: „HalloDummy ABC-Dummy“

    Eine rote Scheckkarte im Gegenlicht.  Ein Magnetstreifen ist sichtbar, ein Schriftzug „Bahncard 50“, aber nichts, was elektronisch aussieht.

    Eine 2023er-Bahncard im Gegenlicht: Das ist wirklich nur Plastik (und ein Magnetstreifen) und mithin vom Fußabdruck her kaum mehr als 10g CO₂e. Klar wäre fahrscheinlos noch besser, aber „digital“ gehts jedenfalls nicht emissionsärmer.

    Die neueste Templating-Katastrophe der Bahn

    Ich bin ja seit langem faszinierter Beobachter der Templating-Katastrophen der Deutschen Bahn. Stellt euch also meine Begeisterung vor, als heute auf eine Anfrage an kundendialog@bahn.de (ja, das gibts, auch wenn die Bahn das in ihren Kontaktangeboten gut tarnt) eine ganz neue, ich möchte fast sagen freche Variante hinzukam:

    X-Mailer: Siebel 23.10.0.0 SIA [2023_10]

    Vorgangsnummer: 1-1719.....

    HalloDummy ABC-Dummy,

    vielen Dank für Ihre Nachricht. Wir werden uns schnellstmöglich mit Ihnen in Verbindung setzen und Ihre Anfrage gerne beantworten.

    Aufgrund eines ungewoehnlich hohen Mailaufkommens lassen sich derzeit jedoch laengere Wartezeiten nicht vermeiden.

    Bitte haben Sie noch ein wenig Geduld und sehen Sie von weiteren Nachfragen zum Bearbeitungsstand ab. Wir informieren Sie, sobald Ihr Anliegen bearbeitet wurde.

    Bitte antworten Sie nicht auf diese E-Mail, da dies eine automatisch erstellte Eingangsbestätigung Ihrer Anfrage ist.

    (whitespace ist normalisiert)

    Ganz falsch ist das nicht: Wer sich an den Bahn-Support wendet, wird dort zumindest wie ein ABC-Dummy behandelt, das kann ich nach meinen bisherigen Erfahrungen (cf. den Bahn-Tag) mit Bestimmtheit behaupten.

    Gut gefällt mir auch die Kombi von “schnellstmöglich“ (mit Umlaut) und ungewoehnlich (7-bit-sauber), und weiter ist ein Vergleich aufschlussreich mit einer kurzfristig deutlich weniger katastrophalen Template-Antwort von vor einem Jahr (4.12.2022), die so anfing:

    X-Mailer: Siebel 22.5.0.0 SIA [2022_05]

    Vorgangsnummer: 1-157...

    Sehr geehrter Herr <richtiger Name>,

    vielen Dank für Ihre Nachricht. Wir werden uns schnellstmöglich mit Ihnen in Verbindung setzen und Ihre Anfrage gerne beantworten. Aufgrund eines ungewoehnlich hohen Mailaufkommens lassen sich derzeit jedoch laengere Wartezeiten nicht vermeiden.

    Der Siebel-Mailer hat also einen Versionssprung gemacht (oder eher: ist ein Jahr älter geworden), irgendwer hat Leerzeilen eingefügt; dass, wenn etwas über mindestens ein Jahr besteht, es ganz bestimmt nicht mehr „ungewoehnlich“ ist, ist dabei nicht aufgefallen, und auch nicht die Mischung aus echten Umlauten und Umschreibungen.

    Bahncard-Sabotage

    In der Mail, auf die hin die ABC-Dummy-Antwort kam, ging es übrigens um Pläne, über die ich bei Heise gestolpert bin. Offenbar überlegt die Bahn, nun auch noch mit dem Mittel der Bahncard den Menschen ihre grässliche Navigator-App überzuhelfen. Das ist keine schöne Aussicht für mich, nachdem ich schon mit dem 49-Euro-Ticket endlos Zeit mit dem Quatsch verschwenden musste – und dabei vielleicht immer noch Ärger mit Schaffnern hätte bekommen können (vgl. 49-Euro-Ticket im freiheitsfoo-Wiki).

    Eine alternative Interpretation zum gewaltsamen App-Überhelfen wäre, dass die Bahn die Bahncard killen will; diese Vermutung scheint auch plausibel, weil bei den aktuellen Buchungsformular-Experimenten der Bahn auch mal Prototypen dabei waren, die zur Einstellung einer Bahncard 50 sieben Klicks verlangten. Im heutigen Prototypen zähle ich noch vier, aber eigentlich frage ich mich schon lange, warum sich das Interface die letzten Fahrtziele, aber nicht den Bahncard-Besitz merken kann.

    Tatsächlich hat mich die Frage nach den Motiven der Bahn schon heute morgen bewegt, und so habe ich ein wenig in der Forumsdiskussion rumgeklickt. Auf plausible Thesen jenseits von surveillance capitalism bin ich nicht gestoßen, aber doch auf diesen Beitrag von elknipso. Ich fand ihn – ganz vorne das hier:

    Smartphones sind absoluter Standard, man kann nicht bei allem auf den letzten Fortschrittsverweigerer Rücksicht nehmen.

    (und seine Followups des gleichen Autors) – in seiner Ignoranz, Vermessen- und Verwirrtheit wirklich sehr bemerkenswert.

    Unklare Motivationslagen

    Ich könnte elknipsos Haltung, eigenes Verhalten als allgemeine Maxime zu setzen, ja vielleicht noch nachvollziehen, wenn erkennbar wäre, welchen Nutzen er von einer App-Bahncard hätte. Aber er hat, soweit ich das erkennen kann, darüber keinen Moment nachgedacht. Die Frage, ob das, was da vorgeschlagen wird, überhaupt einen Nutzen hat, und wenn ja, ob dieser Nutzen in einem irgendwie angemessenem Verhältnis zu den Kosten steht, diese Frage stellt sich ihm ganz offenbar im Zusammenhang mit einem ferngewarteten Programm („App“) gar nicht.

    Sehen wir doch kurz nach: Auf der Nutzenseite ist eigentlich nur die Plastikersparnis erkennbar, und würde die Bahn einfach QR-Codes ausstellen und den Leuten selbst überlassen, wie sie die herzeigen wollen, könnte ich das gelten lassen. Allerdings ist eine Einsparung von vielleicht 10g CO₂e[1] wirklich nicht der Rede wert in einem Geschäft, in dem der Kilometer IC-Reise in der Größenordnung von 100g liegt und zumindest eine Bahncard 50 erst ab deutlich über 1000 Kilometern irgendwie lohnend wird.

    Im Gegensatz dazu ist der Plan der Bahn soweit ersichtlich, wie beim 49-Euro-Ticket die QR-Codes so gut es geht in den erwähnten „DB Navigator“ einzusperren. Das sind dann 70 Megabyte Irrsinn und Tracking, die nur dazu dienen, ein Bild anzuzeigen. Na ja: das Decoding wird von der libpng des Hostsystems übernommen, und die Bildanzeige vermutlich auch von irgendwas, das nicht bei den 70 MB mitkommt; diese sind mithin nicht viel mehr als ein Symlink auf eine Bilddatei.

    Angsichts solch hemmungsloser Verschwendung im „Digitalen” über Ressourceneinsparung auch nur zu spekulieren, das ist bereits jenseits von absurd. Dennoch ganz geschwind hinterher: Eine Minute Telefon mit Netz (so lang fummelt mensch dann ja doch mit dem Mist) sind auch schon in der Größenordnung 50g CO₂e, und mit dem Fußabdruck des Telefons fangen wir mal lieber gar nicht an. Nein: Ökologischer als Plastikkarte geht jedenfalls nicht mit irgendwas, das elektrisch ist.

    Die neue Pflicht zum Rumfummeln

    Stattdessen wäre eine App-Bahncard für relevant viele Menschen (nämlich die, die zum Kontrollzeitpunkt gerade oder grundsätzlich kein „Smartphone“ in der Hand haben) ungleich viel mehr Gefummel gegenüber einer Karte, die mensch einfach aus dem Geldbeutel zieht. Elknipso könnte sich von den Effekten dieser Sorte digitaler Fummelei überzeugen an den Eingängen der DB-Lounges, wo seit dem App-Zwang die Schlangen trotz deutlich geschrumpfter NutzerInnenzahl viel länger gewoden sind.

    Wie kommt nur wer auf die Idee, öffentlich für einen so offensichtlich schlechten Deal zu sprechen? Das ist noch nicht mal dann zu erklären, wenn der Redner tatsächlich nicht begriffen haben sollte, dass auf einem „Smartphone“ jede Erwartung von Privatsphäre illusorisch ist – oder das dem Redner wurst ist: Hier ist kein Nutzen, und auch für Leute mit extern gemanagten Rechnern eigentlich nur Nerv.

    Unter diesem Vorzeichen erscheint die Rede vom „Fortschrittsverweigerer“ nochmal besonders verdreht. Es ist vielleicht nicht immer ganz einfach, genau zu bestimmen, in welcher Richtung genau das Fort ist, zu dem mensch gerne schreiten möchte. In diesem Fall aber würde doch niemand außer ganz radikalen Technophoben bestreiten, dass der Fortschritt 1976 war, als mit dem Apple II sich „normale“ Menschen erstmals EDV unabhängig von großen und zentralen Infrastrukturen hinstellen konnten.

    Der Rückschritt hing dann vielleicht weniger direkt an Apple. Aber die vollständig remote gemanagten und häufig wieder zu dummen Terminals degradierten Endgeräte vom iPhone-Typ, die ab 2007 die breite Mehrheit der Nutzenden wieder in die /360-Welt – nur halt etwas bunter und wackliger – zurückkatapultierten: Das war unbestreitbar ein Rollback in eine Sorte EDV, die in den 1990er Jahren für ein paar Momente lang überwunden schien.

    Ich kenne elknipsos Motivationslage nicht und finde auch keine Hypothese, die erklären könnte, warum er wohl mit so einem Rant an die Öffentlichkeit ging. Doch ist seine Position ein Musterbeispiel für das, was ich in Antisprache: Digitalisierung beschrieben habe: Dass etwas mit einem elektronischen Spielzeug geht (und möglichst auch nur genau mit diesem) ist durch Verknüpfung mit einem in der einen oder anderen Weise positiv besetzten Begriff magisch der rationalen Betrachtung von Zweck und Nutzen enthoben.

    Nachtrag (2024-01-29)

    Nach gerade mal anderthalb Monaten hat die Bahn mit mit ein paar zusammengeklickten Marketingfloskeln reagiert. Wie üblich war jede Menge CSS-Quatsch im Text, und auch die restlichen Floskeln verdienen keine weitere Erwähnung. Aber weil ich meine Anmerkungen so geistreich finde und weil ich zweifele, dass dass das bei der Bahn jemand mit etwas Aufmerksamkeit liest, dokumentiere ich meine Antwortmail auf die Antwortmail kurz mal hier:

    Liebe Mitarbeiter/in der Bahn,
    
    On Mon, Jan 29, 2024 at 03:00:10PM +0100, kundendialog@bahn.de wrote:
    > schätzen wir sehr und nehmen Ihre Kritik ernst. Der Trend in der
    > Gesellschaft geht seit Jahren klar in Richtung Digitalisierung.
    
    Wenn es irgendeine Möglichkeit gibt, Feedback zu Ihren Vorgesetzten
    zu geben, sagen Sie Ihnen doch bitte:
    
      KundInnen schätzen keine zusammengeklickten hohlen Floskeln, wenn sie
      sich beschwert haben -- da ist in der Tat gar keine Antwort noch
      besser.  Ideal wäre es natürlich, wenn es ein Budget für Antworten
      gäbe, die wirklich auf die Anfragen eingehen.
    
    Und Digitalisierung heißt nun mal nicht, es den Menschen schwerer zu
    machen.  Dazu gehört für mich jedenfalls alles, was ich nicht auf
    meinem Rechner machen kann oder für das ich eine Android-Emulation
    brauche.  Dazu gehört doppelt alles, für das ich eine Apple- oder
    Google-Id oder Apps aus schattigen Raupkopier-Stores brauche, weil
    die Bahn es *noch nicht mal* hinbekommt, wenigstens f-droid zu
    bespielen.
    
    Das scheint mir bei den aktuellen Plänen erneut der Fall zu sein.
    Wie kompliziert kann es sein, einen Barcode über eine Webseite
    auszuliefern?
    
    > BahnCard-Kundschaft – altersübergreifend – genutzt. Mit ihr
    > profitieren Reisende von vereinfachten Prozessen. So ist die
    
    Nein, die *Bahn* profitiert *vielleicht* von vereinfachten Prozessen.
    Die KundInnen hingegen müssen eine metrische Tonne Daten an Google,
    Apple, die Bahn …
  • Another Bookworm Regression: D-bus, X11 Displays, purple-remote, Oh My!

    When I reported on what broke when I upgraded to Debian bookworm, I overlooked that my jabber presence management (where I'm offline at night and on weekends) no longer worked. Figuring out why and fixing it was a dive into D-Bus and X11 that may read like a noir detective novel, at least if you are somewhat weird. Let me write it up for your entertainment and perhaps erudition.

    First off, against the March post, I have migrated to pidgin as my XMPP (“jabber”) client; at its core, presence management still involves a script in /etc/network/if-*.d where I used to call something like:

    su $DESKTOP_USER -c "DISPLAY=:0 purple-remote getstatus"
    

    whenever a sufficiently internetty network interface went up or down, where DESKTOP_USER contains the name under which I'm running my X session (see below for the whole script with the actual presence-changing commands).

    Purple-remote needs to run as me because it should use my secrets rather than root's. But it was the DISPLAY=:0 thing that told purple-remote how to connect to the pidgin instance to interrogate and control. As most boxes today, mine is basically a single-user machine (at least as far as “in front of the screen” goes), and hence guessing the “primary” X display is simple and safe.

    Between X11 and the D-Bus

    That purple-remote needed the DISPLAY environment variable was actually almost a distraction from the start. There are many ways for Unix programs to talk to each other, and DISPLAY might have pointed towards 1980ies-style X11 inter-client communication. But no, the purple-remote man page alreads says:

    This program uses DBus to communicate with Pidgin/Finch.

    Correctly spelled D-Bus, this is one of the less gruesome things to come out of the freedesktop.org cauldron, although it is still riddled with unnecessarily long strings, unnecessarily deep hierarchies, and perhaps even unnecessary use of XML (though I feel sympathies in particular for that last point).

    But that's not what this post is about. I'm writing this because after upgrading to Debian bookworm, purple-remote no longer worked when used from my if-up.d script. Executing the command in a root shell (simulating how it would be called from ifupdown) showed this:

    # DESKTOP_USER=anselm su $DESKTOP_USER -c "DISPLAY=:0 purple-remote getstatus"
    No existing libpurple instance detected.
    

    A quick glance at the D-Bus Specification gives a hint at how this must have worked: dbus-launch – which is usually started by your desktop environment, and my case by a:

    export $(dbus-launch --exit-with-x11)
    

    in ~/.xinitrc – connects to the X server and leaves a “property” (something like a typed environment variable attached to an X11 window) named _DBUS_SESSION_BUS_ADDRESS in, ah… for sure the X server's root window [careful: read on before believing this]. As the property's value, a D-Bus client would find a path like:

    unix:path=/tmp/dbus-1cAbvsX6FD,guid=795a0d...
    

    and it could open that socket to talk to all other D-Bus clients started within the X session.

    Via apropos to xprop to Nowhere

    So… Does that property exist in the running X server? Hm. Can I figure that out without resorting to C programming? Let's ask the man page system:

    $ apropos property
    [..lots of junk...]
    xprop (1)            - property displayer for X
    [...]
    

    Typing in man xprop told me I was on the right track:

    $ man xprop
    
    SYNOPSIS
         xprop  […] [format [dformat] atom]*
    
    SUMMARY
      The xprop utility is for displaying window and font properties in an
      X server.
    
    OPTIONS
      […]
      -root   This argument specifies that X's root window is the target win‐
              dow.   This  is  useful  in situations where the root window is
              completely obscured.
    

    So, let's see:

    $ xprop -root _DBUS_SESSION_BUS_ADDRESS
    _DBUS_SESSION_BUS_ADDRESS:  not found.
    

    Hu? Has dbus-launch stopped setting the property? Let's inspect Debian's change log; a major change like that would have to be noted there, wouldn't it? Let's first figure out which package to look at; the documentation then is in /usr/share/doc/<packagename>:

    $ dpkg -S dbus-launch
    dbus-x11: /usr/bin/dbus-launch
    $ zless /usr/share/doc/dbus-x11/changelog.Debian.gz
    

    Looking for “property” or “BUS_ADDRESS” in there doesn't yield anything; that would make it unlikely that the property was somehow dropped intentionally. I have to admit I had halfway expected that, with something like “for security reasons”. But then if someone can read your root window's properties, access to your session bus is probably the least of your problems.

    Still, perhaps someone is slowly dismantling X11 support on grounds that X11 is kinda uncool? Indeed, you can build dbus-launch without X11 support. If the Debian maintainers built it that way, the respective strings should be missing in the binary, but:

    $ strings `which dbus-launch` | grep _DBUS_SESSION
    _DBUS_SESSION_BUS_PID
    _DBUS_SESSION_BUS_ADDRESS
    _DBUS_SESSION_BUS_SELECTION_
    

    No, that's looking good; dbus-launch should still set the properties.

    Skimming the Docs is Not Reading the Docs.

    If I did not see the property a moment ago, perhaps I have used xprop the wrong way? Well, actually: I didn't read the D-Bus spec properly, because what it really says is this:

    For the X Windowing System, the application must locate the window owner of the selection represented by the atom formed by concatenating:

    • the literal string "_DBUS_SESSION_BUS_SELECTION_"
    • the current user's username
    • the literal character '_' (underscore)
    • the machine's ID

    – and then find the _DBUS_SESSION_BUS_PID on the window owning that selection. The root window thing was my own fantasy.

    If you bothered to skim the ICCCM document I linked to above, you may recognise the pattern: that's just conventional X inter-client communication – no wonder everyone prefers D-Bus.

    This is beyond what I'd like to do in the shell (though I wouldn't be surprised if xdotool had a hack to make that feasible). I can at least establish that dbus-launch still produces what the spec is talking about, because the “atoms” – a sort of well-known string within the X server and as a concept probably part of why folks are trying to replace X11 with Wayland – are all there:

    $ xlsatoms | grep DBUS
    488   _DBUS_SESSION_BUS_SELECTION_anselm_d162...
    489   _DBUS_SESSION_BUS_ADDRESS
    490   _DBUS_SESSION_BUS_PID
    

    The Next Suspect: libdbus

    Given that, dbus-launch clearly is exonerated as the thing that broke. The next possible culprit is purple-remote. It turns out that's a python program:

    $ grep -i dbus `which purple-remote`
    import dbus
        obj = dbus.SessionBus().get_object("im.pidgin.purple.PurpleService", "/im/pidgin/purple/PurpleObject")
    purple = dbus.Interface(obj, "im.pidgin.purple.PurpleInterface")
                data = dbus.Interface(obj, "org.freedesktop.DBus.Introspectable").\
    

    So, this is using the python dbus module. Let's see if its changelog says anything about dropping X11 support:

    $ zless /usr/share/doc/python3-dbus/changelog.Debian.gz
    

    Again, nothing for X11, property, or anything like that. Perhaps we should have a brief look at the code:

    $ cd /some/place/for/source
    $ apt-get source python3-dbus
    […]
    dpkg-source: info: extracting dbus-python in dbus-python-1.3.2
    […]
    $ cd dbus-python-1.3.2/
    

    You will see that the python source is in a subdirectory called dbus. Let's see if that talks about our property name:

    $ find . -name "*.py" | xargs grep _DBUS_SESSION_BUS_ADDRESS
    $
    

    No[1]. Interestingly, there's no mention of X11 either. Digging a bit deeper, however, I found a C module dbus_bindings next to the python code in dbus. While it does not contain promising strings (X11, property, SESSION_BUS…) either, that lack made me really suspicious, since at least the environment variable name should really be visible in the source. The answer is in the package's README: “In addition, it uses libdbus” – so, that's where the connection is being made?

    Another Red Herring

    That's a fairly safe bet. Let's make sure we didn't miss something in the libdbus changelog:

    $ zless /usr/share/doc/libdbus-1-3/changelog.Debian.gz
    

    You will have a déjà-vu if you had a look at dbus-x11's changelog above: the two packages are built from the same source and hence share a Debian changelog. Anyway, again there are no suspicious entries. On the contrary: An entry from September 2023 (red-hot by Debian stable standards!) says:

    dbus-user-session: Copy XDG_CURRENT_DESKTOP to activation environment. Previously this was only done if dbus-x11 was installed. This is needed by various freedesktop.org specifications…

    I can't say I understand much of what this says, but it definitely doesn't look as if they had given up on X11 just yet. But does that library still contain the property names?

    $ dpkg -L libdbus-1-3
    […]
    /lib/i386-linux-gnu/libdbus-1.so.3
    […]
    $ strings /lib/i386-linux-gnu/libdbus-1.so.3 | grep SESSION_BUS
    DBUS_SESSION_BUS_ADDRESS
    $
    

    No, it doesn't. That's looking like a trace of evidence: the name of the environment variable is found, but there's nothing said of the X11 property. If libdbus evaluated that property, it would stand to reason that it would embed its name somewhere (though admittedly there are about 1000 tricks with which it would still do the right thing without the literal string in its binary).

    Regrettably, that's another red herring. Checking the libdbus from the package in bullseye (i.e., the Debian version before bookworm) does not yield the property …

  • Unglückliche UI: Wenn Haken unausweichlich sind

    Derzeit finden bei uns an der Uni Gremienwahlen statt. Dabei wird (u.a.) der ein wenig den Reichsständen ähnliche Senat gewählt, ein Gremium, das (spätestens) seit dem unglücklichen Hochschulurteil des BVerfG aus dem Jahr 1973 („Wissenschaftsfreiheit ist, wenn die Profenmehrheit immer garantiert ist“) eine ziemlich fragwürdige Veranstalung ist. Effektiv bedeutungslos wurde er in Baden-Württemberg zudem im LHG von 2003, als im Namen der „unternehmerischen Hochschule” (aus der glücklicherweise nichts wurde) praktisch alle wesentlichen Entscheidungen im Rektorat („Vorstand“ würde das Gesetz gerne dazu sagen) konzentriert wurden.

    Beste Bedingungen also für eine Online-Wahl – wenn wirklich wer gegen den neuen Wahlmodus klagen sollte, taugt als Gegenargument, es gehe ja eh um nichts. Als guter Demokrat habe ich natürlich dennoch meine Stimme abgegeben. Dabei stellte sich rasch heraus, dass die Uni ein Rundum-Sorglos-Paket bei polyas gebucht hat, einem Laden also, der gegen Bezahlung allerlei Online-Wahlen für allerlei KundInnen abwickelt. In deren Marketing klingt das so:

    • Einfaches Wahlmanagement
    • Höchste Sicherheit und Datenschutz
    • Rechtsverbindliche Wahlergebnisse per Klick

    Dem mag so sein.

    Allerdings ist das polyas-System augenscheinlich nicht allzu flexibel. Offenbar nämlich ist hart kodiert, dass WählerInnen irgendeine Einwilligung erteilen müssen, bevor sie ihre Stimme abgeben können. Wer immer das für die Uni Heidelberg angepasst hat, fand aber nichts, für das er/sie nach einer Einwilligung hätte fragen können.

    Das Ergebnis ist leider ein Text, der selbst in Zeiten von Cookie-Bannern alles eher tut als eine Einwilligung erheischen:

    Screenshot eines stark gestylten HTML-Formulars: Eine Quadrat vor einem Text „Herzlich Willkommen zur Gremienwahl“, ein grüner Weiter-Button.

    Ein Quadrat vor einer Willkommensnachricht und ein grüner Weiter-Knopf – nun, ich habe die wenig informative Nachricht überlesen und auf den grünen Knopf gedrückt. Ihr ahnt es: ohne Erfolg.

    Da die polyas-Leute leider die Knöpfe und Checkboxen wie wild stylen (statt sie einfach zu zu lassen, wie der/die NutzerIn das vielleicht global konfiguriert hat), ist die pragmatische Panne, eine Einwilligungsbedingung durch eine Null-Nachricht zu ersetzen, beonders störend. Es ist eben nicht offensichtlich, dass mensch in irgendein gammliges Quadrat klicken soll, damit ein grüner (!) Knopf mit der Aufschrift „Weiter zur Stimmabgabe“ auch wirklich funktioniert.

    Doch tatsächlich, wenn ich in das Quadrat klicke, kommt ein Häkchen da rein und der Weiter-Knopf wird auch faktisch bedienbar:

    Wie eben, nur ist in dem Quadrat jetzt ein Haken und der Weiter-Button ist etwas grüner.

    Beachtet die dezente Änderung im Grün des Weiter-Knopfes: ja, das ist der Unterschied zwischen einem deaktivierten und einem klickbaren Knopf. Warum können diese Leute nicht einfach hinnehmen, wie ich meine Knöpfe im System gestylt habe? Grumpf.

    Darf ich ein elftes Gebot vorschlagen? Es wäre: die Größe von Widgets dürft ihr ändern, Farben, Relief und Interaktions-Effekte nicht.

    Aber klar, noch besser wär es in diesem speziellen Fall, wenn die (zumindest hier) dämliche Einwilligung in der Software von polyas wegkonfigurierbar wäre.

  • Ach Bahn, Teil 13: Besser wirds am XX.XX.XXXX

    Die Bahn behauptet ja gerne, all die indiskreten „Analytik“-Skripte, die sie über ihre Webseite ausliefert, dienten irgendwie dazu, die „User Experience“ zu verbessern. Wenn das so ist, so hoffe ich, dass ihnen ihre Analytik-Dienstleister Hinweise zur profunden Nutzlosigkeit von Meldungen dieser Art geben:

    Screenshot der Bahnseite mit einer Meldung „Zum XX.XX.XXX werden die technischen Systeme von bahn.de umgestellt [...] Mehr Informationen finden Sie unter d2.

    Aber nennt mich konservativ: Ich sehe dem angekündigen XX.XX.XXXX mit wenig Freude entgegen, denn trotz aller Analytik ist die Bahn-Webseite über die Jahre für mich immer schlechter bedienbar geworden. Während die ersten Formulare schnell luden, praktisch ohne Belastung für heutige CPUs renderten und mit Browser-Hausmitteln tastaturbedienbar waren, ist die heutige Javascript-Wüste in jeder Hinsicht lästig. Das einzige Feature jedoch, das mir schon in den ganz alten Bahnseiten fehlte, fehlt immer noch: Wenn sie schon wissen, wer ich bin und dass ich eine Bahncard 50 habe, dann könnten sie doch voreinstellen, dass ich auch Bahncard 50-Fahrkarten kaufen will.

    Nach etwas Kontemplation habe ich übrigens verstanden, dass ich das „d2“ in der Meldung oben ignorieren muss und kann, wohingegen das Ding mit dem Pfeil davor zwar völlig aus dem Layout fällt, aber den Satz im Absatz darüber komplettiert und mithin der Link sein wird, unter dem es „mehr Informationen“ geben soll. Also klickte ich auf die „Zukunft der Bahn“ und war nach dem oben Gesagten nur sehr mäßig enttäuscht, als ich Folgendes zu sehen bekam:

    Screenshot: „Sie haben in Ihrem Browser JavaScript deaktiviert, dies wird jedoch von unserer Anwendung benötigt.“

    Liebe Bahn: Ich will keine „Anwendung“. Ich will ein Formular, über das ich Fahrplanauskünfte bekomme und vielleicht noch Fahrkarten kaufen kann. Ja, das geht ohne Javascript, und eine öffentliche Infrastruktur – um einen Gegenbegriff zum „modernen Dienstleistungsunternehmen“ einzuführen – sollte das auch dann möglich machen, wenn sie gegenwärtig in eine etwas ungeeignete Rechtsform gezwungen ist.

  • Alles kaputt first, Bedenken second

    Nachdem die Bahn sich weigert, Menschen, die auf ihren Computern selbst root sein wollen, 49-Euro-Tickets zu geben, versuche ich gerade, das Ding vom lokalen Nahverkehrsunternehmen VRN zu kaufen, denn die geben Plastikkarten aus (Lob immerhin dafür). Und weil ich gerade wirklich die Nase voll habe von vermurksten Webseiten (vgl. unten), wollte ich mir das Ding einfach in der „Mobilitätszentrale“ in Heidelberg kaufen. Aber keine Chance:

    Ein Aushang des VRN: das Mobilitätszentrum ist bis auf weiteres am Mittwoch zu, weil die Leute mit 49-Euro-Ticket-Bürokratie beschäftigt sind.

    Mit anderen Worten: Aufgrund des „muss aber digital sein“-Irrsinns, den Bundesverkehrsminister Wissing dem 49-Euro-Ticket verordnet hat, gibts keine Mobilität… szentrale. Ja klasse!

    Mensch vergleiche das insbesondere mit dem entspannten Ablauf beim 9-Euro-Ticket vor einem Jahr. Die Tickets kamen spontan, ohne Abo und ganz normal aus Papier aus dem Automaten, keine Mobilitätszentren mussten schließen, und es gab auch sonst keine nennenswerte Beeinträchtigung der Kundendienste (soweit sie nicht eh schon kaputt waren). Ist es eigentlich schon nachgewiesener böser Wille, wenn Wissing statt eines einfachen und bewährten Verfahrens etwas erzwingt, das rechts und links explodiert?

    Links und rechts? Na klar. Ich versuche seit einer Woche, mir das Juni-Ticket aus der murksigen Bahn-App zu holen und habe dazu mindestens sieben Captchas gelöst, nur im dann immer das hier zu kriegen:

    Foto eines Mobiltelefonbildschirms mit der Meldung 503 Service Unavailable von der Webseite accounts.bahn.de

    Wie oft muss ich das probieren, um bei einem eventuellen Schwarzfahrverfahren keinen Ärger zu bekommen?

    Fast schon überflüssig zu erwähnen, dass vom Bahn-Abo-Support seit letztem Freitag kein Signal kam zu einschlägigen Fehlerberichten außer einer Eingangsbestätigung.

    Nachdem das „Mobilitätszentrum“ zu hatte, habe ich es übrigens doch mit der VRN-Webseite probiert, mit dem erwartbaren Ergebnis. Das Javascript auf https://abo.rnv-online.de/abo/new.aspx landet auf einem luakit mit einem:

    TypeError: $('.nyroModal_2').nyroModal is not a function. (In '$('.nyroModal_2').nyroModal()', '$('.nyroModal_2').nyroModal' is undefined)
    

    in new.aspx (ASP! Für Menschen unter 45: Das sind Active Server Pages, irgendein unsäglicher Microsoft-Scheiß, den ich für längst jenseits von smells funny gehalten habe), Zeile 327 hart, woraufhin die Dialoge nicht mehr gehen (und der blöde Spinner permanent oben auf der Seite steht).

    Mit einem Firefox kommt mensch immerhin weiter, auch wenn das immer noch eine ziemliche Klickerei ist und ich beim ersten Versuch nach all den Einwilligungen magisch wieder neu anfangen musste.

    Sollte wer das lesen, der/die bei der letzten Wahl FDP gewählt („Rasende Porno-Kiffer“, wie fefe so schön gesagt hat) hat: Ohne euch hätten wir immerhin den Wissing nicht, der auch nach Maßstäben von MinisterInnen besonders destruktiv agiert. Schämt euch! Für den ganzen 49-Euro-Scheiß habe ich was gut bei euch.

    Nachtrag (2023-06-07)

    Am Nachmittag habe ich, geduldig wie ich bin, das mit dem Juniticket von der Bahn nochmal probiert. Und siehe da, ich bin an der Authentifizierung vorbeigekommen (ich musste wieder „Planeten“ antatschen).

    Aber was soll ich sagen? Es geht immer noch nicht. Die Meldung, die der „Navigator“ jetzt ausspuckt, ist auch kein Stück besser als das gewohnte 503 von accounts.bahn.de. Wenn ich der Anweisung „Swipe down to Refresh“ folge, bekomme ich nämlich:

    Foto eines Bildschirms mit einem modalen Dialog: „The order could not be found.  Please ensure that you have centered all of the information correctly“

    Was denn für eine „order“? Ich habe keine eingegeben. Ich habe nur runtergeswipt. Welche Information also sollte ich bitte „correctly“ eingeben? Vielleicht anmutiger swipen? Und ja, die Authentifikation scheint ok; jedenfalls zeigt mir das Ding meine Bahncard, wenn ich den entsprechenden Menüpunkt antatsche.

    Was für ein Murks! Funktioniert das überhaupt für irgendwen? Und hat irgendwer auch nur irgendwas vom Abo-Support der Bahn bekommen, das nicht nur die Eingangsbestätigung ist?

    Nach-Nachtrag: Ah. Per Hand hinzufügen (mit dem eigenartigen +-Knopf, der Abo-Nummer und dem Nachnamen) geht. Ha! Was kann da schon schiefgehen?

  • Skandalöse Plotholes: Loriot vs. Scrabble

    Wenn ich gerne mal eine Partie Scrabble spiele, mag das durchaus an Loriots Film Ödipussi aus dem Jahr 1988 liegen. Darin versucht eine ältere Dame („Tante Mechthild“) zunächst, mit dem Wort „Hundnase“ durchzukommen:

    Ein Scrabble-Brett mit einigen gelegten Wörtern, eine Hand vollendet gerade „Hundnase“

    Rechte: Warner Home Video (nehme ich an)

    Das führt natürlich zu einer der großartigen Debatten, ob es nun ein Wort gebe oder nicht und ob es von den jeweiligen Hausregeln her zulässig sei. Die Spielrunde zwingt Mechthild mit strengen Blicken und Kommentaren, das Wort zurückzunehmen. Sie darf es aber – das ist auch schon eine liberale Regelabweichung – nochmal probieren. Auf diese Weise entsteht der Klassiker „Schwanzhund“:

    Das gleiche Scrabble-Brett wie eben, nur vollendet die Hand jetzt „Schwanzhund“

    Rechte: Warner Home Video (nehme ich an)

    Ich weiß gar nicht, wie mir das bisher entgehen konnte, aber: Das ist sehr wahrscheinlich ein Plothole, ein Fehler im Drehbuch. „Schwanz“ sind ja sieben Buchstaben, also alle, die mensch beim Scrabble auf der Hand hat. Wie aber hat sie dann vorher „Nase“, also mit einem E, legen können?

    Es gibt eigentlich nur zwei Erklärungen[1]: Entweder ist Tante Mechthild tüddelig und hat versehentlich acht Steine auf der Hand gehabt (aber hätten ihre strengen MitspielerInnen sie das machen lassen?). Oder sie hat geschickt betrogen und das E gegen einen der Schwanz-Buchstaben ausgetauscht.

    Es mag schon sein, dass in diesem Twist eine subtile Botschaft von Loriot liegt, zumal Mechthilds Behauptung, das seien 57 Punkte, so auch nicht stimmt. Zwar ist richtig, dass mit den Buchstabenwerten des Filmspiels, dem Doppelwert des W und dem dreifachen Wortwert unter dem S 3 × 19 = 57 Punkte rauskommen, aber Mechthild bekommt eigentlich noch den Bonus fürs Ablegen aller Buchstaben und kommt also auf 107 Punkte – es sei denn, sie hat wirklich ein E behalten, weil sie acht Buchstaben auf der Hand hatte (vgl. oben).

    Aber dann passen die Buchstabenwerte nicht zu modernem Scrabble; jedenfalls in den (laut Wikipedia seit 1987) aktuellen deutschen Scrabble-Spielen gibt das C vier Punkte und das W drei Punkte. Ob das in alten Scrabbles anders war? Vielleicht gab es da auch noch keinen 50-Punkte-Bonus? Das gefilmte Spiel ist jedenfalls kein englisches Spiel (in dem die Buchstabenwerte natürlich ganz anders sind), erstens wegen der (deutschen) Beschriftung der Multiplikatorfelder, zweitens, weil es einen Ö-Stein gibt.

    Fragen über Fragen. Wer zur Aufklärung beitragen kann: gerne. Und guckt gar nicht erst: Bei IMDB ist das (noch) nicht kommentiert.

    [1]Dass die beiden Versuche in einem Zug passierten ist klar, weil sich am restlichen Brett nichts änderte. Theoretisch, das sei eingestanden, wäre denkbar, dass sie ihre Buchstaben in ihrem nächsten Zug ausgetauscht hat und ansonsten alle SpielerInnen über zwei Runden nur gepasst oder selbst ausgetauscht haben, aber das hat es wohl in der gesamten Geschichte des Scrabblespielens noch nicht gegeben.
  • Ach Bahn, Teil 11: Wenn Geschenke schlechte Laune machen

    Eine Papier-Fahrkarte auf dem Bezug von Nahverkehrssitzen in den Bahn

    Sieht zwar digital aus, funktioniert aber und geht schnell: Eine Fahrkarte aus dem Automaten auf den weichen Polstern der Nahverkehrs-Bahn.

    Die Bahn verschickt ja dann und wann mal Gutscheine über einige Euro, einzulösen für Fahrkarten innerhalb eines relativ knappen Zeitraums. Ich zum Beispiel habe gerade einen über 15 Euro, der bis zum 30.11. wegmuss – und ich kann ihn nur einlösen, wenn ich über 50 Euro verfahre. Viele Gelegenheiten dafür gibts bei mir nicht mehr.

    Leider würde dieser Gutschein nur auf der Webseite der Bahn funktionieren, also weder am Automaten noch gar am Schalter. Das war früher (wie in: bevor man „Digitalisierung“ machen musste) kein schlimmes Problem. Zu meiner Schande muss ich gestehen, dass ich für 15 Euro in Einzelfällen durchaus bereit bin, meine natürliche Abneigung gegenüber Marketing zu überwinden.

    Digitalisierung ist, wenn Menschen, die keinen Bock drauf haben, Computer verwenden müssen.

    Inzwischen jedoch hat sich die Bahn digitalisiert. Digitalisierung ist, ich habe schon mal drüber geschrieben, wenn alles außer Werbung und Ausforschung kaputt ist. Jedenfalls, bis mensch es einmal aus- und wieder eingeschaltet hat. So auch heute bei der Bahn, nur, dass ich die nicht powercyclen kann.

    Um halb neun versuche ich zum ersten Mal zu buchen. Ich muss ein hCaptcha mit „Tassen mit Kaffee“ lösen. Ich füge mich: Für 15 Euro mache ich ein Mal sogar so einen Scheiß. Nach erfolgreichem Lösen (ob das wirklich immer Kaffee war in den Tassen? Wer weiß?) bekomme ich aber nur ein „429 Too Many Requests“ von der Bahn.

    Ich fluche und verfluche das giftige Geschenk der Bahn, zumal ich schon ahne, was kommt, wenn ich einen Reload mache. Klar: ich bekomme das nächste Captcha. Libellen. 7 Euro 50 pro gelöstem Captcha sind allmählich schon unterhalb der Grenze meiner Käuflichkeit. Wird aber sowieso nichts, denn „429 Too Many Requests“.

    Um den Zorn auf das Bahn-Management etwas abkühlen zu lassen und den Computer-Leuten der Bahn etwas Zeit zu geben, den Mist geradezuziehen, beschließe ich, das um 11 Uhr nochmal zu probieren.

    Digitalisierung ist, wenn es Werbung zeigt und dann abstürzt.

    Ich lese meine Mails. Wer den Schaden hat, braucht für den Spott nicht zu sorgen, denn die Bahn schreibt:

    Subject: Aktualisieren Sie Ihr Konto

    Ihr Administrator hat soeben beantragt, dass Sie Ihr Deutsche Bahn-Konto aktualisieren, indem Sie folgende Aktion(en) ausführen: requiredAction.CONFIGURE_TWO_FACTOR_AUTH. Klicken Sie auf den untenstehenden Link, um diesen Prozess zu starten.

    https://accounts.bahn.de/auth/realms/db/login-actions/action-token?key=<691 byte base 64>

    Wie bitte? Wozu soll ich mich Zwei-Faktor-authentifizieren, wenn ich nicht mal ohne so Klimbim reinkomme? Warum bitteschön soll ich zum Fahrkartenkauf in Zukunft ein Telefon brauchen, das mir Anweisungen gibt, welche Zahlen ich in einen Computer zu tippen habe, damit die Bahn sich herablässt, mein Geld zu nehmen?

    Es geht hier ja wirklich nicht um Fort Knox oder die Codes der Atombomben in Büchel, sondern allenfalls darum, dass mal wer auf meine Kosten Zug fahren könnte. Das Risiko dafür schätze ich übrigens nach 20 Jahren elektronisch gekauften Bahnfahrkarten als im Wesentlichen verschwindend ein, um so verschwindender, als die Bahn ja noch nicht mal bona fide-KundInnen online Karten verkauft. Jedenfalls nicht mir.

    Und dann, ganz ehrlich, Bahn: Ihr kriegt ja nicht mal mehr eure normale Infrastruktur auch nur ansatzweise auf Reihe. Wie könnt ihr da irgendeine Hoffnung hegen, etwas wie 2FA so hinzubekommen, dass das nicht nur bei Neumond und Nipptide tut, was es soll?

    Digitalisierung ist, wenn alles außer Werbung und Ausforschung kaputt ist.

    So ist auch das Ende der Geschichte absehbar. Ich bereue, dass ich keinen Screenshot gemacht habe. hCaptcha ist weiter online, aber offensichtlich im Spott-Modus: Kaninchen am Strand. KANINCHEN AM STAND?!? Solche Witze finde ich nicht lustig, wenn ich gerade merke, dass ich für fünf Euro pro Runde Tassen, Libellen und Kaninchen am Stand angeklickt habe. Au weia. Baisse an der Börse, auf der meine Würde gehandelt wird (einschlägiger Dilbert-Strip).

    Die Pointe war wenig überraschend, dass auch das wieder nur auf ein 429 Too Many Requests führte. Am Bahnhof hingegen hatte ich meine Fahrkarte am Automaten in ungefähr einer Minute, ganz ohne Captcha und 2FA, und ganz ohne Versuchung, irgendeinen Marketingquatsch mitzumachen.

    Ich war schon ein fanatischer Feind der Digitalisierung (also: Menschen, die keinen Bock drauf haben, müssen Computer verwenden), sobald sie wer erfunden hatte. Mein Fanatismus hat heute morgen viel Nahrung bekommen. Und nein, nur weil der Fahrkartenautomat einen Computer hat und seine NutzerInnen gelegentlich demütigt, ist er noch lang keine Digitalisierung; dafür funktioniert er zu zuverlässig, schnüffelt zu wenig und verlangt nicht von mir, Code von ihm unbesehen auf meinem Computer laufen zu lassen.

    Vielleicht fängt er an, Digitalisierung zu sein, wenn er erstmal Werbespots zeigt, bevor er Karten druckt. Und dabei abstürzt.

  • Ach Bahn, Teil 10: Textbausteine machen schlechte Laune

    Zu den universellen Erfahrungen des dritten Jahrtausends gehört ganz gewiss die Frustration nach Kontakt mit kommerziellem Kundendienst jeder Art. Das ist besonders bitter, wenn mensch das Niveau im Free Software-Bereich gewohnt ist: Bei fast allen Problemen und Wünschen, die ich zu Freier Software hatte, kam zumindest eine sinnvolle Reaktion, häufig auch rasch eine Lösung.

    Ganz anders im kommerziellen Bereich. Als neulich mein Rezept für Internet via Telefon nicht mehr funktionierte (im o2-Netz wiederverkauft von WinSIM), kamen auf zwei schriftliche Supportanfragen jeweils zwei zusammengeklickte Antworten, die offensichtlich nicht auf meine Anfragen eingingen und folglich auch komplett nutzlos waren. Ich wollte eigentlich schon an dieser Stelle empört darüber ranten, als nach einer verzweifelten telefonischen Anfrage tatsächlich eine nützliche Antwort mit einer vernünftigen Erklärung kam – gut genug, dass ich gelegentlich mal separat darüber bloggen will. Danach war ich zu versöhnt für einen Rant.

    Nun aber wieder die Bahn. Im September bekam ich nach einer Captcha-und-too-many-requests-Zumutung (Rant am Fediverse) auch noch zwei seltsame Mails von der Bahn, die in etwa so aussahen:

    Date: Wed, 21 Sep 2022 19:13:43 +0000 (GMT)
    From: DB <noreply@deutschebahn.com>
    To: msdemlei@fsfe.org
    Subject: Verify email
    
    Someone has created a Deutsche Bahn account with this email address.
    If this was you, click the link below to verify your email address
    
    https://accounts.bahn.de/auth/realms/db/login-actions/action-token?key=eyJhbGciO<ungefähr-1k-base64>-<vielleicht-eine-checksumme>&client_id=fe_esuite&tab_id=cY2rW_Q_7wc
    
    This link will expire within 15 minutes.
    
    If you didn't create this account, just ignore this message.
    

    Eine sehr nach fishing aussehende Mail mit genug Binärsoße, um ein halbes Betriebssystem drin unterzubringen? Auf Englisch von der deutschen Bahn? Und dann noch ohne CSS-Müll im Text? Das schien mir extrem verdächtig, aber auch genauere Untersuchung brachte keine Anzeichen für eine Fälschung zutage. Andererseits war der Bahn-Server ja vorher offensichtlich kaputt gewesen. Vielleicht war er ja insgesamt von Parteien übernommen, die mir noch übler wollen als die Bahn?

    Von solchen Fragen bewegt habe ich es mal wieder mit dem Bahn-„Kundendienst“ versucht. Folgendes habe ich noch am 21. September geschrieben:

    Liebe Mitarbeiter/in der Bahn,

    Kontext:

    Ich hatte heute schon wieder ganz großartige "User Experience" beim versuchten Fahrkartenkauf -- nicht nur musste ich mal wieder ein Captcha lösen (was ich offen gestanden für die Ursünde der UX halte), ich kam nach der Lösung unmittelbar auf eine nginx-Fehlerseite mit einem schlichten "too many connections". Der Back-Button führte auf noch ein Captcha.

    Gäbe es eine Alternative für den Online-Kauf von Fahrkarten, ich wäre jetzt dort. So, wie es ist, bin ich dankbar für Fahrkarten-Automaten.

    Das eigentliche Problem:

    Kurz nach diesem Erlebnis kamen zwei Mails wie die im Anhang. Die sieht nach allen Kriterien bis hin zu den Received-Headern aus wie eine legitime Mail von Ihnen. So, wie das gemacht ist, habe ich aber keine Ahnung, was das tut, und der endlose Binär-String löst jetzt auch wirklich kein Vertrauen aus. Ich habe das jetzt mal nicht geklickt -- es könnte ja sein, dass da jemand meinen Account übernehmen will.

    Was ist das? Habe ich das ausgelöst? Wäre es nicht gut, das etwas weniger spammisch aussehen zu lassen?

    Als der Bahn-Webserver wieder ging, hat sich herausgestellt, dass das tatsächlich Verifikationsmails der Bahn waren und das Web-Interface die Mails so angekündigt hätte (wenn auch ohne Begründung, warum überhaupt und gerade jetzt) – hätte ich am 21.9. nicht Captchas und „too many requests“ statt der Bahn-Webseiten bekommen.

    Der Bahn-Kundendienst hätte das jetzt erklären und sich entschuldigen können. Stattdessen kam fast drei Wochen später, am 11.10., eine profund nutzlose Antwort, die ich hier öffentlich kommentieren will, zunächst, weil ich meine Kommentare geistreich finde.

    Vor allem habe ich aber den Verdacht, dass jemand mit Technikkompetenz bei der Bahn dann und wann wahrnimmt, was ich hier schreibe. Warum ich das glaube? Nun, die Kundendienst-Antwort hatte endlich keinen CSS-Müll mehr an der text/plain-Alternative. Ich hatte das vor Jahren mal per Mail bemängelt, ohne dass sich etwas geändert hätte. Nun, nach meinem Post vom Juni, kommt die Mail endlich vernünftig und lesbar, sogar mit Absätzen und allem. Kann Zufall sein. Kann aber auch ein gutes Zeichen sein.

    Und drum hier die Bahn-Antwort mit meinen Kommentaren:

    vielen Dank für Ihre E-Mail. Bitte entschuldigen Sie die späte Antwort.

    Wir haben Ihr Anliegen geprüft.

    Die Authentifizierungsmail wird von uns versendet und ist für die Zurücksetzung Ihres Passwortes notwendig. Nach Klick auf den Link zur

    Meine Frage, wozu das Verfahren überhaupt eingerichtet wurde, bleibt leider unbeantwortet. Außerdem ging es nicht um ein Passwort, und es wurde auch nichts zurückgesetzt. Wie die ursprüngliche Mail selbst schon sagte, ging es um die Bestätigung einer Mailadresse. Mit einer sowohl falschen als auch nutzlosen Information aufzumachen, verdient für mich den Winston-Churchill-Preis für Erwartungsmanagement („Blut, Schweiß und Tränen“).

    Kontoaktualisierung, öffnet sich eine Seite auf bahn.de. Hier muss die E-Mail-Adresse mit Klick auf >> Klicken Sie hier, um fortzufahren bestätigt werden. Anschließend erscheint die Meldung, dass das Konto aktualisiert wird und Sie können sich wieder in Ihrem Kundenkonto anmelden.

    Achten Sie darüber hinaus bitte darauf, unsere DB Navigator App auf dem neuesten Stand zu halten und über einer sicheren und stabilen Internetverbindung zu buchen.

    Kundendienst-Tipp #1: Anfragen lesen und dann keine unpassenden Formtexte in die Antworten pasten -- ich habe keine Hardware, auf der die App laufen würde, und so dementsprechend hatte meine Anfrage auch nichts mit der App zu tun.

    Bei instabilen Internetverbindungen verzeichnen wir ein hohes Aufkommen von Buchungsabbrüchen.

    Kundendienst-Tipp #2: Fehler eingestehen. Da war keine instabile Internet-Verbindung. Was da kam, war eine Meldung vom Reverse Proxy der Bahn, weil offenbar der Dienst dahinter überlastet oder kaputt war.

    Die richtige Reaktion wäre gewesen: „Ja, sorry, wir haben es verkackt. Und weil das im Zusammenhang mit dem Captcha eingestandenermaßen nochmal blöder war, werden wir uns jetzt wirklich mal überlegen, den Captcha-Quatsch zu lassen. Ansonsten Entschuldigung.“

    Empfehlenswert wäre ebenfalls, beim Log-in via Browser die Cookies und den Verlauf zu löschen und zudem auf dem neuesten Stand zu halten und ggf. den Adblocker zu deaktivieren.

    Kundendienst-Tipp #3: Keine Voodoo-Tipps geben. Wie soll bitte das Löschen „des Verlaufs“ ein 500 (oder 504, ich weiß nicht mehr) des Reverse Proxy der Bahn reparieren? Und wenn Leute wirklich der Empfehlung folgen und „die Cookies löschen“, werden sie unter Umständen böse Überraschungen erleben. Wenn die Bahn meint, in Einzelfällen (wenn auch offensichtlich nicht diesem) könne ein Zurücksetzen Ihrer Cookies nötig sein: das kann mensch von der Server-Seite aus viel zielgenauer tun, etwa mit einer Webseite, die entsprechende Set-Cookie-Header ausliefert (und ggf. zu weiteren Seiten weiterleitet, die das für weitere Domains tun). Damit geht dann ein „gehen Sie zu <dieser URL>, um die Bahn-Cookies zu löschen“.

    Wenn die Bahn schließlich wirklich findet, dass aktivierte Adblocker die Nutzung ihrer Dienste behindern: Wäre das nicht ein Anlass, darüber nachzudenken, all den Tracking- und Marketing-Quatsch von der Seite runterzunehmen? Aber wie gesagt: das war vorliegend gar nicht das Problem.

    Wir hoffen, dass wir Ihre Fragen beantworten konnten und wir Sie bald in unseren Zügen begrüßen zu dürfen.

    Helfen Sie uns unser Angebot und unseren Service weiter zu verbessern. Beantworten Sie dazu bitte nachfolgende Fragen unter Umfrage bahn.de. Vielen Dank.

    Ganz perfekt sind die text/plain-Alternativen immer noch nicht, denn die URL der Umfrage geht dabei verloren. Aber weil Umfragen an sich und schon gar im Web ein Fluch sind, würde ich das in diesem Fall eher als Feature als als Bug klassifizieren.

  • Abenteuer Irland: Kaputtes Drupal und eine Mail an die Datenschutzbehörde

    Als Reaktion auf meinen Hilferuf gegen Google hat @ulif@chaos.social getrötet:

    Vielleicht einfach mal unverbindlich bei der irischen "Datenschutzbehörde" nachfragen? Nicht als Beschwerde, sondern als einfache Anfrage. Denen müssen sie diese Daten ja eigentlich gemeldet haben.

    Na schön. Das könnte interessant werden. Das erste Ergebnis einer duckduckgo-Anfrage nach „data protection ireland“. führt gleich zur data protection commission (bzw. Choimisiún um Chosaint Sonraí), https://www.dataprotection.ie/, und ich bekomme beim Draufklicken original das hier:

    Screenshot einer Fehlermeldung, die von „inputted in the form“ spricht

    Keine GET-Parameter, kein POST-Payload, einfach nur https://www.dataprotection.ie/, und schon habe ich eine support ID. Oh wow. Interessanterweise ändert sich das auch nicht, wenn ich dataprotection.ie Javascript erlaube; mit einem Firefox (statt einem luakit) erscheint hingegen die Webseite, wie sich die Leute das wohl vorgestellt haben.

    Wie kommt das? Ich curl-e mal eben die Seite und sehe schon recht weit oben:

    <meta name="twitter:card" content="summary_large_image" />
    <meta name="twitter:site" content="@dpcireland" />
    <meta name="twitter:title" content="Homepage | Data Protection Commission" />
    

    und noch ein paar mehr Zeilen Twitter-Service. Diese Leute sollten dringend mal ihrem Kollegen in Baden-Württemberg zuhören.

    Immerhin kommen aber keine Webfonts von Google, und es laufen auf den ersten Blick auch keine externen Tracking-Dienste („Analytics“). Aber ich finde kein Refresh-Meta oder etwas anderes, das erklären könnte, warum luakit diese eigenartige Fehlermeldung ausgeliefert bekommen könnte, während an curl und firefox recht anständige Antworten gehen.

    Leider macht auch dataprotection.ie die bedauerlichen Zwangs-Redirects auf https, so dass es nicht ganz einfach ist, zuzusehen, was mein Browser und der Webserver der IrInnen eigentlich miteinander ausmachen. Aber ich bin neugierig genug auf das, was da zwischen meinem Browser und dem dataprotection.ie-Server vorgeht, dass ich meinen mitmproxy auspacke und damit in die Kommunikation meines eigenen Computers einbreche[1].

    Auf diese Weise sehe ich meinen Request:

    GET https://www.dataprotection.ie/
    Host: www.dataprotection.ie
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    User-Agent: Tracking is lame.
    Accept-Encoding: gzip, deflate
    Accept-Language: C
    Connection: Keep-Alive
    

    Ah… richtig… ich bin ein wenig gemein mit der Sprach-Aushandlung in meinem normalen Browser und frage die Webseiten nach der Sprache C (was weniger gemein ist als es scheinen mag, aber das ist ein längeres Thema). Ein schnelles Experiment bestätitgt, dass es das ist, was den Drupal (das ist das Programm, das deren Webseite macht) der irischen Datenschutzbehörde getötet hat.

    Wenn das noch oder wieder kaputt ist[2], wenn du das hier liest, ist eine einfache Kommandozeile, um das Problem zu reproduzieren:

    $ curl -s -H "Accept-Language: C" https://www.dataprotection.ie/ | head -5
    <!DOCTYPE html>
    <html lang="en">
    <head>
    <title> Website error notice | Data Protection Commission </title>
    </head>
    

    Aber egal, ich war ja eigentlich nicht hier, um Webseiten zu debuggen. Wichtig ist: Ich habe eine Mailadresse. Und das ist viel besser als das, was auf der normalen Webseite steht:

    Screenshot: Kontaktinformation für konventionelle Post, Twitter, Instagram (?) und Linkedin (?) – aber keine e-Mail.

    Echt jetzt? Papierpost ist ja schon noch sowas wie ein offener Standard, aber dann nur die proprietären, überwachungskapitalistischen Dienste Twitter, Instagram und Linkedin für Kontaktaufnahme anzubieten und nicht die offene Mail, das wäre auch für einen normalen Laden schon ein starkes Stück. Für eine Datenschutzbehörde… Na ja, ok, wir reden hier über die irische.

    Immerhin steht in deren data protection statement:

    If you wish to contact our Data Protection Officer in relation to the processing of your personal data by the Commission, you can do so by e-mailing dpo@dataprotection.ie.

    Schön: immerhin gibts da eine Mailadresse, bei der ich mich beschweren könnte, aber ganz ehrlich: Anständige DatenschützerInnen sollten da bitte noch einen PGP-Schlüssel dazuschreiben. Jaja, ich weiß: das hier sind die irischen…

    Ich sollte natürlich nicht so voreingenommen sein; nur weil die bisher ein Witz waren, heißt das ja nicht, dass sie das auch weiter sein werden, und so habe ich ihnen gerade eine Mail geschickt:

    Dear DPO,

    It seems your staff has already fixed it, presumably after I triggered some sort of alarm system while investigating the problem (in which case: apologies!), but your CMS until a few minutes ago produced error messages like the one on http://blog.tfiu.de/media/2022/ie-data-protection-breakage.png when queried with an

    Accept-Language: C

    header. I'm reporting this partly to make sure the apparent fix wasn't a fluke. If it wasn't: kudos to your operations people to have noticed and fixed the problem so quickly.

    While I'm here, can I also put forward the reason I'm contacting you in the first place?

    You see, I'm trying to get rid of a Google account I created perhaps 15 years ago. To do that, Google tells me to log in. When I try that, Google asks for the e-mail address associated to the account (which is <withheld here>), then for the password. After I've put that in, Google sends a mail to the account with a confirmation code, which is perhaps not entirely unreasonable given I've steered clear of Google services requiring authentication for many years.

    But even after entering that confirmation code, it will not let me in, requiring me to enter a telephone number. This is absolutely unreasonable, and I would be grateful if you could tell Google that much; given that Google does not know any telephone number associated to me, there is no way this information could fend off abuse. This is clearly a blantant attempt to skim off the extra piece of data.

    I would normally not be bothering you with this obvious imposition, though; I would have liked to first take this to Google's data protection officer. However, I was unable to locate contact information in Google's privacy statements (I was served the German version), which I claim is in open violation of GDPR Article 13. So, could you

    (a) tell Google to publish a proper e-mail contact address as part of their GDPR information? While I have to admit that the GDPR is not explicit about it, it is clear to me that Google's own web forms, in particular when they require Javascript and Captchas, or, even worse, a google id, are insufficient to fulfil Art 13 1 (b) GDPR.

    (b) meanwhile, provide me with the contact e-mail of Google's data protection officer so I can take my issue to them myself?

    Thanks,

    (not Anselm Flügel)

    Ich bin neugierig, wie es weitergeht. Lobend will ich schon mal erwähnen, dass der irische DPO offenbar keine automatisierten Empfangsbestätigungen („Wir werden uns Ihrem Anliegen so bald wie möglich widmen“) verschickt.

    Fortsetzung folgt. Voraussichtlich.

    Nachtrag (2022-08-31)

    Ich muss das Lob zurücknehmen. Es gab doch eine (halb-) automatisierte Empfangsbestätigung, abgeschickt um 14:47 Lokalzeit in Dublin. Für ein Verfahren, das nur auf Computer setzt, ist das eine komische Zeit bei einer Mail, die am Vorabend um 19:17 MESZ rausging. Wirklich gelesen hat die Mail aber auch niemand. Das weiß ich schon, weil sie mich mit „To Whom It May Concern“ anreden, aber auch wegen der angesichts meiner Anfrage widersinnigen Empfehlung, ich möge mich doch an den Datenschutzbeauftragten „for that organisation“ wenden.

    Weil Leute vielleicht später mal die Evolution des Kundendienstesisch des irischen DPO nachvollziehen wollen, belästige ich euch mit dem Volltext:

    To Whom It May Concern,

    I acknowledge receipt of your e-mail to the Data Protection Commission (DPC) .

    In line with our Customer Service Charter, we aim to reply to the concerns raised by you within 20 working days, though complex complaints may require further time for initial assessment. In doing so, we will communicate clearly, providing you with relevant information or an update regarding your correspondence.

    What can I do to progress my concern?

    In the meantime, if your concern relates to processing of your personal data by an organisation (a “data controller”), or you wish to exercise your data protection rights (for example, access, erasure, rectification), you may wish to contact the data protection officer for that organisation in writing in the first instance. You may wish to forward copies of all written exchanges with the data controller to the DPC if you remain dissatisfied with the response you receive from them. You should send this documentation to info@dataprotection.ie and include the above reference number.

    What if I have already contacted an organisation (“data controller”) about my concerns?

    If you have already exchanged written correspondence with the data controller, and have not included this information with your initial contact with the DPC, you should send this documentation to info@dataprotection.ie quoting the case reference shown above.

    What happens when I send the DPC additional correspondence or documents?

    Please be advised that the Data Protection Commission does not issue acknowledgements for each item of follow up or supplementary correspondence received, but this correspondence will be included on the file reference above and assessed alongside your initial concern. Once this assessment has been carried out, a substantive response will be issued to you in due course.

    This acknowledgement, and the reference number above, is confirmation that we have received your correspondence and that it will receive a response at the earliest opportunity.

    Yours sincerely,

    Alexandra X. [und noch ein Nachname]

    [Ein paar Footer-Zeilen]

    Is le haghaidh an duine nó an eintitis ar …

  • Ach Bahn, Teil 9: Das Bahnhofs-WLAN

    Screenshot: Bahn-Fehlermeldung „Verbindungsfehler“

    Hat jemand in den letzten drei Jahren vom Bahnhofs-Captive Portal mal irgendwas anderes gesehen als das hier?

    Versteht wer das Bahnhofs-WLAN der Bahn? Ich habe das soeben aufgegeben, nachdem ich mir den „Verbindungsfehler“, den ich, glaube ich, seit vor Corona bei jedem Versuch der Verbindung mit Netzen mit der SSID WIFI@DB bekommen habe, genauer angesehen habe.

    Natürlich sitzt auch auf diesen Netzen leider ein Captive Portal. Diese sind generell so gemacht, dass in dem Netz nach dem WLAN-Verbindungsaufbau erstmal alle HTTP-Requests auf (leider normalerweise horrös verjavascriptete – es gibt aber auch löbliche Ausnahmen) Provider-Seiten umgeleitet werden, auf denen mensch dann irgendeinen Quatsch abklicken soll. Ganz ehrlich: Ich habe diesen Quatsch noch nie gelesen, zumal ich glaube, dass er rechtlich nicht bindend ist und sowieso davon ausgehe, dass diese Netze mich aufs Kreuz legen wollen.

    So weit, so ärgerlich. In WIFI@DB sieht es erstmal aus, als würde die Bahn das auch so machen:

    $ curl -v http://blog.tfiu.de
    [...]
    < HTTP/1.1 302 Found
    < Location: https://wifi.bahn.de/
    

    Die Login-Seite wäre demnach wifi.bahn.de. Von dort sollte jetzt die Javascript-Grütze samt riesigen Bildern kommen, die mensch von grottigen Captive Portals gewöhnt ist. Aber nein:

    $ curl -v https://wifi.bahn.de
    [...]
    < HTTP/1.0 302 Found
    < Location: /sp/7cwojgdj/connectionError
    

    Da wird mensch (bzw. computer) ganz platt gleich auf die Fehlerseite weitergeleitet – ok, da ist noch irgendeine Zeichenkette mit Trackinggeschmack dabei, die aber während meiner Experimente trotz variierender User Agents und MAC-Adressen konstant blieb. Um derwail mal was Nettes zu sagen: die Weiterleitung geht ganz ohne Javascript.

    Die Fehlerseite selbst hat dann übrigens fast Captive Portal-Standard. Sie kommt mit minifiziertem jquery (zur Darstellung von „Verbindungsfehler“?!) und einem 2000 Pixel breiten JPEG (aber: nur 150k groß; normal ist alles unter 2 Megabyte sub-par für Captive Portals).

    Wenn nun das mit der unmittelbaren Weiterleitung auf die Fehlerseite nur heute so wäre, würde ich sagen, gut, ist halt gerade kaputt. Aber wenn mich meine Erinnerung nicht sehr trügt, habe ich das schon lange nicht mehr anders gesehen.

    Dass bei der Bahn das Außergewöhnliche normal ist, habe ich neulich schon festgestellt. Aber dass so Kram einfach immer kaputt ist, scheint mir doch etwas unplausibel. Hat wer eine Erklärung?

  • Ach Bahn, Teil 5: Stuttgart 21

    Foto: Bahnaushang mit fast schon sarkastischer Umwegkennzeichnung

    Schon seit anderthalb Monaten müssen die Fahrgäste am Stuttgarter Hauptbahnhof den hier grün eingezeichneten Weg nehmen, um den Bahnhof Richtung Innenstadt und Nahverkehr zu verlassen, nach (realistischer) Bahn-Einschätzung ein Weg von fünf Minuten. Ich bin erstaunt, dass das bisher noch keinen Aufstand gegeben hat.

    Frage an Radio Eriwan: „Steht die Einundzwanzig in Stuttgart 21 für die Zahl der Jahre, die der Stuttgarter Hauptbahnhof kaputt sein wird oder für die Zahl der Minuten, die mensch braucht, um vom Bahnsteig an den Bahnhofsausgang zu kommen?“ Die Antwort: „Im Prinzip ja, aber in Wahrheit haben wir die Gesamtkosten für die öffentliche Hand in Milliarden Euro gemeint.“

    Ok: Die S21-Katastrophe ist zur Abwechslung nicht der Fehler der Bahn alleine. Das historische Faktum der Volksabstimmung, die das Immobilienspekulationsprojekt rund um den Stuttgarter Bahnhof abgesegnet hat, illustriert gewiss über die DB hinaus einige Grundprobleme der Abstimmungsvariante direkter Demokratie (die, nebenbei, die Entropieprobleme ihres repräsentativen Cousins teilt). Solange Menschen ein Wahnsinns„argument“ wie „wir haben schon zwei Millarden ausgegeben, jetzt müssen wir da auch durch“ kaufen, wird es mit so einer Abstimmerei nicht besser.

    Demokratietheoretisch noch kniffliger ist, dass hier in breiter Mehrheit Menschen, die selbst praktisch nie einen Bahnhof betreten („Autofahrer“) den NutzerInnen des Stuttgarter Bahnhofs mehr als ein Jahrzehnt auch nach Bahnmaßstäben allenfalls hinkenden Notfallbetriebs eingebrockt haben. Alle Auswege aus Problemen dieses Typs, die mir so einfallen, schweben irgendwo zwischen Ablismus und Aristokratie oder sprengen alle vernünftigen Konzepte von Gesellschaft; vermutlich ist das ein Zeichen, dass es echte Partizipation nur im Gespräch, nicht aber in der Abstimmung geben kann (was ich ja schon lange vermute).

    Baustellenaushang: "Zu den Zügen bitte die Halle verlassen"

    Mai 2022: Über ein Jahrzehnt nach der blutigen Räumung des Schlossgartens, damit es „endlich“ losgehen konnte mit dem Abbau des Stuttgarter Hauptbahnhofs, markiert die Bahn: Wanderer, betrittst du den Bonatzbau, kehre einfach wieder um.

    Durchaus ein Fehler der Bahn ist aber, wenn zunächst für zehn Jahre die Gleise nur über zwei Brücken von vielleicht 200 Metern Länge mit dem Bahnhofsgebäude verbunden sind – war in dieser Grube wirklich so lange so viel zu machen? – und dann selbst diese beiden Brücken gleichzeitig abgerissen werden. Genau das ist aktueller Stand der Dinge, und der Weg Richtung Innenstadt verläuft jetzt über eine riesige Schleife von vielleicht einem halben Kilometer. Damit braucht es mindestens fünf Minuten von Bahnsteig zu Vorplatz und ÖPNV – was solide in der Größenordnung der Wege liegt, die ich überhaupt zurückzulegen habe, wenn mich ein gehässiges Schnicksal nach Stuttgart verschlägt. Das hätte mit etwas kundInnenfreundlicher Planung nicht sein müssen.

    Updates zu meinen übrigen Sorgen mit der Bahn: Keine. Ich weiß immer noch nicht, welche „Angriffe“ eigentlich durch hcaptcha abgewehrt werden sollen, habe keine Hinweise, wie ich nicht bei jeder Buchung wieder ein Captcha lösen muss (heute habe ich ca. 15 Flugzeuge angeklickt), und es gibt immer noch kein Signal der Bahn zur doch eigentlich sehr naheliegenden Forderung, entweder die Bahn-Bonus-App oder zumindest ihre API offenzulegen.

  • Ach Bahn, Teil 3: Ade, du schöne Lounge

    Heute morgen habe ich eine Mail bekommen, die ich zunächst für einen besonders dreisten 419 scam gehalten habe. Doch nein, der Absender und die Received-Header sahen alle glaubhaft aus. Die Bahn hat mir wirklich mitgeteilt:

    Um Ihre BahnBonus Statusvorteile nutzen zu können, ist ab dem 13.06.2022 die BahnBonus App erforderlich.

    und in den „FAQ“ (ich wette, dass einen ganzen Haufen davon nie ein realer Mensch gefragt hat, mal ganz zu schweigen von „frequently“) steht tatsächlich:

    Warum gibt es ab Einführung der Statuslevel die meisten Statusvorteile nur in der BahnBonus App?

    Der Wunsch nach digitalen Lösungen ist in den letzten Jahren stark gestiegen. Die Änderungen ab 13.06.2022 werden diesem Wunsch gerecht, weswegen die Prozesse alle rein digital umgesetzt werden.

    Wie? Weil der „Wunsch nach digitalen Lösungen“ (vgl. Antisprache Digitalisierung) zugenommen hat, zwingt die Bahn Leuten „Smartphones“ auf? Leute haben gewünscht, dass sie noch mehr Zirkus machen müssen an den Lounge-Eingangskontrollen? Ich glaube kein Wort und rufe die Antisprache Innovation auf.

    Und, natürlich:

    Mit welchen Betriebssystemen kann die BahnBonus App genutzt werden?

    Bei iOS erfordert die BahnBonus App Version 14.0 oder höher. Bei Android erfordert die BahnBonus App aktuell Version 8.0 oder höher und ab Einführung der BahnBonus Statuslevel im Juni Version 9.0 oder höher.

    Nun ist die Teilnahme an Kundenbindungsprogrammen nichts, dessen mensch sich gerne bezichtigt und das vielleicht auch nicht ganz verträglich ist mit Bedenken bezüglich informationeller Selbstbestimmung. Bahn-Bonus, das will ich hier ganz schnell betonen, war meine einzige Sünde in dem Bereich[1]. Und ja, es ist ohnehin nicht sonderlich nett, in Lounges Kakao zu schlürfen, während die ungewaschenen Massen draußen am Bahnsteig frieren. Insofern will ich hier keine große Moral aufmachen.

    I like both kinds of operating systems: the one where Apple is root and the one where Google is root.

    Dennoch war ich immer gerne in den Lounges, schon, weil ich in keiner anderen Kategorie von Raum so oft zufällig auf Bekannte gestoßen bin. Auch wenn das wegen der kompromittierenden Natur des Eingeständnisses, dass mensch bei der Datensammelei Bahn-Comfort mitmacht, nicht immer ganz unbeschwert war, weine ich diesen Dingern schon eine Träne oder zwei nach. Und drum habe ich, auch wenn ich immer noch auf eine sinnvolle Antwort zu meiner Anfrage zu Captchas an die Bahn vom letzten Jahr warte, nochmal eine Mail an die Bahn-Kundenbetreuung geschickt:

    Date: Tue, 5 Apr 2022 08:31:05 +0200
    Subject: Charmeoffensive

    Hallo,

    Ich denke mal, Sie werden heute viele Mails dieser Art bekommen, aber ich denke, es kann nicht oft genug gesagt werden: Dass in Zukunft der Deal "Daten gegen Dienste" mit entweder Apple oder Google nötig sein soll, um in die Lounges zu kommen, ist sicher keine Charmeoffensive der Bahn, zumal im Hinblick darauf, dass VielfahrerInnen wahrscheinlich eher datenschutzbewusster sind als die Durchschnittsbevölkerung.

    Können Sie nicht wenigstens den Quellcode der "App" veröffentlichen, so dass Leute den Kram auch auf normale Rechner portieren können? Oder, wenn das eh nur eine dünner Lack über eine API sein sollte, das Zeug auch als normale Webseite anbieten?

    Schon etwas fassungslos,

    Ich weiß nicht, was die Bahn antworten wird (aber schon, was nicht: den tatsächlichen Grund dieses Stunts – während Corona waren die Lounges doch immer leer?), aber nach meinen bisherigen Erfahrungen kann ich zuversichtlich vorhersagen, mit was die text/plain-Alternative der Mail anfangen wird. Nämlich:

    -webkit-box-shadow: 0px 4px 8px #828282; /*webkit browser
    */-moz-box-shadow: 0px 4px 8px #828282; /*firefox */box-shadow: 0px 4px
    8px #828282;line-height:1.15;width:467.700pt; padding:0pt 42.550pt 0pt
    85.050pt ; background-color: #FFFFFF; margin:auto.header{
    padding-top:36.000pt ;}.footer{ padding-bottom:31.200pt ;}.page-content{
    position:relative;padding-top: 62.650pt ;padding-bottom: 70.900pt
    ;min-height:708.350pt; ;}del {text-decoration:line-through;color:red;}
    ins {text-decoration:none;} .Hyperlink-H{color:#0000FF;}
    

    Und noch viele Zeilen weiter so. Das ist übrigens schon seit Jahren in dieser Weise kaputt. Besonders mysteriös finde ich dabei ja, warum in diesem CSS-dump ausgerechnet eine Regel für das del-Element enthalten ist, dem ich, so glaube ich, in der Wildnis noch nie begegnet bin. Rätsel über Rätsel bei der Bahn.

    Nachtrag (2022-04-06)

    Ha! Ich hatte recht. Zur Illustration des Ausmaßes an Murks empfehle ich einen Blick auf den ganzen text/plain-Anhang des Bahn-Supports (scrollt ein Stück nach unten, da kommt wirklich auch etwas Nicht-CSS, wenn auch sehr kreativ geklebt).

    Ich habe kurz überlegt, ob ich das vielleicht nicht öffentlich machen sollte, weil es ja erstmal eine private Mail ist. Aber dann ist mir aufgefallen, dass da überhaupt nichts Privates drinsteht. Die Bahn ist ja auf keinen meiner Punkte eingegangen und hat nur „F“AQ-Punkte zusammengeklickt. Und eine Urheberrechtsverletzung kommt schon wegen mangelnder Schöpfungshöhe nicht in Frage.

    Hinweis an der Stelle: Haufenweise Plastik ließe sich wunderbar vermeiden, wenn der Quellcode offen wäre und damit die Menschen nicht unbedingt Betriebssysteme bräuchten, die auf ihrer aktuellen Hardware gar nicht laufen. Aber wem predige ich das?

    Die Antwort: 030 2970, wie in der Mail empfohlen. Oder eher: ich habe das gerade versucht, mitsamt einer Erörterung meines Captcha-Problems. Tatsächlich habe ich nach etwas Interaktion mit einem Computer und nur zwei Minuten Warteschleifenmusik einen Menschen am Telefon gehabt. Dieser war hörbar glücklich, „Ich schicke Sie mal kurz in die Mobilitätsabteilung“ seufzen zu können. Mit der Mitarbeiterin dort hatte ich dann jede Menge Mitleid, weil sie mir in keinem meiner Anliegen auch nur einen Millimeter weit helfen konnte, während ich mit ihrem mehrfachen Angebot, mich im Umgang mit dem DB-Navigator zu schulen, schon deshalb nichts anfangen konnte, weil dieser auf keinem meiner Rechner läuft (von meiner Abneigung gegen unpaketierte Software mal ganz abgesehen).

    Überrascht war ich über diesen Ausgang natürlich nicht. Aber wenn ich hier schon so wohlfeiles wie berechtigtes Bahn-Bashing betreibe, wollte ich es wenigstens versucht haben.

    [1]Also gut, wenn ich schon beichte, dann gleich richtig: ich habe auch mal versucht, hinreichend Schnipsel von Samba-Deckeln zu sammeln, um ein Schneidbrett mit Rapunzel-Logo zu bekommen. Das hat aber leider nicht geklappt.
  • Wasch mir den Pelz

    In der Forschung aktuell-Sendung vom 3.11. am Deutschlandfunk liefen zwei ziemlich bemerkenswerte Beiträge, die sich beide ein wenig im Umfeld von XKCD 1301 bewegen:

    Fake-Balkengrafik

    Nun: Ich würde XLS deutlich weniger trauen als der Autor dieser Grafik, Randall Munroe. Argumente dafür folgen unten. CC-BY-NC XKCD.

    Erstens gab es ein Interview mit Regina Riphan von der Uni Erlangen (nun: sie ist an deren WISO-Fakultät, sitzt also in Wirklichkeit in Nürnberg), in dem sie zur Nutzung wissenschaftlicher Erkenntnisse durch die Politik ab Minute 2:20 berichtet,

    dass die wissenschaftlichen Analysen am häufigsten verwendet werden, wenn sie thematisch und redaktionell aufbereitet sind

    und dann weiter ab 3:35:

    damit die Nutzung von wissenschaftlichen Erkenntnissen steigen kann, müssen die Texte gut verständlich sein und kurz zusammengefasst sein.

    Übersetzt: Wissenschaft bitte nur in Powerpoint. Eine Implikation dieser Erwartung zeigt der XKCD oben.

    Allein: Wenn etwas eindeutig ist, leicht konsumierbar runtergekocht und kurz zusammengefasst werden kann, ist es im besten Fall Lehrbuchwissen, aber jedenfalls nicht mehr Wissenschaft.

    Wissenschaft im Sinne von „was wir gerade erforschen” hat immer Voraussetzungen, Fehlerbetrachtungen und Einschränkungen, ohne die die Aussage nicht sinnvoll eingeordnet werden kann. Natürlich können auch wissenschaftliche Aussagen schon mal auf einen Satz zusammenschnurren („Cygnus X-3 enthält ein schwarzes Loch von 17 Sonnenmassen.”), aber der ist fast immer zu ergänzen mit einem „…wenn A, B und C so stimmen“. Ohne solche Einschränkungen wird es meist mehr oder weniger falsch („…aber wenn das so wäre, könnten wir das nicht im Röntgen sehen, und deshalb kann es gut sein, dass da stattdessen nicht mal ein weniger exotisches schwarzes Loch ist.“).

    Wer sich fragt, warum auch weit über den Umgang mit SARS-2 hinaus politisches Handeln oft ziemlich plemplem wirkt, könnte hier die Antwort finden. Wer Entscheidungen auf wissenschaftlicher Evidenz basieren will, muss sich auf Wisschenschaft einlassen, und das bedeutet in aller Regel, Papers zu lesen. Das dauert auch mit fachkundiger Erläuterung zumindest im Bereich der Naturwissenschaften Stunden. Für ein erstes Verständnis. Wer das nicht will, sollte vielleicht lieber nicht so viel entscheiden. Oder jedenfalls nicht sagen, seine/ihre Politik sei irgendwie anders als durch soziale Zwänge, Interessen, Fast Talk, Loyalität und Bauchgefühl geleitet.

    Dabei bleibt einzuräumen, dass ein großer Teil von Wissenschaft am Ende schlicht gar nicht hinhaut – wenn es einfach wäre, bräuchte es keine Forschung. Und gelegentlich ist Kram auch nicht nur falsch, weil er sackschwierig ist. Eine erstaunlich irre Geschichte in dieser Abteilung wird in einem zweiten Beitrag der Sendung erzählt: Da nutzen Leute ernsthaft Excel für Wissenschaft, etwas, das mir selbst in der Astronomie immer wieder mit fatalen Ergebnissen begegnet[1]. Wo Leute über Genetik reden, hat das besonders lachhafte Folgen:

    Der Name des Gens Septin 4, abgekürzt Sept4, wird automatisch in den vierten September umgewandelt.

    Das ist auch Mark Ziemann und KollegInnen von der Deakin University in Melbourne aufgefallen, die daraufhin nachgesehen haben, wie groß das Problem wohl in publizierten Arbeiten sein mag (PLOS Comput. Biol. 17(7), e1008984, doi:10.1371/journal.pcbi.1008984). Im DLF-Beitrag:

    [Ziemann:] „Die Ergebnisse waren kurz gesagt viel schlechter als bei unserer ersten Analyse 2016.“ [...] In fast jeder dritten Studie war ein Gen-Name in ein Datum gewandelt worden. [... Ziemann:] „Zunächst sollte Genomik nicht in eine Tabellenkalkulation aufgenommen werden. Es ist viel besser, Software zu nehmen, die für umfangreiche Datenanalysen geeignet ist.“

    Dem Appell am Ende des Zitats kann ich mal mit ganzem Herzen zustimmen, und zwar wie gesagt weit über das Feld der Genetik hinaus. Eine so klare und offensichtlich wahre Aussage verlässt das Feld der Wissenschaft. Ich kanonisiere sie hiermit zu Lehrbuchwissen.

    [1]Richtig schräg wird es, wenn Leute in Tabellenkalkulationen mit vorzeichenbehafteten sexagesimalen Koordinaten wie -80° 14' 27" rechnen. Klar, das sollten sie auch ohne Excel nicht tun, aber Leute, die immer noch Excel verwenden, haben offensichtlich besonders große Schwierigkeiten, sich von problematischen Traditionen zu lösen.
  • Ach, Sparda!

    Werbeschriften der Sparda-Bank

    Bin ich komisch, weil ich nicht gerne Geld geboten bekomme fürs Ausliefern von Bekannten an Banken?

    Ich bin leider Kunde der Sparda-Bank Baden-Württemberg. „Leider“ beispielsweise, weil mich die Bank dann und wann mit 75 Euro dazu bringen will, als Makler für sie tätig zu werden. Fände ich das Konzept Ehre nicht kreuzdoof, müsste ich wegen Betrag und Inhalt des Angebots Satisfaktion fordern.

    Lästiger im Alltag ist das Online-Banking, zumal es mit jedem „Relaunch“ schlimmer wird. Die utopische Hoffnung, ich könnte Kontoauszüge per PGP-verschlüsselter Mail bekommen und Überweisungen per signierter Mail in einem einfachen, maschinenlesbaren Format einreichen, habe ich dabei schon längst aufgegeben. Wahrscheinlich zwingen die diversen Zahlungsdiensterichtlinien die Bank wirklich zu (aus Sicht EDV-kompetenter Menschen) unsinnigen Schnittstellen.

    Aber wenn es schon hakelige Webseiten sein müssen, sollten sie wenigstens technisch so halbwegs in Ordnung sein. Fantastische Maximalforderung: die elementaren Funktionen sollten ohne Javascript gehen; das würde viel mehr für die Sicherheit tun als alle Zweifaktorauthentifizierungen des Universums. I have a dream.

    Die Sparda jedoch geht, wie gesagt, mit großen Schritten in die entgegengesetzte Richtung, kürzlich zu einem Laden namens TEO, mit dem sich einige Sparda-Genossenschaften, wie es aussieht, eine Art Fintech leisten wollten. Um damit nicht gleich bauchzulanden, ziehen sie ihre Kunden aus ihren alten (eingestandenermaßen auch unangenehmen) Systemen dorthin um.

    Schon, dass die KundInnen beim Umzug ein manuelles „onboarding“ samt Neueinrichtung der Konten sowie der (Nicht-) Zustellung von Kontoauszügen duchlaufen müssen, wirkt unnötig umständlich, so sehr ich verstehen kann, dass TEO nicht unbedingt die (vermutlich eher bescheidenen) Passwort-Hashes des alten Sparda-Eigenbaus übernehmen wollten. Bei den Investitionssummen, um die es hier vermutlich geht, wären jedoch elegantere Migrationspfade („bitte ändern sie jetzt ihr Passwort“) schon denkbar gewesen.

    Das um so mehr, als das onboarding richtig schlecht gemacht ist: Es erscheint erstmal ein leerer Bildschirm, und das ändert sich auch dann nicht, wenn mensch den Browser Javascript ausführen lässt. Kein Fallback, nichts, immer nur ein weißes Fenster. Das Javascript von TEO nämlich wirft eine Exception, wenn es kein local storage bekommt, und niemand fängt diese Exception. Ganz im Stil der neuen Zeit gibt es nicht mal ein minimales HTML ohne Skripting – nur weiß. Au weia.

    Zwei Zeilen Javascript würden reichen, um nicht verfügbare local storage zu diagnostizieren und das etwas weniger murksig zu machen (ordentliches HTML wäre natürlich immer noch nett). Etwas mehr Arbeit ist es, dann zu erklären, was da wie lang gespeichert wird und warum es ohne nicht gehen soll. Das jedoch würde ohnehin in die Datenschutzerklärung gehören, viel zusätzliche Arbeit wäre es also nicht. Wenn die Datenschutzerklärung etwas taugen würde, heißt das. Aber dazu gleich.

    Ich könnte jetzt weitermachen mit Punkten, an denen der Kram an allen möglichen und unmöglichen Stellen kaputt geht, ohne dass es irgendeine Sorte Fehlermeldung außerhalb der Javascript-Konsole (und welche Muggels kennen die schon?) gibt. Aber selbst wenn mensch den Browser – was bei Bank-Geschäften schon als schlechte Idee gelten kann – nach und nach immer unvorsichtiger konfiguriert, sind noch schwer verstehbare Schnitzer im Programm, etwa, dass der Flickercode die falsche Größe hat. Die meisten Clients haben inzwischen eine recht zuverlässige Idee von der physikalischen Größe der Anzeige; ein width: 6.5cm im CSS ist doch wirklich nicht zu viel verlangt.

    Ähnliche WTF-Momente ergeben sich in der Datenschutzerklärung der TEOs. Derzeit heißt es dort in 2.3:

    Zur Erhöhung der Kundensicherheit nutzen wir in TEO den Service reCAPTCHA der Google Ireland Limited, Gordon House, 4 Barrow St, Dublin, D04 E5W5, Irland. Im Rahmen der Registrierung in TEO wird das reCAPTCHA zur Erkennung und Unterscheidung zwischen missbräuchlicher Nutzung personenbezogener Daten durch Maschinen und menschliche Eingaben eingesetzt.

    Als ich das gelesen habe, habe ich erstmal mit dem „onboarding“ aufgehört, denn wer mir was verkaufen will, sollte nicht verlangen, dass ich Schaufenster oder Verkehrsschlider auf Zuruf von google abklicke, und mich schon gar nicht zum Ausführen von googles Code nötigen (ebay, hörst du mich?). Sparda beruft sich für diese Frechheit auf Art. 6 1(f) DSGVO, also berechtigte Interessen des Betreibers. Das ist offensichtlich Quatsch; Textchas oder selbst hostbare Tests funktionieren besser und unter weniger Kundenverprellung.

    Am Ende musste ich aber dringend überweisen und war entschlossen, den reCaptcha-Mist zur Not doch durchzustehen. Musste ich am Ende nicht nicht, google hielt meinen Browser offenbar wirklich für menschengesteuert – wer weiß, warum. Aber TEO lädt tatsächlich eine Datei recaptcha__de.js von google-Servern, und zwar dort aus einem Pfad wie /recaptcha/releases/CdDdhZfPbLLrfYLBdThNS0-Y/recaptcha__de.js – da könnte ich schon allein bei der URL ins Grübeln kommen, was für Informationen google da wohl aus dem Banking ausleiten mag (ok: ja, ich vermute in Wirklichkeit auch, dass die Buchstabensuppe eher etwas wie einen git-Commit auf google-Seite identifiziert – aber wenn die googles wollten, könnten sie über Pfade dieser Art fast beliebige Mengen an Information exfiltrieren, was erst dann auffallen würde, wenn mal wer Pfade verschiedener Clients vergliche).

    Was denken sich Leute, wenn sie ohne Not reCaptcha auf ihre Seiten packen? Diese Frage stellt sich fast noch mehr beim nächsten Punkt:

    2.4 Google Web Fonts

    Um Inhalte browserübergreifend korrekt und grafisch ansprechend darzustellen, werden in TEO Web Schriften von Google Fonts verwendet. Die Einbindung dieser Web Fonts erfolgt nicht über Google. Die Schriften liegen lokal auf Servern. Es erfolgt kein externer Serveraufruf bei Google. Es findet keine Informationsübermittlung an Google statt.

    Wenn ich recht verstehe, was die da sagen wollen, dann wäre das: Wir nehmen Fonts von google, aber ziehen sie nicht von google. Dann stellt sich die Frage, was diese Information hier soll – wenn die anfangen, aufzuzählen, wer alles irgendwie an der Software beteiligt war, die auf ihren Servern läuft, sind sie lang beschäftigt.

    Um das noch absurder zu machen: sie lügen (jedenfalls im Effekt). Zumindest gestern und heute versucht die Seite für mich, die URL https://fonts.gstatic.com/s/roboto/v18/KFOmCnqEu92Fr1Mu4mxP.ttf (und noch zwei weitere; ich hoffe, die Buchstabensuppe erhält nicht allzu viel Kompromittierendes über mich) zu dereferenzieren. Damit hat google die IP, via Referrer den Umstand, dass gerade wer überweist, und vermutlich auch die Muggel-Identität, da mich wundern würde, wenn nicht normal der google-Cookie auch an gstatic gehen würde (ich muss gestehen, das nicht näher untersucht zu haben, zumal fonts.gstatic.com auf meinen Maschinen zu localhost auflöst).

    Was soll das? Wenn TEO schon Geld in die Hand nimmt und meint, mir die Wahl des Fonts vorschreiben zu müssen (was ich übrigens lästig finde), dann sollen sie wenigstens irgendwas kaufen statt die vergifteten Geschenke von google zu nehmen und dann noch in ihrer Datenschutzerklärung zu lügen.

    Für eine teilweise Erklärung für die, na ja, Lüge (ich will gnädig sein: „das Versehen“) mit den google-Fonts hilft ein Blick auf die 107 (!) Requests, die mein Browser macht, um die Wurzelseite des Online-Bankings aufzubauen. Dabei zeigt sich, dass immerhin die meisten Daten von TEO-Servern kommen. Es bleiben aber, nach der Vorrede kaum überraschend, doch einige Cross-Site-Requests.

    • die erwähnten Google-Fonts
    • ein CSS, ein Logo, das Captcha-Javascript (von www.gstatic.com)
    • eine bizarre Datei „anchor“, die offenbar im Zusammenhang mit Captcha steht (und die den Browser vermutlich dazu bringt, die Fonts von fonts.gstatic.com zu ziehen)
    • Und dann noch Ressourcen list und logoutWeb von prod-teo.itmr.de, beides JSON, ersteres mit Zeug, was erstmal nach Werbequatsch aussieht, aber vermutlich Identitäsinformation ist.

    Die Suche nach ITMR in der Datenschutzerklärung ist vergeblich, www.itmr.de zeigt ohne Javascript nur einen Spinner:

    Ein Warte-Spinner

    Wenn dieses Ding genug Schöpfungshöhe für Copyright hat, liegt dieses vermutlich bei itmr. Hier verwendet unter der, klar, Satireklausel.

    Der Spinner ist schon mal deutlich mehr als die leere Seite von TEO. Mit Javascript kommt sogar ein Titel: „ITM Research GmbH – Smart Cloud Computing”, ansonsten bleibt es beim Spinner. ITM Research… nichts, was Wikipedia kennen würde. Smart? Na ja. Zieht auch erstmal fünf Pfund Zeug von Google, Fonts und eine Familienpackung Javascript von maps.googleapis.com, einen Haufen PNGs von www.google.com. Ziemlich viel Kram für einen rotierenden Spinner.

    Wenn ich der Seite obendrauf local storage erlaube, kommt endlich das heiß erwartete Cookie-Banner, und zwar so:

    Cookie-Banner mit vor-abgeklickten Trackingcookies

    Echt jetzt? Per default angeklickte Tracking-Cookies? Wie smart muss mensch wohl sein, um für so ein bisschen Überwachungsmehrwert ein fettes Bußgeld zu riskieren?

    Zurück zur Ausgangsfrage: Was für Daten tauscht die Sparda eigentlich mit diesen etwas anrüchigen Gesellen aus? „ITM-ation – unser Synonym für digitale Transformation und Innovation“ schreiben sie, wenn ihnen der Browser gut genug ist. Diese Leute bekommen mit, wenn ich mit der Sparda-Bank rede? Uh.

    Ich klicke auf „Mehr Erfahren”. Beim Bullshit Bingo hätte ich gleich gewonnen:

    Wir realisieren Projekte der digitalen Transformation und Innovation, um Ihnen durch die Digitalisierung von Geschäftsmodellen, Wertschöpfungsketten und Prozessen mehr Wachstum in einem immer stärkeren Wettbewerbsumfeld zu ermöglichen. [...] Wir entwickeln Apps und Web-Apps, um Geschäftsprozesse in digitale Ökosysteme zu transferieren. Wir entwickeln dabei Ihre Datenveredelungsstrategie, setzen aber auch externe Echtzeit-Dienste der künstlichen Intelligenz (KI) wie zum Beispiel Cognitive Services und Watson ein. [...] Eine positive User Experience ist unabdingbar in der Digitalisierung Ihrer Prozesse. Um das jederzeit und von überall zu erzielen, brauchen Sie zwischen Ihrer Anwendung und Ihren Kunden über alle Kanäle und Anwendungsoptionen hinweg funktionale und ansprechende Benutzeroberflächen und Schnittstellen.

    Der Bullshit gegen Ende suggeriert (ebenso wie der konsistente Totalausfall ohne …

  • Fürchten lernen 3: Microsoft

    Nach dem zweiten Teil meiner Leidensgeschichte über den Betrieb eines Mailservers in der Postmoderne ist es ruhig geworden: Nachdem ich erstmal das DNS vertrauenswürdig gestaltet hatte, fanden eigentlich alle, bei denen mein Server Mails einliefern wollte, dessen Reputation reiche schon hin.

    Ich hegte also Hoffnung, dass das alles nicht so schlimm ist wie ich geglaubt hatte, dass SMTP noch nicht kaputt ist und mensch mit vernünftigem Aufwand selbst Mail verteilen kann. Bis heute morgen, als von meinen Mailserver das hier zurückkam:

    XXXXXXXXXXXXX@XXXXXXXXXX.de
       host XXXXXXXXXXXX01i.mail.protection.outlook.com [104.47.2.36]
       SMTP error from remote mail server after RCPT TO:<XXXXXXXXXXXXX@XXXXXXXXXX.de>:
       550 5.7.606 Access denied, banned sending IP [116.203.206.117]. To request
     removal from this list please visit https://sender.office.com/ and follow the
     directions. For more information please go to
     http://go.microsoft.com/fwlink/?LinkID=526655 AS(1430)
    

    Oh nein. Microsoft. Na, mal sehen.

    Ich schicke meinen Web-Browser zu sender.office.com, und es erscheint einen Dialog mit einem kreiselnden Wartedings, ein sicheres Zeichen, dass da mal wieder „Web-Programmier“ am Werk waren, die einfach so voraussetzen, dass sie Code auf allen Maschinen ausführen dürfen. Na super: Mails verschicken geht nicht, ohne Microsoft-Code laufen zu lassen.

    Aber egal, sollen sie halt auf meine CPU; das Javascript zieht ein Captcha ein (zum ersten Mal bin ich froh, dass das Microsoft ist, denn so ist es immerhin kein Google-Captcha und ich muss nicht deren „KI“ trainieren). Captcha gelöst, für ein paar Sekunden passiert nichts, dann eine Meldung:

    Step 1: Our messaging service has experienced a temporary issue,
    please resubmit your information below.
    

    Mach ich das mit dem resubmit, gleiche Reaktion. Hatte ich was anderes erwartet?

    Ok, kann ja sein, dass die einfach keine gute Fehlermeldung haben und das irgendsoein dämlicher CSRF-Schutz mit Referrern ist (auch wenn mir wirklich nicht klar wäre, wer auf diesem Zeug CSRF machen wollen könnte). Lasse ich meinen Browser also noch Referrer-Header schicken. Keine Änderung, immer noch kaputt.

    An der Stelle werde ich sauer und will irgendwem eine zornige Mail schicken. Aber: Keine Kontaktadresse, nirgends. Ich überlege, ob ich eine Telemediengesetz-Beschwerde auf den Weg schicken soll, denn zweifelsohne ist das ein kommerzielles Angebot unter deutschem Recht (der Empfänger ist eine hiesige Firma, für die Microsoft das bestimmt nicht umsonst macht). Vielleicht. Aber bevor ich mit einem Scheiß wie dem Telemediengesetz argumentiere, brauche ich noch mehr Verzweiflung.

    Aber gucken wir erstmal, was da „more information“ ist. Ich lasse meinen Browser also auf http://go.microsoft.com/fwlink/?LinkID=526655 los und bekomme ein Redirect auf:

    https://technet.microsoft.com/library/mt661881(v=exchg.150).aspx
    

    Sowohl auf luakit als auch per curl reagiert der Microsoft-Server darauf mit:

    Unable to process request
    

    Gratuliere. Was machen diese Leute eigentlich beruflich?

    Aber wurst, werfe ich halt meinen Browser für wüste, grob privatsphäreverletzende Seiten an – mein Leben ist zu kurz, um den Quatsch, den die Firma da auf die Menschheit loslässt, verstehen zu wollen. Mit dem Browser fürs Grobe kommt dann auch was: eine Seite mit viel Rede von „Defender”. Aber keine nützliche Information, und so probiere ich halt sender.office.com nochmal mit dem Kamikaze-Browser.

    Ergebnis: Our messaging service has experienced a temporary issue, please resubmit your information below.

    Immerhin hat ist auf der Info-Seite etwas, das nach einem Kontakt-Link aussieht. Aber nein, es ist eine Issue-Seite auf github, https://github.com/MicrosoftDocs/feedback/issues, 1630 Open Bugs. Jaklar, da schreibe ich meinen noch dazu. Was glauben diese Leute eigentlich?

    Stattdessen habe ich dann heute vormittag an postmaster@office.com geschrieben, und Mail ist nicht gleich zurückgewiesen worden. Entsprechend hatte ich da noch Hoffnung, Microsoft könnte sich immerhin an diesen Teil der Mail-RFCs halten. Jetzt, 18 Uhr, sieht es nicht danach aus, da kam genau keine Reaktion (im diesem Vergleich, es schmerzt mich, das zuzuzugeben, sieht die Telekom viel besser aus). Und die sender.office.com-Seite ist auch noch kaputt.

    Andererseits: Offensichtlich haben die Exchange-Leute gerade tatsächlich außergewöhnliche Probleme. Vielleicht habe ich einfach nur Pech gehabt und das ist sonst nicht so rekursiver Murks?

    Nachtrag (2021-03-12)

    (um 15:30) Immerhin weist Microsoft Mails an postmaster nicht so rüde ab wie andere Mails. Mein Mailserver schreibt mir gerade, dass er es 24 Stunden lang nicht geschafft hat, die Mail an postmaster@office.com auszuliefern, dass er es aber weiter probieren wird. Es bleibt spannend. Unterdessen findet aber yahoo.de, dass es mit meiner Reputation bergab geht. Oh je. Das sieht nach einem Alptraum mit Verzögerung aus.

    Nachtrag (2021-03-15)

    (mittags) Nee, natürlich ist nichts bei postmaster@office.com einzuliefern. Wo kämen wir da auch hin. Dafür macht inzwischen wenigstens die sender.office.com-Geschichte etwas, wenn auch von der Mail, die das verspricht, innerhalb von 10 Minuten nichts zu sehen ist.

    Nachtrag (2021-03-15)

    (abends) Nach noch einem Versuch mit der sender.office.com-Geschichte kam dann auch eine Mail mit einem Link, und dessen Derefenenzierung hat tatsächlich etwas produziert, das versprach, mein Server werde innerhalb von 30 Minuten von der Blacklist genommen. Schon frech, wie dieser Laden über die Zeit anderer Menschen verfügt. Auf der anderern Seite: jetzt will ich da gar niemandem mehr Mails schreiben. Pfft.

  • Mailman3: "Cannot connect to SMTP server localhost on port 25"

    I've been a fairly happy mailman user for about 20 years, and I ran mailman installations for about a decade in the 2000s.

    Over the last week or so, I've spent more time setting up a mailman3 list off and on than I've spent with mailman guts in all the years before, which includes recovery form one or two bad spam attacks. Welcome to the brave new world of frameworks and microservices.

    Perhaps the following words of warning can help other mailman3 deployers to not waste quite as much time.

    Badly Misleading Error Messages

    Most importantly, whatever you do, never call mailman as root. This will mess up permissions and lead to situations really hard to debug. In particular, the error message from the post's title:

    Cannot connect to SMTP server localhost on port 25
    

    apparently can have many reasons (or so the recipes you find on the net suggest), few of which have anything to do with SMTP, but one clearly is when mailman can't read or write to queue files or templates or whatever and bombs out while trying to submit mail.

    Morale: Don't claim too much when writing error messages in your programs.

    Unfortunately, I've fixed the thing accidentally, so I can't say what exactly broke. The take away still is that, in Debian (other installations' mailman users might be called something else) you run mailman like this:

    sudo -u list mailman
    

    However, I can now say how to go about debugging problems like these, at least when you can afford a bit of mailman unavailability. First, stop the mailman3 daemon, because you want to run the thing in the foreground. Then set a breakpoint in deliver.py by inserting, right after def deliver(mlist, msg, msgdata), something like:

    import pdb; pdb.set_trace()
    

    Assuming Debian packaging, you will find that file in /usr/lib/python3/dist-packages/mailman/mta.

    Of course, you'll now need to talk to the debugger, so you'll have to run mailman in the foreground. To do that, call (perhaps adapting the path):

    sudo -u list /usr/lib/mailman3/bin/master
    

    From somewhere else, send the mail that should make it to the mail server, and you'll be dropped into the python debugger, where you can step until where the thing actually fails. Don't forget to remove the PDB call again, as it will itself cause funky errors when it triggers in the daemonised mailman. Of course, apt reinstall mailman3 will restore the original source, too.

    Template Management Half-Broken

    When I overrode the welcome message for a mailing list, the subscription notifications to the subscribing users came out empty.

    This time, there was at least something halfway sensible in the log:

    requests.exceptions.HTTPError: 404 Client Error: Not Found for url: http://localhost/postorius/api/templates/list/kal.sofo-hd.de/list:user:notice:welcome
    

    Until you read up on the mailman3 system of managing templates (which, roughly, is: store URIs from where to pull them), it's a bit mystifying why mailman should even try this URI. Eventually, one can work out that when you configure these templates from Postorius, it will take the URI at which mailman should see it, Postorius, from POSTORIUS_TEMPLATE_BASE_URL in /etc/mailman/mailman-web.py. This is preconfigured to the localhost URI, which proabably only rarely is right.

    To fix it, change that setting to:

    POSTORIUS_TEMPLATE_BASE_URL = 'http://<your postorious vserver>/postorius/api/templates/'
    

    Of course it'll still not work because the old, wrong, URI is still in mailman's configuration. So, you'll have to go back to the template configuration in Postorius and at least re-save the template. Interestingly, that didn't seem to fix it for me for reasons I've not bothered to fathom. What worked was deleting the template and re-adding it. Sigh.

    As soon as you have more than one template, I expect it's faster to change the URIs directly in mailman's database, which isn't hard, as seen in the next section.

    [Incidentally: does anyone know what the dire warnings in the docs about not using sqlite3 on “production” systems actually are about?]

    Disable Emergency Moderation After Moving

    Basically because I was hoping to get a more controlled migration, I had set one list on the old server to emergency moderation before pulling the config.pck. Don't do that, because at least as of now mailman3 has the notion of emergency moderation but makes it hard to switch it on or off. I eventually resorted to directly touching mailman's config database (if you've configured mailman to use something else than sqlite, the shell command is different, but the query should be the same):

    $ sudo -u list sqlite3 /var/lib/mailman3/data/mailman.db
    [on the sqlite prompt:]
    update mailinglist set emergency=0 where list_id='<your list id>';
    

    Note that <your list id> has a dot instead of the at, so if your list is mylist@example.org, its id is mylist.example.org.

    Oh No, CSRF Token

    The list I cared about most could be joined from an external web site, transparently posting to mailman2's cgi-bin/mailman/subscribe (oh! CGI! How am I missing you in the age of uwsgi and Django!). Looking at its counterpart for modern mailman3, the first thing I noted is that there's a CSRF token in it – if you've not encountered them before, it's a couple of bytes the originating server puts into a web form to prevent what Postorius' authors feels is Cross Site Request Forgery.

    Of course, what I wanted was exactly that: Post to Postorius from a different web site. I don't feel that's forgery, very frankly.

    I didn't see an obvious way to turn it off, and I was a bit curious about mailman3's own http API, so I wrote a few lines of code to do this; the API part itself was straightforward enough, something like:

    result = requests.post(
      getConfig("mailmanAPI")+"/members", {
        'list_id': getConfig("mailmanListname"),
        'subscriber': toSubscribe,
        'pre_verified': False,
        'pre_confirmed': False,
        'pre_approved': True,},
      auth=(getConfig("mailmanAPIUser"),
        getConfig("mailmanAPIPassword")),
      timeout=1)
    

    – but of course it sucks a bit that subscribing someone requires the same privilege level as, say, creating a mailing list or changing its description. And all that just to work around CSRF prevention. Sigh.

    On top of that, I've tried K-SAT on the pre_X booleans to try and see if anything gives me the tried and tested workflow of “let folks enter a mail address, send a confirmation link there, subscribe them when it's being clicked“. No luck. Well, let's hope the pranksters don't hit this server until I figure out how to do this.


    Hm. I think I'm a bit too locked in into mailman to migrate away, but I have to say I wish someone would port mailman2 to python3 and thus let mailman2 hang on essentially forever. It did all a mailing list manager needs to do as far as I am concerned, and while it wasn't pretty with the default browser stylesheets, even now, almost a decade into mailman3, it works a whole lot more smoothly.

    Or perhaps there's a space for a new mailing list manager with a trivially deployable web interface not requiring two separate database connections? Perhaps such a thing exists already?

    Well, summing up, the central migration advice again: Mind the sudo option in

    sudo -u list mailman import21 my-list@example.org config.pck
    
  • Fürchten lernen 2: Ihre Reputation ist nicht verfügbar

    In Teil 2 der Saga von einem, der Mails verschicken will geht es um mailbox.org – an sich ja einer eher sympatische Firma, gerade im Vergleich zu Telekom und Vodafone. Aber, beim Einliefern:

    2021-02-08 05:52:09 1l8yWu-0006Ry-EM ** (Adresse tut nichts zur Sache)
    R=dnslookup T=remote_smtp H=mxext2.mailbox.org [80.241.60.215]
    X=TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256 CV=yes DN="C=DE,ST=Berlin,
    L=Berlin,O=Heinlein Support GmbH,OU=MBO,CN=*.mailbox.org": SMTP error
    from remote mail server after RCPT TO:<Adresse tut nichts zur Sache>:
    554 5.7.1 Service unavailable; Client host [116.203.206.117] blocked
    by RBL; http://www.barracudanetworks.com/reputation/?pr=1&ip=116.203.206.117
    

    Mit anderen Worten: Eine „Real Time Black List“ RBL fand, dass die IP nach Spam riecht, und drum darf ich nicht einliefern.

    Hu? Von dieser IP kam seit mindestens einem Jahr (also seit ich sie habe) nicht eine Mail an öffentliche SMTP-Server (von meinem Smarthost abgesehen), und schon gar nichts, was auch nur entfernt nach Spam aussah. Wie kommt die Kiste dann auf diese Blacklist? Schaun wir mal und dereferenzieren die URL. Resultat: Weiße Seite. Ach nee, soll ich denen Javascript erlauben? Gibt immer noch eine weiße Seite. Local Storage? Weiße Seite. Curl anwerfen. Nach kurzer Wartezeit kommen genau null Bytes zurück.

    Echte Profis, die barracudas. Vertrauenswürdige Treuhänder unserer Mail-Infrastruktur.

    Also gut, tippe ich halt mal barracudanetworks.com in den Browser ein (na gut, in Wirklichkeit habe ich in luakit 2gu gesagt; so viel nerd cred muss an der Stelle sein). Kommt ein animierter Security-Salespitch (yikes! Habe ich denen gerade Javascript erlaubt?), den sich niemand antun müssen sollte – „It's time to protect your business“ my ass. Und klar, google analytics ist auch gleich mit drauf.

    Wie finde ich denn jetzt raus, warum der Laden mich für einen Spammer hält? Auch mit etwas Rumklicken: nichts außer dämlichen Testimonials („The intuitive interface makes deployment simple and the bundled features combine to create a comprehensive email security solution.“).

    Und das alles nur, damit ich Mail einliefern darf?

    Tatsächlich kann mensch sich irgendwie zu barracudacentral.org durchklicken. Und da gibts dann einen Removal Request, der eigentlich aussieht wie ein Phishing-Versuch:

    Screenshot Formular

    Wozu wollen die jetzt eine Telefonnummer haben? Wozu eigentlich eine Mailadresse? Wie kann das bei der Prüfung eine Rolle spielen? Rufen die wirklich zurück? Und wenn ja: wärs nicht freundlich, wenigstens nach der Zeitzone zu fragen?

    Wenn ich den mailbox.org-Leuten nicht ziemlich arg trauen würde, wäre ich jetzt weg. Aber ich probiers mal. „Removal requests are typically investigated and processed within 12 hours of submission“ sagen die. Ich bin ja mal neugierig.

Seite 1 / 1

Letzte Ergänzungen