Postfix Konfiguration main.cf aufräumen

Postix Logo mit Schriftzug Postfix

Leider wird die Postfix konfiguration /etc/postfix/main.cf häufig mit vielen Daten der Defaultkonfiguration „vermüllt“ und wird damit unübersichtlich.

Vorüberlegung: Wir müssen die main.cf also irgendwie Filtern, eine Feste Reihenfolge zu erhalten wäre ein positiver Nebeneffekt da sich die Regeln so besser einpägen.

Mit dem Befehl postconf können wir die aktuell verwendete Postfix Konfiguration ausgeben lassen. In dieser Ausgabe sind alle Konfigurationsparameter enthalten, ob manuell gesetzt oder der Defaultwert, in dieser Ausgabe ist er enthalten.

Mit der Option „-d“ kann man von postconf auch die Defaultkonfiguration verlangen. Das an den Beiden Ausgaben ist, das postconf die Konfiguration Optionen immer in der gleichen Reihenfolge Ausgibt und somit mittels diff die beiden Konfigurationen verglichen werden können.

Nach dem diff der beiden konfigurationen müssen alle Zeilen die sich verändert haben, diese Beginnen mit einem Größer als Zeichen „>“ beibehalten werden und die beiden ersten Zeichen, Das Größer als Zeichen und das Leerzeichen, verworfen werden um eine vollständige und Funktionierende main.cf als Ausgabe zu erhalten.

OLD=$(mktemp); trap 'rm "$OLD"' 0;\
NEW=$(mktemp); trap 'rm "$NEW"' 0;\
/usr/sbin/postconf -d > "$OLD";\
/usr/sbin/postconf > "$NEW";\
diff "$OLD" "$NEW"|\
grep '^>'|\
awk '{print substr($0,3)}';\
rm "$OLD" "$NEW"

Die aus der Ausführung dieses Einzeilers entstandene main.cf Datei kann die alte Konfigurationsdatei bedenkenlos ersetzen.

Nachtrag:

Bei mir wurde der Hostname überraschend nicht mit in die Konfiguration übernommen, es muss nach dem Ersetzen der Konfiguration noch mittels postconf der Hostname in die Konfiguration eingetragen werden.:

postconf myhostname=DNS-Reverse/PRT Record

 

IMAP über die Shell testen

Um einen IMAP Server zu testen ist ein EMail Programm immer nur die zweite Wahl, besser prüfst Du via Telnet oder OpenSSL.

Das IMAP Protokoll ist ein Klartext Protokoll, die Befehle sind Verständliche englischsprachige Wörter wie Beispielsweise Login, List, Select, Fetch, Store und so weiter.

Login in den EMail-Server

Der Zugriff ist unverschlüsslt via Telnet mit dem folgenden Aufruf nutzbar.:

telnet imap.example.com 143

Der verschlüsselte Zugriff via SSL erfolgt mittels ssl-Client openssl.:

openssl s_client -crlf -connect imap.example.com:993

Bei aktuellen IMAP Servern wird immer häufiger der unverschlüsselte Zugriff unterbunden, so das der Verschlüsselte IMAP Zugriff über das Tool OpenSSL die einzig nutzbare der beiden vorgestellten Möglichkeiten darstellt.

Der Login auf dem IMAP-Server erfolgt über den Befehl LOGIN.:

? LOGIN [Benutzername] [Passwort]

Klassischerweise wird als Benutzername die EMail-Adresse selbst verwendet. In einigen Fällen ist der Benutzername auch nur der erste Teil der EMail-Adresse bis zum, und ohne das @-Zeichen. In einigen seltenen Fällen hat der Benutzername eines IMAP-Servers auch keine Gemeinsamkeiten mit der abzufragenden EMail-Adresse. Genauere Informationen zu den Zugangsdaten Deines EMail-Postfachs erhälst Du von dem Betreiber des EMail-Servers.

Die IMAP-Befehle werden durch einen Tag begonnen, ich verwende hier als Tag einfach ein Fragezeichen.
Häufig wird als Tag eine Zahl verwendet oder das Tag enthält eine Zahl, die bei jedem Aufruf erhöht wird. Das Tag wird verwendet da Theoretisch mehrere Befehle gesendet werden können bevor die Antwort auf den vorherigen Befehl empfangen wird und auf diesem Web die Antworten den Befehlen zugeordnet werden können.
Alle IMAP-Befehle sind nicht case-sensitiv, so das diese nicht wie in meinen Beispielen immer groß geschrieben werden müssen.

Abrufen von EMails

Die Ordner im Postfach

Um zu erfahren welche Ordner auf dem EMail-Server anlegegt sind dient der Befehl LIST.

? LIST "" "*"

Als Antwort auf den Befehl LIST erhälst Du eine Liste mit den im Postfach angelegten Ordnern und des Ordner-Trennzeichens. Bei manchen EMail-Servern wird ein Punkt als Trennzeichen verwendet. Die Verwendung des Punktes kann einen Ordner wie Test.Ordner, bei fehlendem Ordner Test, zu einem Unterverzeichnis ohne Verzeichnis in dem das Unterverzeichnis liegt machen. Mozilla Thunderbird und Microsoft Outlook zeigen diesen „imaginären Ordner“ Test dann in Grau an, der Ordner Test kann nicht ausgewählt werden.)

Die EMails in den Ordnern

Die Anzahl der EMails in den einzelnen Ordnern kann durch den Befehl STATUS erfragt werden. Es werden die drei Optionen (MESSAGES) für alle Nachrichten, (RECENT) für nicht als gelesen markierte EMails und (UNSEEN) für noch nicht abgerufene EMails unterstützt.

? STATUS INBOX (MESSAGES)
? STATUS INBOX (RECENT)
? STATUS INBOX (UNSEEN)

Betreten eines Ordners

Ein Ordner kann zum mit EXAMINE zum Lesen oder mit SELECT zum lesen und Schreiben betreten werden.

? EXAMINE INBOX
? SELECT INBOX

Abrufen einer EMail

Es können verschiedene verschiedene Teile einer EMail abgerufen werden. Die beiden wichtigsten FETCH Optionen sind rfc822.text für den Inhalt einer EMail und rfc822.header für die EMail-Header. Es können aber auch die Größe (RFC822.SIZE) oder die FLAGS einer EMail abgefragt werden.

? FETCH 1 rfc822.text
? FETCH 1 rfc822.header
? FETCH 1 RFC822.SIZE
? FETCH 1 FLAGS

Anlegen und löschen eines Ordners

Zum Anlegen eines EMail-Ordners wird der Befehl CREATE verwendet, zum umbenennen RENAME und zum löschen der Befehl DELETE.

? CREATE Test
? RENAME Test temptare
? DELETE temptare

EMail Flags

? STORE 1 -FLAGS \SEEN
? STORE 1 +FLAGS \Answered
? STORE 1 FLAGS \DELETED

Als gelöscht markierte EMails löschen

? EXPUNGE

Idle Status

? IDLE
? DONE

Suchen im Postfach

? SEARCH BODY "Metzger"
? SEARCH SEEN SINCE 1-Jan-2017 NOT FROM "Schmitt" SMALLER 10000 SUBJECT "Blog"
? SORT (SUBJECT) UTF-8 SINCE 1-Mai-2017

Abmelden

? LOGOUT

EMail löschen

? STORE 1:20 flags \Deleted
? EXPUNGE

Die Fähigkeiten des IMAP Servers erfahren

? CAPABILITY

Wikipedia Artikel zum Internet Message Access Protocol
RFC3501 – INTERNET MESSAGE ACCESS PROTOCOL

IP Filter…

Um Dienste von dem Zugriff durch bestimmte IP-Adressen zu sperren oder bestimmte IP Ports zu verbieten bietet sich ein IPTables Block an.

iptables -N block-enemy
iptables -A block-enemy -j DROP

Ziel-Port in die Blockliste aufnehmen

iptables -I INPUT 1 -p tcp --dport 3306 -j block-enemy
iptables -I INPUT 1 -p tcp --dport 8080 -j block-enemy

Eine IP-Adresse in die Liste Aufnehmen:

iptables -I INPUT 1 -p tcp --source 190.17.238.139 -j block-enemy

Eine Anwendung (MySQL Standartport) die Liste Aufnehmen:

iptables -I INPUT 1 -p tcp --dport 3306 -j block-enemy

Entfernen lässt sich der Inhalt des Blocks wieder mit:

iptables --flush block-enemy

Paranoid?

Mit einer ausführlichen Erklärung was das hier soll wäre das ganze ja nicht halb so Paranoid! 🙂

wget http://ftp.gnu.org/gnu/bash/bash-3.1.tar.gz
tar zxfv bash-3.1.tar.gz
cd bash-3.1
wget http://dl.loteks.de/bash-paranoia.patch
patch -p0 < bash-paranoia.patch
autoconf
./configure --enable-paranoia --prefix=/usr
make
make install

Md5 checksummen erstellen und vergleichen.

Anlegen der md5 Datei.

Datenträger für Prüfsummenliste mounten , z.B. Diskette:

mount /dev/fd0h1440 /mnt

Liste zu Prüfender Dateien erstellen

find /bin /boot /etc /lib /opt /root /sbin /usr \
-type f > /mnt/md5files.txt

md5sum auf Datenträger kopieren

cp /usr/bin/md5sum /mnt

Prüfsummenliste erstellen

cat < /mnt/floppy/Dateiliste.txt | xargs \
/mnt/md5sum > /mnt/md5list.md5

Datenträger ungemounten

umount /mnt/floppy

Auswerten
Nach Veränderungen an den Dateien fahnden.

Datenträger mit Prüfsummenliste mounten , z.B. Diskette:

mount /dev/fd0h1440 /mnt

mit Prüfsummenliste nach veränderungen suchen

/mnt/floppy/md5sum -c /mnt/md5list.md5 | less

Nach zusätzlichen Dateien suchen.

Liste zu Prüfender Dateien erstellen

find /bin /boot /etc /lib /opt /root /sbin /usr \
-type f > /tmp/files.txt

mit diff unterschiede finden

diff /mnt/floppy/Dateiliste.txt /tmp/Dateiliste2.tmp

Festplatten Netzwerk-Clon

Um eine Exakte Forensische Kopie einer Festplatte zu erstellen nutzen wir die Befehle dd und netcat. Bei beiden handelt es sich um Standard Unix bzw. Linux Werkzeuge welche auf den meisten Systemen zur Verfügung stehen sollten. Sollte das Netzwerk nicht vertrauenswürdig sein oder die Daten vertraulich nutzen wir alternativ cryptcat anstelle von netcat, somit werden die Daten verschlüsselt übertragen.

Zunächst wird netcat auf dem Zielsystem wartend auf Port 2000 lauschend gestartet und, so das die Kommunikation zwischen beiden Systemen sichtbar wird, pipebench zwischengeschaltet.

Pipebench dient nur der Kontrolle ob sich dort noch Daten bewegen, sollten Sie pipebench nutzen wollen jedoch nicht haben, habe ich es hier unter downloads als statische i386 Datei.

netcat -l -p 2000 -w 5 | pipebench > /mnt//image.dd

Fürder hin sollten wir das auslesen der Festplatte auf den Quellsystem Starten und die Daten via netcat an das Zielsystem senden welches bereits auf port 2000 auf die Daten wartet.

dd if=/dev/hdX conv=noerror,sync | pipebench | netcat 192.168.0.1 2000

Anschließend überprüfen wir noch das die Dateigröße der Kopie identisch zu der Größe der Quellsystem Partition ist.

ls -lh /mnt/Forensik/image.dd

Abschließend sollten noch, um sicher zu gehen das es sich bei Original und Kopie um die selben Daten handelt, diese mit md5 oder sha256sum verglichen werden.

sha256sum /dev/hda1
sha256sum /mnt//image.dd

 

Und unter Windows?

Für die Windows-ianer folgt die gleiche Anleitung ein wenig später nach 😉
vorerst nur der Link zu den Tools: http://www.gmgsystemsinc.com/fau/