Kategorien
Allgemein

Wie lange dauert etwas unter Linux

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

time make -j4

real    0m2,587s
user    0m0,001s
sys     0m0,027s

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.:

SECONDS=0; make; echo $SECONDS

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

SECONDS=0
# Hier kommt die Ausführung des Befehls
DAUER=$SECONDS
echo "$(($DAUER / 3600)) Stunden, $((($DAUER / 60) % 60)) Minuten und $(($duration % 60)) Sekunden vergangen."

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

SECONDS=0 ; make -j4 ; DAUER=$SECONDS; echo "$(($DAUER / 3600)) Stunden, $((($DAUER / 60) % 60)) Minuten und $(($DAUER % 60)) Sekunden vergangen."

Libe Grüße,
Jan

Kategorien
Allgemein

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.

Kategorien
Allgemein

EMail-Konten mit doveadm Syncronisieren / sichern

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.:

ssh-keygen -t rsa -C "Key for the historic Server to sync mail"
scp -p .ssh/id_rsa.pub root@angststalt.de:
ssh root@angststalt.de
cat id_rsa.pub >> .ssh/authorized_keys
exit

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

doveadm sync -u emailadresse@example.com ssh root@alterserver -i ~/.ssh/id_rsa doveadm dsync-server -u emailadresse@example.com

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.

*/15 * * * * doveadm sync -u emailadresse@example.com ssh root@alterserver -i ~/.ssh/id_rsa doveadm dsync-server -u emailadresse@example.com >/dev/null 2>&1

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.

Kategorien
Allgemein

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:

<?php
echo "Delete all Files in Session Directory:<br>\n";

$path = explode(';', session_save_path());
foreach ($path as $DIR) {
    if (is_dir($DIR))
        $dir[] = $DIR;
}
unset($DIR);
unset($path);

foreach ($dir as $DIR) {
    $files = glob($DIR . '/{,.}*');
    foreach ($files as $file) {
        if (is_file($file)) {
            unlink($file);
            echo '.';
        }
    }
}
echo "\n";
?>

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

Kategorien
Programmieren

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:

<?php
$MTo       = "empfaenger@example.net";
$MToName   = "Empfaengername";
$MFrom     = "absender@example.net";
$MFromName = "Absendername";
$MSubject  = "Die Betreffzeile der EMail!";
$MMessage  = "World, Hello!";
SendSMTPMail( $MFrom, $MFromName, $MTo, $MToName, $MSubject, $MMessage );
?>


<?php
function SendSMTPMail( $MFrom, $MFromName, $MTo, $MToName, $MSubject, $MMessage )
  {
    $smtpServer   = "smtp.strato.de";
    $smtpPort     = "25";
    $timeout      = "30";
    $username     = "EMail-Adresse als Benutzername";
    $password     = "Passwort für den SMTP Server";
    $localhost    = "h12345.stratoserver.net";
    $newLine      = "\r\n";
    $smtpConnect  = fsockopen( $smtpServer, $smtpPort, $errno, $errstr, $timeout );
    $smtpResponse = fgets( $smtpConnect, 515 );
    if ( empty( $smtpConnect ) )
      {
        $output = "Failed to connect: $smtpResponse";
        return $output;
      }
    fputs( $smtpConnect, "AUTH LOGIN" . $newLine );
    $smtpResponse = fgets( $smtpConnect, 515 );
    fputs( $smtpConnect, base64_encode( $username ) . $newLine );
    $smtpResponse = fgets( $smtpConnect, 515 );
    fputs( $smtpConnect, base64_encode( $password ) . $newLine );
    $smtpResponse = fgets( $smtpConnect, 515 );
    fputs( $smtpConnect, "HELO $localhost" . $newLine );
    $smtpResponse = fgets( $smtpConnect, 515 );
    fputs( $smtpConnect, "MAIL FROM: $MFrom" . $newLine );
    $smtpResponse = fgets( $smtpConnect, 515 );
    fputs( $smtpConnect, "RCPT TO: $MTo" . $newLine );
    $smtpResponse = fgets( $smtpConnect, 515 );
    fputs( $smtpConnect, "DATA" . $newLine );
    $smtpResponse = fgets( $smtpConnect, 515 );
    $headers      = "MIME-Version: 1.0" . $newLine;
    $headers .= "Content-type: text/html; charset=iso-8859-1" . $newLine;
    $headers .= "To: $MToName <$MTo>" . $newLine;
    $headers .= "From: $MFromName <$MFrom>" . $newLine;
    fputs( $smtpConnect, "To: $MTo\nFrom: $MFrom\nSubject: $MSubject\n$headers\n\n$MMessage\n.\n" );
    $smtpResponse = fgets( $smtpConnect, 515 );
    fputs( $smtpConnect, "QUIT" . $newLine );
    $smtpResponse = fgets( $smtpConnect, 515 );
  }
?>

Kategorien
Windows

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:

Standardserver: google-public-dns-a.google.com
Address: 8.8.8.8

> _

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.:

> loteks.de
Standardserver:  google-public-dns-a.google.com
Address:  8.8.8.8

Nicht autorisierende Antwort:
Name:    loteks.de
Address:  178.254.44.129

> google.de
Standardserver:  google-public-dns-a.google.com
Address:  8.8.8.8

Nicht autorisierende Antwort:
Name:    google.de
Addresses:  2a00:1450:400e:80b::2003
          172.217.17.67

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

> 178.254.44.129
Server:  google-public-dns-a.google.com
Address:  8.8.8.8

Name:    s01.angststalt.de
Address:  178.254.44.129

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.:

> set q=mx
> loteks.de
Server:  [8.8.8.8]
Address:  8.8.8.8

Nicht autorisierende Antwort:
loteks.de       MX preference = 100, mail exchanger = s01.angststalt.de

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.

Kategorien
Linux Postfix

Postfix: Zugriff von bestimmten IP-Adressen blockieren

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.)

Return-Path: <newsletter@cadbdcedcbfabdadef.de>
Delivered-To: meine-mail@example.org
Received: from mail.example.org
by mail.example.org (Dovecot) with LMTP id NfYUAK7XSFviHAAALzVKdg
for <meine-mail@example.org>; Fri, 13 Jul 2018 18:47:42 +0200
Received: by mail.example.org (Postfix, from userid 114)
id D79F53FE5E; Fri, 13 Jul 2018 18:47:41 +0200 (CEST)
Authentication-Results: mail.example.org;
dkim=pass (1024-bit key; unprotected) header.d=cadbdcedcbfabdadef.de header.i=newsletter@cadbdcedcbfabdadef.de header.b="UKjn3gGF";
dkim-atps=neutral
X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on mail.example.org
X-Spam-Level: *
X-Spam-Status: No, score=1.6 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HTML_IMAGE_RATIO_04,HTML_MESSAGE,MIME_HTML_ONLY,URIBL_BLOCKED
autolearn=no autolearn_force=no version=3.4.1
Received: from mta5085.cadbdcedcbfabdadef.com (mta5085.cadbdcedcbfabdadef.com [192.0.2.85])
by mail.example.org (Postfix) with ESMTPS id 669E73FD27
for <meine-mail@example.org>; Fri, 13 Jul 2018 18:47:39 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; s=teneo; d=cadbdcedcbfabdadef.de;
h=MIME-Version:From:To:Reply-To:Date:Subject:Content-Type:Content-Transfer-Encoding:Message-ID; i=newsletter@cadbdcedcbfabdadef.de;
bh=OBg4dbrG8hhFyJR7HMx+3IDg91CCOeaN9fnJCAVA6oE=;
b=UKjn3gGF5j9dxocn0xfFlMVHW+bbvUjere1rI99nga/TVlqu5OQFSOFkwJNUjgklof9Mi/9DIHrf
gafjAml+Onn6z29PSoAid1Rrn+K67B5XxKVk0qrHjSen3jMIf6SPdQRB9rQzvh7uIUAhmyLCVAnC
zbc2RugGh4/eZEvVYu4=
Received: from mta003.example.com (198.51.100.78) by mta5085.cadbdcedcbfabdadef.com id h93bqk1bessq for <meine-mail@example.org>; Fri, 13 Jul 2018 18:47:32 +0200 (envelope-from <newsletter@cadbdcedcbfabdadef.de>)
X-ARF: b98b6becf874558246b684f462613228
Feedback-ID: 5283550-b98b6becf874558246b684f462613228:b98b6becf874558246b684f462613228:newsletter:cadbdcedcbfabdadef
MIME-Version: 1.0
From: "cadbdcedcbfabdadef"<newsletter@cadbdcedcbfabdadef.de>
To: meine-mail@example.org
Reply-To: noreply@cadbdcedcbfabdadef.de
Date: 13 Jul 2018 18:47:32 +0200
Subject: Micro-SD-Karten
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: base64
Message-ID: <0.0.569.CF.1A41AC9425F793A.0@mta5085.cadbdcedcbfabdadef.com>

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…:

vi /etc/postfix/access_client

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

# IP Adresse und IP-Netze die ich blockiere
192.0.2.85 REJECT

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.:

postmap hash:/etc/postfix/access_client

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.:

sudo postconf -p smtpd_sender_restrictions
smtpd_sender_restrictions =

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

sudo postconf "smtpd_sender_restrictions = check_client_access hash:/etc/postfix/access_client"

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

service postfix reload

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

Jul 18 10:21:16 server postfix/smtpd[3304]: connect from mta5085.cadbdcedcbfabdadef.com[192.0.2.85]
Jul 18 10:21:16 server postfix/smtpd[3304]: NOQUEUE: reject: RCPT from mta5085.cadbdcedcbfabdadef.com[192.0.2.85]: 554 5.7.1 : Client host rejected: Access denied; from= to= proto=ESMTP helo=
Jul 18 10:21:16 server postfix/smtpd[3304]: disconnect from mta5085.cadbdcedcbfabdadef.com[192.0.2.85] ehlo=2 starttls=1 mail=1 rcpt=0/1 quit=1 commands=5/6
Jul 18 10:26:39 server postfix/anvil[3305]: statistics: max connection rate 1/60s for (smtpd:192.0.2.85) at Jul 18 10:21:16
Jul 18 10:26:39 server postfix/anvil[3305]: statistics: max connection count 1 for (smtpd:192.0.2.85) at Jul 18 10:21:16
Kategorien
Linux Postfix

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.:

Received: from [192.168.*.*] (ip********.dynamic.kabel-deutschland.de [95.91.*.*])
by server.angststalt.de (Postfix) with ESMTPSA id A64D13FCE1
for <*****@*****.de>; Mon, 26 Mar 2018 21:46:44 +0200 (CEST)
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101
Thunderbird/52.6.0

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.

postconf -n header_checks 2>/dev/null
postconf -n smtpd_sasl_authenticated_header 2>/dev/null

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

postconf -d header_checks 2>/dev/null
header_checks =
postconf -d smtpd_sasl_authenticated_header 2>/dev/null
smtpd_sasl_authenticated_header = no

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.:

sudo apt install postfix-pcre
The following NEW packages will be installed:
postfix-pcre
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 320 kB of archives.
After this operation, 373 kB of additional disk space will be used.

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

/^Received: .*\(Authenticated sender:.*/ IGNORE
/^Received: by server\.angststalt\.de .*from userid [0-9]+\)/ IGNORE
/^User-Agent:/ IGNORE

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.:

postconf -e smtpd_sasl_authenticated_header=yes
postconf -e header_checks=pcre:/etc/postfix/header_checks

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

service postfix restart

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.

Kategorien
Linux Postfix

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

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“.:

Mar 27 16:05:12 server postfix/smtp[6752]: certificate verification failed for mx01.emig.gmx.net[212.227.17.5]:25: untrusted issuer /C=DE/O=Deutsche Telekom AG/OU=T-TeleSec Trust Center/CN=Deutsche Telekom Root CA 2
Mar 27 16:05:12 server postfix/smtp[6752]: A602E3FF5C: Server certificate not trusted
Mar 27 16:05:12 server postfix/smtp[6752]: certificate verification failed for mx00.emig.gmx.net[212.227.15.9]:25: untrusted issuer /C=DE/O=Deutsche Telekom AG/OU=T-TeleSec Trust Center/CN=Deutsche Telekom Root CA 2
Mar 27 16:05:12 server postfix/smtp[6752]: A602E3FF5C: to=<********@gmx.de>, relay=mx00.emig.gmx.net[212.227.15.9]:25, delay=1.2, delays=0.12/0.03/1/0, dsn=4.7.5, status=deferred (Server certificate not trusted)

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.:

~]> grep -n MIIDnzCCAoeg /etc/ssl/certs/ca-certificates.crt
1111:MIIDnzCCAoegAwIBAgIBJjANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJERTEc

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:

postconf -n smtp_tls_CAfile 2>/dev/null
smtp_tls_CAfile =

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

postconf -e smtp_tls_CAfile=/etc/ssl/certs/ca-certificates.crt

Und anschließend meinen MTA neu gestartet.

service postfix restart

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

Mar 27 16:17:44 server spamd[1256]: prefork: child states: II
Mar 27 16:17:45 server postfix/smtp[7300]: 9ACD13FF62: to=<********@gmx.de>, relay=mx01.emig.gmx.net[212.227.17.5]:25, delay=1.2, delays=0.12/0.03/0.79/0.29, dsn=2.0.0, status=sent (250 Requested mail action okay, completed: id=1MvIfx-1ejZeK2V9d-00qsAg)
Mar 27 16:17:45 server postfix/qmgr[7226]: 9ACD13FF62: removed
Kategorien
Allgemein GnuBee 2 NAS

GnuBee2 – Erwerb und Preis

Ich hatte genug von meiner alten NAS und habe mir nach einer umfassenden Recherche zu meinen Anforderungen und Möglichkeiten eine GnuBee2 bestellt.

Die GnuBee Personal Cloud 2 ist eine NAS, bestehend aus freier, offener Hard- und Software, die bis zu 6 3,5-Zoll-SATA-Festplatten und/oder SSD, eine SD-Karte, eine Serielle Schnitstelle und 3 Gigabit LAN-Ports unterstützt.
Die Hardware wurde um den SOC MediaTek-MT7621A-CPU, welcher über zwei CPU-Kerne mit Hyperthreading verfügt die mit 880 MHz getacktet sind und auf 1,2 GHz übertaktet werden können sowie 512 MByte DDR3-Hauptspeicher gebaut. Dieser findet, wie hier gezeigt wird, in Zahlreichen Chinesischen WLAN-Routern verwendung.

Die vollständigen Blaupausen stehen zusammen mit der Dokumentation des Boards auf GitHub als PDFs unter CC-BY-SA 4.0 zur wirklich sehr freien Verfügung.

Als Kritikpunkt für das NAS sehe ich das „Gehäuse“. Dieses besteht aus zwei dünne Blech-Platten die mit je 3 Winkeln an das Mainboard geschraubt werden.

Ich habe meine Bestellung der GnuBee 2 am 04.02. 2018 auf der Internetseite Crowdsupply (USA) aufgegeben.
Der Versand erfolgte bereits am 07.02.2018 aus Portland (USA).
Die Lieferung dauerte insgesamt 18 Tage., geliefert wurde am 22.02.2018. Die Bestellung blieb 7 Tage zur Bearbeitung bei dem deutschen Zoll in Frankfurt am Main.

Der Preis für die NAS ohne steuer selbst war am 04.02.2018: 255,69 Euro. (324,00$ + 4,57 € Kreditkartengebühr für den Geldwechsel)
Die kosten für den deutsche Zoll betrugen 49,84 Euro.

So war die GnuBee 2 bei Ankunft verpackt

Mit Steuer, Versand und Kreditkartengebühren und der Gebühr für den
Währungsumtausch kostete mich das GnuBee 2 insgesamt 305,53 Euro.
Ein guter Preis für ein NAS mit Platz für 6 Festplatten, ohne Binary Blobs und inklusive „Gehäuse“.