autossh als Dienst einrichten

So nutze ich AutoSSH aum meinem Gnubee 2 NAS um von überall an die Daten auf meinem NAS zu gelangen!
Die verwendung von autossh wurde auf meinem NAS notwendig da sie sonst nicht mehr über das Internet erreichbar ist. Mein Internetprovider bietet nur noch DS-Light an. 🙁

autossh?

Autossh ist ein Programm das einen Open-SSH Tunnel bei Verbindungsabbrüchen automatisch wiederherstellt.

Verbindung zum Server etablieren

Meine NAS muss eine Passwortlose Verbindung zu meinem Server aufbauen können.
Hiezu generiere ich einen SSH-Key und übertrage den Public-Key auf den Server.:

Verbindung testen

Dienst anlegen

Um den Tunnel beim Systemstart automatisch wieder herstellen zu lassen lege ich die Datei /etc/systemd/system/sshtunnel.service mit dem folgenden Inhalt an:

example.org ist durch den Hostnamen des Servers zu ersetzen, benutzername durch den verwendeten Benutzernamen.

Dienst aktivieren

Um den neu angelegten Dienst sshtunnel zu aktivieren muss dieser noch aktiviert und gestartet werden.

Wie lange dauert etwas unter Linux

Ich verwende normalerweise den Linux befehl Time um die Dauer für einen Prozess unter Linux nachzuvollziehen.

Die Bash führt aber auch die wirklich praktische Variable SECONDS die die vergangenen Sekunden seit dem Start der Shell enthält. SECONDS führt die zählung auch fort wenn die Variable verändert wird. Die Variable enthält nach einer Änderung die zugewiesene Zahl zusätzlich zu der Anzahl Sekunden die nach der Änderung vergangen sind.
Wieso also nich eine Null Zuweisen um zu erfahren wie lange ein Prozess braucht.:

viel Schöner geht es jedoch wenn ich mir in Anschluss noch ausrechne wie viele Minuten und Stunden es wahren.:

In einer Einzigen Zeile, zum Compillieren eines Programms bedeutet dies:

Libe Grüße,
Jan

The Final Cartridge 3.33 rebuild – that I could build

Vor einigen Jahren besaß ich ein „Frezer-Modul für meinen C64. Ich hatte noch, kurz bevor ich den C64 durch einen Amiga 500 ersetzt habe ein Action Replay IV von einem meiner Bekannten für 100 DM gekauft. Zuerst wollte ich mir ein Final Cartridge zulegen, leider kostete es damals noch 146 DM und als Schüler konnte es mir damals noch nicht leisten.

In den wirren der folgenden Jahre und Umzüge habe ich meinen C64 irgendwann weggegeben.

In den frühen 2010er Jahren habe ich mir wieder einen neuen C64, mit 1541-II und Datasette zugelegt. Leider konnte ich auch nach längerer Suche kein Final Cartridge III oder Action Replay-IV finden das meinen Vorstellungen entsprach.

Ich stolperte vor kurzem auf ein YouTube-Video von Greisis Workbench in dem er ein Final Cartridge via Reverse Engeniering wieder zum Leben erweckte. (dieses Video hier!)

Nach einer kurzen Prüfung meiner „Vorräte“ musste ich leider festgestellen das mir, ausser dem C64 selbst und meinem Lötkolben alles fehlte was ich für den Nachbau des The Final Cartridge 3.33 von Greisis Workbench benötige.

1. Vorräte auffüllen

Da Greisis auf seinem Google Drive die Dateien zum Projekt bereitgestellt hat (vielen Dank) brauche ich das PCB nicht aus dem Video nachkonstruieren sondern kann Gerber File und BOM direkt hier herunterladen. zusätzlich benötige ich noch einen EEPROM Brenner.

Auf dem YouTube-Kanal von EEVblog wurde vor wenigen Jahren der MiniPro TL866 Universal Programmer vorgestellt. (Video hier!) Eine kurze Installation des zugehörigen Brenner-Programms zeigte mir das dieser EEPROM Brenner den auf dem Modul verwendeten EEPROM „SST39SF010A PLCC-32“ unterstützt. Bei einem Preis von 50€ und der guten bewertung von EEVBlog ist das Ding gekauft.

11.06.2018 Bestellung des EEPROM Programmers über eBay für 50,67€
14.06.2018 Bestellung der Bauteile bei Conrad für 18,20€
14.06.2018 Bestellung des PCBs bei JLCPCB für 7,04€ (8 US$)
Bei meiner ersten Bestellung bei JLCPCB habe ich zuvor nicht in die XGerber.zip Datei geschaut und diese als Gerberfile hochgeladen.
Hierdurch wurde meine Bestellung nach wenigen Minuten von Seiten des Anbieters wieder Storniert. Die Datei XGerber.zip enthält zusätzlich den Gerber-File namens TFC3_V1_0.zip. Dieser Gerber-File muss bei dem Upload zu JLCPCB angegeben werden!

2. Warten auf die Post

JLCPCB Bestellbearbeitung

Conrad kündigt die erste Teillieferung der bestellten Bauteile am 15.06.2018 für Samstag den 16.06. an. Da die Lieferung via DHL in Berlin erfolgte hatte ich selbstverständlich erst am 19.06. die Abholkarte für das Päckchen in der Post. Die letzter 4 Logic ICs sollen laut Begleitkarte in zwei Wochen nachgeliefert werden. (das ist dann der der 03.07.)
JLCPCB gibt am 17.06.2018 den Versand des PCB bekannt.:

Die zweite Conrad Lieferung, die fehlenden 4 ICs, wurde mir am 26.06. gegen 5:00 Uhr für den aktuellen Tag angezeigt. Gegen 14:50 Uhr erhielt ich die Meldung „Ein Zustellversuch erfolgt am nächsten Werktag“. Das Päckchen wurde mir nicht zugestellt, ich erhielt auch keine Karte, konnte durch die Sendungsverfolgung von Conrad das Päcken am 28.06.2018 bei einem Paketshop in meiner Nähe abholen.
Die Päckchen des TL866A ist noch nicht angekommen, das PCB von JLCPCB  habe ich leider noch immer nicht am 03.07.2018 von der Post abholen.
Das Päckcen aus China mit dem TL866A sollte laut ebay-Anzeige bis spätestens 29.07.2018 geliefert werden. Ich habe jetzt am 08.08.2018 eine EMail über ebay an den händler gesandt um Ihn auf die ausstehende Lieferung hinzuweisen.

Die Bestellung des EEPROM Programmers dauerte insgesamt über 8 Wochen! Ich habe von ursprünglichen Händler das Geld zurück erhalten und am 14.August den EEPROM Programmer via Amazon neu bestellt.

Die lieferung erfolgte am 17.08.2018.

3. The Final Cartridge in Einzelteilen


Jetzt wo alle Teile vorhanden sind geht es an das verlöten der Wiedestände, der Kondensatoren, der Dioden und der Sicherung.

Das löten verlief sehr holperig da die Wiederstände für meine Hände einfach zu klein sind.

4. Montage

das fertig gelötete Cartridge

5. Test & Abschluss

So sieht das ganze dann auf dem C64 aus.

EMail-Konten mit doveadm Syncronisieren / sichern

Postix Logo mit Schriftzug Postfix

Eine möglichst kurze Anleitung zum Syncronisieren von EMail-Konten via doveadm. Diese Anleitung ist speziel für EMail-Konten während eines Umzugs auf einen neuen EMail-Server.

Es muss zuerst sichergestellt sein das von dem neuen Server eine SSH-Verbindung zu dem alten Server mit einem Key hergestellt werden kann.
Aus diesem Grund ändere ich auf dem alten Server die Option PermitRootLogin für den SSH Dienst in der Datei /etc/ssh/sshd_config auf yes.

Anschließend kann ein neuer RSA-Key für die SSH Verbindung angelegt und auf den alten Server kopier werden.:

Um ein Postfach auf dem neuen Server vom alten Server zu synchronisieren kann der Befehl doveadm genutzt werden:

Wenn Du die Syncronisation von einigen wenigen Postfächern temporär zu jeder Viertelstunde durchführen möchtest kannst Du diesen Aufruf auch über den folgenden Cronjob erledigen lassen.

Die Syncronisation erfolgt in beide richtungen, wenn eine EMail auf dem alten Server und eine EMail auf dem neuen Server eingeht sind diese beiden EMails nach der Syncronisation auf beiden Servern verfügbar.

PHP Sessiondaten löschen

Da PHP-Scripte auf die eigenen Temp- und Session-Verzeichnisse schreibenden Zugriff haben müssen ist ein Script um Sessiondaten zu löschen garnicht so schwer umzusetzen.

Folgend mein eigener Versuch eines solchen PHP-Scripts ohne Schöpfungshöhe:

Wenn Du einen besseren Ansatz, oder Optimierungsideen hast schreibe mir gerne einen Kommentar!

PHP Mail via SMTP-Auth

Aufgrund zahlreicher Spam EMails ist es heute leider bei vielen Providern nicht mehr sinnvoll möglich EMails aus PHP-Scripten via mail() abzusetzen.
Die EMails werden, im Gegensatz zum Versand via SMTP-Auth im EMail-Programm sehr häufig als Spam zurückgewiesen.

Es ist garnicht so schwierig eine EMail via fsockopen und fgets zu versenden.

Hier das kleines PHP-Script ohne jede Schöpfungshöhe:

Nameserver abfragen in Windows Systemen

Du kannst unter Windows nslookup verwenden um DNS-Einträge abzufragen.

Um nslookup zu starten öffnest Du zuerst den Ausführen Dialog. Drücke gleichzeitig die Tasten [⊞ Win] + [R]. Es erscheint ein Eingabefeld „Öffnen“. Gib den Programmnamen ‚nslookup‚, ’nslookup.exe‘ oder ‚C:\Windows\System32\ nslookup.exe‘ ein. Schließe die Eingabe mit dem drücken der Taste [enter] oder dem Klick auf den Knopf [OK] ab.

Es erscheint der nslookup-Dialog mit folgenden Ausgabe:

Du hast direkt die Möglichkeit mit der Eingabe einer Domain, in der beim nslookup Aufruf erschienenen Shell, die A- und die AAAA-Records der eingegebenen Domain abzufragen.:

Du kannst mit der Eingabe einer IP-Adresse in dieser nslookup-Shell auch den PTR Record zu der eingegebenen IP-Adresse anzeigen lassen.:

Mit Eingabe von „server IP-ADRESSE“ kann in den folgenden Anfragen auch ein anderer Nameserver angefragt werden. Beispielsweise kann mit der Eingabe von „server 85.214.20.141“ der Nameserver des digitalcourage e.V. verwendet werden.
Alternativ kann bei der Anfrage des A-Records für die Domain auch der Nameserver als zweite Option übergeben werden „Domain Nameserver„.

Um andere DNS-Einträge als den A- bzw. AAAA-Record zu erfragen kann vor der Frage am nslookup mittels „set querytype=“ oder kürzer „set q=“ der zu liefernde Record übergeben werden:

Die interessanten Optionen für q= habe ich in der folgenden Tabelle hinterlegt:

A, ANY
fragt den A und AAAA Record ab (default option)
TXTTXT-Record abfragen (z.B. SPF und Domainkey)
SOASpecifies the start-of-authority for a DNS zone.
PTR
Specifies a computer name if the query is an IP address
MX
Specifies the mail exchanger
NS
Specifies a DNS name server for the named zone
CNAME
Specifies a canonical name for an alias.

Bei einer entsprechenden Abfrage des MX-Records ergibt sich die folgende Ausgabe im nslookup Dialog.:

Sollte bei einer Abfrage verboten werden sollen das der nameserver andere Nameserver befragt kann mittels „set norecurse“ die Anfrage auf den aktuell angegebenen Nameserver begrenzt werden. Diese Limitierung kann mittels „set recurse“ wieder aufgehoben werden.

Postfix: Zugriff von bestimmten IP-Adressen blockieren

Postix Logo mit Schriftzug Postfix

Es gibt immer wieder EMail-Versender die mir mit ihren Spam EMails gewaltig auf die Nerven gehen. Die Absender geben an, das es sich um einen Newsletter handelt, jedoch bewirkt ein abbestellen des Newsletters nur das noch mehr „Newsletter“ zugestellt werden.

Da diese Newsletter bei mir immer von der gleichen IP-Adresse kommen habe ich mir einen gängigen Weg gesucht die Kommunikation mit dieser Adresse vollständig zu unterbinden.

1. IP-Adresse ermitteln

Im EMail-Header ist die gesuchte IP-Adresse die erste vorkommende IP-Adresse die nicht zum eigenen Server gehört.
In meinem Beispiel-EMail-Header ist es die IP-Adresse 192.0.2.85.
(Keine Sorge, der gesammte EMail-Header ist made up, er sieht nur möglichst echt aus. Die IP-Adressen sind IP-Adressen die laut RFC zu Dokumentationszwecken bestimmt sind.)

2. Datei für den Filter erstellen

Um die Datei zu erzeigen benutze ich den Editor vim. Nach dem starten des Editors mittels folgendem Befehl…:

…kann mittels Taste [i] der Eingabemodus gesartet werden.

Nach der Eingabe kann mittels Taste [ESC] und folgender Eingabe von :wq die Datei geschlossen und gespeichert werden.

Anschließend die Datei mit postmap kompilieren, so das Postfix direkt etwas mit dem Filter anfangen kann.:

Durch diesen Aufruf wird eine Datei access_client.db im Ordner etc/postfix/ angelegt.

3. Postfix konfiguration anpassen

In der Postfix Konfigurationsdatei main.cf muss unsere Datei jetzt noch der Option smtpd_sender_restrictions hinzugefügt werden.
Herzu prüfen ich mittels postconf welche Parameter aktuell für die Option „smtpd_sender_restrictions“ gesetzt sind.:

Entsprechend der Ausgabe sind auf meinem Postfix-Server für die „smtpd_sender_restrictions“ keine Optionen gesetzt.

Im Anschluss muss, zur Aktivierung der geänderten Konfiguration, der Postfix-Dienst neu geladen werden.:

Anschließend werden Die Zustellversuche vom Postfix abgelehnt. In den Logiles wird dies entsprechend mit „Client host rejected: Access denied“ vermerkt

EMail Datenschutz – Mail Header filtern

Vor einigen Tagen fiel mir bei der Untersuchung  des, auch an dieser Stelle behandelten, TLS-Fehlers auf, das die E-Mail Header aller über meinen Server vesandten EMails die folgenden beiden Header-Zeilen enthalten.:

Ich bin mir, mit Blick auf den 25. Mai 2018 nicht sicher ob eine EMail diese zusätzlichen, nicht für die Erfüllung des Dienstes erforderlichen, Metadaten weiterhin beinhalten darf.
(Lieber Leser, liebe Leserin, wenn Du eine Online-Rechtsberatung erteilen darfst und dich mit der EU-Datenschutz-Grundverordnung auskennst, würde ich mich über einen Kommentar ↓ von Dir sehr freuen!)

Da ich es persönlich nicht mag wenn Daten versteckt vorliegen (in diesem Fall im EMail-Header) die nicht benötigt werden aber dritten unter bestimmten Umstenden helfen können mir zu schaden habe ich mich für die Entfernung der Header-Zeilen entschieden. Auch ein Blick in die RFC5321, und einige eigene Tests, zeigen das diese beiden Header-Zeilen nicht für die Zustellung verwendet werden und somit die Entfernung nicht schadet.

Vorgehen:

1.) Den EMail-Server Prüfen

Mit dem Postfix-Konfigurationsparameter header_checks kann ich die EMails am einen PCRE Filter weitergeben und verändern lassen.
Mit dem Postfix-Konfigurationsparameter smtpd_sasl_authenticated_header Erweitere ich den EMail-Header um einen Eintrag über den zur Authentifizierung am EMail-Server genutzten Benutzernamen.

Ich bekomme für beide Konfigurationen eine leere Antwort, daher schaue ich nach den Defaultwerten.:

2.) EMail-Server Konfiguration anpassen

Da ich vor habe den Filter über PCRE umzusetzen benötige ich das Debian Paket postfix-pcre, welches die Unterstützung dür die gewünschten Perl Regular Expressions für Postfix mitbringt.:

Nach dem das Paket installiert ist lege ich auf dem Server eine Datei mit dem Namen „header_checks“, im Postfix Verzeichnis, an. In dieser Datei werden die Filterregeln hinterlegt.:
sudo vi /etc/postfix/header_checks

Im Anchluss verlange ich vom Postfix dem Benutzernamen, der zur Anmeldung am EMail-Server verwendet wurde in die Header einzufügen und die Mail Header über meinen Filter zu leiten.:

Nach dem folgenden neustart von Postfix kann ich mir eine Testnachricht senden und die Header prüfen.

Bei meinem Vergleich des neuen EMail-Headers mit dem EMail-Header einer älteren EMail, die ich mir vor der Einrichtung des Filters gesandt habe, fehlen die von mir zu begin beanstandeten Header Zeilen.

Korrektur für Postfix TLS-Fehler „untrusted issuer“

Postix Logo mit Schriftzug Postfix

Ich konnte mal wieder, beim EMail-Versand von meinem EMail-Server (Postfix) zu GMX einmal wieder keine EMails zustellen. Aus der aktuellen Fehlermeldung, welche in der Mail Delivery Notification erwähnt wird, geht hervor das es einen Zertifikatsfehler gab.

In den Postfix Logfiles erscheint die TLS-Fehlermeldung „untrusted issuer“.:

Der Aussteller des Zertzifikats des GMX-EMail Servers war meinem Postfix nicht bekannt.
Das SSL-Zertifikat des GMX EMail Server ist mit dem von der „Deutsche Telekom Root CA 2“ signiert. War über eine Suche im Internet schnell gefunden. Die erste Zeile des Zertifikats ist in der Datei /etc/ssl/certs/ca-certificates.crt enthalten.

Die erste Zeile des Zertifikats der Telekom lautet.: MIIDnzCCAoegAwIBAgIBJjANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJERTEc

In meiner Suche konnte ich einfach feststellen das das CA-Zertifikat der Telekom ab der Zeile 1110 in der Datei ca-certificates.crt enthalten ist.:

Da in der CA-Datei auf meinem Server das Zertifikat enthalten ist prüfe ich gegen welche CA-Zertifikate Datei mein Postix die Zertifikate der Kommunikationspartner auf Gültigkeit zu prüfen:

Ich hatte also versäumt meinem Postfix die aktuell CA Zertifikate Datei bekanntzugeben.
Ich habe mit postconf den CAfile bekannt gegeben.

Und anschließend meinen MTA neu gestartet.

Abschließend werden meine EMails endlich wieder ohne Fehlermeldung auch an den Mailserver von GMX zugestellt.