Mail Server (Postfix, Dovecot) installieren

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

Registriere dich um viele Vorteile zu genießen! Weniger Werbung, bessere Kommunikation und vieles mehr!

  • In diesem Tutorial, erkläre ich euch, wie ihr einen MailServer richtig installiert und absichert, damit eure E-Mails auch verschlüsselt übertragen werden!
    Für dieses Tutorial, müsst ihr schon einen MySQL Server und einen Webserver installiert haben.
    In diesem Tutorial zeige ich euch wie man einen MailServer installiert. Dazu benötigen wir einen MySQL Server und einen WebServer.
    Der MailServer wird mit Postfix, welcher die E-Mails annimmt und Dovecot, welcher die E-Mails versendet.
    Außerdem werden wir den MailServer noch etwas vor Spam schützen und dafür verwenden wir Amavis + Spamassain + ClamAV + Postscreen. <-- folgt
    Achtung! Dieses Tutorial wurde auf einem Debian 8 und einem Ubuntu 16.04 System getestet.


    1. Vorbereitungen




    Als Erstes ist es ganz Wichtig, dass ihr euren Hostnamen auf dem System anpasst. Zusätzlich benötigt ihr natürlich noch einen RDNS-Eintrag auf eure IP Adresse. Diesen Eintrag kann man meistens im Webinterface des Hosters eures Servers setzen. Solltet ihr diese Funktion nicht finden, schreibt euren Hoster einfach ein Support Ticket.
    Danach müssen wir noch einen MX-Eintrag im DNS Verwaltungssystem eurer Domain setzten. Der Hostname meines Testsystem lautet: tutorial.dev-tek.de.
    Als Beispiel seht ihr hier, den MX Eintrag im CloudFlare DNS Verwaltungssystem.
    Der RDNS-Eintrag, MX-Eintrag und der Hostname des Servers benötigen dieselbe Domain.


    Bei Cloudflare, könnt ihr diese Einträge unter DNS erstellen.


    Danach stellt ihr das erste Feld auf MX und schreibt in das zweite Feld ein @, damit der DNS Eintrag, in meinem Fall für dev-tek.de steht.


    Nun klickt ihr noch in das dritte Feld, somit öffnet sich ein kleines weiteres Fenster, wo ihr euren Hostnamen des Server hinzufügt.


    Jetzt klickt ihr noch auf "Add Record" und der MX Eintrag wurde gesetzt.


    Damit später auch alles einwandfrei Funktoniert, müsst ihr noch die PHP Erweiterung Imap installieren. Für php5 installiert ihr es so: apt-get install php5-imap -y.

    2. Installation



    Als Erstes benötigen wir einen User namens: vmail, welcher die E-Mail Accounts beinhaltet. Dieser User benötigt einen feste User-ID, in unserem Fall 3140, und ein Home-Verzeichnis unter /var/vmail.
    Den User erstellt ihr so: useradd -u 3140 vmail -d /var/vmail, sollte die ID 3140 schon verwendet werden, nehmt einfach eine höhere ID. Diese ID muss später aber in allen Konfigurationen geändert werden!
    Jetzt müssen wir noch das Home-Verzeichnis erstellen und die Rechte darauf gewähren: mkdir /var/vmail & chown vmail:vmail /var/vmail.

    Jetzt erstellen wir die Datenbank für den Mailserver. Ich zeige euch es mithilfe von phpMyAdmin.
    Hier ruft eurer phpMyAdmin auf.

    Nach dem einloggen, klickt ihr nun auf Benutzerkonten um einen neuen Benutzer zu erstellen!


    Hier klickt ihr nun auf Benutzerkonto hinzufügen.


    Hier füllt ihr nun alle markierten Felder aus, natürlich mit einem sicherem Passwort, der Benutzername sollte aber so bleiben. Vergesst nicht den Haken zu setzen, damit eine gleichnamige Datenbank erstellt wird! Dann unten noch auf OK klicken und euer Benutzer + DB ist erstellt.



    Nun müsst ihr euch die vorgefertigten Dateien herunterladen, klicke hier.
    Diese Dateien einfach entpacken und auf Windows am besten mit Notepad++ öffnen.

    Die Dateien, die in irgendeiner Weise mysql im Namen haben, müsst ihr einmal öffnen und euer MySQL Passwort eintragen. An der Stelle, an der Ihr das Passwort eintragen sollt, steht CHANGEPASSWORD. Dieses Wort ersetzt ihr einfach mit eurem Passwort.
    Die Dateien sind folgende: mysql-virtual-mailbox-maps, mysql-virtual-domains-maps, mysql-virtual-alias-maps, mysql-sender-login-maps, dovecot-mysql.conf


    Nun laden wir die Admin Oberfläche Postfixadmin herunter, mit der ihr später neue E-Mail Mailboxen erstellen und verwalten könnt.
    Download: sourceforge.net/projects/postfixadmin/

    Dies ladet ihr einfach per wget auf dem Server herunter oder ladet es per FTP wieder auf den Server hoch.
    Auf dem Server, wechselt ihr nun in das Verzeichnis /var/www/ mit dem Befehl: cd /var/www.
    Dort könnt ihr nun das Archiv entpacken: tar xfvz postfixadmin-VERSION. In meinem Fall ist die Version 2.93, also lautet der Befehl: tar xfvz postfixadmin-2.93.
    Jetzt könnt ihr das Verzeichnis noch umbenennen: mv postfixadmin-VERSION postfixadmin und wechselt dann mit cd postfixadmin in das neue Verzeichnis, da müsst ihr jetzt die Rechte gewähren mit: chown www-data *


    Jetzt könnt ihr postfixadmin mit http://DOMAIN/postfixadmin im Browser aufrufen, zuvor müssen wir aber noch einige Änderungen in der Config vornehmen.

    Ihr loggt euch per SSH auf den Server ein und editiert die config.inc.php im postfixadmin Verzeichnis. Ich selber benutzte dafür immer nano.



    Als Erstes müsst ihr in der Config in ca. Zeile 25 den Wert $CONF['configured'] = false; auf $CONF['configured'] = true; setzen.



    Dann müsst ihr in ca. Zeile 85 eure MySQL Daten angeben.


    In ca. Zeile 117 findet ihr diese Zeile: $CONF['admin_email'] = '';. Hier könnt ihr einfach eure Admin E-Mail eintragen, z.B.: admin@dev-tek.de.
    Außerdem findet ihr in ca. Zeile 135 die Zeile $CONF['encrypt'] = 'md5crypt';, die ihr so abändern müsst: $CONF['encrypt'] = 'md5';
    Darunter müsst ihr noch 2 Zeilen mit folgendem Inhalt einfügen: $CONF['domain_path'] = 'YES'; und $CONF['domain_in_mailbox'] = 'NO';


    Nun speichert ihr die Config wieder ab und ruft Postfixadmin im Browser unter http://EURE_DOMAIN/postfixadmin/setup.php auf.

    Hier sollten jetzt keine Fehler mehr auftauchen.


    Jetzt müsst ihr euch ein Setup Passwort Hash generieren lassen, tragt dazu einfach das Passwort in die beiden Felder ein.
    Nun gibt die Webseite euch den Hash des Passworts aus, welchen ihr in der Config eintragen müsst.





    Die Datei wieder abspeichern und jetzt müsst ihr den Superadmin Account erstellen. Bei Setup password, muss das zuvor eingegeben Passwort eingeben werden.



    Jetzt könnt ihr Postfixadmin unter EURE_DOMAIN/postfixadmin aufrufen und euch einloggen.
    Nun könnt ihr eine Domain eintragen.

    Ihr geht auf Domain Liste.


    Klickt auf Domain hinzufügen.


    Tragt die Domain ein und klickt auf Domain hinzufügen. Somit wurde die Domain erstellt.

    Jetzt klickt ihr auf Virtual Liste.


    Klickt auf Mailbox hinzufügen.


    Jetzt könnt ihr euren Admin Account anlegen.


    Jetzt kommen wir zum eigentlichen Teil. Nun müsst ihr den MailServer installieren: apt-get install dovecot-common dovecot-mysql dovecot-imapd dovecot-pop3d postfix postfix-mysql -y.
    Während der Installation wählt ihr Internet Site aus und gebt eure Hauptdomain an, die hinter dem @ stehen soll.

    Nach der Installation wechselt ihr in das Verzeichnis /etc/postfix cd /etc/postfix.
    Damit der MailServer auch verschlüsselt die E-Mails übertragen kann, benötigen wir ein SSL Zertifikat. Dies könnt ihr am Besten mit dem Certbot von Let's Encrypt auf euern Hostnamen, in meinem Fall tutorial.dev-tek.de, erstellen. Hier eine Anleitung, wie ihr das Zertifikat erstellt.
    Dies geben wir dann später in der Config an.

    Jetzt müssen wir die Dateien, die ihr vorhin heruntergeladen habt auf den Server hochladen.
    Die 4 Dateien, die mit mysql- anfangen laden wir in das /etc/postfix Verzeichnis hoch.
    Für die Dateien müssen jetzt noch die Rechte gewährt werden, dies macht ihr mit chmod 600 mysql-* & chmod g+r mysql-*. Dafür müsst ihr natürlich im Ordner von Postfix sein.

    Jetzt könnt ihr die Hauptkonfiguration abändern, dies könnt ihr mit nano main.cf.

    Hier geht ihr runter zu #TLS Parameter.
    In den vorgefertigten Dateien befindet sich eine Datei namens tls-postfix.conf.
    Diese öffnet ihr und ändert den Pfad zu euren Zertifikaten ab.


    Die TLS parameters ersetzt ihr jetzt mit den Parametern aus der tls-postfix.conf.

    Mit Let's Encrypt sieht der Pfad zu den Dateien so aus. Natürlich muss dev-tek.de durch eure Domain ausgetauscht werden.
    Außerdem müssen die beiden Zeilen mit den roten Pfeilen eingefügt werden.
    Einmal smtpd_tls_CAfile = /etc/letsencrypt/live/DOMAIN/fullchain.pem & smtpd_tls_security_level = may.

    Jetzt geht ihr wieder in die vorbereiteten Dateien und öffnet die main.cf Datei.
    Dies könnt ihr jetzt alles mit Strg + A auswählen und mit Strg + C kopieren.
    Dies fügt ihr dann einfach unter die Konfiguration ein.

    Somit sollte es dann so in etwas aussehen:

    Shell-Script: main.cf

    1. smtpd_banner = $myhostname EMSTP
    2. biff = no
    3. # appending .domain is the MUA's job.
    4. append_dot_mydomain = no
    5. # Uncomment the next line to generate "delayed mail" warnings
    6. #delay_warning_time = 4h
    7. readme_directory = no
    8. # TLS parameters
    9. smtpd_tls_cert_file=/etc/letsencrypt/live/dev-tek.de/cert.pem
    10. smtpd_tls_key_file=/etc/letsencrypt/live/dev-tek.de/privkey.pem
    11. smtpd_tls_CAfile=/etc/letsencrypt/live/dev-tek.de/fullchain.pem
    12. smtpd_use_tls=yes
    13. smtpd_tls_exclude_ciphers = RC4, aNULL
    14. smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
    15. smtpd_tls_security_level = may
    16. smtp_tls_cert_file=/etc/letsencrypt/live/dev-tek.de/cert.pem
    17. smtp_tls_key_file=/etc/letsencrypt/live/dev-tek.de/privkey.pem
    18. smtp_tls_CAfile=/etc/letsencrypt/live/dev-tek.de/fullchain.pem
    19. smtp_use_tls=yes
    20. smtp_tls_exclude_ciphers = RC4, aNULL
    21. smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
    22. # See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
    23. # information on enabling SSL in the smtp client.
    24. smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
    25. myhostname = mx1.hosted4u.de
    26. alias_maps = hash:/etc/aliases
    27. alias_database = hash:/etc/aliases
    28. myorigin = /etc/mailname
    29. mydestination = $myhostname, tutorial.dev-tek.de, localhost.dev-tek.de, , localhost
    30. relayhost =
    31. mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
    32. mailbox_size_limit = 0
    33. recipient_delimiter = +
    34. inet_interfaces = all
    35. inet_protocols = all
    36. # a bit more spam protection
    37. disable_vrfy_command = yes
    38. # Auth
    39. smtpd_sasl_type=dovecot
    40. smtpd_sasl_path=private/auth_dovecot
    41. smtpd_sasl_auth_enable = yes
    42. smtpd_sasl_authenticated_header = yes
    43. broken_sasl_auth_clients = yes
    44. 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
    45. smtpd_sender_login_maps = proxy:mysql:/etc/postfix/mysql-sender-login-maps.cf
    46. smtpd_sender_restrictions = reject_authenticated_sender_login_mismatch
    47. reject_unknown_sender_domain
    48. smtpd_recipient_restrictions = permit_sasl_authenticated
    49. permit_mynetworks
    50. reject_unauth_destination
    51. # Virtual mailboxes
    52. virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-virtual-alias-maps.cf
    53. virtual_mailbox_base = /var/vmail/
    54. virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-virtual-domains-maps.cf
    55. virtual_mailbox_limit = 0
    56. virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
    57. virtual_minimum_uid = 104
    58. virtual_transport = dovecot
    59. local_transport = virtual
    60. virtual_uid_maps = static:3140
    61. virtual_gid_maps = static:3140
    62. dovecot_destination_recipient_limit = 1
    Alles anzeigen




    Jetzt editiert ihr die master.cf dabei mit nano master.cf.
    Hier entfernt ihr als Erstes das # vor submission.


    In diesen beiden Zeilen muss das # auch entfernt werden.


    Jetzt wieder die master.cf in den vorgefertigten Dateien öffnen, alles kopieren und unten an die master.cf auf dem Server anhängen.
    Jetzt müsst ihr noch in dem Postfix Verzeichnis /etc/postfix die Rechte gewähren mit chown -R root:postfix *.

    Ihr könnt den postifx Server jetzt mit systemctl start postfix starten.
    Nun wechselt ihr in das Dovecot Verzeichnis mit cd /etc/dovecot.

    Jetzt öffnet ihr die Datei dovecot.conf aus den vorgefertigten Dateien und ändert die Zeile 21 - 22 ab.
    Hier muss wieder euer SSL Zertifikat angegeben werden.
    Zum Beispiel: ssl_cert = </etc/letsencrypt/live/DOMAIN/cert.pem & ssl_key = </etc/letsencrypt/live/DOMAIN/privkey.pem.
    Ganz unten müsst ihr jetzt noch eure postmaster Adresse anpassen: postmaster_address = postmaster@dev-tek.de.

    Jetzt könnt ihr wieder alles kopieren und unten an die Datei dovecot.conf auf dem Server anhängen.
    Nun müsst ihr wieder die dovecot-mysql.conf Datei in das dovecot Verzeichnis hochladen.
    Natürlich müssen die Rechte jetzt wieder gesetzt werden: chown :vmail dovecot-mysql.conf & chmod 600 dovecot-mysql.conf & chmod g+r dovecot-mysql.conf.

    Jetzt könnt ihr endlich den dovecot Server starten mit systemctl start dovecot.

    Euer MailServer sollte jetzt funktionieren und ihr könnt den MailServer jetzt immer neue Mailboxen über Postfixadmin einrichten.

    1.437 mal gelesen

Kommentare 8

  • Skyleiger -

    Bei mir hat das Tutorial leider nicht funktioniert, da ich keine Mails versenden konnte.
    Deswegen habe ich mir, aufgrund einer Empfehlung von @TomS, mir meinen Mailserver mit Mailcow installiert.

    • DevTek -

      Kommt immer drauf an, welcher Fehler bei einem selber ist. Wenn man die Anleitung Schritt für Schritt durchgeht, funktioniert sie aufjedenfall.

  • ilou -

    Die Anleitung hat bei mir super funktioniert. Würde mich freuen, wenn du noch zeigst, wie man den Spamfilter einbaut. Danke.

  • CreepPlays -

    Da hat DevTek einfach eine Dependency vergessen hineinzuschreiben xD Aber passt jetzt und geht perfekt :P

  • gabriel2029 -

    Immer wenn ich Mails abrufen will, wird mir
    DEBUG INFORMATION:
    Invalid query: FUNCTION mail.FROM_BASE64 does not exist

    Check your error_log for the failed query.

    Please check the documentation and website for more information.

    Postfix Admin
    Forums
    angezeigt. Zudem reagiert die Website beim Versenden einer Emaiil nicht, die Email kommt auch nicht an.

  • TwerkenderJulius -

    Gute Anleitung!