Our Blog

Stuff about the modern world…

Postfix, Dovecot & Roundcube – Der Weg zum eigenen Mailserver Teil 1!

Posted by christoph on 13 04 2012. 0 Comments

Hier will ich mal eine kleine Anleitung zur Einrichtung eines eigenen Mailservers schreiben. Als IMAP Server verwende ich Dovecot, zum Versenden der Mails wird Postfix benutzt. Als kleinen Bonus beschreibe ich auch noch die Einrichtung von Roundcube, einer sehr praktischen Webmaillösung mit vielen Erweiterungsmöglichkeiten.

Es gibt nun prinzipiell zwei Möglichkeiten wie man seinen SMTP Mailserver realisiert:

  1. Man verwendet eine Smarthost um die Mails zu versenden. Dies hat den Vorteil, dass die Mails weniger oft im Spamordner landen, da die meisen großen Smarthosts nicht auf irgendwelchen Blacklists stehen. Nachteil an der sache ist, dass die eigene Domain meist nicht als Absenderadresse akzeptiert wird und man somit eine Mailadresse bzw ein Postfach beim Smarthostanbieter braucht.
  2. Man betreibt einen komplett eigenständigen Mailserver. Dies hat natürlich gewisse Vorteile gegenüber der Smarthostvariante:
    • Man kann selbst über den Serverstandort und somit über den Standort seiner Daten bestimmen
    • Man kann ohne Probleme die eigene Domain verwenden
    • prinzipiell unbegrenzte Anzahl an Emailadressen

    Es gibt aber auch Nachteile denen man sich Bewusst sein sollte:

    • Die Sicherheit des Servers liegt einzig und allein an Dir!
    • Eigene Domains können unter Umständen schnell auf Blacklists geraten
    • Mehr Konfigurationsaufwand

Ich werde hier nur die Variante ohne Smarthost genauer erläutern. Ich selbst habe das ganze unter Ubuntu Server 11.10 32bit getestet.

Postfix Setup

Im ersten Teil der Serie „Postfix, Dovecote & Roundcube“ wird die nur die Einrichtung von Postfix besprochen.

Damit ein Linux-Rechner direkt E-Mails verschicken kann, muss ein MTA (Mail Transfer Agent) installiert und konfiguriert sein. Der Klassiker unter den MTA ist sendmail, dieser ist jedoch sehr umständlich zu konfigurieren, deshalb hat sich Postfix zum Standard entwickelt. Im Prinzip könnte man den Postfix-Server aufsetzen und gleich E-Mails verschicken. Doch leider ist das im Zeitalter von Spam nicht mehr so einfach. Ein SMTP-Server ohne eine feste IP und ohne ordentliche Zertifikate wäre eine ideale Spam-Schleuder. Deshalb muss man den Server gegen nicht authentifizierten Mailversand schützen.

 

Installation:

Folgende Pakete müssen installiert werden:

  • postfix
  • sasl2-bin
  • libsasl2-modules (wenn der Smarthost eine Authentifizierung benötigt)
  • bsd-mailx (optional, um über die Konsole mit dem Befehl mail Mails verschicken zu können)

Danach wird man sofort mit einigen Fragen konfrontiert. Die erste Frage über den Typ des Mailserver muss man in unserem Fall mit „Internet Site“ beantworten (Für die Verwendung mit Smarthost wählt man „Internet mit Smarthost„). Als „system mail name“ wird die eigene Domain verwendet, in diesem Fall „sprinternet.at“.

Die grafische Installation enthielt allerding nur die Grundeinstellungen, man kann mit

dpkg-reconfigure postfix

eine etwas detailliertere Variante starten. Nachfolgend kommen die Werte die man Ausfüllten muss:

  • General type of mail configuration? Internet Site
  • System mail name? sprinternet.at
  • Root and postmaster mail recipient? Leave blank
  • Other destinations to accept mail for? sprinternet.at, localhost.sprinternet.at, localhost
  • Force synchronous updates on mail queue? No
  • Local networks? Leave default (127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128)
  • Mailbox size limit (bytes)? 0
  • Local address extension character? Leave default (+)
  • Internet protocols to use? ipv4 (most likely)

Nach der Grundkonfiguration kümmern wir uns um die TLS Verschlüsselung. Dazu muss erst einmal ein Zertifikat erzeugt werden (Man kann natürlich auch ein Zertifikat von einer vertraunswürdigen CA verwenden).

mkdir /etc/postfix/ssl
cd /etc/postfix/ssl/
openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024

Nun muss man sich eine Passphrase für den Privatekey überlegen, ich habe hier „sprinternet“ eingegeben.

chmod 600 smtpd.key
openssl req -new -key smtpd.key -out smtpd.csr

Hier gibt man nun die zuvor gewählte Passphrase ein. Den Rest beantwortet man den eigenen Umständen entsprechend (Common Name sollte der domainname sein, also z.B: „sprinternet.at“). Die extra-Atribute kann man einfach leer lassen.

openssl req -new -key smtpd.key -out smtpd.csr
openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt
openssl rsa -in smtpd.key -out smtpd.key.unencrypted
mv -f smtpd.key.unencrypted smtpd.key
openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650

Konfiguration:

Nun kann man mit der Eigentlichen Postfix-Konfiguration beginnen. Man kann entweder direkt die Konfigurationsdatei von Postfix (/etc/postfix/main.cf) anpassen, oder das Konfigurationstool postconf verwenden.

postconf -e ’smtpd_sasl_local_domain =‘
postconf -e ’smtpd_sasl_auth_enable = yes‘
postconf -e ’smtpd_sasl_security_options = noanonymous‘
postconf -e ‚broken_sasl_auth_clients = yes‘
postconf -e ’smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination‘
postconf -e ‚inet_interfaces = all‘
echo ‚pwcheck_method: saslauthd‘ >> /etc/postfix/sasl/smtpd.conf
echo ‚mech_list: plain login‘ >> /etc/postfix/sasl/smtpd.conf
postconf -e ’smtpd_tls_auth_only = no‘
postconf -e ’smtp_use_tls = yes‘
postconf -e ’smtpd_use_tls = yes‘
postconf -e ’smtp_tls_note_starttls_offer = yes‘
postconf -e ’smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key‘
postconf -e ’smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt‘
postconf -e ’smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem‘
postconf -e ’smtpd_tls_loglevel = 1′
postconf -e ’smtpd_tls_received_header = yes‘
postconf -e ’smtpd_tls_session_cache_timeout = 3600s‘
postconf -e ‚tls_random_source = dev:/dev/urandom‘
postconf -e ‚myhostname = sprinternet.at‘
postconf -e ‚home_mailbox = Mail/‘
postconf -e ‚mailbox_command =‘

Die Konfiguration ist nun abgeschlossen. Damit die neuen Einstellungen übernommen werden muss man den SMTP-Server restarten:

/etc/init.d/postfix restart

Nun muss noch SASL eingerichtet werden. saslauthd übernimmt die Authentifizierung der User. Zur sicherheit sollte postfix in einem chroot laufen, was man sasl allerdings erst beibringen muss. In der Datei /etc/default/saslauthd muss folgendes angepasst werden:

START=yes
OPTIONS=“-c -m /var/spool/postfix/var/run/saslauthd“

Dann kann man die Einrichtung von saslauthd mit folgenden Befehlen abschließen:

mkdir -p /var/spool/postfix/var/run/saslauthd
dpkg-statoverride –add root sasl 710 /var/spool/postfix/var/run/saslauthd
adduser postfix sasl
/etc/init.d/saslauthd start

 

Damit ist die Kernkomponente des Servers fertig installiert und eingerichtet. =)

Testing

Nun kann noch schnell Überprüft werden ob die Konfiguration erfolgreich war:

telnet <serverip> 25

Nach Verbindungsaufbau muss man folgendes eingeben:
ehlo localhost
Als Antwort sollte der Server einige 250er Statuscodes zurückliefern. Die wichtigsten die unbedingt dabei sein müssen sind:

250-STARTTLS
250-AUTH PLAIN LOGIN

Durch eingabe von quit wird die Verbindung beendet.

 

Links:

  • http://jonsview.com/how-to-setup-email-services-on-ubuntu-using-postfix-tlssasl-and-dovecot
  • http://wiki.ubuntuusers.de/Postfix
  • http://wiki.debian.org/PostfixAndSASL

Schreibe einen Kommentar