In der letzten Zeit ist es nicht einfacher geworden PDF-Dokumente in einer Webseite darzustellen. Zwar beherrscht Firefox das problemlos, aber z.B. nicht die Android-Version. Auch auf verschiedenen Apfel-Geräten funktioniert das nicht von Haus aus.

Zum Glück gibt es das Projekt https://github.com/mozilla/pdf.js mit dessen Javascript die Einbindung auf sehr vielen Geräten identisch funktioniert. Ich habe mir die Software von https://mozilla.github.io/pdf.js/getting_started/ geladen und die ZIP-Datei in ein Verzeichnis /pdfjs entpackt.

Leider ist die Nutzung des Scripts etwas aufwendig. Eine einfache Lösung besteht darin die mitgelieferte Viewer-Seite aus dem Unterverzeichnis /pdfjs/web zu nutzen und über einen Iframe einzubinden:

<iframe id="pdf-js-viewer" 
        src="/pdfjs/web/viewer.html?file=/fileadmin/user_upload/netthelp.pdf" 
        title="webviewer" 
        frameborder="0" 
        width="500" 
        height="600">
</iframe>

Leider ist diese Lösung so nicht responsiv. Mit Hilfe von https://www.w3schools.com/ habe ich mir folgende Lösung erarbeitet (hier für eine Typo3 Installation):

<div style="position: relative;
            width: 100%;
            overflow: hidden;
            padding-top: 141%;
           ">
  <iframe id="pdf-js-viewer"
          src="/pdfjs/web/viewer.html?file=/fileadmin/user_upload/netthelp.pdf#zoom=auto"
          title="webviewer"
          frameborder="0"
          style="position: absolute;
                 top: 0;
                 left: 0;
                 bottom: 0;
                 right: 0;
                 width: 100%;
                 height: 100%;
                 border: none;
          ">
  </iframe>
</div>

Der Trick besteht darin ein DIV Element zu nutzen, das die ganze verfügbare Breite einnimmt und über padding-top eine darauf basierende Höhe bekommt. Bei den DIN Ax Dokumenten ist das Höhen-Breiten-Verhältnis 1,41:1 bei Portrait und 1:1,41=0,71:1 bei Landscape.

In dieses Element hinein wird dann der IFrame geladen und bekommt den vollständigen Platz zur Verfügung gestellt.

Mittels #zoom=auto wird erreicht, dass sich auch der PDF-Viewer an den zur Verfügung stehenden Platz anpasst. Hinter zoom=… könnten folgende Angaben stehen:

  •  200 (oder eine beliebige Prozentzahl)
  • page-width
  • page-height
  • page-fit
  • auto

Außer zoom gibt es noch den Parameter page=, damit kann angegeben werden, mit welcher Seite des PDFs die Darstellung startet. Weitere Möglichkeiten finden sich auf der Seite https://github.com/mozilla/pdf.js/wiki/Viewer-options.

Weitere Informationen:

Für den Austausch von Medien nutzt Talk das Protokoll WebRTC (Web Real-Time Communication), einen offenen Standard zur direkten Kommunikation zwischen Rechnern. Die aktuellen Browser unterstützen dieses Protokoll, sodass damit Videokonferenzen problemlos möglich sind, zumindest innerhalb eines lokalen Netzes.

Sind die beteiligten Rechner in verschiedenen Netzen, so taucht ein Problem auf. Die Browser müssen ihre eigene IP-Adresse und die IP-Adresse der Gegenstelle wissen. Dies ist leider oft nicht der Fall, wenn sie hinter einem NAT-Router sitzen, z.B. einer Fritzbox. Hier kennen die Geräte nur ihre netzinterne IP-Adresse, z.B. 192.168.1.52, aber nicht die offizielle IP-Adresse, die nur der Router kennt.

Dieses Problem lässt sich mit einem STUN-Server (Session Traversal Utilities for NAT) lösen. Bei dem STUN-Server melden sich die beteiligten Rechner, dabei lernt er ihre öffentlichen IP-Adressen kennen und kann sie an die Gesprächspartner weitergeben. Mit diesen Informationen können die Geräte dann direkt miteinander kommunizieren.

Der Betrieb eines STUN-Servers ist relativ problemlos, da nur sehr geringe Datenmengen anfallen. Es gibt daher auch öffentliche STUN-Server, z.B. bei Nextcloud stun.nextcloud.com:443 (Voreinstellung in Talk).

Leider langt der STUN-Server heutzutage nicht mehr. Ein Router, wie die Fritz!Box, macht nämlich nicht nur NAT, sondern stellt auch eine Firewall zur Verfügung. Verbindungen von außen, aus dem Internet, auf die Rechner innerhalb des lokalen Netzes sind so nicht möglich, ohne auf dem Router Ports freizugeben und auf den Zielrechner weiterzuleiten. Das wäre eine recht aufwändige Vorgehensweise. Es sind nur Verbindungen aus dem Inneren des jeweiligen Netzes zu öffentlich zugänglichen Rechnern möglich.

Hier kommt der TURN-Server ins Spiel (Traversal Using Relays around NAT), er ermöglicht es den Clients Daten ohne eine direkte Verbindung auszutauschen (Relay Server). Sämtlicher Datenverkehr läuft dann durch diesen Server.

Öffentliche TURN-Server wird man in der Regel nicht finden, da rechte hohe Datenvolumina anfallen. Für eine ordentliche Videoqualität werden 500 kbit/s angegeben. Bei 3600 Sekunden in einer Stunde macht das dann 500×3.600 = 1.800.000 kbit etwa 1.800 mbit, also schon ein erhebliches Datenvolumen.

 

Ein zentraler Kalender im Netz, auf den man mit allen Endgeräten zugreifen kann ist eine sehr praktische Angelegenheit. Viele Menschen nutzen für derartige Zwecke kommerzielle Angebote, wie den Google-Kalender. Gerade die persönlichen Termine würde ich gern in der eigenen Hand behalten.

Ich nutze daher die Kalender-Erweiterung von Owncloud bzw. Nextcloud. Auf diesen Kalender greife ich dann per Thunderbird oder auch per App von meinem Android-Gerät aus zu. Dadurch sind die Kalender auf allen Systemen synchronisiert.

Achtung: Bitte den Nachtrag am Ende der Seite beachten!

Diese Konfiguration besteht aus mehreren Teilen.

Der Kalender von Owncloud/Nextcloud

Zuerst benötigt man einen Account auf einem aktuellen Cloud-System.

In diesem System muss das Kalender-Plugin installiert sein, das man mit einem Klick auf das entsprechende Icon aktiviert.

Testen kann man das Zusammenspiel der verschiedenen Anwendungen aber nur, wenn auch ein paar Termin eingetragen sind. Sollte das noch nicht geschehen sein, so würde ich das jetzt nachholen.

Nun benötigt man die zum Kalender zugehörige URL. Dazu dienst das „Mehr-Icon“ (das mit den drei Punkten) hinter dem Namen des Kalenders.

Es öffnet sich ein Kontextmenü mit den Punkten Bearbeiten, Link, Herunterladen, Löschen. Hier wählt man den Eintrag Link. Es öffnet sich dann eine Zeile mit der individuellen URL.

Diesen Link, hier https://owncloud.netthelp.de/remote.php/dav/calendars/test/personal/ muss man sich kopieren bzw. merken. Der letzte Teil der URL beinhaltet den Benutzernamen (hier test) und den Kalendernamen (hier personal). Wenn der Kalendername Umlaute enthält, dann sieht die URL aufgrund der Umschreibungen etwas komisch aus.

Damit hat man die notwendige Information über den Kalender.

 

Thunderbird

Thunderbird ist einfach mit Lieblings-Mailprogramm. Da ich sehr viel mit Mail arbeite ist es naheliegend auch den persönlichen Kalender mit diesem Programm zu verwalten. Dazu dient bei Thunderbird die Extension Lightning, die bei aktuellen Versionen meistens schon installiert ist. Ansonsten muss man sie als Addon hinzufügen.

Bei der folgenden Beschreibung gehe ich davon aus, dass Thunderbird als Mailprogramm erfolgreich konfiguriert wurde.

Kurz nach dem Start von Thunderbird hat man kurzzeitig zwei Möglichkeiten einen neuen Kalender zu erstellen.

Im mittleren Bereich findet sich der Menüpunkt „Einen neuen Kalender erstellen“. Dieser Bereich verschwindet aber nach kurzer Zeit und wird durch die Darstellung der Mails ersetzt.

Was aber bleibt ist das kleine Icon recht oben „Zum Kalender-Tab wechseln“. Egal welchen Weg man wählt, man landet im Kalender-Tab.

Normalerweise ist bereits ein Kalender vorhanden, der standardmäßig eingerichtet wurde. Diesen Kalender kann man nicht umkonfigurieren, sondern man legt einen neuen Kalender an.

Dazu klickt man mit der rechten Maustaste auf den Bereich unterhalb des Kalendernamens in der linken Spalte, darauf öffnet sich ein Kontextmenü.

Hier wählt man „Neuer Kalender“, worauf ein Assistent startet.

Wichtig ist, dass man hier „im Netzwerk“ auswählt, bevor man auf Weiter klickt.

In diesem Fenster wählt man CalDav als Protokoll und die Owncloud-URL vom ersten Abschnitt als Adresse. Im nächsten Schritt kann man noch ein paar Kleinigkeiten einstellen.

Man kann hier einen Namen für den Kalender angeben und für die Übersicht eine Hintergrundfarbe.

Im letzten Schritt muss man dann den Benutzernamen und das zugehörige Passwort angeben und kann entscheiden, ob die Daten im Programm gespeichert werden sollen.

Danach sollte der Kalender erscheinen, klickt man dann noch auf Monat, so hat man die gleiche Darstellung, wie im Owncloud.

 

Filelink

Eine Besonderheit bei Thunderbird ist die Möglichkeit große Dateianhänge in eine Cloud ausgliedern zu können, bevor die Mail verschickt wird. In der Mail taucht dann ein Link auf den Dateianhang auf.

Für die Zusammenarbeit mit Nextcloud existiert ein Addon. Ob dieses Addon auch mit Owncloud funktioniert habe ich nicht ausprobiert. Zur Installation gelangt man über den „Hamburger“ rechts auf der Seite, ein Klick darauf öffnet die Menüs, hier aktivieren wir den Punkt „Add-ons“.

In der Addon-Verwaltung gehen wir auf Erweiterungen und geben in dem Suchfenster den Begriff Filelink ein.

Für den Suchbegriff filelink gibt es eine Reihe von Treffern. Notwendig ist hier der Treffer auf „Nextcloud for Filelink“. Hier klicken wir auf Installieren.

Nach erfolgter Installation muss man Thunderbird einmal neu starten, damit das Add-on aktiv ist.

Nun muss das Add-on noch konfiguriert werden. Dazu geht man wieder ins Menü, entweder über das Hamburger-Icon, oder in dem man mit der Alt-Taste die Menüzeile einblendet. Auf alle Fälle wählt man Einstellungen. Es öffnet sich ein Fenster mit dem neuen Menüpunkt Anhänge. Klickt man diesen Menüpunkt an, so landet man in den filelink-Einstellungen. Hier sollte man die Dateigröße ruhig heruntersetzen, ich finde 1MB ganz passend und dann auf Hinzufügen klicken, um die Nextcloud-Einbindung zu aktivieren.

Klick man jetzt auf „Konto einrichten“, so werden die zugehörigen Daten abgefragt.

Nach dem Klick auf „Konto einrichten“ fragt das Programm nach dem Passwort und versucht dann eine Verbindung zu Nextcloud aufzunehmen. Wenn alles klappt, dann wird der in der Cloud verfügbare Speicherplatz angezeigt.

 

Erstellt man eine Nachricht mit einem Dateianhang von mehr als 1MB, so bietet einem Thunderbird an diese Datei per Filelink zu übertragen. Klickt man auf „Filelink verwenden“, so fragt Thunderbird nach dem zugehörigen Passwort und übertraägt dann die Datei in die Cloud und gibt sie dort zum anonymen Download frei.

Die Mail sieht dann etwas ander aus als vorher, der Link wird automatisch integriert.

 

Android

Bei den Android-Systemen ist leider das Problem, dass CalDAV normalerweise leider nicht eingebunden ist. Man muss hier also erst eine entsprechende Software istallieren, die in der Regel auch kostenpflichtig ist.

Wenn CalDAV eingebunden wurde, dann ist die weitere Einbindung des Kalenders nahezu automatisch.

 

 

Nachtrag Juni 2019

Es scheint im Zusammenspiel zwischen Nextcloud und Thunderbird 60.x ein Problem zu geben, welches die Nutzung des Kalenders unterbindet. Ich nutze aktuell Thunderbird 60.7.1 mit Lightning 6.2.5. Auf meinem Arbeitsplatzrechner mit einer alten Installation die inzwischen mehrfach aktualisiert wurde funktioniert alles, aber auf neuen Installationen klappt die Kalender-Synchronisation nicht.

Unter https://github.com/nextcloud/server/issues/10134#issuecomment-411322692 habe ich einen Beitrag von geogehrke gefunden, der mir geholfen hat.

Man muss nur in der Thunderbird Konfigurationsdatei network.cookie.same-site.enabled auf false setzen.

An die Konfigurationsdatei kommt man über:  Einstellungen -> Erweitert -> Allgemein -> Konfiguration bearbeiten

Sowie ich hier den Schalter umgelegt hatte, starteten die Zugriffe auf Nextcloud. Es scheint ein ungelöstes Problem zugrunde zu liegen, das irgendwo zwischen Nextcloud und Lightning liegt.

Meine Bank, die Hamburger Sparkasse (Haspa) hat leider das normale HBCI-Verfahren eingestellt. Eigentlich hatten die mir den Zugang schon im Frühjahr gekündigt, jetzt aber zu Weihnachten lief der Zugang wirklich aus. Normalerweise hätte ich eher die Bank geopfert, als das Verfahren, aber auch andere Banken haben HBCI abgekündigt. Also musste ich mich mit der Umstellung auf ein TAN-Verfahren beschäftigen.

 

Vorbereitung

Auf Seiten der Haspa muss man auf alle Fälle das Chip-TAN Verfahren aktiviert haben. Im einfachsten Fall geht das auf der Webseite https://banking.haspa.de/. Für den Zugriff auf die Website und später auch das Konto über Moneyplex benötigt man eine PIN. Wie ich die von Urzeiten einmal bekommen habe weiß ich nicht mehr, aber ohne die kann man sich nicht anmelden. In dem Online-Portal kann man dann die verschiedenen Verfahren freischalten, zumindest wenn man noch eine TAN zur Verfügung hat.

Den notwendigen Menüpunkt hat die Haspa wirklich gut versteckt, jedenfalls suche ich jedesmal wieder eine Ewigkeit, eventuell wird der Punkt auch immer wieder neu versteckt, eine Art EasterEgg. Momentan kann man ihn finden, indem man sich einloggt, auf ein Konto geht und dort im roten Menü auf mehr klickt. Es taucht dann oben ein Menübereich auf. Hier darf man nicht auf Sicherheit -> PIN/TAN & Verschlüsselung gehen, sondern auf Verwalten & Einrichten -> Sicherheitseinstellungen -> TAN Verwaltung. Also logisch ist das für mich nicht, hier verwaltet man die Verfahren und nicht die TANs.

Manchmal taucht der Punkt Verwalten & Einrichten auch unten im roten Menü auf.

 

Schritt 1

Schon vor Jahren hatte ich mir einen Kartenleser von ReinerSCT beschafft, den cyberJack RFID Standard. Das Gerät gab es anfangs mit dem Personalausweis vergünstigt. Für das Gerät habe ich mir dann im Frühjahr, nach dem Haspa-Schreiben,  ein Firmware-Update gekauft. Bei den aktuellen Versionen sollte das Update nicht notwendig sein.

Auch schon im Frühjahr habe ich mir von Moneyplex das Update auf Version 2018 gekauft, da erst diese Version mit dem TAN-Verfahren umgehen kann. Auf der Matrica-Homepage ist von der Version 2018 noch nichts zu sehen, aber der freundliche und immer hilfsbereite Support hatte mir die Informationen zur Software und dem Kartenleser-Update gegeben.

Dann habe ich gewartet, bis die Haspa das bequeme und sichere HBCI-Verfahren abstellt. Das war jetzt am 11. Dezember der Fall.

 

Schritt 2

Also habe ich erst einmal die Kartenleser-Software auf meinem Ubuntu 18.04 System installiert. Dazu bin ich nach folgenden Texten vorgegangen:

* http://wiki.matrica.com/index.php/CCID_Chipkartenleser_unter_Linux

* http://wiki.matrica.com/index.php/Cyberjack

Konkret waren das die folgenden Schritte:

  • aus der Ubutu-Software-Verwaltung installieren: libccid libpcsclite1 pcscd pcsc-tools
  • von der Reinert-Homepage  http://www.reiner-sct.com/support/  den passenden Treiber laden: Support → Produktfamile Chipkartenleser → Chipkartenleser wählen → Treiber-Downloads → Linux  (bei mir Ubuntu 18.04) und installieren.
  • mittels lsusb sollte der Kartenleser erkannt werden. Hier die Hersteller und Produkt-ID auslesen, bei mir 0c4b:0500
  • die Datei /usr/lib/pcsc/drivers/ifd-ccid.bundle/Contents/Info.plist öffnen und in den Bereichen
    • ifdVendorID (0x voranstellen)
    • ifdProductID (0x voranstellen)
    • ifdFriendlyName (ich habe die ganze lange Zeichenkette genommen)
      um die Ausgaben von lsusb erweitern. Ich habe dafür immer die erste Zeile der Rubrik benutzt.
  • nun die Datei /lib/systemd/system/pcscd.service editieren und –auto-exit entfernen
  • den Dienst neu starten mittels service pcscd restart
  • und aktivieren systemctl enable pcscd.service

Danach war der Kartenleser funktionsfähig und der Test aus den Einstellungen von Moneyplex hat Erfolg gemeldet.

 

 

 

 

 

 

Schritt 3

Nun konnte ich auf der Haspa-Seite meine Konto-Karte aktivieren und synchronisieren.

 

 

 

 

 

 

 

Dazu muss man im Kartenleser mit eingelegter Karte eine TAN erzeugen und den sogenannten ATC (Application Transaction Counter) ablesen. Dabei handelt es sich um einen Zähler für die Zahl der erzeugten TANs (startet vermutlich bei 1).

 

 

 

 

 

 

 

Wenn beide Zahlen korrekt eingetragen sind, dann ist die Karte aktiviert.

Schritt 4

Nun war nur noch das Konto umzustellen. Leider hat hier der Text http://wiki.matrica.com/index.php/ChipTAN_USB_Verfahren nicht weit geholfen, da die Einstellmöglichkeit für das Verfahren nicht auftauchte.

Eine Mail an den Matrica-Support hat dann die Lösung gebracht, u.a. einen Link auf http://wiki.matrica.com/index.php/Bankzugang_ersetzen_Konto_beibehalten . Nach dieser Anleitung konnte ich dann mein Konto umstellen.
Noch eine Anmerkung zum Matrica-Support. Die Mail mit der Anleitung kam um 20:28h, meine Anfrage hatte ich um 19:49h gestellt, nachdem mich die Haspa aus ihrer Telefon-Warteschlange geworfen hatte. Der Matrica-Service ist wirklich nicht zu schlagen.

 

Hinweis

Bei der Kontoführung wir jeweils einmalig die PIN benötigt, die auch auf der Internet-Seite gilt. Die Geldautomaten-PIN spielt hier nirgends eine Rolle. Man kann die Karte und damit die TAN-Erzeugung zusätzlich mit einer PIN für den Kartenleser sichern, das ist aber nicht vorgegeben und auch nur spärlich erwähnt.

 

Nachtrag Ostern 2019

Die Haspa will ihre Kunden geistig fit halten. Von daher war über Ostern die nächste Umstellung fällig. Die Haspa hat anscheinend wieder vom eigenen Rechenzentrum zum Rechenzentrum des Sparkassenverbundes gewechselt. Ich meine zu erinnern, dass die Haspa schon mehrfach Hin und Her gewechselt hat.

Jedenfalls ist jetzt wieder eine Änderung der Kontoeinstellungen fällig gewesen. Es wurden mindestens zwei Parameter verändert :

  • die HBCI-Adresse ist jetzt: https://banking-hh7.s-fints-pt-hh.de/fints30
  • die Benutzerkennung nennt die Haspa jetzt Anmeldename und ergänzt dazu die Kontonummer um eine Zeichenkette, die vom TAN-Verfahren abhängt. Wer nur ein TAN-Verfahren nutzt, der behält die Kontonummer als Anmeldenamen.

Bevor man irgendwelche Änderungen an Moneyplex vornimmt, bietet es sich an eine Aktualisierung durchzuführen. Außerdem musste ich meine Chip-Karte auf der Haspa-Seite neu aktivieren.

Ich habe dann mehrfach versucht die Änderungen nur bei Moneyplex unter Stammdaten -> Bankzugänge zu ändern. Hatte dann aber immer Fehlermeldungen beim Abrufen der Kontodaten. Daher habe ich dann das Verfahren aus http://wiki.matrica.com/index.php/Bankzugang_ersetzen_Konto_beibehalten benutzt und die Kontoverbindung erneut neu eingerichtet.

Das hat dann funktioniert, wobei die TAN-Erstellung auf manuell stand und von mir erst auf ChipTAN-USB geändert werden musste.

Der folgende Screenshot zeigt die aktuellen Einstellungen:

 

 

 

 

 

Auf die Kontonummer folgt hier ein c (für chipTAN) und eine vierstellige Ziffernkette, die bei mir mit einer 0 beginnt.

 

Nachtrag vom 17.09.2019

Nun hat auch die HASPA PSD2 scharf geschaltet. Mein Moneyplex 2018 hat dann leider so nicht mehr funktioniert. Eine Weile habe ich überlegt wieder auf Papierbelege zu setzen, dann habe ich aber doch auf die Matrica-Seiten geschaut.

Dort (http://wiki.matrica.com/index.php/PSD2_mit_älteren_Versionen_von_moneyplex) ist beschrieben, dass man ein Update auf Moneplex 20 benötigt, was ich mir auch sofort bestellt habe. Aktuelle hilft mir das aber nicht weiter, es wird ein paar Tage dauern bis ich die neue Lizenz habe. Als besonderen Service bietet Matrica auf seiner Seite aber einen freien Schlüssel an, der bis November gültig ist.

Mit folgenden Schritten bin ich also wieder online:

  • Info -> Benutzer die Seriennummer von der Matrica-Seite eingeben
  • Der Aufforderung zum Update folgen
  • Moneyplex neu starten, es ist jetzt Version 20.0 Beta.
  • Dann den Bankzugang prüfen, bei mir hat sich keine Veränderung ergeben gegenüber dem vorherigen Screenshot

Laut Anleitung soll man den Bankzugang prüfen:

  • Stammdaten
  • Bankzugänge
  • Hamburger Sparkasse
  • rechte Maustaste -> Bankparameter aktualisieren

Wichtig ist, dass folgende Einstellungen zu finden sind:

  • TAN-Verfahren: 912 – chipTAN-USB
  • TAN-Medium: Sparkassen-Card (Debitkarte)
  • bei Optionen anzeigen vor dem Ausführen würde ich das Häkchen entfernen.

Danach kann man loslegen, aber nur wenn die Kontokarte im USB-Lesegerät steckt. Das ist jetzt zukünftig eine furchtbare Klickerei, vor allem wenn man das Häkchen nicht entfernt hat, aber es funktioniert.

 

Meine Ausgabe von dmesg war unbrauchbar geworden, da hier nur noch Zeilen der Art:

 [38929.065531] [UFW BLOCK] IN=enp1s0 OUT= MAC=01:00:5e:00:00:01:00:24:c0:ff:ee:38:08:00 SRC=192.168.1.14 DST=224.0.0.1 LEN=36 TOS=0x00 PREC=0x00 TTL=1 ID=0 DF PROTO=2

zu finden waren.

Das sind abgelehnte Multicast-Pakete von meinem SAT>IP Receiver. An der Konsole habe ich eingegeben:

sudo ufw allow in proto udp to 224.0.0.0/4
sudo ufw allow in proto udp from 224.0.0.0/4

und dann die Datei /etc/ufw/before.rules  am Ende, vor der COMMIT-Zeile,  etwas ergänzt:

# allow IGMP
-A ufw-before-input -p igmp -d 224.0.0.0/4 -j ACCEPT
-A ufw-before-output -p igmp -d 224.0.0.0/4 -j ACCEPT

# don't delete the 'COMMIT' line or these rules won't be processed
COMMIT

Seit dem Neustart von UFW bleiben die Meldungen aus.

 

Schulen arbeiten meist mit Proxy-Servern. Einerseits um die Internetverbindung etwas schonen zu können, aber auch um die Internetzugriffe zu filtern.

In der Regel will man dafür aber nicht jeden Browser per Hand konfigurieren müssen. Daher gibt es Mechanismen, um die Konfigurationseinstellungen automatisch vornehmen zu können.

Dazu dient in der Regel eine Datei mit dem Namen wpad.dat (einige proprietäte Systeme erwarten den Namen proxy.pac).

Die Datei hat bei unserem IServ folgenden Inhalt:

function FindProxyForURL(url, host)
 {
  if (
   isPlainHostName(host)
   || dnsDomainIs(host, "local")
   || dnsDomainIs(host, "localhost")
   || dnsDomainIs(host, "schule-rlw.de")
   || isInNet(host, "127.0.0.1", "255.0.0.0")
   || isInNet(host, "10.0.0.0", "255.0.0.0")
  ) {
    return "DIRECT";
  } else {
   return "PROXY 172.27.16.2:3128"
  }
 }

Diese Datei kann man dem Client auf folgende Arten zukommen lassen:

1. Per DHCP

In der Konfigurationsdatei DES DHCP-Servers müssen sich die folgenden Zeilen finden:

option proxy-config code 252 = text;
option proxy-config "http://schule-rlw.de/wpad.dat";

Bei TFK-Boxen ist das im Schulrouter Plus unter Dienste -> DHCP-Server zu finden, dort erfolgt der Eintrag in das große Textfenster.

Der Bezeichner, hier proxy-config, ist frei wählbar, muss nur in beiden Zeilen gleich sein. Wesentlich ist die Code-Nummer.

2. Per DNS

Viele Systeme sind in der Lage Autokonfiguration aktiv zu suchen. Dazu rufen sie die URL http://wpad/wpad.dat auf. Es muss also nur ein entsprecchender Eintrag im Nameserver vorhanden sein und die wpad.dat im Wurzelverzeichnis des Webservers liegen. Als Port kommt übrigens nur 80 in Frage, ein Zugriff per https ist nicht konfigurierbar.

 

3. mozilla.cfg

Hat man Zugriff auf eine zentrale Konfigurationsdatei für den Mozilla firefox, so kann man hier die folgenden zeilen eintragen:

pref("network.proxy.autoconfig_url", "http://schule-rlw.de/wpad.dat");
pref("network.proxy.type",2);

Damit wird die automatische Konfiguration aktiviert und gleichzeitig auch der Pfad zur Konfigurationsdatei angegeben.

Thunderbird

Nun muss man nur noch das jeweilige Mailprogramm so konfigurieren, dass es die Verbindungen auch verschlüsselt anfordert. Auch hier gibt es wieder zwei Richtungen. Im Reiter Server-Einstellungen gibt man die Konfiguration an, die zum Abrufen der Mails notwendig ist.

thunderbird4

Im Reiter Postausgangs-Server kommen dann die Einstellungen zum Versenden der Mails. In diesem Fall sind die Einstellungen identisch. Eigentlich hätte ich aber auch noch ein Zertifikat für smtp.debacher.de erzeugen können.

thunderbird3

In der Logdatei /var/log/mail kann man erkennen, wenn die Mails verschlüsselt abgerufen werden:

2016-10-22T16:21:45.874680+02:00 h2366010 dovecot: imap-login: Login: user=<xxx@debacher.de>, method=PLAIN, rip=85.176.x.y, lip=81.169.xx.yy, mpid=30944, TLS, session=<vv7q4HQ/xABVsIAH>

Hier taucht dann TLS in der Zeile auf. Entsprechend für das Abliefern der Mails:

2016-10-22T18:17:17.327190+02:00 h2366010 postfix/smtpd[32315]: Anonymous TLS connection established from x5b087001.dyn.telefonica.de[85.176.x.y]: TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)

Da der Zugriff auf das Mailsystem auch immer häufiger mobil erfolgt scheint mir eine Verschlüsselung der Verbindung unvermeidlich. Dazu muss man in die Konfiguration von Postfix und Dovecot eingreifen. Ausgangspunkt für meine Konfiguration ist die Server-Beschreibung unter http://www.debacher.de/wiki/Root-Server_mit_OpenSuSE_13.2 .

letsencrypt

Da mir das System von letsencrypt sehr zusagt möchte ich die zugehörigen Zertifikate auch für das Mailsystem nutzen. Dazu habe ich mir einen virtuellen Apache-Server eingerichtet, der auf http://imap.meine-domain.de hört und ansonsten keinen Inhalt zur Verfügung stellt. Der virtuelle Server ist nur für die Erstellung und Verlängerung der Zertifikate wichtig.

Hierfür habe ich mir eine letsencrypt.ini angelegt:

# Wir nutzen 4096 bit RSA key statt 2048
rsa-key-size = 4096

# allgemeine Angaben
email = <name>@<domain>
authenticator = webroot

# Domains fuer die wir Zertifikate beantragen, die erste in
# der liste legt den Hauptnamen fest. Alle Domains müssen beim
# Aufruf erreichbar sein
domains = imap.debacher.de, smtp.debacher.de

# Dies ist das Verzeichnis zur Domain, wo letsencrypt seinen Hash in
# /.well-known/acme-challenge schreiben will. Der Pfad muss auf / enden
webroot-path = /srv/www/vhosts/imap.debacher.de/httpdocs/

Dann mittels

/root/letsencrypt/letsencrypt-auto certonly --config /srv/www/vhosts/imap.debacher.de/letsencrypt.ini

das Zertifikat erzeugt.

Dovecot

Für Dovecot müssen dann folgende Informationen in der Konfigurationsdatei stehen:

protocols = imap pop3 lmtp sieve
ssl = yes 
ssl_cert = </etc/letsencrypt/live/imap.debacher.de/fullchain.pem 
ssl_key = </etc/letsencrypt/live/imap.debacher.de/privkey.pem

Nach einem Neustart greift Dovecot dann auf das Zertifikat zu.

Abfragen kann man das Zertifikat dann mittels:

openssl s_client -connect imap.debacher.de:pop3s

oder

openssl s_client -connect imap.debacher.de:imaps

oder

openssl s_client -connect imap.debacher.de:smtp -starttls smtp

Postfix

Für Postfix muss etwas mehr gemacht werden. Wir haben ja zwei Richtungen zu beachten, Postix kann als Client und als Server dienen. Wenn er Mails an andere Rechner abliefert, dann ist er Client (smtp_…), ansonsten Server (smtpd_…).

Ich habe an die Konfigurationsdatei /etc/postfix/main.cf folgende Zeilen angehängt:

# tls config
smtp_tls_note_starttls_offer = yes

# eingehende Verbindungen
smtpd_use_tls = yes
smtpd_enforce_tls = no
# Obiges kann zusammengefasst werden zu smtpd_tls_security_level=may
smtpd_tls_key_file = /etc/letsencrypt/live/imap.debacher.de/privkey.pem
smtpd_tls_cert_file = /etc/letsencrypt/live/imap.debacher.de/fullchain.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
smtpd_tls_mandatory_protocols=!SSLv2, !SSLv3
#tls_random_source = dev:/dev/urandom
#tls_random_prng_update_period = 3600s

# ausgehende Verbindungen
smtp_use_tls = yes
smtp_enforce_tls = no
# Obiges kann zusammengefasst werden zu smtp_tls_security_level=may
smtp_tls_key_file = /etc/letsencrypt/live/imap.debacher.de/privkey.pem
smtp_tls_cert_file = /etc/letsencrypt/live/imap.debacher.de/fullchain.pem
smtp_tls_loglevel = 1
smtp_tls_mandatory_protocols=!SSLv2, !SSLv3

Nun muss noch in der Datei /etc/postfix/master.cf eine Zeile auskommentiert werden:

tlsmgr unix - - n 1000? 1 tlsmgr

Thunderbird

Etwas mehr Aufwand bedeutet es den Nutzern der eMail-Domain die Konfiguration ihrer Mail-Clients zu beschreiben. Zumindest für Thunderbird gibt es eine genial einfache Lösung dafür, Danke an Lukas Thiel für den Hinweis.

Thunderbird unterstützt eine Autokonfiguration. Für die großen Anbieter greift es dazu auf eine eigene Datenbank zu, als kleiner Anbieter kann man die notwendigen Informationen nach folgender Anleitung erstellen: https://developer.mozilla.org/de/docs/Mozilla/Thunderbird/Autokonfiguration.

Der Anleitung folgend habe ich mir im Webserververzeichnis httpdocs meiner Domain eine Datei .well-known/autoconfig/mail/config-v1.1.xml angelegt mit folgendem Inhalt:
autoconfig1

Thunderbird sucht beim Anlegen einer neuen Mailadresse nach dieser Datei in der zugehörigen Domain. Wenn die Datei gefunden wird, dann konfiguriert sich das Mailprogramm ganz automatisch nach diesen Einstellungen.

Für den Fall, dass die automatische Konfiguration nicht möglich ist findet sich eine Konfigurationsbeschreibung unter http://www.debacher.de/ublog/2016/10/thunderbird-konfigurieren/.

In der Logdatei /var/log/mail kann man erkennen, wenn die Mails verschlüsselt abgerufen werden:

2016-10-22T16:21:45.874680+02:00 h2366010 dovecot: imap-login: Login: user=<xxx@debacher.de>, method=PLAIN, rip=85.176.x.y, lip=81.169.xx.yy, mpid=30944, TLS, session=<vv7q4HQ/xABVsIAH>

Hier taucht dann TLS in der Zeile auf. Entsprechend für das Abliefern der Mails:

2016-10-22T18:17:17.327190+02:00 h2366010 postfix/smtpd[32315]: Anonymous TLS connection established from x5b087001.dyn.telefonica.de[85.176.x.y]: TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)

Links

Ich bin gerade dabei mich mit dem Framework Bootstrap zu beschäftigen. Dabei tauchte mal wieder das Problem der gleich langen Spalten auf, das anscheinend in den zugehörigen Anleitungen nirgends beschrieben wird. Ein dreispaltiges Lyout beschreibt man dort z.B. mittels:

<div class="container">
  <div class="row">
    <div class="col-md-3">Spalte1</div>
    <div class="col-md-6">Spalte2</div>
    <div class="col-md-3">Spalte3</div>
  </div>
</div>

Leider sind dabei die Spalten ungleich hoch, abhängig von der Menge an Text, wenn sie einen Hintergrund besitzen. Eine einfache Lösung besteht darin zwei zusätzlich CSS-Klassen einzuführen:

.equal{
    margin-bottom: -99999px;
    padding-bottom: 99999px;
    background-color:#efefef;
}

.equalheight {
    overflow: hidden; 
}

Die drei Spalten werden durch den negativen unteren Rand sehr weit ausgedehnt, gleichzeitig wird dies durch das gleichgroße Padding wieder aufgehoben. Alle Spalten haben also quasi einen unteren Farbigen Rand von 9999 Pixeln. Das äußere Element schneidet den überflüssigen Teil durch das overflow: hidden dann ab, wodurch alle Spalten die gleiche Länge bekommen.

<div class="container equalheight">
  <div class="row">
    <div class="col-md-3 equal">Spalte1</div>
    <div class="col-md-6 equal">Spalte2</div>
    <div class="col-md-3 equal">Spalte3</div>
  </div>
</div>

Weitere Lösungen zu dem gleichen Problem finden sich auf folgenden Seiten:

Es ist nicht ganz einfach Informationen zu finden, wie man bei Typo3 zu korrekten Fehlerseiten kommt, die auch einen 404er Fehlercode zurückliefern, vor allem wenn man mit simulatestatic arbeitet. Untersuchen kann man den gelieferten Fehlercode übrigens recht einfach mit der Firefox-Extension Firebug. In der Rubrik Netzwerk wird dort bei einem Seitenaufruf auch der Statuscode mit angezeigt.

Es gibt bei Typo3-Seiten eigentlich zwei unterschiedliche Situationen:

  1. Typo3 wird direkt (/index.php?id=000) oder indirekt (/000.html) mit einer illegalen id aufgerufen
  2. Die Domain wird mit einer URL aufgerufen, die nicht zur Typo3-Installation passt, z.B. mit einem Unterverzeichnis (/mediawiki/..)

Der erste Fall ist relativ einfach zu regeln, man erstellt in Typo3 eine Fehlerseite (hier fehler404.html) und erweitert die Konfigurationsdatei typo3conf/localconf.php folgendermaßen:

[FE][pageNotFound_handling] = /fehler404.html
[FE][pageNotFound_handling_statheader] = HTTP/1.0 404 Not Found

Damit wird für den Fall einer illegalen id die Fehlerseite aufgerufen und ein 404er Fehlercode zurückgeliefert.

Bleibt noch der zweite Fall. Typo3 würde in der Regel die Startseite liefern, egal was aufgerufen wurde. War in der aufgerufenen URL ein Unterverzeichnis angegeben, so wird das in dem Sinne berücksichtigt, dass Typo3 das Stylesheet nicht mehr findet. Die ausgelieferte Seite sieht also ganz komisch aus.

Um das zu ändern muss man an die Datei .htaccess ran, die man für simulatestatic ja aktivieren musste. Hier die .htacess, so wie sie von Typo3 geliefert wurde, ich habe alle Kommentarzeilen entfernt. Verändert habe ich lediglich die vorletzte Zeile:

<FilesMatch "\.(js|css)$">
  <IfModule mod_expires.c>
    ExpiresActive on
    ExpiresDefault "access plus 7 days"
  </IfModule>
  FileETag MTime Size
</FilesMatch>

<IfModule mod_rewrite.c>

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)\.(\d+)\.(php|js|css|png|jpg|gif|gzip)$ $1.$3 [L]

RewriteRule ^(typo3/|t3lib/|fileadmin/|typo3conf/|typo3temp/|uploads/|favicon\.ico) - [L]

RewriteRule ^typo3$ typo3/index_re.php [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule .* index.php?id=000 [L]

</IfModule>

In vielen Versionen der Datei werden nur Dateien mit der Endung .html ersetzt (RewriteRule ^[^/]*\.html$ index.php), hier wird jetzt immer die index.php aufgerufen, wenn die ursprüngliche Datei nicht gefunden wurde. Die index.php wird aber mit einer illegalen id aufgerufen, so dass ein Fehler nach Punkt 1 erzeugt wird. Typo3 wertet die übergebene id als String aus und nicht numerisch, eine id 000 wird es als sicherlich nicht geben, da beim Erzeugen einer Seite die id numerisch festgelegt wird. Die Idee dazu stammt von http://typo3.toaster-schwerin.de/typo3_dev/2008_04/msg00492.html.

Sofern die ursprünglich aufgerufenen id gültig war, spielt diese fehlerhafte id keine Rolle. Eine Erklärung dafür habe ich nicht, eventuell hat das etwas mit der Auswertungsreihenfolge von GET/POST Daten zu tun. Von daher ist nicht sichergestellt, dass dieser Trick auch in zukünftigen Typo3-Versionen funktioniert.

Ein Problem gibt es aber, wenn ein Slash (/) im Dateinamen auftaucht, dann gibt es zwar einen korrekten 404er Returncode, aber eine nackte Fehlerseite, da wieder das CSS nicht gefunden wird.

Mit

RewriteRule ^[^/]*\.html$ index.php [L]

stattdessen werden nur Adresse ohne Slash (/) ersetzt, bei anderen Adressen wird die Fehlerseite des Apache gezeigt, mit korrektem Fehlercode. Nun gibt es zwei unterschiedliche Fehlerseiten, einerseits die in Typo3, andererseits die vom Webserver. In beiden Fällen wird aber ein korrekter Fehlercode geliefert.