HowTo: Perfect Forward Secrecy fuer Postfix und Dovecot einrichten

Im Heinlein Support Blog ist beschrieben, wie man sehr einfach Perfect Forward Secrecy fuer Postfix und Dovecot einrichtet. Der Blogeintrag ist unter der folgenden URL zu finden:

Hier noch einmal kurz die Befehle zusammengefasst. Fuer Postfix sind es folgende:

openssl gendh -out /etc/postfix/dh_512.pem -2 512
openssl gendh -out /etc/postfix/dh_1024.pem -2 1024
 
postconf -e "smtpd_tls_dh1024_param_file = /etc/postfix/dh_1024.pem"
postconf -e "smtpd_tls_dh512_param_file = /etc/postfix/dh_512.pem"
postconf -e "smtpd_tls_eecdh_grade = strong"
postconf -e "tls_preempt_cipherlist = yes"
postconf -e "smtpd_tls_loglevel = 1"
postconf -e "smtp_tls_loglevel = 1"
 
postfix reload

Fuer Dovecot muss nur zum verbesserten herausfinden in der /etc/dovecot/conf.d/10-logging.conf das Logging angepasst zu:

login_log_format_elements = "user=<%u> method=%m rip=%r lip=%l mpid=%e %c %k"

Testen kann man es anschliessend mit den folgenden beiden Befehlen:

openssl s_client -starttls smtp -connect mx2.heinlein-support.de:25
openssl s_client -starttls imap -connect imap.heinlein-support.de:143

HowTo: Mailserver, DNS und SPF Records

SPF steht fuer Sender Policy Framework und ist ein Spamschutzverfahren bei dem im DNS ein TXT Record hinterlegt wird. Der Record enthaelt zusaetzliche Informationen zum Mailserver. Ein empfangender Mailserver kann dann unter Zuhilfenahme eines SPF Records ueberpruefen ob der Server der diese Email versendet ueberhaupt legitimiert ist selbiges zu tun.

Einen einfachen SPF Record Generator gibt es unter der folgenden Adresse:

TXT Records koennen unter Linux mit dem Tool dig abgefragt werden:

user@host:~$ dig +short TXT jan-von.de
"v=spf1 a a:vonde.eu a:s2.pregos.info ip4:188.40.81.89"
user@host:~$

Mit den folgenden Schritten kann man unter Debian in Postfix selber einen SPF Check implementieren:

  1. Paket installieren:
    user@host:~$ aptitude install postfix postfix-policyd-spf-perl
  2. Die Ueberpruefung als smtpd_recipient_restrictions in der /etc/postfix/main.cf hinzufuegen. Dabei darauf achten, dass nur der neue Eintrag hinten angefuegt und nichts geloescht wird:
    smtpd_recipient_restrictions = [...], check_policy_service unix:private/policy
  3. Die Policy Engine in der /etc/postfix/master.cf hinzufuegen:
    policy unix - n n - - spawn
      user=nobody argv=/usr/bin/perl /usr/sbin/postfix-policyd-spf-perl
  4. Postfix neu starten:
    user@host:~$ service postfix restart

Diese Schritte habe ich aus dem Eintrag Implementing SPF checks in Postfix von www.debiantutorials.com. Hier in meinen Blog ueberfuehrt, damit ich die Infos auch noch habe sollte die andere Seite mal Offline gehen…

Howto: Backupmailbox – ein Kochrezept

Das Problem: ein Backup von wenigen aber wichtigen kleinen Dateien von einem Server machen, aber irgendwie keine Zeit den eigentlichen Backup-Client einzurichten. Sowieso ist in diesem Fall der Backup-Client auf dem Server eigentlich ein bisschen wie mit Kanonen auf Spatzen zu schiessen. Backup muss aber dennoch gemacht werden.

Die Loesung: die Backupmailbox. Auf dem Mailserver wird eine Backup-Aliasmailadresse eingerichtet. Backups gehen dann per Mail an diese Adresse, ein Skript extrahiert die Anhaenge und legt sie im Dateisystem in einer Ordnerstruktur ab. Diese Ordner werden dann ueber den Backupclient – der auf dem Mailserver sowieso laeuft – mit ins regulaere Backup geschoben. Die Anhaenge werden in Unterordner gespeichert, die dem Namen der EMailadresse entsprechen um sie besser auseinanderzuhalten. Dabei wird das @ gegen einen . ersetzt. Weiter werden nur Emails bearbeitet, die als Betreff ein definiertes Zufallspasswort haben.

Die Umsetzung: Man benoetigt einen Email-Alias, ein Skript, zwei Ordner im Dateisystem, ein Zufallspasswort und 15min Zeit eines Systemadministrators.

Zuerst lege man in der /etc/aliases einen neuen Backup-Alias an:

backupalias: "| /path/to/attatchExtract.sh"

und uebernehme diesen mit dem Kommando newaliases. Danach lege man unter dem definierten Pfad das folgende Skript ab:

#!/bin/bash
 
## base path where attachments and logfile should be stored without trailing slash
BASEPATH=/var/local/backup/
 
 
## The subject needs to match this string, otherwise the mail is dropped without action
SECRETSUBJECT="12345"
 
 
## uniq filename for temp file
FILENAME=$(date +%s)
echo "Filename = $FILENAME" >> $BASEPATH/logfile
 
 
## safe email to tmp file
/bin/cat > /tmp/$FILENAME
 
 
## extract sender from email
SENDER=$(grep "From:" /tmp/$FILENAME | sed 's/.*< *//;s/ *>.*//' | tr "@" ".")
echo "Sender = $SENDER" >> $BASEPATH/logfile
 
 
## extract subject from email
SUBJECT=$(grep "Subject:" /tmp/$FILENAME | sed '/^Subject: */!d; s///; q')
echo "Subject = $SUBJECT" >> $BASEPATH/logfile
 
 
## only do something if secret subject is matched
if [ "$SUBJECT" == "$SECRETSUBJECT" ]; then
 
 
  ## create folder for email address if doesn't exist
  if [ ! -d "$BASEPATH/$SENDER" ] ; then
    echo "Directory $BASEPATH/$SENDER does not exist, creating it" >> $BASEPATH/logfile
    mkdir -p $BASEPATH/$SENDER
  fi
 
 
  ## extract files from email and safe to correcet folder
  /usr/bin/uudeview -i -a -p $BASEPATH/$SENDER/ /tmp/$FILENAME >> $BASEPATH/logfile
  echo >> /$BASEPATH/logfile
 
 
## otherwise just do nothing
else
  echo "Subject didn't match secret Subject. Doing nothing..." >> $BASEPATH/logfile
fi
 
 
## delete tmp file
/bin/rm /tmp/$FILENAME

In dem Skript passe man nun das Zufallspasswort gegen ein eigenes an (makepasswd –chars 40) und aktualisiere den BASEPATH. Zuletzt noch das Skript mit chmod 755 ausfuehrbar machen und das Ergebnis aus dem Mailclient seiner Wahl testen.

Sollte es zu Problemen kommen, dass keine Logdatei und Anhaenge abgelegt werden liegt dieses meistens an fehlenden Rechten.

Bei Postfix Absender umschreiben

  1. In die /etc/postfix/main.cf folgendes eintragen
    sender_canonical_maps = hash:/etc/postfix/sender_canonical
  2. /etc/postfix/sender_canonical anlegen mit Eintraegen wie z. B.:
    www-data www-data@wehateyouall.de
  3. Folgende Befehle ausfuehren
    postmap /etc/postfix/sender_canonical
    /etc/init.d/postfix restart

Eine 1:1 Kopie von exdc. Ich habe es bisher immer dort nachgelesen, aber mir ist der Suchen-Suchschlutz einfach zu weit unten in der Sidebar. Darum nun eine Kopie hier rueber in meinen Blog.