Bitte lies Dir den Disclaimer durch, bevor Du eine Anleitung umsetzt...

Haftungsausschluss / Disclaimer

Frankensteins Mailserver – 2 – Vorbereitungen

Im zweiten Teil der Maiserver Serie treffen wir die Vorbereitungen – das Drumherum – und installieren die Server-Dienste…

Begleit-Datei

E-Mail Begleittext Download (Rechtsklick – „Ziel speichern unter…“)

Wie beim Einrichten des Basis-Systems bekommst Du hier beim Einrichten des Mailservers auch eine Text-Datei zum Herunterladen. Die Konfiguration ist an manchen Stellen recht umfangreich und nur recht schwer alleine über das Blog zu vermitteln…

Passwörter erstellen

Für die diversen Dienste und Server brauchen wir wieder eine Menge Passwörter.
Diese erstellen wir wie üblich über
pwgen -sy 32

Ausnahme: Für die Mailboxen sind die Passwörter mit den Sonderzeichen nicht geeignet, da sie vom Postfix Admin ‚kaputtgemacht‘ werden. Hier bauen wir die PWs mit
pwgen -s 32
Per Hand ersetze ich noch ein paar Buchstaben mit Ausrufezeichen, Punkt oder Komma – das scheint dem PW nichts zu machen…

Die Passwörter wie immer in die Text-Datei speichern, die sich im VeraCrypt-verschlüsselten Verzeichnis befindet!

DNS

MX- und Domain-Einträge

[*Einzustellen beim Domain-Verwalter*]

Für die Mailserver gibt es eine eigene Klasse im DNS, die „MX“-Einträge. Anders als die „A“-Einträge zeigen die nicht auf eine IP, sondern auf einen Domain-Name. Der MX für „bla.de“ könnte also sinnigerweise „mail.bla.de.“ heißten. MX-Einträge enden IMMER auf einen „Punkt“. Und MX-Einträge haben eine Priorität. Der Haupt-Server bekommt die „10“. Da wir nur einen Server haben, bekommt der also die Priorität „10“.

Dann definierst Du für „mail.bla.de“ noch einen „A“-Eintrag, der auf die IP des Servers zeigt. Damit hat der MX-Eintrag dann auch eine IP-Adresse.

Für den Postfix Admin brauchen wir auch eine Subdomain. Ich wähle hier im Beispiel „pfa.bla.de“.

Die Einträge für „bla.de“ müssten dann so aussehen:
bla.de – A – 12.34.56.78
bla.de – MX – 10 mail.bla.de.
mail.bla.de – A – 12.34.56.78
www.bla.de – A – 12.34.56.78
mysql.bla.de – A – 12.34.56.78
pfa.bla.de – A – 12.34.56.78

Hast Du noch andere Domains, wie z.B. „blup.de“, dann zeigt der MX von „blup.de“ auch auf „mail.bla.de.“. Für die Domain „blup.de“ brauchst Du auch keinen „A“-Eintrag mehr definieren, da der „MX“ von „blup.de“ ja auf „bla.de“ zeigt und dort aufgelöst wird.

Und so gibst Du der Reihe nach jeder Domain, für die unser Mailserver später Mails verarbeiten soll, den MX-Eintrag „mail.bla.de.“.

Pointer – der PTR

[*Einzustellen im UltraVPS-Controlcenter*]

Eine Domainauflösung läuft normalerweise ‚vorwärts‘ ab: Jemand schreibt „mail.bla.de“ , aber sein Computer kann damit nichts anfangen. Computer brauchen IPs. Also sieht der Rechner im DNS nach. Da steht dann z.B. „mal.bla.de“ = „12.34.56.78“.

Das ganze geht auch ‚rückwärts‘. Der Rechner könnte nun fragen „was kommt bei der IP „12.34.56.78“ für eine Domain raus“? Das nennt man dann „reverse Lookup“, weil er ‚rückwärts‘ läuft. Und dazu muss man einen „Pointer“ gesetzt haben – das ist der „PTR“.

Nun ist das Problem, dass wir den Pointer nicht selber im DNS setzen können, sondern nur der Netzbetreiber, dem das IP-Netz gehört, bei dem wir den vServer gemietet haben.

Und weil der PTR so schwer zu setzen ist, fragen den andere Mailserver gerne ab, ob hinter der IP auch wirklich der Mailserver sitzt, für den er sich im DNS ausgibt. Finden sie keinen PTR oder ist er falsch gesetzt, wird die Mail nicht zugestellt. Das reduziert dann SPAM.

Zweites Problem: EINE IP – EIN PTR. Wir können zwar beliebig viele Domains auf eine IP zeigen lassen, die dann alle korrekt ‚vorwärts‘ auflösen. Aber es gibt nur genau EINEN Pointer pro IP-Adresse. Weil bei der ‚rückwärts‘ Auflösung von „12.34.56.78“ genau EIN Domain-Name erlaubt ist. Also müssen wir uns den Namen des Mailservers gut überlegen…

Den Pointer für unseren vServer können wir im UltraVPS-Controlcenter setzen. UltraVPS übernimmt ihn dann in deren System:

Melde Dich dort an und gehe auf „Verwalten“ Deines vServers.
Unten sind einige Reiter. Da haben wir ganz am Anfang unseren Hostname eingetragen. Hier wechseln wir auf den Reiter „Netzwerk“. Dort steht dann unsere IP-Adresse und rechts der Eintrag für „Reverse DNS“. Der ist im Augenblick leer. Wir klicken auf „change“ und geben unsere Mail-Domain ein, auf die der Pointer zeigen soll. In meinem Beispiel „mail.bla.de“.

WICHTIG: MX-Eintrag und PTR *MÜSSEN* übereinstimmen!
Also *NICHT* MX = „mail.bla.de“ und PTR = „mailserver.bla.de“ – das würde Probleme machen.

Dann speichern und fertig – der PTR ist gesetzt.

Firewall aufmachen

Die Ports für SMTP, IMAP und POP3 müssen noch in der Firewall aufgemacht werden. Die folgenden Einträge bitte ganz unten am Ende der Konfigurationsdatei anhängen…

nano /etc/shorewall/rules
## MAIL – smtp, submission, smtps
ACCEPT:info net $FW tcp 25 – –
ACCEPT:info net $FW tcp 587 – –
ACCEPT:info net $FW tcp 465 – –

## IMAP – imap, imaps
ACCEPT:info net $FW tcp 143 – –
ACCEPT:info net $FW tcp 993 – –

## POP3 – pop3, pop3s
ACCEPT:info net $FW tcp 110 – –
ACCEPT:info net $FW tcp 995 – –

Firewall neu starten
shorewall safe-restart

Do you want to accept the new firewall configuration? [y/n] y
New configuration has been accepted

Zertifikat für die Mailserver

Da wir den Mailverkehr über eine sichere SSL-Verbindung abwickeln möchten, brauchen wir ein Zertifikat dafür. Dieses signieren wir erst mal wieder selbst.

SMTP-, POP3- und IMAP-Dienste werden in dieser Config das selbe Zertifikat verwenden!
Also brauchen wir nur eins erzeugen.

(Ausführlicher ist die Zertifikatsgeschichte im SSL-Tutorial erklärt…)

nano /root/CA/bla.de-mail.cnf
——————- SNIP IT —————————–
#
# bla.de-mail.cnf – Zertifikatsvorlage
#
[ req ]
prompt = no
distinguished_name = server_distinguished_name
req_extensions = v3_req
#
[ server_distinguished_name ]
commonName = mail.bla.de
stateOrProvinceName = BY
countryName = DE
emailAddress = postmaster@bla.de
organizationName = bla.de Mail Department
organizationalUnitName = Secure Deliveries. Yay!
#
[ v3_req ]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names
#
[ alt_names ]
DNS.0 = mail.bla.de
———————————————————

Das ist kein „Wildcard“-Zertifikat, wie das für unseren Web-Server. Dieses hier ist ausschließlich für „mail.bla.de“ zuständig und gültig.
„CommonName“ und „DNS.0“ müssen exakt dem MX-Eintrag der Domain entsprechen! Genau wie beim PTR. Also *NICHT* MX=“mail.bla.de“ und Zertifikat=“emailserver.bla.de“ – das funktioniert nicht…

cd /root/CA

export OPENSSL_CONF=/root/CA/bla.de-mail.cnf

openssl req -newkey rsa:2048 -keyout tempkey.pem -keyform PEM -out tempreq.pem -outform PEM
### Enter PEM pass phrase: (Wird wieder entfernt!) 2x [1234]

Passwort aus dem private Key wieder entfernen
openssl rsa < tempkey.pem > bla.de-mail.key
### Enter pass phrase: [1234]

Singieren des Zertifikatrequests
export OPENSSL_CONF=/root/CA/caconfig.cnf

openssl ca -in tempreq.pem -out bla.de-mail.crt
### Enter pass phrase for /root/CA/private/cakey.pem: [hier jetzt das Passwort der rootCA!]

Sign the certificate? [y/n]: [y] und [Enter]
– 1 out of 1 certificate requests certified, commit? [y/n]: [y] und [Enter] – Ja, noch mal…

Noch a bissl aufräumen
rm -f tempkey.pem tempreq.pem && mv bla.de-mail.crt certs/ && mv bla.de-mail.key private/ && mv bla.de-mail.cnf configs/

Damit hätten wir das Zertifikat für die SSL-Verschlüsselung zwischen den Mailservern und dem Client (unserem E-Mail Programm) erzeugt.

Einrichten des System-Benutzers für die virtuellen Mailboxen

„Virtuelle Postfächer“ sind eine tolle Sache. Wir brauchen nicht für jedes Postfach einen „echten“ System-Benutzer auf unserem Debian anlegen. Das würde nämlich sehr schnell ziemlich unübersichtlich werden. Die ganzen home-Verzeichnisse, die vielen Logins, die wir verbieten müssten. Für gleichlautende Postfächer verschiedener Domains müssten wir uns Speziallösungen einfallen lassen…
Und so erstellen wir nur einen echten Benutzer im System, der stellvertretend für alle unsere virtuellen Nutzer die Mails verwaltet.

Die E-Mails speichern wir in separaten Postfächern unterhalb von „/var/vmail/“ ab.
Das sieht dann von der Ordnerstruktur so aus: /var/vmail/[Domain-Name]/[Postfach]

Dazu erzeugen wir dieses Verzeichnis, erstellen den Benutzer „vmail“, und geben ihm die Lese- und Schreibrechte darauf.
Da in den unterschiedlichen Configs manchmal nicht der Nutzer, sondern seine UID (User-ID) und GID (Group-ID) eingegeben werden muss, legen wir diese auch gleich fest. Wir wählen als Benutzer- und Gruppen-ID die „5000“.

mkdir /var/vmail
Erstellt das Verzeichnis „/var/vmail“.

groupadd -g 5000 vmail
Erstellt die Gruppe „vmail“ und erzwingt die GID „5000“.

useradd -g vmail -u 5000 vmail -d /var/vmail
Erstellt in der Gruppe „vmail“ mit der erzwungenen UID „5000“ den Benutzer „vmail“ und weist ihm „/var/vmail“ als home-Verzeichnis zu.

chown vmail:vmail /var/vmail
Wir ändern die Zugriffsrechte von „root“ (weil wir als root das Verzeichnis angelegt haben) auf vmail:vmail (Benutzer:Gruppe) für das Verzeichnis „/var/vmail“.

Passt, der Benutzer und das Verzeichnis „vmail“ wurde erfolgreich angelegt. Die Rechte sind übertragen worden.

Installation der Serverprogramme

Jetzt holen wir uns die Programme, welche unseren Mailserver später zum Leben erwecken

apt-get update && apt-get install postfix postfix-mysql dovecot-core dovecot-imapd dovecot-pop3d dovecot-lmtpd dovecot-mysql

Das ist eine recht überschaubare Auswahl:

  • Zuerst Postfix – der eigentliche Mailserver.
  • Die MySQL-Unterstützung für Postfix.
  • Das Herz des Systems – Dovecot. Dovecot verteilt die Mails, stellt den IMAP- und POP3-Server und kümmert sich um die Authentifizierung via SASL.
  • Dazu brauchen wir Dovecots IMAP-Daemon und den POP3-Daemon.
  • Der LMTP-Dienst ist die Schnittstelle zwischen Postfix und Dovecot
  • Und MySQL muss Dovecot auch ‚können‘, sonst wird das nichts mit der Authentifizierung…

Bei der Installation wird gefragt, wie wir Postfix einsetzen möchten. Hier wählen wir „Internet Site“ und drücken „Enter“.
Dann kommt die Frage nach dem „System Mail Name“. Hier das eingeben, was wir im DNS für den MX-Eintrag verwendet haben. In dem Fall „mail.bla.de“ – diesmal ohne Punkt am Ende…

OK, fertig…
Das war ja einfach!

Ja, genau… Von wegen :/

Der Spaß fängt jetzt erst an…

ABSCHALTEN der Serverprogramme

Damit wir während der Konfigurationsphase nicht aus Versehen einen Open Relay bauen oder den Server anderweitig zur Mail-Schleuder zweckentfremden, schalten wir beide Dienste erst mal wieder ab!

service dovecot stop && service postfix stop

In den nächsten Kapiteln werden wir diese Dienste konfigurieren und dann – aber erst ganz am Schluss – wieder aktivieren.

Navigation

< Vorheriger Artikel | Nächster Artikel >
E-Mail Begleittext Download (Rechtsklick – „Ziel speichern unter…“)

Anzeige *

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.