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 -iaus. - 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 upgradeshutdown -r nowSobald 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 409B6B1796C275462A1703113804BB82D39DC0E3Jetzt installieren Sie RVM mit folgendem Befehl.
curl -sSL https://get.rvm.io | bash -s stableUm RVM sofort zu verwenden, müssen Sie den folgenden Befehl ausführen.
source /etc/profile.d/rvm.shJetzt holen Sie sich die Liste der Ruby-Versionen mit folgendem Befehl.
rvm list knownSie 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.4Verwenden Sie die Ruby-Version mit folgendem Befehl.
rvm use 2.4Sie können die Version von Ruby mit folgendem Befehl überprüfen.
ruby -vSie 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 bundlergem install procodileMariaDB-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-devFühren Sie die folgenden Befehle aus, um MariaDB zu starten und zu aktivieren, damit sie beim Booten gestartet wird.
systemctl start mariadbsystemctl enable mariadbFühren Sie nun die folgenden Befehle aus, um Ihre MariaDB-Installation zu sichern.
mysql_secure_installationDer 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 -pDer 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 erlangImportieren 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 updateJetzt können Sie RabbitMQ mit folgendem Befehl installieren.
apt -y install rabbitmq-serverRabbitMQ ist jetzt auf Ihrem System installiert.
RabbitMQ einrichten
Sie können den RabbitMQ-Serverprozess mit folgendem Befehl starten.
systemctl start rabbitmq-serverUm RabbitMQ beim Booten automatisch zu starten, führen Sie den folgenden Befehl aus.
systemctl enable rabbitmq-serverFühren Sie nun den folgenden Befehl aus, um einen virtuellen Host für Postal im RabbitMQ-Server zu erstellen.
rabbitmqctl add_vhost /postalFügen Sie nun einen RabbitMQ-Benutzer für Postal mit folgendem Befehl hinzu.
rabbitmqctl add_user postal StrongPasswordErsetzen 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 gitSie können überprüfen, ob Git erfolgreich installiert wurde, indem Sie die Version mit folgendem Befehl überprüfen.
git --versionSie 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 nodejsSie können überprüfen, ob Node.js erfolgreich installiert wurde, indem Sie den folgenden Befehl ausführen.
nodejs -vSie 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 postalDer 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/rubyJetzt, 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/postalErstellen Sie nun einen symbolischen Link zur Postal-Binärdatei, indem Sie den folgenden Befehl ausführen.
ln -s /opt/postal/bin/postal /usr/bin/postalJetzt 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 - postalJetzt müssen Sie alle Ruby-Abhängigkeiten installieren, die erforderlich sind, um die Anwendung auszuführen.
postal bundle /opt/postal/vendor/bundleSobald die Abhängigkeiten installiert sind, müssen Sie die Standardkonfigurationsdateien generieren.
postal initialize-configDer 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.ymlSuchen 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 initializeErstellen Sie den Postal-Administratorbenutzer, indem Sie den folgenden Befehl ausführen.
postal make-userDer 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 startUm zu überprüfen, ob die Dienste korrekt gestartet wurden, führen Sie den folgenden Befehl aus.
postal statusSie 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 stopNginx 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 nginxEs 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 certbotSobald 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.comSobald 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 -eGeben Sie die folgende Zeile in die Crontab-Datei ein.
30 1 * * 1 /usr/bin/certbot renew >> /var/log/le-renew.logDer 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.confFü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 nginxUm Nginx zu aktivieren, dass es beim Booten automatisch startet, führen Sie den folgenden Befehl aus.
systemctl enable nginxSie können jetzt auf Postal zugreifen, indem Sie die folgende Website über Ihren bevorzugten Webbrowser aufrufen.
https://mail.example.comPostal konfigurieren
Sobald Sie die obige Website aufrufen, sehen Sie die folgende Oberfläche.

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.

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.

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

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.

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.

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.

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

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.

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.
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.