In dieser Anleitung geht es darum schnell und einfach euren eigenen Mailserver einzurichten.
Update
Ich habe eine neue Anleitung geschrieben. Diese basiert auf Debian 9 und beinhaltet Spam-filter / Antivirus / Roundcube.
Wenn ihr nach 1-Klick Anleitungen für euren eigenen E-Mail Server sucht, dann seid ihr hier richtig.
1. Vorraussetzungen
Voraussetzungen sind ein funktionierender HTTP Webserver sowie MySQL Datenbank. Wenn ihr dies noch nicht eingerichtet haben solltet, dann könnt ihr hier nachlesen, wie es gemacht wird.
Zuerst installieren wir uns alle benötigten Programme. Der Mailserver kann mit PHP5 sowie PHP7 betrieben werden. Ich empfehle euch PHP7, da dies deutlich schneller ist.
1.1 PHP5 installieren
apt-get install php5 php5-imap php5-fpm php-pear php5-common php5-mcrypt php5-mysql php5-cli php5-gd
1.2 PHP7 installieren
Um PHP7 zu installieren müsst ihr sicherstellen, dass ihr PHP5 deinstalliert habt. Daher habe ich dazu eine eigene Anleitung geschrieben.
3. Datenbank und Verzeichnis anlegen
Wenn dies erledigt ist, legen wir uns einen Mailserver Benutzer sowie ein zusätzliches Verzeichnis an.
mkdir /var/vmail useradd -u 5000 vmail -d /var/vmail chown vmail:vmail /var/vmail
Mit diesem Befehl wird das Verzeichnis “/var/vmail” erstellt und der Benutzer “vmail” mit der UserID 5000 bekommt es zugewiesen und alle Rechte. Nutzername sowie UserID können beliebig geändert werden.
Als nächstes logen wir uns in unsere MySQL Datenbank ein
mysql -u root -p
Nun legen wir noch einige Tabellen an
create database vmail; GRANT ALL ON vmail.* TO 'vmail'@'localhost' IDENTIFIED BY 'rzCa9212axf3g23P3'; Exit
Die Zeile bedeutet, dass ein Benutzer “vmail” angelegt wird, der das Passwort “rzCa9212axf3g23P3” hat und Zugriff auf die Datenbank “vmail” hat. Diese Werte können beliebig verändert werden. Nur müssen sie durchgehend gleich sein, damit diese Anleitung funktioniert.
Das Passwort muss UNBEDINGT geändert werden.
Dieses Passwort werdet ihr während der gesamten Installation noch sehr oft benötigen.
2. Postfix Installation
Als nächstes Laden wir uns die aktuellste Version des Programms “PostfixAdmin” runter. Diese bekommen wir von der Herstellerwebseite.
Zunächst wechseln wir wieder ins “tmp” Verzeichnis und downloaden dann mit “wget” das Programm.
cd /tmp/ wget https://downloads.sourceforge.net/project/postfixadmin/postfixadmin/postfixadmin-3.0/postfixadmin-3.0.tar.gz
Anschließend entpacken wir die Datei und kopieren den Inhalt in unser Webserver Verzeichnis.
tar -xvzf postfixadmin-3.0.tar.gz cp -r postfixadmin-3.0 /var/www/html/postfixadmin
Nun wechseln wir ins Webserver Verzeichnis und passen die Konfigurationsdatei an.
cd /var/www/html/postfixadmin/ nano config.inc.php
In dieser Datei ändert ihr folgenden Werte bzw. fügt sie hinzu.
$CONF['configured'] = true; $CONF['default_language'] = 'de'; $CONF['database_user'] = 'vmail'; $CONF['database_password'] = 'rzCa9212axf3g23P3'; $CONF['database_name'] = 'vmail'; $CONF['admin_email'] = 'info@technikrebell.de'; $CONF['encrypt'] = 'md5crypt'; $CONF['domain_path'] = 'YES'; $CONF['domain_in_mailbox'] = 'NO';
Die Eingaben speichert ihr mit “STRG+O” und beendet dann das Programm mit “STRG+X”.
Nun legt ihr noch fest, dass euer Webserver Rechte für dieser Verzeichnis hat.
chown www-data *
Nun müsst ihr die Konfiguration von eurem Webserver nginx noch anpassen, damit die Skripte ausgeführt werden.
Dazu wechselt ihr in folgendes Verzeichnis
cd /etc/nginx/sites-available/
und öffnet die Konfigurationsdatei
nano default
PHP5
Dort entfernt ihr 4 “#” Zeichen, damit eure Datei aussieht wie auf dem nachfolgenden Bild.
PHP7
Bei PHP7 müsst ihr die Zeile folgendermaßen abändern.
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
Danach müsst ihr bei beiden Versionen noch die “index.php” hinzufügen.
Speichert die Datei wieder mit “STRG+O” ab und beendet dann das Programm mit “STRG+X”.
Nun startet ihr euren Webserver nginx neu, damit dieser die neue Konfiguration übernimmt.
service nginx restart
Wenn ihr dies erledigt habt, ruft ihr eure Webseite im Webbrowser auf. In meinem Fall ist dies:
http://technikrebell.de/postfixadmin/setup.php
Nun solltet ihr nachfolgende Webseite sehen.
Wenn ihr die Seite komplett runter scrollt, solltet ihr 2 Felder sehen, in die ihr euer Setup Passwort eingeben müsst. Dies könnt ihr hier frei wählen.
Nun sollte bei euch eine solche Meldung erscheinen, nachdem ihr auf “Generate password hash” geklickt habt.
Wir gehen also wieder ins Postfix Verzeichnis und ändern diese Zeile der Konfiguration ab.
cd /var/www/html/postfixadmin/ nano config.inc.php
In der Konfiguration solltet ihr bereits diese Zeile weit oben sehen:
$CONF['setup_password'] = 'changeme';
Dies ändern wir also zu dem ab, was uns angezeigt wird.
Bei mir ist dies:
$CONF['setup_password'] = 'eb7106731e30a8e51a7a701dbaf90e7';
Diese Zeichenfolge sollte bei euch eine andere sein, da ihr euer eigenes Kennwort vergeben habt.
Dann speichern wir wieder ab und beenden das Programm.
Nun wechseln wir wieder in unseren Webbrowser. Dort solltet ihr ganz unten einen Dialog zum erstellen eines Superadmin sehen.
Bei Setup Kennwort gebt ihr das Kennwort ein, das ihr euch oben ausgedacht habt. Dies ist NICHT die Zeichenfolge, die ihr davor in die Konfigurationsdatei geschrieben habt.
Wenn ihr alles eingegeben hat, klickt ihr auf “Admin hinzufügen”.
Wenn alles geklappt hat, solltet ihr folgende Meldung sehen.
Nun ruft ihr über das Webinterface auf. Bei mir geschiet das mit:
http://technikrebell.de/postfixadmin/login.php
Dort meldet ihr euch dann mit dem grade erstellen Superamin Account an.
Eure Webseite sollte nun so aussehen. Nun klickt ihr auf “Domain Liste” -> “Neue Domain”.
Dort schreibt gebt ihr dann den Namen eurer Domain ein und klickt auf “Domain hinzufügen”.
Als nächstes klickt ihr auf “Virtual Liste” -> “Virtual Liste”.
Dort löscht ihr alle bereits vorinstallierten Einträge.
3. Dovecot Installation
Als nächstes installieren wir die weiteren noch benötigten Programme.
apt-get install postfix dovecot-core dovecot-imapd postfix-mysql dovecot-mysql postfix-mysql dovecot-pop3d dovecot-lmtpd dovecot-dev
Nun solltet ihr folgendes Bild sehen.
Hier wählt ihr “Internet Site” aus. Danach müsst ihr eure Domain eingeben. Bei mir ist dies “technikrebell.de”.
Nun beginnen wir die eben installierten Programme zu konfigurieren. Dazu wechseln wir das Verzeichnis und öffnen die Konfigurationsdatei.
cd /etc/postfix nano main.cf
In dieser Datei gebt ihr den Pfad zu eurem SSL Zertifikat an. Falls ihr noch keins haben solltet, könnt ihr euch mit diesem Tutorial schnell ein Kostenloses erstellen.
smtpd_tls_cert_file=/etc/letsencrypt/live/technikrebell.de/cert.pem smtpd_tls_key_file=/etc/letsencrypt/live/technikrebell.de/privkey.pem myhostname = technikrebell.de
Statt “technikrebell.de” müsst ihr natürlich euren eigenen Domain Name angeben.
In der selben Datei fügt ihr noch folgende Zeilen am Ende hinzu:
disable_vrfy_command = yes smtpd_sasl_type=dovecot smtpd_sasl_path=private/auth smtpd_sasl_auth_enable = yes smtpd_sasl_authenticated_header = yes proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $smtpd_sender_login_maps smtpd_sender_login_maps = proxy:mysql:/etc/postfix/mysql-sender-login-maps.cf smtpd_sender_restrictions = reject_authenticated_sender_login_mismatch reject_unknown_sender_domain smtpd_recipient_restrictions = permit_sasl_authenticated permit_mynetworks reject_unauth_destination virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-virtual-alias-maps.cf virtual_mailbox_base = /var/vmail/ virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-virtual-domains-maps.cf virtual_mailbox_limit = 0 virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf virtual_minimum_uid = 104 virtual_transport = dovecot local_transport = virtual virtual_uid_maps = static:5000 virtual_gid_maps = static:5000 dovecot_destination_recipient_limit = 1
Speichert nun die Datei ab und beendet das Programm.
Nun bleibt ihr im Verzeichnis “/etc/postfix” und downloadet die 4 nachfolgenden Dateien.
wget https://goneuland.de/wp-content/uploads/2016/06/mysql-virtual-domains-maps.cf wget https://goneuland.de/wp-content/uploads/2016/06/mysql-virtual-mailbox-maps.cf wget https://goneuland.de/wp-content/uploads/2016/06/mysql-virtual-alias-maps.cf wget https://goneuland.de/wp-content/uploads/2016/06/mysql-sender-login-maps.cf
Die Dateien sind alle nach folgenden Schema aufgebaut.
hosts = localhost user = vmail password = EUER_PASSWORD dbname = vmail
Ihr müsst also nur euer Passwort eintragen,wenn ihr genau dem Tutorial gefolgt seid. Wenn ihr andere Namen für eure Datenbank bzw. User verwendet habt, dann müsst ihr die Zeilen entsprechend anpassen. Dies erledigen wir mittels:
nano mysql-sender-login-maps.cf
nano mysql-virtual-alias-maps.cf
nano mysql-virtual-domains-maps.cf
nano mysql-virtual-mailbox-maps.cf
Danach sollten also die 4 Dateien so im oberen Teil aussehen:
hosts = localhost user = vmail password = rzCa9212axf3g23P dbname = vmail
Als nächstes müssten wir die “master.cf” bearbeiten.
nano master.cf
In dieser Datei müsst ihr das “#” Zeichen vor folgenden Zeilen entfernen
submission inet n - - - - smtpd smtps inet n - - - - smtpd -o smtpd_tls_wrappermode=yes
Nachfolgendes Bild zeigt den Teil der Konfigurationsdatei,wenn sie bearbeitet ist.
Anschließend scrollt ihr bis zum Ende der Datei und fügt dort folgende Zeilen ein:
dovecot unix - n n - - pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient}
Die Datei speichert ihr dann wieder mit “STRG+O” ab und beendet das Programm mit “STRG+X”.
Nun gebt ihr dem Benutzer “postfix” alle Rechte an den Dateien in dem Ordner mittels:
chown -R root:postfix *
Nun ist Postfix fertig konfiguriert und kann gestartet werden.
service postfix start
Als nächstes Konfigurieren wir Dovecot. Dazu wechseln wir in das Verzeichnis “/etc/dovecot/” und öffnen die Konfigurationsdatei.
cd /etc/dovecot/ nano dovecot.conf
Am Ende der Datei fügt ihr folgendes ein:
auth_mechanisms = plain login log_timestamp = "%Y-%m-%d %H:%M:%S " passdb { args = /etc/dovecot/dovecot-mysql.conf driver = sql } protocols = imap pop3 service auth { unix_listener /var/spool/postfix/private/auth { group = postfix mode = 0660 user = postfix } unix_listener auth-master { mode = 0600 user = vmail } user = root } ssl = yes ssl_cert = </etc/letsencrypt/live/technikrebell.de/fullchain.pem ssl_key = </etc/letsencrypt/live/technikrebell.de/privkey.pem userdb { args = /etc/dovecot/dovecot-mysql.conf driver = sql } protocol pop3 { pop3_uidl_format = %08Xu%08Xv pop3_client_workarounds = oe-ns-eoh # pop3_uidl_format = %v.%u } protocol lda { auth_socket_path = /var/run/dovecot/auth-master postmaster_address = info@technikrebell.de }
Den Speicherort des SSL-Zertifikats und den Domain Name “technikrebell.de” müsst ihr ändern, den Rest der Datei könnt ihr so kopieren.
Ihr bleibt nun in dem Verzeichnis und downloadet euch noch eine weitere Konfigurationsdatei.
wget http://goneuland.de/wp-content/uploads/2016/06/dovecot-mysql.conf
Diese Datei öffnet ihr und fügt euer Passwort ein.
nano dovecot-mysql.conf
Aus
connect = host=localhost dbname=vmail user=vmail password=euer_Password
wird also bei mir
connect = host=localhost dbname=vmail user=vmail password=rzCa9212axf3g23P
Jetzt speichert ihr eure Änderung ab und beendet dann das Programm.
Nun passt ihr noch die Dateirechte an:
chown :vmail dovecot-mysql.conf chmod 640 dovecot-mysql.conf
und startet postfix und dovecot neu:
service dovecot restart service postfix reload
4. eigene Mail Adresse erstellen
Nun könnt ihr eure erste eigen Mail Adresse anlegen. Dazu öffnet ihr euren Webbrowser und geht auf eure Domain. Bei mir ist dies:
http://technikrebell.de/postfixadmin/login.php
Dort logt ihr euch ein klickt auf “Virtual Liste -> Mailbox hinzufügen”.
Hier gebt ihr jetzt unter “Benutzername” den Namen eurer neuen Mailadresse an gefolgt von eurem Passwort
4a. Debian SQL Problem beheben
Wenn ihr auf “E-Mail -> E-Mail abruf” geht, sollte bei euch auch diese Fehlermeldung erscheinen.
Dies liegt daran, dass hier eine Funktion in MySQL benutzt wird, die die aktuelle Debian MySQL Version noch nicht unterstützt.
Um das Problem zu beheben, müssen wir eine Zeile der Konfiguration verändern.
nano /var/www/html/postfixadmin/model/PFAHandler.php
Nun müsst ihr scrollen, bis ihr in Zeile 572 seid.
Dort ändert ihr
$base64_decode = "FROM_BASE64(###KEY###)";
zu
$base64_decode = "###KEY###";
Ihr müsst nun die Datei nur speichern und der Fehler ist damit behoben.
5. Thunderbird Integration
Nun zeige ich euch, wie ihr eure neue Mail Adresse in Thunderbird einbinden könnt.
Dazu geht ihr in Thunderbird auf “Extras -> Konteneinstellungen”.
Dort klickt ihr auf “Konten-Aktionen -> E-Mail Konto hinzufügen”. Dieser Button befindet sich unten links.
Hier gebt ihr nun eure neu erstellte Email Adresse ein.
Thunderbird sollte nun die passende Konfiguration für euch automatisch finden, wenn ihr der Anleitung gefolgt seid.
Nun habt ihr euren ersten eigenen Mail Server eingerichtet.
6. Error Log
Falls ihr Probleme haben solltet, dann könnt ihr euch die Log Datei anschauen. Dort findet ihr oft nützliche Hinweise, warum etwas nicht funktioniert.
nano /var/log/mail.err
Sieht nach einem sehr vollständigem HowTo aus.
Habe mir die Tage einen Server eingerichtet auf dem nun ein LEMP-Stack mit PHP 7 und mariaDB läuft.
Vermutlich werde ich die Tage deiner Anleitung folgen. Bin schon gespannt ob alles reibungslos klappen wird.
Habe den Server mit der UFW-Firewall und fail2ban abgesichert. Hast du Tipps für mich was ich diesbezüglich beachten muss?
Gruß David
Hallo
der link “http://goneuland.de/wordpress/wp-content/uploads/2016/06/dovecot-mysql.conf” funktioniert leider nicht mehr, wollte ich ihnen nur mitteilen.
Hallo ,
zuerst mal super tutorials 😉
nur hab ich bei dem postfixadmin ein problem und zwar kann ich die setup.php nicht öffnen sondern nur herunterladen im browser
Schade. Da ich Apache2 nutze darf ich das ganze jetzt wieder deinstallieren, da es nicht funktioniert.
Vielen Dank
Ich mache relativ schon viel an meinen eigenen Servern.
Doch zur einfachen Verwaltung des Servers kam mir immer Plesk, Froxlor und Co. drauf da ich nie wirklich die Laune dazu hatte mich da Stunden ran zu setzen. 😛
Es gibt nur wenig gute und verständliche Anleitungen im Netz und deine hat mir echt weiter geholfen.
Danke schon einmal dafür.
Was mir allerdings aufgefallen ist, kann auch sein das es nur bei mir so ist. Aber sobald ich eine Mailbox anlege lädt er sicht Tot muss den Apache neustarten damit was passiert, Mailboxen werden aber angelegt.
Nun noch Roundcube als Webmail Installieren was ich aber so hinbekomme und dann passt erstmal alles.
Liebe Grüße aus dem schönen Norden.
Manuel
Ich lese hier kein Lob sondern nur Klugscheißereien. Wie das Netz heute nun mal so ist.
Ich bedanke mich recht herzlich für deine Arbeit und deine Anleitung. Sehr gut gemacht! 🙂
fg
dfm
Deine Code-Felder sind extrem räudig. Weniger dynamik wäre da mehr. 😉
@Dennis: Ich habe den selben Fehler.
Bei mir gehen keine Mails rein und raus, in der mail.err steht nur folgendes:
Hey,
nettes kleines Howto. Ein paar Anmerkungen:
Die *.cf Files bereitzustellen finde ich ansich gut. Aber warum jedes File einzeln mit einem Editor öffnen, um das Paßwort einzutragen? sed wäre hier das Hilfsmittel der Wahl, um das Ganze noch zu vereinfachen.
Warum nutzt du Postscreen nicht? Damit kannst du schon fast alle Spammails außen vor halten.
POP3 Unterstützung würde ich komplett rausnehmen. Nutzt doch heutzutage eh kaum noch jemand.