Mailserver · 13 min read · Nov 06, 2025

Wie man einen voll funktionsfähigen Mailserver mit Postal erstellt

Postal ist ein kostenloser und Open-Source-Komplett-Mailserver zum Senden und Empfangen von E-Mails. Er ist in Ruby und JavaScript geschrieben. Sie können Postal einfach auf Ihrem eigenen Server installieren. Es hilft Ihnen auch, die korrekten DNS-Informationen bereitzustellen, die erforderlich sind, um Spam-E-Mails zu reduzieren. Postal wird von vielen Organisationen verwendet, um täglich E-Mails zu senden und zu empfangen.

In diesem Tutorial werden wir den Postal Mail Server auf Ubuntu 17.04 installieren.

Voraussetzungen

  • Minimaler Ubuntu 17.04-Server. 8 GB RAM empfohlen.
  • Root-Rechte. Dieser Leitfaden ist als Root-Benutzer geschrieben. Wenn Sie als Sudo-Benutzer angemeldet sind, führen Sie sudo -i aus.
  • Ein Domainname, der auf Ihren Server verweist.

Basis-System aktualisieren

Bevor Sie ein Paket installieren, wird empfohlen, die Pakete und das Repository mit dem folgenden Befehl zu aktualisieren.

apt update && apt -y upgrade
shutdown -r now

Sobald Ihr System aktualisiert ist, fahren Sie fort, um Ruby zu installieren.

Ruby installieren

Postal ist in Ruby geschrieben, daher ist es erforderlich, Ruby 2.3 oder höher auf Ihrem System zu installieren. In diesem Tutorial werden wir die neueste Version von Ruby mit RVM installieren. Führen Sie den folgenden Befehl aus, um den GPG-Schlüssel von RVM auf Ihrem Server hinzuzufügen.

gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3

Jetzt installieren Sie RVM mit folgendem Befehl.

curl -sSL https://get.rvm.io | bash -s stable

Um RVM sofort zu verwenden, müssen Sie den folgenden Befehl ausführen.

source /etc/profile.d/rvm.sh

Jetzt holen Sie sich die Liste der Ruby-Versionen mit folgendem Befehl.

rvm list known

Sie werden folgende Ausgabe sehen:

# MRI Rubies
[ruby-]1.8.6[-p420]
[ruby-]1.8.7[-head] # sicherheitsfreigegeben auf head
[ruby-]1.9.1[-p431]
[ruby-]1.9.2[-p330]
[ruby-]1.9.3[-p551]
[ruby-]2.0.0[-p648]
[ruby-]2.1[.10]
[ruby-]2.2[.6]
[ruby-]2.3[.3]
[ruby-]2.4[.0]
ruby-head

Jetzt installieren Sie die neueste Version von Ruby in der Liste mit folgendem Befehl.

rvm install 2.4

Verwenden Sie die Ruby-Version mit folgendem Befehl.

rvm use 2.4

Sie können die Version von Ruby mit folgendem Befehl überprüfen.

ruby -v

Sie sollten folgende Ausgabe sehen, wenn Ruby erfolgreich installiert ist.

root@ubuntu:~# ruby -v
ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-linux]

Ruby Gems installieren

Um Postal auf Ihrem Server auszuführen, müssen Sie bundler und procodile auf Ihrem Server installieren. Bundler ist ein Abhängigkeitsmanager für Ruby-Gem-Anwendungen. Procodile ist ein Prozessmanagement-Tool für Ruby-Anwendungen. Installieren Sie beide Anwendungen mit den folgenden Befehlen.

gem install bundler
gem install procodile

MariaDB-Datenbankserver installieren

MariaDB ist ein Fork des MySQL-Datenbankservers. MySQL ist eine relationale Datenbankmanagementsystem-Software, die verwendet wird, um Daten in tabellarischer Form zu speichern. Um MariaDB auf Ihrem Server zu installieren, führen Sie aus:

apt -y install mariadb-client mariadb-server libmysqlclient-dev

Führen Sie die folgenden Befehle aus, um MariaDB zu starten und zu aktivieren, damit sie beim Booten gestartet wird.

systemctl start mariadb
systemctl enable mariadb

Führen Sie nun die folgenden Befehle aus, um Ihre MariaDB-Installation zu sichern.

mysql_secure_installation

Der obige Befehl führt ein Skript aus, um eine frische MariaDB-Installation zu sichern. Das Skript fragt nach dem bestehenden Root-Benutzerpasswort. Da wir gerade MariaDB installiert haben, ist das Root-Passwort nicht gesetzt. Drücken Sie einfach die Eingabetaste, um fortzufahren.

Das Skript fragt Sie, ob Sie ein Root-Passwort für Ihre MariaDB-Installation festlegen möchten. Wählen Sie y und setzen Sie ein starkes Passwort für die Installation. Die meisten Fragen sind selbsterklärend und Sie sollten mit ja oder y auf alle Fragen antworten.

Datenbank für Postal einrichten

Um eine Datenbank für Postal zu erstellen, müssen wir uns zuerst in die MySQL-Befehlszeile einloggen. Führen Sie den folgenden Befehl dafür aus.

mysql -u root -p

Der obige Befehl meldet sich bei der MySQL-Shell des Root-Benutzers an und fordert das Passwort des Root-Benutzers an. Geben Sie das Passwort ein, um sich anzumelden. Führen Sie nun die folgende Abfrage aus, um eine neue Datenbank für Ihre Postal-Installation zu erstellen.

CREATE DATABASE postal CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci;

Die obige Abfrage erstellt eine neue Datenbank mit dem Namen postal. Stellen Sie sicher, dass Sie am Ende jeder Abfrage ein Semikolon verwenden, da die Abfrage immer mit einem Semikolon endet.

Jetzt gewähren Sie alle Berechtigungen für Ihren Datenbankbenutzer über die Datenbank, die Sie erstellt haben. Führen Sie den folgenden Befehl aus.

GRANT ALL ON `postal`.* TO `postal`@`127.0.0.1` IDENTIFIED BY "StrongPassword";

Ersetzen Sie StrongPassword durch ein sehr starkes und sicheres Passwort.

Die Datenbank wird automatisch von Postal geschrieben, aber dafür müssen wir den entsprechenden Benutzern die entsprechenden Berechtigungen erteilen. Führen Sie den folgenden Befehl aus, um allen Benutzern, die mit postal- beginnen, Berechtigungen zu gewähren.

GRANT ALL PRIVILEGES ON `postal-%` . * to `postal`@`127.0.0.1`  IDENTIFIED BY "StrongPassword";

Führen Sie nun den folgenden Befehl aus, um die Änderungen an den Datenbankberechtigungen sofort anzuwenden.

FLUSH PRIVILEGES;

Verlassen Sie die MySQL-Eingabeaufforderung mit folgendem Befehl.

EXIT;

RabbitMQ installieren

RabbitMQ ist in der Programmiersprache Erlang geschrieben. In diesem Tutorial werden wir die neueste Version von Erlang auf dem Server installieren. Installieren Sie Erlang mit folgendem Befehl.

apt -y install erlang

Importieren Sie den GPG-Schlüssel, indem Sie Folgendes ausführen:

curl -sL https://www.rabbitmq.com/rabbitmq-release-signing-key.asc | sudo apt-key add -

Fügen Sie nun das RabbitMQ-Repository mit folgendem Befehl hinzu:

add-apt-repository 'deb http://www.rabbitmq.com/debian/ testing main'

Aktualisieren Sie den Repository-Index mit folgendem Befehl.

apt update

Jetzt können Sie RabbitMQ mit folgendem Befehl installieren.

apt -y install rabbitmq-server

RabbitMQ ist jetzt auf Ihrem System installiert.

RabbitMQ einrichten

Sie können den RabbitMQ-Serverprozess mit folgendem Befehl starten.

systemctl start rabbitmq-server

Um RabbitMQ beim Booten automatisch zu starten, führen Sie den folgenden Befehl aus.

systemctl enable rabbitmq-server

Führen Sie nun den folgenden Befehl aus, um einen virtuellen Host für Postal im RabbitMQ-Server zu erstellen.

rabbitmqctl add_vhost /postal

Fügen Sie nun einen RabbitMQ-Benutzer für Postal mit folgendem Befehl hinzu.

rabbitmqctl add_user postal StrongPassword

Ersetzen Sie StrongPassword durch ein sehr starkes Passwort.

Setzen Sie nun die entsprechenden Berechtigungen für den RabbitMQ-virtuellen Host für den RabbitMQ-Benutzer.

rabbitmqctl set_permissions -p /postal postal ".*" ".*" ".*"

Git und Node.js installieren

Git wird verwendet, um das Installationspaket und einige Abhängigkeiten abzurufen. Führen Sie den folgenden Befehl aus, um Git auf Ihrem System zu installieren.

apt -y install git

Sie können überprüfen, ob Git erfolgreich installiert wurde, indem Sie die Version mit folgendem Befehl überprüfen.

git --version

Sie sollten folgende Ausgabe erhalten.

root@ubuntu:~# git --version
git version 2.11.0

Node.js wird verwendet, um die JavaScript-Bibliothek zu kompilieren. Installieren Sie die Software mit folgendem Befehl.

apt -y install nodejs

Sie können überprüfen, ob Node.js erfolgreich installiert wurde, indem Sie den folgenden Befehl ausführen.

nodejs -v

Sie sollten folgende Ausgabe erhalten.

root@ubuntu:~# nodejs -v
v4.7.2

Jetzt, da wir alle Abhängigkeiten bereit haben, können Sie Postal installieren.

Postal installieren

Postal sollte als eigener isolierter Benutzer ausgeführt werden. Führen Sie den folgenden Befehl aus, um einen neuen Benutzer zu erstellen.

useradd -r -m -d /opt/postal -s /bin/bash postal

Der obige Befehl erstellt einen neuen Benutzer mit dem Benutzernamen postal und das Home-Verzeichnis wird auf /opt/postal gesetzt.

Erlauben Sie Ruby, auf privilegierte Ports zu hören, indem Sie den folgenden Befehl ausführen.

setcap 'cap_net_bind_service=+ep' /usr/local/rvm/rubies/ruby-2.4.0/bin/ruby

Jetzt, da alles bereit ist, laden Sie das neueste Postal-Archiv herunter und extrahieren Sie das Archiv als Postal-Benutzer mit folgendem Befehl.

wget https://postal.atech.media/packages/stable/latest.tgz -O - | sudo -u postal tar zxpv -C /opt/postal

Erstellen Sie nun einen symbolischen Link zur Postal-Binärdatei, indem Sie den folgenden Befehl ausführen.

ln -s /opt/postal/bin/postal /usr/bin/postal

Jetzt können Sie von jedem Verzeichnis aus mit Ihrem Postal-Server interagieren. Um die nächsten Befehle auszuführen, müssen Sie sich als postal-Benutzer in die Shell einloggen.

su - postal

Jetzt müssen Sie alle Ruby-Abhängigkeiten installieren, die erforderlich sind, um die Anwendung auszuführen.

postal bundle /opt/postal/vendor/bundle

Sobald die Abhängigkeiten installiert sind, müssen Sie die Standardkonfigurationsdateien generieren.

postal initialize-config

Der obige Befehl generiert die erforderliche Konfiguration für Ihre Postal-Installation, einschließlich verschiedener Schlüssel und Zertifikate. Dies wird auch die Standardkonfigurationsdatei postal.yml generieren. Sie sollten folgende Ausgabe erhalten.

postal@ubuntu:~$ postal initialize-config
Erstellte Beispielkonfigurationsdatei unter /opt/postal/config/postal.yml
Erstellte neuen privaten Schlüssel für Let's Encrypt
Erstellte neuen Signaturschlüssel für DKIM & HTTP-Anfragen
Erstellte neuen privaten Schlüssel für Standard-TLS-Verbindungen des schnellen Servers
Erstellte neues selbstsigniertes Zertifikat für Standard-TLS-Verbindungen des schnellen Servers

Jetzt müssen Sie einige Optionen in der postal.yml-Konfiguration anpassen.

nano /opt/postal/config/postal.yml

Suchen Sie die folgende Zeile:

web:
  # Der Host, auf dem die Verwaltungsoberfläche verfügbar sein wird
  host: postal.example.com

Ändern Sie den Hostnamen in Ihren tatsächlichen Domainnamen. Suchen Sie weiter die folgenden Zeilen.

main_db:
  # Geben Sie die Verbindungsdetails für Ihre MySQL-Datenbank an
  host: 127.0.0.1
  username: postal
  password: p0stalpassw0rd
  database: postal

message_db:
  # Geben Sie die Verbindungsdetails für Ihren MySQL-Server an, der die
  # Nachrichtenbanken für Mailserver beherbergen wird.
  host: 127.0.0.1
  username: postal
  password: p0stalpassw0rd
  prefix: postal

Ändern Sie den Benutzernamen, das Passwort und den Datenbanknamen entsprechend der von Ihnen erstellten Datenbank. Suchen Sie weiter diese Zeilen:

rabbitmq:
  # Geben Sie die Verbindungsdetails für Ihren RabbitMQ-Server an.
  host: 127.0.0.1
  username: postal
  password: StrongPassword
  vhost: /postal

Ändern Sie die obige Konfiguration entsprechend dem vhost und dem Benutzer, die für RabbitMQ erstellt wurden. Suchen Sie als Nächstes die DNS-Konfigurationen.

dns:
  # Gibt den DNS-Eintrag an, den Sie konfiguriert haben. Verweisen Sie auf die Dokumentation unter
  # https://github.com/atech/postal/wiki/Domains-&-DNS-Configuration für weitere
  # Informationen dazu.
  mx_records:
    - mx.postal.example.com
  smtp_server_hostname: postal.example.com
  spf_include: spf.postal.example.com
  return_path: rp.postal.example.com
  route_domain: routes.postal.example.com
  track_domain: track.postal.example.com

Ändern Sie die oben genannten Domains in die tatsächlichen Domains, die Sie mit dem Mailserver verwenden möchten.

Speichern Sie die Datei und beenden Sie den Editor. Jetzt initialisieren Sie die Datenbank und andere Assets, indem Sie Folgendes ausführen:

postal initialize

Erstellen Sie den Postal-Administratorbenutzer, indem Sie den folgenden Befehl ausführen.

postal make-user

Der obige Befehl fragt Sie nach der E-Mail-Adresse, dem Benutzernamen und dem Passwort. Der obige Befehl wird folgende Ausgabe generieren.

postal@ubuntu:~$ postal make-user
Postal User Creator
Geben Sie die Informationen ein, die erforderlich sind, um einen neuen Postal-Benutzer zu erstellen.
Dieses Tool wird normalerweise nur verwendet, um Ihren ersten Administrationsbenutzer zu erstellen.

E-Mail-Adresse      : [email protected]
Vorname             : Liptan
Nachname            : Biswas
Initial-Passwort:   : **************

Benutzer wurde mit der E-Mail-Adresse [email protected] erstellt

Die Befehlszeileneinrichtung von Postal ist jetzt abgeschlossen. Sie können den Server mit folgendem Befehl starten.

postal start

Um zu überprüfen, ob die Dienste korrekt gestartet wurden, führen Sie den folgenden Befehl aus.

postal status

Sie sollten folgende Ausgabe erhalten.

postal@ubuntu:~$ postal status
Procodile Version   1.0.17
Anwendungsstamm    /opt/postal
Supervisor PID      5319
Gestartet           2017-07-21 07:26:19 +0000

|| web
|| Menge              1
|| Befehl             bundle exec puma -C config/puma.rb
|| Respawning          5 alle 3600 Sekunden
|| Neustartmodus      usr1
|| Protokollpfad      kein Pfad angegeben
|| Adresse/Port      keine
|| => web.1          Läuft      07:26        pid:5325     respawns:0      port:-        tag:-

|| worker
|| Menge              1
|| Befehl             bundle exec ruby script/worker.rb
|| Respawning          5 alle 3600 Sekunden
|| Neustartmodus      start-term
|| Protokollpfad      kein Pfad angegeben
|| Adresse/Port      keine
|| => worker.1       Läuft      07:26        pid:5327     respawns:0      port:-        tag:-

|| cron
|| Menge              1
|| Befehl             bundle exec rake postal:cron
|| Respawning          5 alle 3600 Sekunden
|| Neustartmodus      term-start
|| Protokollpfad      kein Pfad angegeben
|| Adresse/Port      keine
|| => cron.1         Läuft      07:26        pid:5329     respawns:0      port:-        tag:-

|| smtp
|| Menge              1
|| Befehl             bundle exec rake postal:smtp_server
|| Respawning          5 alle 3600 Sekunden
|| Neustartmodus      usr1
|| Protokollpfad      kein Pfad angegeben
|| Adresse/Port      keine
|| => smtp.1         Läuft      07:26        pid:5332     respawns:0      port:-        tag:-

|| requeuer
|| Menge              1
|| Befehl             bundle exec rake postal:requeuer
|| Respawning          5 alle 3600 Sekunden
|| Neustartmodus      term-start
|| Protokollpfad      kein Pfad angegeben
|| Adresse/Port      keine
|| => requeuer.1     Läuft      07:26        pid:5334     respawns:0      port:-        tag:-

Um Postal zu stoppen, können Sie immer den folgenden Befehl ausführen.

postal stop

Nginx als Reverse Proxy konfigurieren

Aus Sicherheitsgründen sollte die Postal-Weboberfläche und API hinter einem Produktions-Webserver wie Apache oder Nginx stehen. In diesem Tutorial werden wir Nginx als Reverse Proxy installieren und konfigurieren.

Installieren Sie den Nginx-Webserver, indem Sie den folgenden Befehl ausführen.

apt -y install nginx

Es wird empfohlen, SSL zu verwenden, um auf Nginx zuzugreifen. Sie können entweder ein selbstsigniertes Zertifikat oder ein kostenloses SSL-Zertifikat von Let’s Encrypt oder ein kommerzielles Zertifikat verwenden. In diesem Tutorial werden wir das kostenlose SSL von Let’s Encrypt verwenden.

Installieren Sie den Let’s Encrypt-Client, auch bekannt als certbot, indem Sie den folgenden Befehl ausführen.

apt -y install certbot

Sobald die Installation abgeschlossen ist, führen Sie den folgenden Befehl aus, um Zertifikate von der Let’s Encrypt-Zertifizierungsstelle zu erhalten. Stellen Sie sicher, dass der Domainname auf Ihren Server verweist, da certbot die Domainautorität überprüft, bevor es die Zertifikate bereitstellt. Ersetzen Sie mail.example.com durch Ihren tatsächlichen Domainnamen.

certbot certonly --standalone -d mail.example.com

Sobald die Zertifikate generiert sind, werden sie in /etc/letsencrypt/live/mail.example.com gespeichert.

Das Let’s Encrypt-SSL läuft nach 90 Tagen ab, daher wird empfohlen, eine automatische Erneuerung für Ihre Zertifikate einzurichten. Führen Sie den folgenden Befehl aus, um Ihre Crontab-Datei zu öffnen.

crontab -e

Geben Sie die folgende Zeile in die Crontab-Datei ein.

30 1 * * 1 /usr/bin/certbot renew >> /var/log/le-renew.log

Der obige Cron-Job wird jeden Montag um 1:30 Uhr automatisch ausgeführt, und wenn Ihre Zertifikate zur Erneuerung fällig sind, werden sie automatisch erneuert.

Erstellen Sie nun einen neuen Serverblock für Ihre Website, indem Sie den folgenden Befehl ausführen.

nano /etc/nginx/conf.d/mail.example.com.conf

Füllen Sie die Datei mit folgendem Inhalt aus.

server {
    listen [::]:80;
    listen 0.0.0.0:80;
    server_name mail.example.com;
    return 301 https://$host$request_uri;
}

server {
    listen [::]:443 ssl;
    listen 0.0.0.0:443 ssl;
    root /opt/postal/public;
    server_name mail.example.com;
    ssl_certificate      /etc/letsencrypt/live/mail.example.com/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/mail.example.com/privkey.pem;
    ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
    ssl_prefer_server_ciphers on;
    ssl_ciphers EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA512:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:ECDH+AESGCM:ECDH+AES256:DH+AESGCM:DH+AES256:RSA+AESGCM:!aNULL:!eNULL:!LOW:!RC4:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS;

    location / {
       client_max_body_size 50M;
       try_files $uri $uri/index.html $uri.html @puma;
    }

    location /assets {
       add_header Cache-Control max-age=3600;
    }

    location @puma {
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
        proxy_pass http://127.0.0.1:5000;
    }
}

Speichern Sie die Datei und beenden Sie den Editor. Starten Sie nun den Nginx-Webserver neu, indem Sie Folgendes ausführen.

systemctl restart nginx

Um Nginx zu aktivieren, dass es beim Booten automatisch startet, führen Sie den folgenden Befehl aus.

systemctl enable nginx

Sie können jetzt auf Postal zugreifen, indem Sie die folgende Website über Ihren bevorzugten Webbrowser aufrufen.

https://mail.example.com

Postal konfigurieren

Sobald Sie die obige Website aufrufen, sehen Sie die folgende Oberfläche.

Postal Login

Geben Sie die E-Mail-Adresse und das Passwort des Benutzers ein, den Sie zuvor erstellt haben. Sobald Sie angemeldet sind, werden Sie aufgefordert, eine neue Organisation zu erstellen.

Organisation in Postal hinzufügen

Geben Sie den Namen der Organisation an. Sie können den automatisch generierten Kurznamen verwenden oder selbst einen angeben. Die Kurznamen werden als Benutzername verwendet, während Sie sich beim SMTP-Server authentifizieren. Er sollte nur Buchstaben, Zahlen und Bindestriche enthalten.

Geben Sie den Organisationsnamen ein

Sobald die Organisation erstellt wurde, werden Sie aufgefordert, einen neuen Mailserver zu erstellen.

Mailserver hinzufügen

Geben Sie den Namen, den Kurznamen und den Modus des E-Mail-Servers an. Im Live-Modus werden alle E-Mails normal weitergeleitet und zugestellt, aber im Entwicklungsmodus sind sie nur in der Weboberfläche sichtbar.

Neuen Mailserver erstellen

Sobald Sie den Mailserver hinzugefügt haben, müssen Sie eine neue Domain im Mailserver hinzufügen. Klicken Sie auf die Registerkarte Domains und erstellen Sie einen neuen Domainnamen.

Domain hinzufügen

Sobald Sie den Domainnamen hinzugefügt haben, müssen Sie die DNS für die Domain konfigurieren. Sie müssen zwei TXT-Einträge für SPF und DKIM hinzufügen. Sie müssen auch einen CNAME-Eintrag und einen MX-Eintrag für den Rückweg und die E-Mail-Zustellung hinzufügen. Sobald Sie die DNS konfiguriert haben, klicken Sie auf die Schaltfläche Überprüfen, ob meine Einträge korrekt sind, um die DNS-Konfiguration zu überprüfen.

MX-Eintrag konfigurieren

Jetzt müssen Sie SMTP-Anmeldeinformationen für das Senden und Empfangen von E-Mails erstellen.

SMTP-Details

Wählen Sie den Typ als SMTP oder API. Geben Sie den Namen für die SMTP-Anmeldeinformationen an und wählen Sie aus, wie Sie die E-Mail-Adresse behandeln möchten.

Sobald Sie fertig sind, können Sie zur Registerkarte Übersicht zurückkehren, und Sie sehen die Informationen, die benötigt werden, um die E-Mail-Adresse zu senden oder zu empfangen.

E-Mail mit Postal senden

Fazit

In diesem Tutorial haben wir erfolgreich einen voll funktionsfähigen Mailserver mit Postal auf Ubuntu 17.04 eingerichtet. Sie können den Mailserver verwenden, um die E-Mails Ihrer Organisation zu senden und zu empfangen.

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.