GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So erstellen Sie einen voll ausgestatteten Mailserver mit Postal

Postal ist ein kostenloser und vollständiger Open-Source-Mailserver zum Senden und Empfangen von E-Mails. Es ist in Ruby und JavaScript geschrieben. Sie können Postal ganz einfach auf Ihrem eigenen Server installieren. Es hilft Ihnen auch bei der Bereitstellung korrekter DNS-Informationen, die zur Reduzierung von Spam-E-Mails erforderlich sind. Post wird von vielen Organisationen verwendet, um täglich E-Mails zu senden und zu empfangen.

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

Voraussetzung

  • Minimaler Ubuntu 17.04-Server. 8 GB RAM empfohlen.
  • Root-Rechte. Diese Anleitung wurde als Root-Benutzer geschrieben, wenn Sie als sudo-Benutzer angemeldet sind, führen Sie sudo -i.
  • aus
  • ein Domainname, der auf Ihren Server verweist.

Basissystem aktualisieren

Vor der Installation eines Pakets 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 mit der Installation von Ruby fort.

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

Installieren Sie nun RVM mit dem folgenden 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

Rufen Sie nun die Liste von Ruby mit dem folgenden Befehl ab.

rvm list known

Sie sehen folgende Ausgabe:

# MRI Rubies
[ruby-]1.8.6[-p420]
[ruby-]1.8.7[-head] # security released on 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

Installieren Sie nun die neueste Version von Ruby in der Liste mit dem folgenden Befehl.

rvm install 2.4

Verwenden Sie die Ruby-Version mit dem folgenden Befehl.

rvm use 2.4

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

ruby -v

Sie sollten die folgende Ausgabe sehen, wenn Ruby erfolgreich installiert wurde.

[email protected]:~# ruby -v
ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-linux]

Installieren Sie Ruby Gems

Um Postel 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 Verwaltungssystemsoftware für relationale Datenbanken, die zum Speichern von Daten im Tabellenformat verwendet wird. Um MariaDB auf Ihrem Server zu installieren, führen Sie Folgendes aus:

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

Führen Sie die folgenden Befehle aus, um MariaDB zu starten und zu ermöglichen, dass es 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 neue MariaDB-Installation zu sichern. Das Skript fragt nach dem vorhandenen Root-Benutzerpasswort, wir haben gerade MariaDB installiert, das Root-Passwort ist nicht festgelegt, 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 legen Sie ein starkes Passwort für die Installation fest. Die meisten Fragen sind selbsterklärend und Sie sollten alle Fragen mit ja oder ja beantworten.

Datenbank für Post einrichten

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

mysql -u root -p

Der obige Befehl meldet sich bei der MySQL-Shell des Root-Benutzers an und fordert zur Eingabe des Passworts des Root-Benutzers auf. 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.

Geben Sie nun Ihrem Datenbankbenutzer alle Berechtigungen für die von Ihnen erstellte Datenbank. 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 Postal-Benutzern entsprechende Berechtigungen erteilen. Führen Sie den folgenden Befehl aus, um allen Benutzern Berechtigungen zu erteilen, die mit postal-.

beginnen
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 sofort auf die Datenbankberechtigungen anzuwenden.

FLUSH PRIVILEGES;

Beenden Sie die MySQL-Eingabeaufforderung mit dem folgenden Befehl.

EXIT;

Installieren Sie RabbitMQ

RabbitMQ ist in Erlang-Sprache 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 hinzu, indem Sie den folgenden Befehl ausführen:

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

Aktualisieren Sie den Repository-Index, indem Sie den folgenden Befehl ausführen.

apt update

Jetzt können Sie RabbitMQ installieren, indem Sie den folgenden Befehl ausführen.

apt -y install rabbitmq-server

RabbitMQ ist jetzt auf Ihrem System installiert.

KaninchenMQ einrichten

Sie können den RabbitMQ-Serverprozess starten, indem Sie den folgenden Befehl ausführen.

systemctl start rabbitmq-server

Führen Sie den folgenden Befehl aus, um RabbitMQ beim Booten automatisch zu starten.

systemctl enable rabbitmq-server

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

rabbitmqctl add_vhost /postal

Fügen Sie nun einen RabbitMQ-Benutzer für Postal hinzu, indem Sie den folgenden Befehl ausführen.

rabbitmqctl add_user postal StrongPassword

Ersetzen Sie StrongPassword ist ein sehr starkes Passwort.

Legen Sie nun die entsprechende Berechtigung für den virtuellen RabbitMQ-Host für den RabbitMQ-Benutzer fest.

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

Installieren Sie Git und Node.js

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 dem folgenden Befehl überprüfen.

git --version

Sie sollten folgende Ausgabe erhalten.

[email protected]:~# git --version
git version 2.11.0

Node.js wird zum Kompilieren der JavaScript-Bibliothek verwendet. Installieren Sie die Software mit dem folgenden 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.

[email protected]:~# nodejs -v
v4.7.2

Nachdem wir nun alle Abhängigkeiten bereit haben, können Sie Postal.

installieren

Installieren Sie Postal

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, privilegierte Ports abzuhören, indem Sie den folgenden Befehl ausführen.

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

Nachdem alles fertig ist, laden Sie das neueste Postal-Archiv herunter und extrahieren Sie das Archiv als Postal-Benutzer mit dem folgenden 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 Postserver interagieren. Um die nächsten Befehle auszuführen, müssen Sie sich als postalischer Benutzer bei der Shell anmelden.

su - postal

Jetzt müssen Sie alle Ruby-Abhängigkeiten installieren, die zum Ausführen der Anwendung erforderlich sind.

postal bundle /opt/postal/vendor/bundle

Nachdem die Abhängigkeiten installiert wurden, 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. Dadurch wird auch die standardmäßige postal.yml-Konfigurationsdatei generiert. Sie sollten folgende Ausgabe erhalten.

[email protected]:~$ postal initialize-config
Created example config file at /opt/postal/config/postal.yml
Created new private key for Let's Encrypt
Created new signing key for DKIM & HTTP requests
Created new private key for default fast server TLS connections
Created new self signed certificate for default fast server TLS connections

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

nano /opt/postal/config/postal.yml

Suchen Sie die folgende Zeile:

web:
  # The host that the management interface will be available on
  host: postal.example.com

Ändern Sie den Hostnamen in Ihren tatsächlichen Domänennamen. Suchen Sie außerdem die folgenden Zeilen.

main_db:
  # Specify the connection details for your MySQL database
  host: 127.0.0.1
  username: postal
  password: p0stalpassw0rd
  database: postal

message_db:
  # Specify the connection details for your MySQL server that will be house the
  # message databases for mail servers.
  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 außerdem diese Zeilen:

rabbitmq:
  # Specify the connection details for your RabbitMQ server.
  host: 127.0.0.1
  username: postal
  password: StrongPassword
  vhost: /postal

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

dns:
  # Specifies the DNS record that you have configured. Refer to the documentation at
  # https://github.com/atech/postal/wiki/Domains-&-DNS-Configuration for further
  # information about these.
  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

Ersetzen Sie die obigen Domains durch die tatsächlichen Domains, die Sie mit dem Mailserver verwenden möchten.

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

postal initialize

Erstellen Sie den Postal Administrator-Benutzer, 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 erzeugt die folgende Ausgabe.

[email protected]:~$ postal make-user
Postal User Creator
Enter the information required to create a new Postal user.
This tool is usually only used to create your initial admin user.

E-Mail Address      : [email protected]
First Name          : Liptan
Last Name           : Biswas
Initial Password:   : **************

User has been created with e-mail address [email protected]

Die Kommandozeilen-Einrichtung von Postal ist nun abgeschlossen, Sie können den Server mit dem folgenden 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.

[email protected]:~$ postal status
Procodile Version   1.0.17
Application Root    /opt/postal
Supervisor PID      5319
Started             2017-07-21 07:26:19 +0000

|| web
|| Quantity            1
|| Command             bundle exec puma -C config/puma.rb
|| Respawning          5 every 3600 seconds
|| Restart mode        usr1
|| Log path            none specified
|| Address/Port        none
|| => web.1            Running      07:26        pid:5325     respawns:0      port:-        tag:-

|| worker
|| Quantity            1
|| Command             bundle exec ruby script/worker.rb
|| Respawning          5 every 3600 seconds
|| Restart mode        start-term
|| Log path            none specified
|| Address/Port        none
|| => worker.1         Running      07:26        pid:5327     respawns:0      port:-        tag:-

|| cron
|| Quantity            1
|| Command             bundle exec rake postal:cron
|| Respawning          5 every 3600 seconds
|| Restart mode        term-start
|| Log path            none specified
|| Address/Port        none
|| => cron.1           Running      07:26        pid:5329     respawns:0      port:-        tag:-

|| smtp
|| Quantity            1
|| Command             bundle exec rake postal:smtp_server
|| Respawning          5 every 3600 seconds
|| Restart mode        usr1
|| Log path            none specified
|| Address/Port        none
|| => smtp.1           Running      07:26        pid:5332     respawns:0      port:-        tag:-

|| requeuer
|| Quantity            1
|| Command             bundle exec rake postal:requeuer
|| Respawning          5 every 3600 seconds
|| Restart mode        term-start
|| Log path            none specified
|| Address/Port        none
|| => requeuer.1       Running      07:26        pid:5334     respawns:0      port:-        tag:-

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

postal stop

Nginx als Reverse-Proxy konfigurieren

Aus Sicherheitsgründen sollten sich Postal-Webschnittstelle und -API hinter jedem Produktionswebserver wie Apache oder Nginx befinden. In diesem Tutorial installieren und konfigurieren wir Nginx als Reverse-Proxy.

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

apt -y install nginx

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

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

apt -y install certbot

Führen Sie nach Abschluss der Installation den folgenden Befehl aus, um Zertifikate von der Let’s Encrypt-Zertifizierungsstelle zu erhalten. Stellen Sie sicher, dass der Domänenname auf Ihren Server verweist, da certbot die Domänenautorität überprüft, bevor er die Zertifikate bereitstellt. Ersetzen Sie mail.example.com durch Ihren tatsächlichen Domänennamen.

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

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

gespeichert

Let’s Encrypt SSL läuft in 90 Tagen ab, daher wird empfohlen, eine automatische Verlängerung für Ihre Zertifikate einzustellen. 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 automatisch jeden Montag um 1:30 Uhr ausgeführt und wenn Ihre Zertifikate ablaufen, 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.

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 ihn ausführen.

systemctl restart nginx

Führen Sie den folgenden Befehl aus, damit nginx beim Booten automatisch startet.

systemctl enable nginx

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

https://mail.example.com

Postversand konfigurieren

Sobald Sie die obige Website durchsuchen, sehen Sie die folgende Benutzeroberflä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 bei der Authentifizierung mit dem SMTP-Server verwendet. Es sollte nur Buchstaben, Zahlen und Bindestriche enthalten.


Sobald die Organisation erstellt ist, 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 auf dem Mailserver hinzufügen. Klicken Sie auf Domains und erstellen Sie einen neuen Domänennamen.

Nachdem Sie den Domänennamen hinzugefügt haben, müssen Sie das DNS für die Domäne 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. Nachdem Sie das DNS konfiguriert haben, klicken Sie auf Meine Einträge auf Richtigkeit prüfen Schaltfläche, um die DNS-Konfiguration zu überprüfen.

Jetzt müssen Sie SMTP-Anmeldeinformationen zum 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 mit der E-Mail-Adresse umgehen möchten.

Wenn Sie fertig sind, können Sie zur Übersicht zurückkehren und Sie sehen die Informationen, die zum Senden oder Empfangen der E-Mail-Adresse erforderlich sind.

Schlussfolgerung

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


Linux
  1. So installieren Sie SQL Server unter Windows 10

  2. So installieren Sie den Postfix-Mailserver auf RHEL 8 / CentOS 8

  3. So installieren Sie DKIM auf einem Ubuntu-Server

  4. Wie kann man mit einem anderen Server per SSH auf einen Server zugreifen?

  5. So installieren Sie CVS und erstellen ein CVS-Repository auf einem Linux-Server

Wie installiere ich einen FTP-Server auf Ubuntu?

So installieren Sie Nginx unter Ubuntu 14.04

So installieren Sie LEMP mit der One-Click-Anwendung von Atlantic.Net

So installieren Sie LAMP mit der One-Click-Installation von Atlantic.Net

So richten Sie einen voll funktionsfähigen Mailserver mit Postfix, Dovecot und Roundcube unter Ubuntu 18.04 ein

So erstellen Sie einen HTTP-Proxy mit Squid unter CentOS 8