Postfix und Dovecot in einem Docker-Container


Postfix und Dovecot im Docker 01-ContainerArtikel Postfix und Dovecot in einem Docker-Container wird darüber sprechen, wie die einfachste Kombination von MTA und MAA mithilfe von Containerisierungstechnologien automatisch bereitgestellt werden kann… Dieses Szenario eignet sich ideal zum Ausführen und Testen von E-Mail-Diensten (z. B. für Softwareentwicklungs- und Testteams zum Debuggen der E-Mail-Funktionalität der zu entwickelnden Software), ist jedoch für reale Infrastrukturen in der Produktion nicht sehr geeignet.

Postfix und Dovecot in einem Docker-Container

Alle Nuancen der Installation und Konfiguration von Postfix und Dovecot mithilfe des lokalen Maildir-Speichers, die ich in einem meiner letzten Artikel ausführlich beschrieben habe – Grundlegende Postfix- und Dovecot-Konfiguration. Im selben Artikel möchte ich mich auf die Funktionen der Bereitstellung einer völlig ähnlichen Konfiguration konzentrieren, jedoch mit Docker-Containern.

Dockerfile und all die Güte, die nötig sind, um das Image zu erstellen, auf dem ich gepostet habe GitHub – – postfix-dovecot-maildir… Achten Sie auf die Testzweige, möglicherweise gibt es relevantere Informationen.

Ausbildung

Die Docker-Installation ist in der offiziellen Dokumentation beschrieben .

Um ein Repository von GitHub herunterzuladen, benötigen Sie Git. Sie können es mit dem folgenden Befehl installieren:

Ich empfehle Ihnen, einen separaten Ordner zu erstellen, um nicht im aktuellen Verzeichnis zu verunreinigen, und direkt dorthin zu wechseln:

Laden Sie als Nächstes das Repository mit dem folgenden Befehl herunter:

Hinweis: Ich werde den Testzweig verwenden, da er die letzten Änderungen enthält. Bitte beachten Sie, dass der Code in diesem Zweig theoretisch möglicherweise nicht funktionsfähig ist (aus diesem Grund wird er getestet, um die Änderungen zu testen. Ihre Obergrenze). Um den Hauptarbeitszweig auszuchecken, entfernen Sie einfach den Schalter -b und den Zweignamen Test-branche.

Im aktuellen Verzeichnis finden Sie einen neuen Ordner mit dem Namen postfix-dovecot-maildirEs wird die Docker-Datei enthalten, die wir zum Erstellen des Images benötigen. Gehen wir zum Ordner und überprüfen den Inhalt:


Sie können alle diese Dateien manuell herunterladen, ohne Git zu verwenden, dies ist jedoch nicht sehr praktisch. Wenn sich in einem Repository mehr Dateien befinden, ist das manuelle Auschecken keine gute Idee.

Versammlung

Jetzt ist der wichtigste Moment gekommen – die Montage des Bildes. Dies kann mit dem folgenden Befehl erfolgen:

Wo:

  • domain.tld – DNS-Name der Mail-Domain;
  • Mailuser – den Namen des Hauptbenutzers im System, für den eine Mailbox erstellt wird und an den eingehende E-Mails von Standardadressen umgeleitet werden (z. B. postmaster@bissquit.ru)
  • Mail-Server – Der Name des zu sammelnden Bildes (Sie können nur einen technischen Namen angeben, z. B. testcontainer01).

Darauf folgt ein langwieriger Zusammenbau des Behälters. Zwischencontainer werden regelmäßig erstellt (für jede separate Dockerfile-Anweisung) und dann gelöscht. Sie werden so etwas sehen:

Sie benötigen eine Internetverbindung, wenn Sie nicht die erforderlichen Bilder heruntergeladen haben und wenn die Docker-Datei die entsprechenden Befehle enthält (z. B.) apt-get update usw.).

Starten

Das Bild wird zusammengestellt, es ist Zeit, einen darauf basierenden Container zu starten. Lassen Sie uns den Befehl ausführen:

Wenn alles gut gegangen ist, führen Sie den Befehl aus Docker ps -a, Sie sehen einen laufenden Container.

Wenn Sie in den Container gehen müssen, um Einstellungen zu ändern oder eine Diagnose zu stellen, können Sie dies mit dem folgenden Befehl tun:

Dabei ist b8610b5cea19 die Containerkennung (auch über den Befehl verfügbar) Docker ps -a). Wählen Sie am Ende der Sitzung Ausfahrt.

Unterschiede zur Docker-Bereitstellung

Da die Bereitstellung des Containers ohne Benutzereingriff automatisch erfolgt, gibt es eine Reihe von Unterschieden zur herkömmlichen Option, wenn alles manuell erfolgt.

Pakete installieren

Während der Installation von Paketen werden dem Benutzer möglicherweise Fragen zur gewünschten Konfiguration gestellt. In einem automatisierten Bereitstellungsszenario ist es wichtig, diese Antworten im Voraus zu definieren.

Hinweis: Beispielsweise stellt Postfix normalerweise Fragen zum Setup-Typ (siehe Installieren von Postfix unter Debian) und zum E-Mail-Namen.

Dies kann durch Hinzufügen der Datenbank erfolgen debconf … Dazu müssen Sie eine Datei erstellen (für mich hat sie den Namen postfix_silent_install.txt) mit Inhalt (Datei Zeile für Zeile, jede Zeile muss vier Werte haben):

Und dann fügen wir die Antworten mit dem Befehl debconf-set-selections in die Datenbank ein ::

In meiner Docker-Datei wird diese Operation durch die Anweisung beschrieben:

Der nächste Punkt: Sie müssen Pakete in einem nicht interaktiven Modus installieren, damit dem Benutzer keine Fragen gestellt werden. Dazu müssen Sie den Typ der Benutzeroberfläche mit dem Befehl festlegen DEBIAN_FRONTEND = nicht interaktiv .

Alle Fragen Ja Nein Eine bejahende Antwort hilft dem Schlüssel -und Dienstprogramme apt-get… Nun, für einen sehr leisen Modus verwenden wir die Taste -q… Infolgedessen sieht der Installationsbefehl folgendermaßen aus:

Darauf haben wir die Installation herausgefunden.

Konfigurationen

Sie können unendlich viele Teams haben postconf Definieren Sie alle Schlüsselparameter in Postfix. Das gleiche muss mit Dovecot gemacht werden. Oder Sie können einfach vorgefertigte und debuggte Konfigurationen erstellen und kopieren. Dies ist der humanste Weg, weshalb ich zwei Anweisungen in meiner Docker-Datei habe:

ADD main.cf /etc/postfix/main.cf

ADD dovecot.conf /etc/dovecot/dovecot.conf

Sie kopieren einfach zwei Dateien aus dem aktuellen Verzeichnis im Container an den angegebenen Speicherort.

Ich hoffe, dieser Artikel hat alle Fragen zur Verwendung von Docker für die Bereitstellung des Postfix + Dovecot-Bundles geklärt.

Kommentare bereitgestellt von HyperComments

Leave a Reply

Your email address will not be published. Required fields are marked *