One place for hosting & domains

      Installieren von Jenkins unter Ubuntu 20.04


      Einführung

      Wenn es um die Bewältigung sich wiederholender technischer Aufgaben geht, ist es nicht immer einfach, gute Automatisierungslösungen zu finden. Mit Jenkins, einem Open-Source-basierten Automatisierungsserver, können Sie Aufgaben von der Erstellung bis zur Bereitstellung von Software effizient verwalten. Jenkins ist Java-basiert und wird aus Ubuntu-Paketen bzw. durch Herunterladen und Ausführen der entsprechenden WAR-Datei (Web Application Archive) installiert: Dabei handelt es sich um eine Sammlung von Dateien, die eine vollständige Webanwendung ergeben, die sich auf einem Server ausführen lässt.

      In diesem Tutorial installieren wir Jenkins unter Ubuntu 20.04, starten den Entwicklungsserver und erstellen einen Administratorbenutzer, sodass Sie damit beginnen können, die Möglichkeiten von Jenkins zu erkunden. Zwar verfügen Sie nach Abschluss dieses Tutorials über einen einsatzbereiten Entwicklungsserver, doch sollten Sie ihn für die Produktion noch sichern. Folgen Sie dazu dem Tutorial Konfigurieren von Jenkins mit SSL unter Verwendung eines Nginx-Reverseproxy unter Ubuntu 18.04.

      Voraussetzungen

      Um dieser Anleitung zu folgen, benötigen Sie:

      Schritt 1 — Installieren von Jenkins

      Die Version von Jenkins, die in den standardmäßigen Ubuntu-Paketen enthalten ist, ist oft älter als die neueste verfügbare Version des Projekts selbst. Um sicherzustellen, dass Sie über die neuesten Korrekturen und Funktionen verfügen, verwenden Sie die vom Projekt gepflegten Pakete zur Installation von Jenkins.

      Fügen Sie zunächst den Repository-Schlüssel zum System hinzu:

      • wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -

      Nach dem Hinzufügen des Schlüssels gibt das System OK zurück.

      Als Nächstes fügen wir die Adresse für das Debian-Paket-Repository in die sources.list des Servers ein:

      • sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'

      Nach Eingabe beider Befehle werden wir update ausführen, damit apt das neue Repository nutzt.

      Schließlich installieren wir Jenkins und seine Abhängigkeiten.

      Nachdem Jenkins und seine Abhängigkeiten vorhanden sind, starten wir nun den Jenkins-Server.

      Schritt 2 — Starten von Jenkins

      Starten wir Jenkins durch Verwendung von systemctl:

      sudo systemctl start jenkins
      

      Da systemctl keine Statusausgabe anzeigt, nutzen wir den status-Befehl zum Überprüfen, ob Jenkins erfolgreich gestartet wurde:

      • sudo systemctl status jenkins

      Wenn alles geklappt hat, zeigt der Anfang der Statusausgabe an, dass der Dienst aktiv und so konfiguriert ist, dass er beim Booten gestartet wird:

      Output

      ● jenkins.service - LSB: Start Jenkins at boot time Loaded: loaded (/etc/init.d/jenkins; generated) Active: active (exited) since Fri 2020-06-05 21:21:46 UTC; 45s ago Docs: man:systemd-sysv-generator(8) Tasks: 0 (limit: 1137) CGroup: /system.slice/jenkins.service

      Nachdem Jenkins ausgeführt wird, sollten wir nun unsere Firewall-Regeln so anpassen, dass wir den Server über einen Webbrowser erreichen können. Damit ist die Ersteinrichtung abgeschlossen.

      Schritt 3 — Öffnen der Firewall

      Um eine UFW-Firewall einzurichten, konsultieren Sie Ersteinrichtung des Servers mit Ubuntu 20.04, Schritt 4 — Einrichten einer einfachen Firewall. Standardmäßig wird Jenkins an Port 8080 ausgeführt. Wir öffnen diesen Port mit ufw:

      Anmerkung: Wenn die Firewall inaktiv ist, können Sie mit folgenden Befehlen OpenSSH zulassen und die Firewall aktivieren:

      • sudo ufw allow OpenSSH
      • sudo ufw enable

      Überprüfen Sie zum Bestätigen der neuen Regeln den Status von ufw:

      Sie werden feststellen, dass Datenverkehr an Port 8080 von überall zugelassen ist:

      Output

      Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 8080 ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) 8080 (v6) ALLOW Anywhere (v6)

      Nach der Installation von Jenkins und der Konfiguration unserer Firewall können wir die Installationsphase abschließen und mit der Einrichtung von Jenkins beginnen.

      Schritt 4 — Einrichten von Jenkins

      Um Ihre Installation einzurichten, rufen Sie Jenkins an seinem Standardport 8080 auf, indem Sie den Domänennamen oder die IP-Adresse Ihres Servers verwenden: http://your_server_ip_or_domain:8080

      Sie sollten den Bildschirm Unlock Jenkins (Jenkins entsperren) erhalten, in dem der Speicherort des ersten Passworts angezeigt wird:

      Bildschirm „Unlock Jenkins“ (Jenkins entsperren)

      Verwenden Sie im Terminalfenster den Befehl cat zum Anzeigen des Passworts:

      • sudo cat /var/lib/jenkins/secrets/initialAdminPassword

      Kopieren Sie das 32 Zeichen lange alphanumerische Passwort aus dem Terminal und fügen Sie es in das Feld Administrator password (Administratorkennwort) ein. Klicken Sie dann auf Continue (Weiter).

      Im nächsten Bildschirm wird die Option zum Installieren empfohlener Plugins oder Auszuwählen spezifischer Plugins angezeigt:

      Bildschirm „Customize Jenkins“ (Jenkins anpassen)

      Wir klicken auf die Option Install suggested plugins (Empfohlene Plugins installieren), woraufhin der Installationsprozess unmittelbar beginnt.

      Bildschirm „Jenkins Getting Started Install Plugins“ (Erste Schritte mit Jenkins — Plugins installieren)

      Nach Abschluss der Installation werden Sie aufgefordert, den ersten Administratorbenutzer einzurichten. Es ist möglich, diesen Schritt überspringen und als admin mit dem oben verwendeten ursprünglichen Passwort fortzufahren, aber wir werden uns einen Moment Zeit nehmen, um den Benutzer zu erstellen.

      Anmerkung: Der standardmäßige Jenkins-Server ist NICHT verschlüsselt, sodass die mit diesem Formular übermittelten Daten nicht geschützt sind. Siehe Konfigurieren von Jenkins mit SSL unter Verwendung eines Nginx-Reverseproxy unter Ubuntu 20.04, um Anmeldedaten von Benutzern und Informationen über Builds, die über die Weboberfläche übertragen werden, zu schützen.

      Bildschirm „Jenkins Create First Admin User“ (Erstellen des ersten Administratorbenutzers in Jenkins)

      Geben Sie den Namen und das Passwort für Ihren Benutzer ein:

      Jenkins Create User (Jenkins: Benutzer erstellen)

      Sie sehen eine Seite zur Instance Configuration (Instanzkonfiguration), auf der Sie dazu aufgefordert werden, die bevorzugte URL für Ihre Jenkins-Instanz zu bestätigen. Bestätigen Sie entweder den Domänennamen für Ihren Server bzw. die IP-Adresse Ihres Servers:

      Jenkins Instance Configuration (Jenkins: Instanzkonfiguration)

      Nach der Bestätigung der entsprechenden Daten klicken Sie auf Save and Finish (Speichern und Fertigstellen). Sie erhalten eine Seite mit der Bestätigung, dass „Jenkins is Ready!“ (Jenkins bereit ist):

      Bildschirm „Jenkins is ready“ (Jenkins ist bereit)

      Klicken Sie auf Start using Jenkins (Mit Verwendung von Jenkins beginnen), um das Haupt-Dashboard von Jenkins aufzurufen:

      Bildschirm „Welcome to Jenkins“ (Willkommen bei Jenkins)

      Jetzt haben Sie die Installation von Jenkins erfolgreich abgeschlossen.

      Zusammenfassung

      In diesem Tutorial haben Sie Jenkins mit den vom Projekt bereitgestellten Paketen installiert, den Server gestartet, die Firewall geöffnet und einen Administratorbenutzer erstellt. Nun können Sie mit der Erkundung von Jenkins beginnen.

      Folgen Sie danach Abschluss dem Leitfaden Konfigurieren von Jenkins mit SSL unter Verwendung eines Nginx-Reverseproxy unter Ubuntu 20.04, um Ihre Passwörter sowie sensible System- oder Produktdaten, die zwischen dem Computer und dem Server in Klartext übertragen werden, zu schützen. Anschließend können Sie Jenkins weiter nutzen.

      Um mehr über die Funktionen von Jenkins zu erfahren, lesen Sie weitere Tutorials zu dem Thema:



      Source link

      Erstellen eines redundanten Speicherpools mit GlusterFS unter Ubuntu 20.04


      Eine frühere Version dieses Tutorials wurde von Justin Ellingwood verfasst.

      Einführung

      Single Points of Failure stellen bei der Speicherung kritischer Daten ein beträchtliches Risiko dar. Während sich mit vielen Datenbanken und anderer Software Daten im Kontext einer einzelnen Anwendung verteilen lassen, arbeiten andere Systeme auf der Ebene des Dateisystems, um sicherzustellen, dass Daten beim Schreiben auf Festplatte jedes Mal auch an einen anderen Ort kopiert werden.

      GlusterFS ist ein Network-Attached-Storage-Dateisystem (NAS), mit dem Sie Speicherressourcen verschiedener Geräte bündeln können. So lassen sich mehrere Speichergeräte, die auf unterschiedliche Computer verteilt sind, als eine leistungsfähigere Einheit nutzen. Außerdem bietet Ihnen GlusterFS die Möglichkeit, verschiedenartige Speicherkonfigurationen einzurichten, von denen viele funktionell RAID-Leveln ähneln. Zum Beispiel können Sie Daten auf verschiedenen Knoten im Cluster stripen oder für eine höhere Datenverfügbarkeit Redundanz implementieren.

      Ziele

      In diesem Leitfaden erstellen Sie ein redundantes geclustertes Speicherarray, auch als verteiltes Dateisystem oder (wie in der GlusterFS-Dokumentation) als Trusted Storage Pool bezeichnet. Damit erhalten Sie Funktionen, die einer über das Netzwerk gespiegelten RAID-Konfiguration ähneln: Jeder unabhängige Server enthält eine eigene Kopie der Daten, sodass Ihre Anwendungen auf eine beliebige Kopie zugreifen können. Dadurch lässt sich die Leselast besser verteilen.

      Dieser redundante GlusterFS-Cluster wird aus zwei Ubuntu 20.04-Servern bestehen. Er wird sich ähnlich wie ein NAS-Server mit gespiegeltem RAID verhalten. Dann werden Sie auf den Cluster über einen dritten Ubuntu 20.04-Server zugreifen, der als GlusterFS-Client konfiguriert ist.

      Anmerkung zur sicheren Ausführung von GlusterFS

      Wenn Sie einem GlusterFS-Volume Daten hinzufügen, werden diese Daten mit jedem Gerät im Speicherpool, in dem das Volumen gehostet wird, synchronisiert. Dieser Datenverkehr zwischen Knoten wird standardmäßig nicht verschlüsselt, d. h. es besteht das Risiko, dass er von bösartigen Akteuren abgefangen wird.

      Wenn Sie GlusterFS in der Produktion verwenden möchten, wird daher empfohlen, das Dateisystem in einem isolierten Netzwerk auszuführen. Sie könnten GlusterFS beispielsweise so einrichten, dass es in einer Virtual Private Cloud (VPC) oder mit einem VPN zwischen den einzelnen Knoten ausgeführt wird.

      Wenn Sie GlusterFS in DigitalOcean bereitstellen möchten, können Sie es in einem isolierten Netzwerk einrichten, indem Sie Ihre Serverinfrastruktur einer DigitalOcean Virtual Private Cloud hinzufügen. Details zur entsprechenden Einrichtung finden Sie in unserer VPC-Produktdokumentation.

      Voraussetzungen

      Um diesem Tutorial zu folgen, benötigen Sie drei Server, auf denen Ubuntu 20.04 ausgeführt wird. Jeder dieser Server sollte über einen Nicht-root-Benutzer mit Administratorberechtigungen und eine mit UFW konfigurierte Firewall verfügen. Folgen Sie dazu unserem Leitfaden für die Ersteinrichtung des Servers für Ubuntu 20.04.

      Anmerkung: Wie im Abschnitt „Ziele“ erwähnt, wird dieses Tutorial Sie durch die Konfiguration von zwei Ubuntu-Servern als Server in einem Speicherpool und dem dritten Server als Client begleiten; diesen werden Sie für Zugriff auf die beiden Speicherknoten verwenden.

      Aus Gründen der Einfachheit wird sich das Tutorial auf diese Computer mit folgenden Hostnamen beziehen:

      Hostname Rolle im Speicherpool
      gluster0 Server
      gluster1 Server
      gluster2 Client

      Befehle, die entweder auf gluster0 oder gluster1 ausgeführt werden müssen, weisen einen blauen bzw. roten Hintergrund auf:

      Befehle, die nur auf dem Client (gluster2) ausgeführt werden müssen, haben einen grünen Hintergrund:

      Befehle, die auf mehr als einem Computer ausgeführt werden können oder müssen, weisen einen grauen Hintergrund auf:

      Schritt 1 — Konfigurieren der DNS-Auflösung auf jedem Computer

      Das Erstellen einer Auflösung von Hostnamen zwischen den einzelnen Computern kann Ihnen bei der Verwaltung Ihres Gluster-Speicherpools helfen. Wenn Sie in diesem Tutorial später in einem gluster-Befehl auf einen Ihrer Computer verweisen, können Sie dies dann mit einem leicht zu merkenden Domänennamen oder sogar einem Spitznamen anstelle der jeweiligen IP-Adresse tun.

      Wenn Sie keinen freien Domänennamen haben oder einfach nur eine schnelle Einrichtung vornehmen möchten, können Sie stattdessen die Datei /etc/hosts auf den einzelnen Computern bearbeiten. Dies ist eine spezielle Datei auf Linux-Computern, in der Sie das System statisch konfigurieren können, um alle in der Datei enthaltenen Hostnamen in Form statischer IP-Adressen aufzulösen.

      Anmerkung: Wenn Sie Ihre Server zur Authentifizierung mit einer Domäne konfigurieren möchten, die Ihnen gehört, müssen Sie sich zunächst einen Domänennamen von einer Domänenregistrierungstelle wie Namecheap oder Enom verschaffen und dann die entsprechenden DNS-Einträge konfigurieren.

      Sobald Sie für jeden Server einen A-Eintrag konfiguriert haben, können Sie mit Schritt 2 fortfahren. Stellen Sie sicher, dass Sie glusterN.example.com und glusterN durch den Domänennamen ersetzen, der auf den jeweiligen im Beispielbefehl verwiesenen Server auflöst.

      Wenn Sie Ihre Infrastruktur von DigitalOcean erhalten haben, könnten Sie Ihren Domänennamen DigitalOcean hinzufügen und für jeden Ihrer Server einen eindeutigen A-Eintrag erstellen.

      Öffnen Sie die Datei mit root-Berechtigungen mit einem Texteditor Ihrer Wahl auf jedem Ihrer Computer. Wir verwenden hier nano:

      Standardmäßig wird die Datei in etwa so aussehen (mit entfernten Kommentaren):

      /etc/hosts

      127.0.1.1 hostname hostname
      127.0.0.1 localhost
      
      ::1 ip6-localhost ip6-loopback
      fe00::0 ip6-localnet
      ff00::0 ip6-mcastprefix
      ff02::1 ip6-allnodes
      ff02::2 ip6-allrouters
      ff02::3 ip6-allhosts
      

      Fügen Sie auf einem Ihrer Ubuntu-Server unter der lokalen Hostdefinition die IP-Adresse der einzelnen Server hinzu, gefolgt von allen Namen, die Sie verwenden möchten, um auf sie in Befehlen verweisen zu können.

      Im folgenden Beispiel erhält jeder Server einen langen Hostnamen, der auf glusterN.example.com abgestimmt ist, und einen kurzen Hostnamen, der auf glusterN abgestimmt ist. Sie können die Abschnitte glusterN.example.com und glusterN jeder Zeile in einen beliebigen Namen – oder durch einzelne Leerzeichen getrennte Namen – ändern, die Sie für den Zugriff auf einzelne Server verwenden möchten. Beachten Sie jedoch, dass in diesem Tutorial durchgehend die folgenden Beispiele verwenden werden:

      Anmerkung: Wenn Ihre Server Teil eines Infrastrukturpools vom Typ Virtual Private Cloud sind, sollten Sie in der Datei /etc/hosts die privaten IP-Adressen der einzelnen Server anstelle ihrer öffentlichen IP-Adressen verwenden.

      /etc/hosts

      . . .
      127.0.0.1       localhost
      first_ip_address gluster0.example.com gluster0
      second_ip_address gluster1.example.com gluster1
      third_ip_address gluster2.example.com gluster2
      
      . . .
      

      Wenn Sie fertig damit sind, der Datei /etc/hosts eines Computers diese neuen Zeilen hinzuzufügen, kopieren Sie die Zeilen und fügen Sie sie den /etc/hosts-Dateien auf Ihren anderen Computern hinzu. Jede /etc/hosts-Datei sollte dieselben Zeilen enthalten und die IP-Adressen Ihrer Server mit den ausgewählten Namen verknüpfen.

      Speichern und schließen Sie dann die Datei. Wenn Sie nano verwendet haben, drücken Sie STRG+X, Y und dann ENTER​​​.

      Nachdem Sie die Auflösung der Hostnamen zwischen den einzelnen Servern konfiguriert haben, können Sie Befehle leichter ausführen, wenn Sie später einen Speicherpool und ein Volume einrichten. Als Nächstes führen Sie einen weiteren Schritt aus, der auf jedem Ihrer Server abgeschlossen werden muss. Und zwar fügen Sie jedem Ihrer drei Ubuntu-Server das offizielle Personal Package Archive (PPA) des Gluster-Projekts hinzu, um dafür zu sorgen, dass Sie die neueste Version von GlusterFS installieren können.

      Schritt 2 — Einrichten von Softwarequellen auf jedem Computer

      Zwar enthalten die standardmäßigen Ubuntu 20.04-APT-Repositorys GlusterFS-Pakete, doch handelt es sich dabei zum Zeitpunkt der Verfassung dieses Dokuments nicht um die aktuellsten Versionen. Eine Möglichkeit, die neueste stabile Version von GlusterFS (zum Zeitpunkt der Verfassung dieses Dokuments Version 7.6) zu installieren, besteht darin, jedem Ihrer drei Ubuntu-Server das offizielle PPA des Gluster-Projekts hinzuzufügen.

      Fügen Sie das PPA für die GlusterFS-Pakete hinzu, indem Sie auf jedem Server folgenden Befehl ausführen:

      • sudo add-apt-repository ppa:gluster/glusterfs-7

      Drücken Sie ENTER, wenn Sie dazu aufgefordert werden, um zu bestätigen, dass Sie das PPA tatsächlich hinzufügen möchten.

      Aktualisieren Sie nach dem Hinzufügen des PPA den lokalen Paketindex der einzelnen Server. Dadurch wird sich jeder Server der neu verfügbaren Pakete bewusst:

      Nachdem Sie das offizielle PPA des Gluster-Projekts den einzelnen Servern hinzugefügt und den lokalen Paketindex aktualisiert haben, können Sie die erforderlichen GlusterFS-Pakete installieren. Da zwei Ihrer drei Computer als Gluster-Server und der dritte Computer als Client fungieren werden, müssen Sie jedoch zwei separate Installations- und Konfigurationsverfahren befolgen. Zuerst installieren und richten Sie die Serverkomponenten ein.

      Schritt 3 — Installieren von Serverkomponenten und Erstellen eines Trusted Storage Pool

      Ein Speicherpool ist eine beliebige Menge an Speicherkapazität, die aus mehr als einer Speicherquelle aggregiert wird. In diesem Schritt konfigurieren Sie zwei Ihrer Server — gluster0 und gluster1 — als Clusterkomponenten.

      Installieren Sie sowohl auf gluster0 als auch gluster1 das Paket für GlusterFS-Server, indem Sie Folgendes eingeben:

      • sudo apt install glusterfs-server

      Drücken Sie auf Aufforderung Y und dann ENTER, um die Installation zu bestätigen.

      Der Installationsprozess konfiguriert GlusterFS automatisch so, dass eine Ausführung als systemd-Dienst erfolgt. Er sorgt jedoch nicht für einen automatischen Start des Diensts oder das Aktivieren zum Ausführen zur Startzeit.

      Um glusterd (den GlusterFS-Dienst) zu starten, führen Sie den Befehl systemctl start sowohl auf gluster0 als auch gluster1 aus:

      • sudo systemctl start glusterd.service

      Führen Sie dann folgenden Befehl auf beiden Servern aus. Dadurch wird der Dienst jedes Mal gestartet, wenn der Server gestartet wird:

      • sudo systemctl enable glusterd.service

      Anschließend können Sie den Status des Diensts auf einem oder beiden Servern überprüfen:

      • sudo systemctl status glusterd.service

      Wenn der Dienst erfolgreich ausgeführt wird, erhalten Sie eine Ausgabe, die wie folgt aussieht:

      Output

      ● glusterd.service - GlusterFS, a clustered file-system server Loaded: loaded (/lib/systemd/system/glusterd.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2020-06-02 21:32:21 UTC; 32s ago Docs: man:glusterd(8) Main PID: 14742 (glusterd) Tasks: 9 (limit: 2362) CGroup: /system.slice/glusterd.service └─14742 /usr/sbin/glusterd -p /var/run/glusterd.pid --log-level INFO

      Wenn Sie dem Leitfaden zur Ersteinrichtung des Servers gefolgt sind, haben Sie auf jedem Ihrer Computer eine Firewall mit UFW eingerichtet. Aus diesem Grund müssen Sie die Firewall für jeden Knoten öffnen, bevor Sie eine Verbindung zwischen ihnen herstellen und einen Speicherpool einrichten können.

      Der Gluster-Daemon nutzt Port 24007, sodass Sie jedem Knoten über die Firewall der einzelnen Knoten in Ihrem Speicherpool Zugriff auf den Port gewähren müssen. Führen Sie dazu folgenden Befehl auf gluster0 aus. Denken Sie daran, gluster1_ip_address in die IP-Adresse von gluster1 zu ändern:

      • sudo ufw allow from gluster1_ip_address to any port 24007

      Führen Sie dann folgenden Befehl auf gluster1 aus. Vergessen Sie auch hier nicht, gluster0_ip_address in die IP-Adresse von gluster0 zu ändern:

      • sudo ufw allow from gluster0_ip_address to any port 24007

      Außerdem müssen Sie Ihrem Clientcomputer (gluster2) Zugriff auf diesen Port gewähren. Andernfalls werden Sie später Probleme haben, wenn Sie versuchen, das Volumen bereitzustellen. Führen Sie sowohl auf gluster0 als auch gluster1 folgenden Befehl aus, um diesen Port für Ihren Clientcomputer zu öffnen:

      • sudo ufw allow from gluster2_ip_address to any port 24007

      Um sicherzustellen, dass keine anderen Computer auf einem der Server auf den Port von Gluster zugreifen können, fügen Sie dann die folgende Rahmenregel deny sowohl gluster0 als auch gluster1 hinzu:

      Sie können nun eine Verbindung zwischen gluster0 und gluster1 herstellen. Dazu müssen Sie auf einem Ihrer Knoten den Befehl gluster peer probe ausführen. Es spielt dabei keine Rolle, welchen Knoten Sie verwenden. Das folgende Beispiel veranschaulicht die Ausführung des Befehls auf gluster0:

      • sudo gluster peer probe gluster1

      Dieser Befehl weist gluster0 im Wesentlichen an, gluster1 zu vertrauen und als Teil seines Speicherpools zu registrieren. Wenn der Test erfolgreich war, wird folgende Ausgabe zurückgegeben:

      Output

      peer probe: success

      Sie können jederzeit überprüfen, ob die Knoten miteinander kommunizieren, indem Sie auf einem der Knoten den Befehl gluster peer status ausführen. In diesem Beispiel wird er auf gluster1 ausgeführt:

      Wenn Sie diesen Befehl auf gluster1 ausführen, wird eine Ausgabe angezeigt, die wie folgt aussieht:

      Output

      Number of Peers: 1 Hostname: gluster0.example.com Uuid: a3fae496-c4eb-4b20-9ed2-7840230407be State: Peer in Cluster (Connected)

      An diesem Punkt kommunizieren Ihre beiden Server miteinander und sind bereit, gemeinsam Speichervolumes zu erstellen.

      Schritt 4 — Einrichten eines Speichervolumes

      Denken Sie daran, dass das primäre Ziel dieses Tutorials in der Einrichtung eines redundanten Speicherpools besteht. Dazu richten Sie ein Volume mit Replikatfunktion ein, damit Sie mehrere Kopien Ihrer Daten speichern und verhindern können, dass Ihr Cluster einen Single Point of Failure aufweist.

      Um ein Volume zu erstellen, verwenden Sie den Befehl gluster volume create mit dieser allgemeinen Syntax:

      sudo gluster volume create volume_name replica number_of_servers domain1.com:/path/to/data/directory domain2.com:/path/to/data/directory force
      

      Das bedeuten die Argumente und Optionen des Befehls gluster volume create:

      • volume_name: Das ist der Name, mit dem Sie nach der Erstellung auf das Volume verweisen. Der folgende Beispielbefehl sorgt für die Erstellung eines Volumes namens volume1.
      • replica number_of_servers: Nach dem Namen des Volumes können Sie festlegen, welche Art von Volume Sie erstellen möchten. Denken Sie daran, dass das Ziel dieses Tutorials darin besteht, einen redundanten Speicherpool einzurichten, sodass wir den Volume-Typ replica wählen. Dies erfordert ein Argument, mit dem angegeben wird, auf wie viele Server die Daten des Volumes repliziert werden sollen (in diesem Tutorial 2).
      • domain1.com:/… und domain2.com:/…: Diese definieren die Computer und den Speicherort des Verzeichnisses der Bricks (eine GlusterFS-Bezeichnung für die grundlegende Speichereinheit des Systems), was alle Verzeichnisse auf allen Computern umfasst, die als Teil oder Kopie eines größeren Volumes dienen. So entsteht volume1. Im folgenden Beispiel wird im root-Verzeichnis beider Server ein Verzeichnis namens gluster-storage erstellt.
      • force: Diese Option sorgt für das Überschreiben aller Warnungen oder Optionen, die sonst auftreten und die Erstellung des Volumes unterbrechen würden.

      Anhand der in diesem Tutorial zuvor aufgeführten Konventionen können Sie diesen Befehl zur Erstellung eines Volumes ausführen. Beachten Sie, dass Sie den Befehl entweder auf gluster0 oder gluster1 ausführen können:

      • sudo gluster volume create volume1 replica 2 gluster0.example.com:/gluster-storage gluster1.example.com:/gluster-storage force

      Wenn das Volume erfolgreich erstellt wurde, erhalten Sie folgende Ausgabe:

      Output

      volume create: volume1: success: please start the volume to access data

      An diesem Punkt wurde Ihr Volume bereits erstellt, ist aber noch nicht aktiv. Sie können das Volume starten und zur Verwendung bereitstellen, indem Sie folgenden Befehl ausführen (erneut auf einem Ihrer beiden Gluster-Server):

      • sudo gluster volume start volume1

      Wenn das Volume korrekt gestartet wurde, erhalten Sie folgende Ausgabe:

      Output

      volume start: volume1: success

      Überprüfen Sie als Nächstes, ob das Volume online ist. Führen Sie auf einem Ihrer Knoten folgenden Befehl aus:

      • sudo gluster volume status

      Dadurch wird eine Ausgabe zurückgegeben, die der folgenden ähnelt:

      Output

      Status of volume: volume1 Gluster process TCP Port RDMA Port Online Pid ------------------------------------------------------------------------------ Brick gluster0.example.com:/gluster-storage 49152 0 Y 18801 Brick gluster1.example.com:/gluster-storage 49152 0 Y 19028 Self-heal Daemon on localhost N/A N/A Y 19049 Self-heal Daemon on gluster0.example.com N/A N/A Y 18822 Task Status of Volume volume1 ------------------------------------------------------------------------------ There are no active volume tasks

      Laut dieser Ausgabe sind die Bricks auf beiden Servern online.

      Als letzter Schritt zur Konfiguration Ihres Volumes müssen Sie die Firewall auf beiden Servern öffnen, damit Ihr Clientcomputer in der Lage ist, sich mit dem Volume zu verbinden und das Volume bereitzustellen. Gemäß der Beispielausgabe des vorherigen Befehls wird volume1 auf beiden Computern an Port 49152 ausgeführt. Dies ist der Standardport von GlusterFS für das erste Volumen. Weitere Volumes werden also Port 49153, dann 49154 usw. verwenden.

      Führen Sie sowohl auf gluster0 als auch gluster1 folgenden Befehl aus, um gluster2 über die jeweilige Firewall Zugriff auf diesen Port zu gewähren:

      • sudo ufw allow from gluster2_ip_address to any port 49152

      Fügen Sie dann für zusätzliche Sicherheit eine weitere deny-Rahmenregel für den Port des Volumes hinzu – sowohl auf gluster0 als auch gluster1. Dadurch wird sichergestellt, dass auf beiden Servern keine anderen Computer außer Ihrem Client auf das Volume zugreifen können:

      Nachdem Ihr Volume nun ausgeführt wird, können Sie Ihren Clientcomputer einrichten und remote nutzen.

      Schritt 5 — Installieren und Konfigurieren von Clientkomponenten

      Ihr Volume ist nun konfiguriert und zur Verwendung durch Ihren Clientcomputer verfügbar. Bevor Sie beginnen, müssen Sie jedoch das Paket glusterfs-client aus dem PPA installieren, das Sie in Schritt 1 auf Ihrem Clientcomputer eingerichtet haben. Die Abhängigkeiten dieses Pakets umfassen einige gemeinsame Bibliotheken und Übersetzermodule von GlusterFS sowie die für die Arbeit erforderlichen FUSE-Tools.

      Führen Sie folgenden Befehl auf gluster2 aus:

      • sudo apt install glusterfs-client

      Sie werden Ihr Remote-Speichervolume in Kürze auf Ihrem Clientcomputer bereitstellen. Bevor Sie dies tun können, müssen Sie einen Bereitstellungspunkt erstellen. Traditionell befindet sich dieser im Verzeichnis /mnt, doch kann jeder beliebige Ort verwendet werden.

      Erstellen Sie aus Gründen der Einfachheit auf Ihrem Clientcomputer ein Verzeichnis namens /storage-pool als Bereitstellungspunkt. Dieser Verzeichnisname beginnt mit einem Schrägstrich (/), der es im root-Verzeichnis platziert. Daher müssen Sie das Verzeichnis mit sudo-Berechtigungen erstellen:

      Jetzt können Sie das Remotevolume bereitstellen. Werfen Sie zuvor einen Blick auf die Syntax des Befehls mount, den Sie dazu verwenden werden:

      sudo mount -t glusterfs domain1.com:volume_name /path/to/mount/point
      

      mount ist ein Dienstprogramm in vielen Unix-ähnlichen Betriebssystemen. Es dient dazu, Dateisysteme (ob externe Speichergeräte wie SD-Karten bzw. USB-Sticks oder NAS-Systeme wie im Fall dieses Tutorials) im vorhandenen Dateisystem des Computers in Verzeichnissen bereitzustellen. Die von Ihnen verwendete mount-Befehlssyntax umfasst die Option -t, die drei Argumente erfordert: den Typ des Dateisystems, der bereitgestellt werden soll, das Gerät, auf dem sich das bereitzustellende Dateisystem befindet, und das Verzeichnis auf dem Client, in dem Sie das Volume bereitstellen möchten.

      Beachten Sie, dass das Geräteargument in dieser Beispielsyntax auf einen Hostnamen verweist, gefolgt von einem Doppelpunkt und dann dem Namen des Volumes. GlusterFS abstrahiert die tatsächlichen Speicherverzeichnisse auf jedem Host, was bedeutet, dass dieser Befehl nicht das Verzeichnis /gluster-storage, sondern vielmehr das Volume volume1 bereitstellt.

      Beachten Sie außerdem, dass Sie nur ein Mitglied des Speicherclusters angeben müssen. Dies kann einer der beiden Knoten sein, da der GlusterFS-Dienst sie als einen Computer behandelt.

      Führen Sie auf Ihrem Clientcomputer (gluster2) folgenden Befehl aus, um das Volume im von Ihnen erstellten Verzeichnis /storage-pool bereitzustellen:

      • sudo mount -t glusterfs gluster0.example.com:/volume1 /storage-pool

      Führen Sie danach den Befehl df aus. Dadurch wird für Dateisysteme, auf die der aufrufende Benutzer Zugriff hat, der verfügbare Speicherplatz angezeigt:

      Dieser Befehl zeigt an, dass das GlusterFS-Volume am richtigen Ort bereitgestellt wurde:

      Output

      Filesystem 1K-blocks Used Available Use% Mounted on . . . gluster0.example.com:/volume1 50633164 1938032 48695132 4% /storage-pool

      Jetzt können Sie mit der Prüfung fortfahren, ob alle Daten, die Sie in das Volume auf Ihrem Client schreiben, wie erwartet auf Ihren Serverknoten repliziert werden.

      Schritt 6 — Testen von Redundanzfunktionen

      Nachdem Sie Ihren Client zur Verwendung des Speicherpools und Volumes eingerichtet haben, können Sie seine Funktionalität testen.

      Navigieren Sie auf Ihrem Clientcomputer (gluster2) zum im vorherigen Schritt definierten Bereitstellungspunkt:

      Erstellen Sie dann einige Testdateien. Der folgende Befehl erstellt in Ihrem Speicherpool zehn separate leere Dateien:

      • sudo touch file_{0..9}.test

      Wenn Sie sich die zuvor auf den einzelnen Speicherhosts definierten Speicherverzeichnisse ansehen, werden Sie feststellen, dass alle diese Dateien in jedem System vorhanden sind.

      Auf gluster0:

      Output

      file_0.test file_2.test file_4.test file_6.test file_8.test file_1.test file_3.test file_5.test file_7.test file_9.test

      Und auch auf gluster1:

      Output

      file_0.test file_2.test file_4.test file_6.test file_8.test file_1.test file_3.test file_5.test file_7.test file_9.test

      Wie diese Ausgaben zeigen, wurden auch die Testdateien, die Sie dem Client hinzugefügt haben, in beide Knoten geschrieben.

      Sollte jemals einer der Knoten in Ihrem Speichercluster ausfallen, kann es vorkommen, dass er nicht mehr mit dem Speicherpool synchron ist, wenn Änderungen am Dateisystem vorgenommen werden. Wenn der Knoten wieder online ist, können Sie durch Ausführung eines Lesevorgangs am Bereitstellungspunkt des Clients den Knoten auf fehlende Dateien aufmerksam machen:

      Nachdem Sie verifiziert haben, dass Ihr Speichervolumen korrekt bereitgestellt wurde und Sie Daten an beiden Computer im Cluster replizieren können, können Sie den Zugriff auf den Speicherpool sperren.

      Schritt 7 — Beschränken der Redundanzfunktionen

      Gegenwärtig kann sich jeder Computer ganz ohne Einschränkungen mit Ihrem Speichervolume verbinden. Sie können das ändern, indem Sie die Option auth.allow festlegen, um die IP-Adressen der einzelnen Clients zu definieren, die Zugriff auf das Volume haben sollen.

      Wenn Sie die Konfiguration /etc/hosts verwenden, werden die Namen, die Sie für die Server festgelegt haben, nicht korrekt geroutet. Sie müssen stattdessen eine statische IP-Adresse verwenden. Wenn Sie jedoch DNS-Einträge verwenden, wird hier der Domänenname, den Sie konfiguriert haben, funktionieren.

      Führen Sie auf einem Ihrer beiden Speicherknoten (gluster0 oder gluster1) folgenden Befehl aus:

      • sudo gluster volume set volume1 auth.allow gluster2_ip_address

      Wenn der Befehl erfolgreich abgeschlossen wird, gibt er folgende Ausgabe zurück:

      Output

      volume set: success

      Wenn Sie die Einschränkung irgendwann entfernen möchten, können Sie Folgendes eingeben:

      • sudo gluster volume set volume1 auth.allow *

      Dadurch werden wieder Verbindungen von beliebigen Computern aus möglich. Dies ist nicht sicher, kann aber für die Fehlerbehebung nützlich sein.

      Wenn Sie über mehrere Clients verfügen, können Sie ihre IP-Adressen oder Domänennamen gleichzeitig angeben (je nachdem, ob Sie /etc/hosts oder die Auflösung von DNS-Hostnamen verwenden), getrennt durch Kommas:

      • sudo gluster volume set volume1 auth.allow gluster_client1_ip,gluster_client2_ip

      Ihr Speicherpool ist nun konfiguriert, gesichert und einsatzbereit. Als Nächstes werden Sie einige Befehle kennen lernen, die Ihnen helfen, Informationen über den Status Ihres Speicherpools zu erhalten.

      Schritt 8 — Abrufen von Informationen über den Speicherpool mit GlusterFS-Befehlen

      Wenn Sie bestimmte Einstellungen für Ihren GlusterFS-Speicher ändern, können Sie den Überblick darüber verlieren, welche Optionen Sie zur Verfügung haben, welche Volumes live sind und welche Knoten mit einzelnen Volumes verknüpft sind.

      Es gibt verschiedene Befehle, die auf Ihren Knoten verfügbar sind, mit denen Sie diese Daten abrufen und mit Ihrem Speicherpool interagieren können.

      Wenn Sie Informationen über die einzelnen Volumes wünschen, führen Sie den Befehl gluster volume info aus:

      Output

      Volume Name: volume1 Type: Replicate Volume ID: a1e03075-a223-43ab-a0f6-612585940b0c Status: Started Snapshot Count: 0 Number of Bricks: 1 x 2 = 2 Transport-type: tcp Bricks: Brick1: gluster0.example.com:/gluster-storage Brick2: gluster1.example.com:/gluster-storage Options Reconfigured: auth.allow: gluster2_ip_address transport.address-family: inet storage.fips-mode-rchecksum: on nfs.disable: on performance.client-io-threads: off

      Um Informationen über Peers zu erhalten, mit denen dieser Knoten verbunden ist, können Sie Folgendes eingeben:

      Number of Peers: 1
      
      Hostname: gluster0.example.com
      Uuid: cb00a2fc-2384-41ac-b2a8-e7a1793bb5a9
      State: Peer in Cluster (Connected)
      

      Wenn Sie genaue Informationen zur Ausführung einzelner Knoten wünschen, können Sie ein Profil für ein Volume erstellen, indem Sie Folgendes eingeben:

      • sudo gluster volume profile volume_name start

      Nach erfolgreicher Ausführung dieses Befehls können Sie die gesammelten Informationen abrufen, indem Sie Folgendes eingeben:

      • sudo gluster volume profile volume_name info

      Output

      Brick: gluster0.example.com:/gluster-storage -------------------------------------------- Cumulative Stats: %-latency Avg-latency Min-Latency Max-Latency No. of calls Fop --------- ----------- ----------- ----------- ------------ ---- 0.00 0.00 us 0.00 us 0.00 us 30 FORGET 0.00 0.00 us 0.00 us 0.00 us 36 RELEASE 0.00 0.00 us 0.00 us 0.00 us 38 RELEASEDIR Duration: 5445 seconds Data Read: 0 bytes Data Written: 0 bytes Interval 0 Stats: %-latency Avg-latency Min-Latency Max-Latency No. of calls Fop --------- ----------- ----------- ----------- ------------ ---- 0.00 0.00 us 0.00 us 0.00 us 30 FORGET 0.00 0.00 us 0.00 us 0.00 us 36 RELEASE 0.00 0.00 us 0.00 us 0.00 us 38 RELEASEDIR Duration: 5445 seconds Data Read: 0 bytes Data Written: 0 bytes . . .

      Führen Sie wie zuvor gezeigt den Befehl gluster volume status aus, um eine Liste aller zu GlusterFS zugehörigen Komponenten zu erhalten, die auf den einzelnen Knoten ausgeführt werden:

      • sudo gluster volume status

      Output

      Status of volume: volume1 Gluster process TCP Port RDMA Port Online Pid ------------------------------------------------------------------------------ Brick gluster0.example.com:/gluster-storage 49152 0 Y 19003 Brick gluster1.example.com:/gluster-storage 49152 0 Y 19040 Self-heal Daemon on localhost N/A N/A Y 19061 Self-heal Daemon on gluster0.example.com N/A N/A Y 19836 Task Status of Volume volume1 ------------------------------------------------------------------------------ There are no active volume tasks

      Wenn Sie Ihre GlusterFS-Speichervolumes verwalten möchten, kann es eine gute Idee sein, die GlusterFS-Konsole zu nutzen. Dadurch können Sie mit Ihrer GlusterFS-Umgebung interagieren, ohne zunächst sudo gluster eingeben zu müssen:

      Daraufhin wird eine Eingabeaufforderung angezeigt, in der Sie Ihre Befehle eingeben können. help (Hilfe) ist eine gute Methode, um sich einen Überblick zu verschaffen:

      Output

      peer help - display help for peer commands volume help - display help for volume commands volume bitrot help - display help for volume bitrot commands volume quota help - display help for volume quota commands snapshot help - display help for snapshot commands global help - list global commands

      Führen Sie anschließend exit aus, um die Gluster-Konsole zu verlassen:

      Nun können Sie damit beginnen, GlusterFS mit der nächsten Anwendung zu integrieren.

      Zusammenfassung

      Durch Absolvieren dieses Tutorials haben Sie ein redundantes Speichersystem eingerichtet, mit dem Sie gleichzeitig auf zwei separate Server schreiben können. Das kann für verschiedene Anwendungen nützlich sein und dafür sorgen, dass Ihre Daten verfügbar bleiben, auch wenn ein Server ausfällt.



      Source link

      Installieren und Konfigurieren von Postfix unter Ubuntu 20.04


      Eine frühere Version dieses Tutorials wurde von Justin Ellingwood verfasst

      Einführung

      Postfix ist ein beliebter Open-Source Mail Transfer Agent (MTA), der zur Weiterleitung und Zustellung von E-Mails auf einem Linux-System verwendet werden kann. Schätzungen zufolge führen etwa 25 % der öffentlichen Mail-Server im Internet Postfix aus.

      In diesem Leitfaden zeigen wir Ihnen, wie Sie Postfix auf einem Ubuntu 20.04 Server installieren und konfigurieren. Anschließend testen Sie, ob Postfix in der Lage ist, E-Mails korrekt weiterzuleiten, indem Sie s-nail, einen Mail User Agent (MUA), auch als E-Mail-Client bekannt, installieren.

      Beachten Sie, dass das Ziel dieses Tutorials darin besteht, Ihnen dabei zu helfen, Postfix schnell zum Laufen zu bringen, und zwar mit nur einigen grundlegenden E-Mail-Funktionen. Am Ende dieses Leitfadens werden Sie zwar noch nicht über einen voll funktionsfähigen E-Mail-Server verfügen, aber einige der grundlegenden Komponenten einer solchen Einrichtung werden Ihnen den Einstieg erleichtern.

      Voraussetzungen

      Um diesem Leitfaden zu folgen, benötigen Sie Folgendes:

      • Einen Server mit Ubuntu 20.04, der als Postfix Mail-Server fungiert. Dieser Server sollte über einen Nicht-root-Benutzer mit sudo-Berechtigungen und eine mit UFW konfigurierte Firewall verfügen. Um das einzurichten, können Sie unserem Leitfaden zur Ersteinrichtung des Servers unter Ubuntu 20.04 folgen.
      • Einen vollständig qualifizierten Domänennamen, der auf Ihren Ubuntu 20.04-Server verweist. Hilfe bei der Einrichtung Ihres Domänennamens mit DigitalOcean finden Sie, indem Sie unserer Dokumentation Domänen und DNS-Netzwerke folgen. Beachten Sie, dass Sie, wenn Sie den Zugriff auf E-Mails von einem externen Standort planen, sicherstellen müssen, dass Sie auch über einen MX-Datensatz verfügen, der auf auf Ihren Mail-Server verweist.

      Beachten Sie, dass dieses Tutorial davon ausgeht, dass Sie einen Host konfigurieren, der den FQDN von mail.example.com hat. Falls erforderlich, stellen Sie sicher, dass Sie example.com oder mail.example.com so ändern, dass sie Ihren eigenen FQDN widerspiegeln.

      Schritt 1 — Installieren von Postfix

      Postfix ist in den Standard-Repositorys von Ubuntu enthalten, sodass Sie es mit APT installieren können.

      Um zu beginnen, aktualisieren Sie Ihren lokalen apt-Paketcache:

      Installieren Sie dann das Paket postfix mit dem folgenden Beachten Sie, dass wir hier die Umgebungssvariable DEBIAN_PRIORITY=low an diesen Installationsbefehl übergeben. Dies führt dazu, dass der Installationsprozess Sie auffordert, einige zusätzliche Optionen zu konfigurieren:

      • sudo DEBIAN_PRIORITY=low apt install postfix

      Dieser Installationsprozess öffnet eine Reihe von interaktiven Eingabeaufforderungen. Verwenden Sie für die Zwecke dieses Tutorials die folgenden Informationen, um Ihre Eingabeaufforderungen auszufüllen:

      • General type of mail configuration? Wählen Sie hierfür Internet Site, da dies unseren Infrastrukturanforderungen entspricht.
      • System mail name: Dies ist die Basisdomäne, die zur Erstellung einer gültigen E-Mail-Adresse verwendet wird, wenn nur der Kontoteil der Adresse angegeben wird. Nehmen wir beispielsweise an, dass der Hostname Ihres Servers mail.example.com lautet. Wahrscheinlich möchten Sie den System-Mail-Namen auf example.com setzen, sodass Postfix bei der Angabe des Benutzernamens user1 die Adresse user1@example.com verwendet.
      • Root and postmaster mail recipient: Dies ist das Linux-Konto, das an root@ und postmaster@ adressierte Mail weitergeleitet wird. Verwenden Sie hierfür Ihr primäres Konto. In diesem Beispielfall sammy.
      • Other destinations to accept mail for: Dies definiert die E-Mail-Ziele, die diese Postfix-Instanz akzeptiert. Wenn Sie weitere Domänen hinzufügen müssen, für deren Empfang dieser Server verantwortlich ist, fügen Sie diese hier hinzu. Andernfalls ist die Standardeinstellung ausreichend.
      • Force synchronous updates on mail queue?: Da Sie wahrscheinlich ein journalisiertes Dateisystem verwenden, akzeptieren Sie hier No.
      • Local networks: Dies ist eine Liste der Netzwerke, für die Ihr Mail-Server für die Weiterleitung von Nachrichten konfiguriert ist. Die Standardeinstellung wird für die meisten Szenarien funktionieren. Wenn Sie sie jedoch modifizieren möchten, stellen Sie sicher, dass Sie in Bezug auf den Netzwerkbereich sehr restriktiv sind.
      • Mailbox size limit: Dies kann verwendet werden, um die Größe von Nachrichten zu begrenzen. Eine Einstellung auf 0 deaktiviert jede Größenbeschränkung.
      • Local address extension character: Dies ist as Zeichen, das verwendet werden kann, um den regulären Teil der Adresse von einer Erweiterung zu trennen (verwendet zur Erstellung dynamischer Aliase) Die Standardeinstellung + funktioniert für dieses Tutorial.
      • Internet protocols to use: Wählen Sie, ob die IP-Version, die Postfix unterstützt, eingeschränkt werden soll. Wählen Sie für die Zwecke dieses Tutorials all aus.

      Um genau zu sein, sind dies die in diesem Leitfaden verwendeten Einstellungen:

      • General type of mail configuration?: Internet Site
      • System mail name: example.com (nicht mail.example.com)
      • Root and postmaster mail recipient: Der Benutzername Ihres primären Linux-Kontos (in unserem Beispiel sammy).
      • Other destinations to accept mail for: $myhostname, example.com, mail.example.com, localhost.example.com, localhost
      • Force synchronous updates on mail queue?: No
      • Local networks: 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
      • Mailbox size limit: 0
      • Local address extension character: +
      • Internet protocols to use: all

      Anmerkung: Wenn Sie jemals zurückkehren müssen, um diese Einstellungen zu ändern, können Sie dies durch die folgende Eingabe tun:

      • sudo dpkg-reconfigure postfix

      Die Eingabeaufforderungen werden mit Ihren vorherigen Antworten vorausgefüllt.

      Wenn der Installationsprozess abgeschlossen ist, können Sie einige Aktualisierungen an Ihrer Postfix-Konfiguration vornehmen.

      Schritt 2 — Ändern der Postfix-Konfiguration

      Jetzt können Sie einige Einstellungen anpassen, zu denen Sie bei der Paketinstallation nicht aufgefordert wurden. Viele der Konfigurationseinstellungen von Postfix sind in der Datei /etc/postfix/main.cf definiert. Anstatt diese Datei direkt zu bearbeiten, können Sie den Befehl postconf von Postfix verwenden, um Konfigurationseinstellungen abzufragen oder festzulegen.

      Legen Sie zunächst den Speicherort für das Postfach Ihres Nicht-root-Ubuntu-Benutzers fest. In diesem Leitfaden verwenden wir das Format Maildir, das Nachrichten in einzelne Dateien trennt, die dann basierend auf Benutzeraktionen zwischen Verzeichnissen verschoben werden. Die alternative Option, die in diesem Leitfaden nicht abgedeckt ist, ist das mbox-Format, das alle Nachrichten innerhalb einer einzigen Datei speichert.

      Setzen Sie die Variable home_mailbox auf Maildir/. Später erstellen Sie eine Verzeichnisstruktur unter diesem Namen innerhalb des Home-Verzeichnisses Ihres Benutzers. Konfigurieren Sie home_mailbox durch Eingabe von:

      • sudo postconf -e 'home_mailbox= Maildir/'

      Als Nächstes legen Sie den Speicherort für die Tabelle virtual_alias_maps fest, die beliebige E-Mail-Konten an Linux-Systemkonten abbildet. Führen Sie den folgenden Befehl aus, der den Tabellenspeicherort einer Hash-Datenbankdatei namens /etc/postfix/virtual zuordnet:

      • sudo postconf -e 'virtual_alias_maps= hash:/etc/postfix/virtual'

      Nachdem Sie nun den Speicherort der virtuellen Zuordnungsdatei in Ihrer Datei main.cf definiert haben, können Sie die Datei selbst erstellen und mit der Zuordnung von E-Mail-Konten zu Benutzerkonten auf Ihrem Linux-System beginnen. Erstellen Sie die Datei mit Ihrem bevorzugten Texteditor; in diesem Beispiel verwenden wir nano:

      • sudo nano /etc/postfix/virtual

      Listen Sie alle Adressen auf, für die Sie E-Mail akzeptieren möchten, gefolgt von einem Leerzeichen und dem Linux-Benutzer, an den die E-Mail zugestellt werden soll.

      Wenn Sie beispielsweise E-Mails bei contact@example.com und admin@example.com akzeptieren möchten und diese E-Mails an den Linux-Benutzer sammy zugestellt werden sollen, können Sie Ihre Datei wie folgt einrichten:

      /etc/postfix/virtual

      contact@example.com sammy
      admin@example.com sammy
      

      Nachdem Sie alle Adressen den entsprechenden Serverkonten zugeordnet haben, speichern und schließen Sie die Datei. Wenn Sie nano verwendet haben, drücken Sie STRG+X, Y, dann ENTER.

      Wenden Sie die Zuordnung durch die folgende Eingabe an:

      • sudo postmap /etc/postfix/virtual

      Starten Sie den Postfix-Prozess neu, um sicherzustellen, dass alle Ihre Änderungen angewendet wurden:

      • sudo systemctl restart postfix

      Wenn Sie dem Leitfaden zur Ersteinrichtung des Servers gefolgt sind, der als Voraussetzung gilt, haben Sie eine mit UFW konfigurierte Firewall. Diese Firewall blockiert standardmäßig externe Verbindungen zu Diensten auf Ihrem Server, es sei denn, diese Verbindungen werden ausdrücklich zugelassen. Sie müssen daher eine Firewall-Regel hinzufügen, um eine Ausnahme für Postfix zuzulassen.

      Sie können Verbindungen zu dem Dienst zulassen, indem Sie Folgendes eingeben:

      Damit ist Postfix konfiguriert und bereit, externe Verbindungen zu akzeptieren. Sie sind jedoch noch nicht bereit, es mit einem Mail-Client auszutesten. Bevor Sie einen Client installieren und ihn für die Interaktion mit der an Ihren Server zugestellten E-Mail verwenden können, müssen Sie einige Änderungen an der Einrichtung Ihres Ubuntu-Servers vornehmen.

      Schritt 3 — Installieren des Mail-Clients und Initialisieren der Maildir-Struktur

      Um mit der zugestellten Mail zu interagieren, führt Sie dieser Schritt durch den Prozess des Installierens des Pakets s-nail. Dies ist eine funktionsreiche Variante des BSD-xmail-Clients, die das Maildir-Format korrekt verarbeiten kann.

      Vor dem Installieren des Clients wäre es jedoch ratsam, sicherzustellen, dass Ihre Umgebungsvariable MAIL korrekt festgelegt ist. s-nail wird nach dieser Variable suchen, um herauszufinden, wo die Mail für Ihren Benutzer zu finden ist.

      Um sicherzustellen, dass die Variable MAIL unabhängig davon festgelegt ist, wie Sie auf Ihr Konto zugreifen – ob beispielsweise über ssh, su, su- oder sudo – müssen Sie die Variable in der Datei /etc/bash.bashrc festlegen und sie zu einer Datei innerhalb von /etc/bash.bashrc hinzufügen, um sicherzustellen, dass sie standardmäßig für alle Benutzer festgelegt ist.

      Um die Variable zu diesen Dateien hinzuzufügen, geben Sie Folgendes ein:

      • echo 'export MAIL=~/Maildir' | sudo tee -a /etc/bash.bashrc | sudo tee -a /etc/profile.d/mail.sh

      Um die Variable in Ihre aktuelle Sitzung einzulesen, rufen Sie die Datei /etc/profile.d/mail.sh auf:

      • source /etc/profile.d/mail.sh

      Installieren Sie dann den E-Mail-Client s-nail mit APT:

      Bevor Sie den Client ausführen, müssen Sie noch einige Einstellungen vornehmen: Öffnen Sie die Datei /etc/s-nail.rc in Ihrem Editor:

      Fügen Sie am Ende der Datei die folgenden Optionen hinzu:

      /etc/s-nail.rc

      . . .
      set emptystart
      set folder=Maildir
      set record=+sent
      

      Diese Zeilen bewirken Folgendes:

      • set emptystart: ermöglicht das Öffnen des Clients auch mit einem leeren Postfach
      • set folder=Maildir: setzt das Verzeichnis Maildir auf die interne Folder-Variable
      • set record=+sent erzeugt eine mbox-Datei sent zum Speichern gesendeter E-Mails in dem Verzeichnis, das als Variable folder festgelegt ist, in diesem Fall Maildir

      Wenn Sie fertig sind, speichern und schließen Sie die Datei. Sie sind nun bereit, die Maildir-Struktur Ihres Systems zu initialisieren.

      Eine schnelle Möglichkeit, die Maildir-Struktur in Ihrem Home-Verzeichnis zu erstellen, besteht darin, sich selbst mit dem Befehl s-nail eine E-Mail zu senden. Da die Datei sent erst zur Verfügung steht, wenn Maildir erstellt ist, sollten Sie das Schreiben an diese Datei für diese erste E-Mail deaktivieren. Führen Sie dies durch die Übergabe der Option -Snorecord aus.

      Senden Sie die E-Mail, indem Sie einen Zeichenfolge an den Befehl s-nail übergeben. Passen Sie den Befehl so an, dass Ihr Linux-Benutzer als Empfänger markiert wird:

      • echo 'init' | s-nail -s 'init' -Snorecord sammy

      Anmerkung: Sie erhalten möglicherweise die folgende Antwort:

      Output

      Can't canonicalize "/home/sammy/Maildir"

      Dies ist normal und kann nur beim Senden dieser ersten Nachricht erscheinen.

      Sie können überprüfen, ob das Verzeichnis erstellt wurde, indem Sie nach Ihrem Verzeichnis ~/Maildir suchen:

      Sie werden sehen, dass die Verzeichnisstruktur erstellt wurde und dass sich eine neue Nachrichtendatei im Verzeichnis ~/Maildir/new befindet:

      Output

      /home/sammy/Maildir/: cur new tmp /home/sammy/Maildir/cur: /home/sammy/Maildir/new: 1463177269.Vfd01I40e4dM691221.mail.example.com /home/sammy/Maildir/tmp:

      Nachdem die Verzeichnisstruktur nun erstellt wurde, können Sie den s-nail-Client testen, indem Sie die von Ihnen gesendete init-Nachricht anzeigen und eine Nachricht an eine externe E-Mail-Adresse senden.

      Schritt 5 – Testen des Clients

      Führen Sie zum Öffnen des Clients den Befehl s-nail aus:

      In Ihrer Konsole sehen Sie einen rudimentären Posteingang, in dem die init-Nachricht wartet:

      Output

      s-nail version v14.9.15. Type `?' for help "/home/sammy/Maildir": 1 message 1 new >N 1 sammy@example.com 2020-05-19 15:40 14/392 init

      Drücken Sie ENTER, um die Nachricht anzuzeigen:

      Output

      [-- Message 1 -- 14 lines, 369 bytes --]: From sammy@example.com Tue May 19 15:40:48 2020 Date: Tue, 19 May 2020 15:40:48 +0000 To: sammy@example.com Subject: init Message-Id: <20160513220749.A278F228D9@mail.example.com> From: sammy@example.com init

      Sie können zurück zu der Nachrichtenliste gelangen, indem Sie h eingeben und dann ENTER drücken.

      Output

      >R 1 sammy@example.com 2020-05-19 15:40 14/392 init

      Beachten Sie, dass die Nachricht jetzt den Status R hat, was anzeigt, dass sie gelesen wurde.

      Da diese Nachricht nicht sehr nützlich ist, können Sie sie löschen, indem Sie d und dann ENTER drücken.

      Um zurück zum Terminal zu gelangen, geben Sie q und dann ENTER ein:

      Prüfen Sie abschließend, ob s-nail in der Lage ist, E-Mail-Nachrichten korrekt zu senden. Dazu können Sie den Inhalt einer Textdatei an den s-nail-Prozess übergeben, wie Sie es mit der init-Nachricht getan haben, die Sie im vorherigen Schritt gesendet haben.

      Beginnen Sie mit dem Schreiben einer Testnachricht in einem Texteditor:

      Geben Sie im Editor den Text ein, den Sie senden möchten:

      ~/test_message

      Hello,
      
      This is a test.  Please confirm receipt!
      

      Speichern und schließen Sie die Datei, nachdem Sie Ihre Nachricht geschrieben haben.

      Verwenden Sie dann den Befehl cat, um die Nachricht an den s-nail-Prozess zu übergeben. Sie können dies mit dem folgenden Beispiel tun, das diese Optionen verwendet:

      • -s: Dies definiert die Betreffzeile der E-Mail-Nachricht
      • -r: Eine optionale Änderung des Felds „Von:“ der E-Mail. Standardmäßig wird der Linux-Benutzer, unter dem Sie angemeldet sind, zum Ausfüllen dieses Feldes verwendet. Die Option -r ermöglicht es Ihnen, diese mit einer gültigen Adresse zu überschreiben, z. B. mit einer der Adressen, die Sie in der Datei /etc/postfix/virtual definiert haben. Zur Veranschaulichung verwendet der folgende Befehl contact@example.com.

      Stellen Sie außerdem sicher, dass Sie user@email.com in eine gültige E-Mail-Adresse ändern, auf die Sie Zugriff haben:

      • cat ~/test_message | s-nail -s 'Test email subject line' -r contact@example.com user@email.com

      Navigieren Sie dann zum Posteingang für die E-Mail-Adresse, an die Sie die Nachricht geschickt haben. Dort sehen Sie Ihre Nachricht fast sofort warten.

      Anmerkung: Wenn sich die Nachricht nicht in Ihrem Posteingang befindet, wurde sie möglicherweise an Ihren Spam-Ordner geleitet.

      Sie können Ihre gesendeten Nachrichten in Ihrem s-nail-Client anzeigen. Starten Sie den interaktiven Client erneut:

      Sie können Ihre gesendeten Nachrichten in dem E-Mail-Client anzeigen, indem Sie Folgendes eingeben:

      Die Ausgabe sieht dann so aus:

      Output

      +[/home/sammy/Maildir/]sent: 1 message 1 new ▸N 1 contact@example.com 2020-05-19 15:47 12/297 Test email subject line

      Sie können gesendete Mail mit den gleichen Befehlen verwalten, die Sie für die eingehende Mail verwenden.

      Zusammenfassung

      Sie haben Postfix nun auf Ihrem Ubuntu 20.04-Server konfiguriert. Die Verwaltung von E-Mail-Servern kann für neue Systemadministratoren eine schwierige Aufgabe sein, aber mit dieser Konfiguration sollten Sie über ausreichend MTA-E-Mail-Funktionen verfügen, um sofort loslegen zu können.



      Source link