Benutzer-Werkzeuge

Webseiten-Werkzeuge


tachtler:postfix_centos_7_-_multiple_instanzen

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Nächste ÜberarbeitungBeide Seiten der Revision
tachtler:postfix_centos_7_-_multiple_instanzen [2019/05/18 06:32] klaustachtler:postfix_centos_7_-_multiple_instanzen [2019/05/18 23:17] – [Konfiguration: Grundlagenerweiterung] klaus
Zeile 1: Zeile 1:
 ====== Postfix CentOS 7 - Multiple Instanzen ====== ====== Postfix CentOS 7 - Multiple Instanzen ======
  
-[[http://www.postfix.org/|{{:tachtler:index:postfix-48x48.png }}]] [[http://www.postfix.org/|Postfix]] und dessen Fähigkeit zur Verwaltung mehrerer Postfix-Instanzen auf einem einzigen Host mit dem postmulti(1)-Instanzmanager soll in nachfolgender Dokumentation beschrieben werden. +[[http://www.postfix.org/|{{:tachtler:index:postfix-48x48.png }}]] [[http://www.postfix.org/|Postfix]] und dessen Fähigkeit zur Verwaltung mehrerer Postfix-Instanzen auf einem einzigen Host mit dem ''postmulti''-Instanzmanager soll in nachfolgender Dokumentation beschrieben werden. Weitere Informationen zum ''postfix-wrapper'' für Hintergrundinformationen über das Instanzmanagement-Framework und über die Bereitstellung eines benutzerdefinierten Instanzmanagers folgen ebenfalls in der nachfolgenden Dokumentation.
  
 :!: **HINWEIS** - **Multi-Instanz-Unterstützung ist ab Postfix Version 2.6 verfügbar!** :!: **HINWEIS** - **Multi-Instanz-Unterstützung ist ab Postfix Version 2.6 verfügbar!**
 +
 +Eine einzelne [[http://www.postfix.org/|Postfix]]-Konfiguration kann viele verschiedene Dienste bereitstellen, aber es kann ein komplexes Zusammenspiel von Einstellungen erforderlich sein, z.B. mit ''master.cf''-Optionen, die die ''main.cf''-Einstellungen überschreiben. Eine Ansicht, dass mehrere [[http://www.postfix.org/|Postfix]]-Instanzen ein einfacherer Weg zur Konfiguration eines multifunktionalen [[http://www.postfix.org/|Postfix]]-Systems sein können, soll nachfolgend beschrieben werden.
 +
 +:!: **WICHTIG** - **Bei mehreren [[http://www.postfix.org/|Postfix]]-Instanzen hat jede Instanz ihre eigenen Verzeichnisse für Konfigurations-, Warteschlangen- und Datendateien, aber sie teilt alle [[http://www.postfix.org/|Postfix]]-Programm- und Dokumentationsdateien mit anderen Instanzen.** 
 +
 +Da es nicht die einzige richtige Möglichkeit gibt, ein System zu konfigurieren, wäre eine möglicher Ansatz, das zu wählen, was eine mögliche Konfiguration am bequemsten macht. Wenn verschiedene [[http://www.postfix.org/|Postfix]]-Dienste keine inkompatiblen ''main.cf'' oder ''master.cf''-Einstellungen beinhalten und ohne komplexe Tricks miteinander kombiniert werden können, dann kann eine einzige monolithische Konfiguration der einfachste Ansatz sein.
 +
 +Der Zweck der **Multi-Instanz-Unterstützung** in [[http://www.postfix.org/|Postfix]] ist nicht, zwingend, mehrere [[http://www.postfix.org/|Postfix]]-Instanzen zu erstellen, sondern Wahlmöglichkeiten anzubieten. Mehrere Instanzen ergeben die Freiheit, jede [[http://www.postfix.org/|Postfix]]-Instanz auf eine einzelne Aufgabe abzustimmen, die diese dann gut kann, und Instanzen zu kompletten Systemen zu kombinieren.
 +
 +Mit der Einführung des Dienstprogramms **''postmulti''** und der Reduzierung des Platzbedarfs einer sekundären [[http://www.postfix.org/|Postfix]]-Instanz auf nur eine ''main.cf''- und ''master.cf''-Datei (**andere Dateien befinden sich nun an gemeinsamen Standorten**) hoffen die Entwickler, dass die Verwendung mehrerer Instanzen einfacher ist als dies zuvor war. 
  
 [[http://www.postfix.org/|Postfix]] wird von [[https://en.wikipedia.org/wiki/Wietse_Venema|Wietse Venema]] entwickelt. [[http://www.postfix.org/|Postfix]] wird von [[https://en.wikipedia.org/wiki/Wietse_Venema|Wietse Venema]] entwickelt.
Zeile 18: Zeile 28:
 Password: Password:
 </code> </code>
 +
 +===== Vorbereitungen =====
 +
 +:!: **HINWEIS** - **Als __Ausgangssituation__ wird die __Standard__-Konfiguration von [[http://www.postfix.org/|Postfix]] verwendet, so wie diese unter [[https://www.centos.org/|CentOS]]-7 ausgeliefert wird, damit nicht durch weitere Konfigurationen von der wesentliche [[http://www.postfix.org/|Postfix]]-Instanzkonfiguration abgelegt wird!**
 +
 +Nachfolgende die Verzeichnisstruktur der **Standard**-[[http://www.postfix.org/|Postfix]]-Konfiguration **__VOR__** dem Einsatz von Muliplen-[[http://www.postfix.org/|Postfix]]-Instanzen:
 +<code>
 +# ls -l /etc/postfix/
 +total 148
 +-rw-r--r-- 1 root root 21006 Oct 22  2018 access
 +-rw-r--r-- 1 root root 11683 Oct 22  2018 canonical
 +-rw-r--r-- 1 root root  9904 Oct 22  2018 generic
 +-rw-r--r-- 1 root root 21548 Oct 22  2018 header_checks
 +-rw-r--r-- 1 root root 27221 May 18 06:23 main.cf
 +-rw-r--r-- 1 root root  6258 May 18 06:22 master.cf
 +-rw-r--r-- 1 root root  6816 Oct 22  2018 relocated
 +-rw-r--r-- 1 root root 12549 Oct 22  2018 transport
 +-rw-r--r-- 1 root root 12510 Oct 22  2018 virtual
 +</code>
 +
 +Nachfolgende die **Standard**-[[http://www.postfix.org/|Postfix]]-Konfiguration **__VOR__** dem Einsatz von Muliplen-[[http://www.postfix.org/|Postfix]]-Instanzen:
 +<code>
 +# postconf -n 
 +postconf: warning: inet_protocols: disabling IPv6 name/address support: Address family not supported by
 +protocol
 +alias_database = hash:/etc/aliases
 +alias_maps = hash:/etc/aliases
 +command_directory = /usr/sbin
 +config_directory = /etc/postfix
 +daemon_directory = /usr/libexec/postfix
 +data_directory = /var/lib/postfix
 +debug_peer_level = 2
 +debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name
 +$process_id & sleep 5
 +html_directory = no
 +inet_interfaces = localhost
 +inet_protocols = all
 +mail_owner = postfix
 +mailq_path = /usr/bin/mailq.postfix
 +manpage_directory = /usr/share/man
 +mydestination = $myhostname, localhost.$mydomain, localhost
 +newaliases_path = /usr/bin/newaliases.postfix
 +queue_directory = /var/spool/postfix
 +readme_directory = /usr/share/doc/postfix-2.11.11/README_FILES
 +sample_directory = /usr/share/doc/postfix-2.11.11/samples
 +sendmail_path = /usr/sbin/sendmail.postfix
 +setgid_group = postdrop
 +unknown_local_recipient_reject_code = 550
 +</code>
 +
 +:!: **HINWEIS** - **IPv6 ist auf diesem Server __deaktiviert__, daher die Fehlermeldung in der ersten Zeile!**
 +
 +:!: **HINWEIS** - Um die oben gezeigte Fehlermeldung auf einem Server **__ohne__ IPv6-Unterstützung** -  **vorab** schnell zu beseitigen, kann nachfolgender Befehl ausgeführt werden:
 +<code>
 +# postconf -e inet_protocols=ipv4
 +</code>
 +
 +Nachfolgende die Bestätigung das [[http://www.postfix.org/|Postfix]] gestartet ist und auf der IP-Adresse **''localhost (127.0.0.1)''** und auf Port **''25''** lauscht, was bei einer **Standard**-[[http://www.postfix.org/|Postfix]]-Konfiguration **__VOR__** dem Einsatz von Muliplen-[[http://www.postfix.org/|Postfix]]-Instanzen der Fall ist:
 +
 +(:-D p.s. Da manche lieber **//Poni//**'s als **//tulpen//** mögen, hier beide Befehle zur Überprüfung)
 +<code>
 +# lsof -Poni | grep master
 +master    6150  root   13u  IPv4 138555    0t0  TCP 127.0.0.1:25 (LISTEN)
 +</code>
 +<code>
 +# netstat -tulpen | grep master
 +tcp        0      0 127.0.0.1:25           0.0.0.0:             LISTEN      0       138555     6150/master
 +</code>
 +
 +===== Konfiguration =====
 +
 +Nachfolgendes Beispiel, soll **__zwei__ Instanzen** von [[http://www.postfix.org/|Postfix]] mit Hilfe des Konfigurationsprogramms **''postmulti''** von [[http://www.postfix.org/|Postfix]] erstellt werden, wobei die Instanzen nachfolgende Aufgaben haben sollen:
 +
 +  - [[http://www.postfix.org/|Postfix]]-Instanz **__nur__ für die E-Mail-Verarbeitung auf ''localhost''**.
 +  - [[http://www.postfix.org/|Postfix]]-Instanz **__nur__ für die E-Mail-Verarbeitung von ''192.168.0.20''**.
 +
 +==== Multi-Instanz-Unterstützung aktivieren ====
 +
 +Zur Multi-Instanz-Unterstützung muss **__nur einmal__, beim Hinzufügen der ersten sekundären Instanz**, die Multi-Instanz-Unterstützung in der Standardinstanz aktiviert werden, was durch nachfolgenden Befehl durchgeführt wird:
 +<code>
 +# postmulti -e init
 +</code>
 +
 +:!: **HINWEIS** - **Es erfolgt __keine__ Ausgabe bei __erfolgreicher__ Ausführung des Befehls!**
 +
 +Nachfolgende Ergänzungen wurden **durch Ausführung des oben gezeigten Befehls** an der Konfigurationsdatei
 +  * ''/etc/postfix/main.cf''
 +hinzugefügt:
 +
 +(**Nur relevanter Ausschnitt**)
 +<code bash>
 +multi_instance_wrapper = ${command_directory}/postmulti -p --
 +multi_instance_enable = yes
 +</code>
 +
 +^ Parameter ^ Erklärung ^
 +| **''multi_instance_wrapper = ${command_directory}/postmulti -p --''** | Der Pfadname eines Multi-Instanz-Managerbefehls, den der Befehl ''postfix'' aufruft, wenn der Parameterwert ''multi_instance_directories'' **__nicht__ leer ist**. Auf den Pfadnamen können erste Befehlsargumente folgen, die durch Leerzeichen getrennt sind; Shell-Metazeichen wie Anführungszeichen werden in diesem Zusammenhang nicht unterstützt. \\ \\ Der Befehl ''postfix'' ruft den Managerbefehl mit den nicht optionalen Befehlsargumenten ''postfix'' auf der Manager-Befehlszeile und mit allen Installationskonfigurationsparametern, die in die Manager-Befehlsprozessumgebung exportiert werden auf. Der Befehl ''manager'' wiederum ruft den Befehl ''postfix'' für einzelne [[http://www.postfix.org/|Postfix]]-Instanzen als \\ ''postfix -c config_directory command'' auf. \\ \\ Siehe auch: [[http://www.postfix.org/postconf.5.html#multi_instance_wrapper]] |
 +| **''multi_instance_enable = yes''** | Erlaubt, dass diese [[http://www.postfix.org/|Postfix]]-Instanz von einem Multi-Instanz-Manager gestartet, gestoppt usw. wird. Standardmäßig werden neue Instanzen in einem sicheren Zustand erstellt, der verhindert, dass sie versehentlich gestartet werden. Dieser Parameter ist für den Multi-Instanz-Manager reserviert. \\ \\ Siehe auch: [[http://www.postfix.org/postconf.5.html#multi_instance_enable]] |
 +
 +:!: **HINWEIS** - Da für den Späteren Einsatz der  _nur auf ''localhost'' gebunden werden soll und auf Port 25 lauschen soll, wäre nachfolgende Konfiguration korrekterweise in der Konfigurationsdatei 
 +  * ''/etc/postfix/master.cf''
 +der [[http://www.postfix.org/|Postfix]]-Basis-Instanz ''-'' noch abgeändert werden, was mit nachfolgendem Befehl durchgeführt werden kann:
 +<code>
 +# postmulti -i - -x postconf -M smtp/inet="127.0.0.1:smtp inet n -                         smtpd"
 +</code>
 +
 +==== Instanz hinzufügen ====
 +
 +Nachfolgender Befehl erstellt eine weitere Instanz, mit
 +  * dem **Namen**: ''postfix-eth0''
 +  * in der **Gruppe**: ''mta'' (dies ist **__nur__** optional)
 +<code>
 +# postmulti -I postfix-eth0 -G mta -e create
 +postfix: warning: inet_protocols: disabling IPv6 name/address support: Address family not supported by protocol
 +/usr/sbin/postconf: warning: inet_protocols: disabling IPv6 name/address support: Address family not supported by protocol
 +/usr/sbin/postconf: warning: inet_protocols: disabling IPv6 name/address support: Address family not supported by protocol
 +/usr/sbin/postconf: warning: inet_protocols: disabling IPv6 name/address support: Address family not supported by protocol
 +/usr/sbin/postconf: warning: inet_protocols: disabling IPv6 name/address support: Address family not supported by protocol
 +/usr/sbin/postconf: warning: inet_protocols: disabling IPv6 name/address support: Address family not supported by protocol
 +/usr/sbin/postconf: warning: inet_protocols: disabling IPv6 name/address support: Address family not supported by protocol
 +/usr/sbin/postconf: warning: inet_protocols: disabling IPv6 name/address support: Address family not supported by protocol
 +/usr/sbin/postconf: warning: inet_protocols: disabling IPv6 name/address support: Address family not supported by protocol
 +/usr/sbin/postconf: warning: inet_protocols: disabling IPv6 name/address support: Address family not supported by protocol
 +/usr/sbin/postconf: warning: inet_protocols: disabling IPv6 name/address support: Address family not supported by protocol
 +/usr/sbin/postconf: warning: inet_protocols: disabling IPv6 name/address support: Address family not supported by protocol
 +/usr/sbin/postconf: warning: inet_protocols: disabling IPv6 name/address support: Address family not supported by protocol
 +/usr/sbin/postconf: warning: inet_protocols: disabling IPv6 name/address support: Address family not supported by protocol
 +</code>
 +
 +:!: **HINWEIS** - **IPv6 ist auf diesem Server __deaktiviert__, daher die Fehlermeldungen (für jede im Hintergrund durchgeführte Änderung bzw. Befehlsausführung, jeweils eine Zeile)!**
 +
 +:!: **HINWEIS** - Um die oben gezeigten Fehlermeldungen auf einem Server **__ohne__ IPv6-Unterstützung** -  **vorab** schnell zu beseitigen, kann nachfolgender Befehl ausgeführt werden:
 +<code>
 +# postmulti -i postfix-eth0 -x postconf -e "inet_protocols = ipv4"
 +/usr/sbin/postconf: warning: inet_protocols: disabling IPv6 name/address support: Address family not supported by protocol
 +</code>
 +
 +:!: **HINWEIS** - **IPv6 ist auf diesem Server __deaktiviert__, daher ein letztes mal die Fehlermeldung!**
 +
 +Nachfolgende Ergänzungen wurden **durch Ausführung des oben gezeigten Befehls** an der Konfigurationsdatei
 +  * ''/etc/postfix-eth0/main.cf''
 +hinzugefügt:
 +
 +(**Nur relevanter Ausschnitt**)
 +<code bash>
 +master_service_disable = inet
 +authorized_submit_users =
 +multi_instance_group = mta
 +multi_instance_name = postfix-eth0
 +</code>
 +
 +^ Parameter                                  ^ Erklärung ^
 +| **''master_service_disable = inet''**      | **Selektives __Deaktivieren__** von ''master''-Listener-Ports nach Diensttyp oder nach Dienstname und -typ. Geben Sie eine Liste von Diensttypen (''inet'', ''unix'', ''fifo'' oder ''pass'') oder ''name/type'' Paare an, wobei ''name'' das erste Feld eines ''master.cf''-Eintrags und ''type'' ein Diensttyp ist. Wie bei anderen [[http://www.postfix.org/|Postfix]]-Matchlists stoppt die Suche beim ersten Treffer. Geben Sie ''!pattern'' an, um einen Dienst aus der Liste auszuschließen. Standardmäßig sind alle master(8)-Listener-Ports aktiviert. \\ \\ :!: **Hinweis** -  **Diese Funktion unterstützt weder ''/file/name'' oder ''type:table'' Muster noch Wildcards wie ''\*'' oder ''all''. Das ist beabsichtigt.** \\ \\ Siehe auch: [[http://www.postfix.org/postconf.5.html#master_service_disable]]|
 +| **''authorized_submit_users = ''**         | Liste der Benutzer, die berechtigt sind, E-Mails mit dem Befehl ''sendmail'' (und mit dem privilegierten Befehl ''postdrop'' Hilfsprogramm) zu senden. \\ \\ Siehe auch: [[http://www.postfix.org/postconf.5.html#authorized_submit_users]] |
 +| **''multi_instance_group = mta''**         | Der optionale Gruppenname der Instanz dieser [[http://www.postfix.org/|Postfix]]-Instanz. Eine Gruppe identifiziert verwandte [[http://www.postfix.org/|Postfix]]-Instanzen, die der Multi-Instanz-Manager starten, stoppen usw. kann, als Einheit. Dieser Parameter ist für den Multi-Instanz-Manager reserviert. \\ \\ Siehe auch: [[http://www.postfix.org/postconf.5.html#multi_instance_group]] |
 +| **''multi_instance_name = postfix-eth0''** | Der optionale Instanzname dieser [[http://www.postfix.org/|Postfix]]-Instanz. **Dieser Name wird auch zum Standardwert für den Parameter ''syslog_name''**. \\ \\ Siehe auch: [[http://www.postfix.org/postconf.5.html#multi_instance_name]] |
 +
 +Das Konfigurationsverzeichnis der so **neu erstellten Instanz** ist in diesem Fall wie bei der Erstellung angegeben: 
 +  * **''/etc/postfix-eth0''**
 +genauer gesagt, das Unterverzeichnis **''postfix-eth0''** des übergeordneten Verzeichnisses des Konfigurationsverzeichnisses der Standard-Instanz. 
 +
 +:!: **HINWEIS** - **Die neue Instanz wird standardmäßig in einem __deaktivierten Zustand__ erstellt!** 
 +
 +Nachfolgende die Verzeichnisstruktur der **Instanz ''postfix-eth0''**-[[http://www.postfix.org/|Postfix]]-Konfiguration:
 +<code>
 +# ls -l /etc/postfix-eth0/
 +total 36
 +-rw-r--r-- 1 root root 27343 May 18 07:48 main.cf
 +-rw-r--r-- 1 root root  6220 Oct 22  2018 master.cf
 +</code>
 +
 +Nachfolgende die **Instanz ''postfix-eth0''**-[[http://www.postfix.org/|Postfix]]-Konfiguration:
 +<code>
 +# postmulti -i postfix-eth0 -x postconf -n 
 +alias_database = hash:/etc/aliases
 +alias_maps = hash:/etc/aliases
 +authorized_submit_users =
 +command_directory = /usr/sbin
 +config_directory = /etc/postfix-eth0
 +daemon_directory = /usr/libexec/postfix
 +data_directory = /var/lib/postfix-eth0
 +debug_peer_level = 2
 +debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name
 +$process_id & sleep 5
 +html_directory = no
 +inet_interfaces = localhost
 +inet_protocols = ipv4
 +mail_owner = postfix
 +mailq_path = /usr/bin/mailq.postfix
 +manpage_directory = /usr/share/man
 +master_service_disable = inet
 +multi_instance_group = mta
 +multi_instance_name = postfix-eth0
 +mydestination = $myhostname, localhost.$mydomain, localhost
 +newaliases_path = /usr/bin/newaliases.postfix
 +queue_directory = /var/spool/postfix-eth0
 +readme_directory = /usr/share/doc/postfix-2.11.11/README_FILES
 +sample_directory = /usr/share/doc/postfix-2.11.11/samples
 +sendmail_path = /usr/sbin/sendmail.postfix
 +setgid_group = postdrop
 +unknown_local_recipient_reject_code = 550
 +</code>
 +
 +Nachfolgende Ergänzungen wurden **durch Ausführung des oben gezeigten Befehls** an der Konfigurationsdatei
 +  * ''/etc/postfix/main.cf''
 +hinzugefügt:
 +
 +(**Nur relevanter Ausschnitt**)
 +<code bash>
 +multi_instance_wrapper = ${command_directory}/postmulti -p --
 +multi_instance_enable = yes
 +multi_instance_directories = /etc/postfix-eth0
 +</code>
 +
 +^ Parameter ^ Erklärung ^
 +| **''multi_instance_wrapper = ${command_directory}/postmulti -p --''** | Der Pfadname eines Multi-Instanz-Managerbefehls, den der Befehl ''postfix'' aufruft, wenn der Parameterwert ''multi_instance_directories'' **__nicht__ leer ist**. Auf den Pfadnamen können erste Befehlsargumente folgen, die durch Leerzeichen getrennt sind; Shell-Metazeichen wie Anführungszeichen werden in diesem Zusammenhang nicht unterstützt. \\ \\ Der Befehl ''postfix'' ruft den Managerbefehl mit den nicht optionalen Befehlsargumenten ''postfix'' auf der Manager-Befehlszeile und mit allen Installationskonfigurationsparametern, die in die Manager-Befehlsprozessumgebung exportiert werden auf. Der Befehl ''manager'' wiederum ruft den Befehl ''postfix'' für einzelne [[http://www.postfix.org/|Postfix]]-Instanzen als \\ ''postfix -c config_directory command'' auf. \\ \\ Siehe auch: [[http://www.postfix.org/postconf.5.html#multi_instance_wrapper]] |
 +| **''multi_instance_enable = yes''** | Erlaubt, dass diese [[http://www.postfix.org/|Postfix]]-Instanz von einem Multi-Instanz-Manager gestartet, gestoppt usw. wird. Standardmäßig werden neue Instanzen in einem sicheren Zustand erstellt, der verhindert, dass sie versehentlich gestartet werden. Dieser Parameter ist für den Multi-Instanz-Manager reserviert. \\ \\ Siehe auch: [[http://www.postfix.org/postconf.5.html#multi_instance_enable]] |
 +| **''multi_instance_directories = /etc/postfix-eth0''** | Eine optionale Liste von nicht standardmäßigen [[http://www.postfix.org/|Postfix]]-Konfigurationsverzeichnissen; diese Verzeichnisse gehören zu zusätzlichen [[http://www.postfix.org/|Postfix]]-Instanzen, die die ausführbaren [[http://www.postfix.org/|Postfix]]-Dateien und -Dokumentation mit der Standard-[[http://www.postfix.org/|Postfix]]-Instanz teilen und die zusammen mit der Standard-[[http://www.postfix.org/|Postfix]]-Instanz gestartet, gestoppt usw. werden. Dies ist eine Liste von Pfadnamen, die durch Komma oder Leerzeichen getrennt sind. \\ \\ Wenn ''multi_instance_directories'' leer ist, läuft der Befehl ''postfix'' im Single-Instance-Modus und arbeitet nur mit einer einzigen [[http://www.postfix.org/|Postfix]]-Instanz. Andernfalls läuft der Befehl ''postfix'' im Multi-Instanz-Modus und ruft den mit dem Parameter ''multi_instance_wrapper'' angegebenen Multi-Instanz-Manager auf. Der Multi-Instanz-Manager wiederum führt ''postfix''-Befehle für die Standardinstanz und für alle [[http://www.postfix.org/|Postfix]]-Instanzen in ''multi_instance_directories'' aus. \\ \\ Derzeit wird diese Parametereinstellung ignoriert, mit Ausnahme der standardmäßigen ''main.cf''-Datei. \\ \\ Siehe auch: [[http://www.postfix.org/postconf.5.html#multi_instance_directories]] | 
 +
 +==== Instanzen auflisten ====
 +
 +Nachfolgender Befehl listet alle vorhanden Instanzen in einer Umgebung mit Multi-Instanz-Unterstützung auf:
 +<code>
 +# postmulti -l
 +-                                     /etc/postfix
 +postfix-eth0    mta                     /etc/postfix-eth0
 +</code>
 +
 +Der Aufbau der Auflistung ist recht Übersichtlich:
 +
 +^ [Name]            ^ [Gruppe] ^ **aktiv** ^ Konfigurationsverzeichnis ''config_directory'' ^
 +|             ''-'' |    ''-'' |     ''y'' | ''/etc/postfix''                               |
 +|  ''postfix-eth0'' |  ''mta'' |     ''n'' | ''/etc/postfix-eth0''                          |
 +
 +:!: **HINWEIS** - **Neue Instanzen werden standardmäßig in einem __deaktivierten Zustand__ erstellt!** 
 +
 +==== Instanzen aktivieren ====
 +
 +Nachfolgender Befehl aktiviert eine Instanz:
 +<code>
 +# postmulti -i postfix-eth0 -e enable
 +</code>
 +
 +Eine Überprüfung, ob die Instanz nun aktiv ist, kann mit nachfolgendem Befehl durchgeführt werden:
 +<code>
 +# postmulti -l
 +-                                     /etc/postfix
 +postfix-eth0    mta                     /etc/postfix-eth0
 +</code>
 +
 +:!: **HINWEIS** - **Nun ist auch die [[http://www.postfix.org/|Postfix]]-Instanz ''postfix-eth0'' aktiviert!**
 +
 +==== Instanz starten ====
 +
 +:!: **WICHTIG** - **Bevor eine [[http://www.postfix.org/|Postfix]]-Instanz gestartet werden sollte, __MUSS__ der Parameter: ''master_service_disable'' entsprechend angepasst werden!**
 +
 +Der Parameter ''master_service_disable'' ist direkt nach dem Erstellen einer [[http://www.postfix.org/|Postfix]]-Instanz auf den Wert **''inet''** gesetzt. **Das verhindert, das die [[http://www.postfix.org/|Postfix]]-Instanz auf einer IP-Adresse lauscht und an einen Port gebunden werden kann!**
 +
 +^ Parameter                                  ^ Erklärung ^
 +| **''master_service_disable = inet''**      | **Selektives __Deaktivieren__** von ''master''-Listener-Ports nach Diensttyp oder nach Dienstname und -typ. Geben Sie eine Liste von Diensttypen (''inet'', ''unix'', ''fifo'' oder ''pass'') oder ''name/type'' Paare an, wobei ''name'' das erste Feld eines ''master.cf''-Eintrags und ''type'' ein Diensttyp ist. Wie bei anderen [[http://www.postfix.org/|Postfix]]-Matchlists stoppt die Suche beim ersten Treffer. Geben Sie ''!pattern'' an, um einen Dienst aus der Liste auszuschließen. Standardmäßig sind alle master(8)-Listener-Ports aktiviert. \\ \\ :!: **Hinweis** -  **Diese Funktion unterstützt weder ''/file/name'' oder ''type:table'' Muster noch Wildcards wie ''\*'' oder ''all''. Das ist beabsichtigt.** \\ \\ Siehe auch: [[http://www.postfix.org/postconf.5.html#master_service_disable]]|
 +
 +Damit eine [[http://www.postfix.org/|Postfix]]-Instanz auf eine IP-Adresse gebunden werden kann und auf einen Port lauscht, muss **__vor__** dem Start der [[http://www.postfix.org/|Postfix]]-Instanz der Parameter ''master_service_disable'' mit nachfolgenden Befehl verändert werden, so das **__kein__** ''master''-Listener-Port blockiert wird. **Effektiv muss der Parameter ''master_service_disable'' __LEER__ sein.**
 +<code>
 +# postmulti -i postfix-eth0 -x postconf -e "master_service_disable ="
 +</code>
 +
 +:!: **HINWEIS** - **Damit beide [[http://www.postfix.org/|Postfix]]-Instanzen __nicht__ versuchen sich auf die IP-Adresse ''127.0.0.1'' und Port ''25'' zu binden, muss dies entsprechend bei einer der beiden [[http://www.postfix.org/|Postfix]]-Instanzen, hier die [[http://www.postfix.org/|Postfix]]-Instanz ''postfix-eth0'' noch abgeändert werden, was mit nachfolgendem Befehl durchgeführt wird.**
 +<code>
 +# postmulti -i postfix-eth0 -x postconf -e "inet_interfaces = 192.168.0.20"
 +</code>
 +**__und__** dies auch zusätzlich in der Konfigurationsdatei 
 +  * ''/etc/postfix-eth0/master.cf''
 +der [[http://www.postfix.org/|Postfix]]-Instanz ''postfix-eth0'' noch abgeändert werden, was mit nachfolgendem Befehl durchgeführt werden kann:
 +<code>
 +# postmulti -i postfix-eth0 -x postconf -M smtp/inet="192.168.0.20:smtp inet n -                         smtpd"
 +</code>
 +
 +Abschließend kann nun der eigentliche Start der [[http://www.postfix.org/|Postfix]]-Instanz mit anchfolgendem Befehl durchgeführt werden:
 +<code>
 +# postmulti -i postfix-eth0 -p start
 +postfix-eth0/postfix-script: starting the Postfix mail system
 +</code>
 +
 +Nachfolgende Ergänzungen wurden **durch Ausführung der oben gezeigten Befehle** an der Konfigurationsdatei
 +  * ''/etc/postfix-eth0/main.cf''
 +hinzugefügt:
 +
 +(**Nur relevanter Ausschnitt**)
 +<code bash>
 +master_service_disable =
 +authorized_submit_users =
 +multi_instance_group = mta
 +multi_instance_name = postfix-eth0
 +multi_instance_enable = yes
 +</code>
 +
 +^ Parameter                                  ^ Erklärung ^
 +| **''master_service_disable = inet''**      | **Selektives __Deaktivieren__** von ''master''-Listener-Ports nach Diensttyp oder nach Dienstname und -typ. Geben Sie eine Liste von Diensttypen (''inet'', ''unix'', ''fifo'' oder ''pass'') oder ''name/type'' Paare an, wobei ''name'' das erste Feld eines ''master.cf''-Eintrags und ''type'' ein Diensttyp ist. Wie bei anderen [[http://www.postfix.org/|Postfix]]-Matchlists stoppt die Suche beim ersten Treffer. Geben Sie ''!pattern'' an, um einen Dienst aus der Liste auszuschließen. Standardmäßig sind alle master(8)-Listener-Ports aktiviert. \\ \\ :!: **Hinweis** -  **Diese Funktion unterstützt weder ''/file/name'' oder ''type:table'' Muster noch Wildcards wie ''\*'' oder ''all''. Das ist beabsichtigt.** \\ \\ Siehe auch: [[http://www.postfix.org/postconf.5.html#master_service_disable]]|
 +| **''authorized_submit_users = ''**         | Liste der Benutzer, die berechtigt sind, E-Mails mit dem Befehl ''sendmail'' (und mit dem privilegierten Befehl ''postdrop'' Hilfsprogramm) zu senden. \\ \\ Siehe auch: [[http://www.postfix.org/postconf.5.html#authorized_submit_users]] |
 +| **''multi_instance_group = mta''**         | Der optionale Gruppenname der Instanz dieser [[http://www.postfix.org/|Postfix]]-Instanz. Eine Gruppe identifiziert verwandte [[http://www.postfix.org/|Postfix]]-Instanzen, die der Multi-Instanz-Manager starten, stoppen usw. kann, als Einheit. Dieser Parameter ist für den Multi-Instanz-Manager reserviert. \\ \\ Siehe auch: [[http://www.postfix.org/postconf.5.html#multi_instance_group]] |
 +| **''multi_instance_name = postfix-eth0''** | Der optionale Instanzname dieser [[http://www.postfix.org/|Postfix]]-Instanz. **Dieser Name wird auch zum Standardwert für den Parameter ''syslog_name''**. \\ \\ Siehe auch: [[http://www.postfix.org/postconf.5.html#multi_instance_name]] |
 +| **''multi_instance_enable = yes''** | Erlaubt, dass diese [[http://www.postfix.org/|Postfix]]-Instanz von einem Multi-Instanz-Manager gestartet, gestoppt usw. wird. Standardmäßig werden neue Instanzen in einem sicheren Zustand erstellt, der verhindert, dass sie versehentlich gestartet werden. Dieser Parameter ist für den Multi-Instanz-Manager reserviert. \\ \\ Siehe auch: [[http://www.postfix.org/postconf.5.html#multi_instance_enable]] |
 +
 +==== Instanz Status ====
 +
 +Nachfolgender Befehl zeigt den Status aller [[http://www.postfix.org/|Postfix]]-Instanzen an:
 +<code>
 +# postmulti -a -p status
 +postfix/postfix-script: the Postfix mail system is running: PID: 6511
 +postfix-eth0/postfix-script: the Postfix mail system is running: PID: 6666
 +</code>
 +
 +:!: **HINWEIS** - **Die Option ''-a'' kann weggelassen werden, da dies der Standard ist, wenn kein ''-i [Name]'' angegeben wird!**
 +
 +Der Status für das [[http://www.postfix.org/|Postfix]]-Basis-Programm, kann mit nachfolgendem Befehl angezeigt werden:
 +<code>
 +# postmulti -i - -p status
 +postfix/postfix-script: the Postfix mail system is running: PID: 6511
 +</code>
 +
 +Der Status für die [[http://www.postfix.org/|Postfix]]-Instanz ''postfix-eth0'', kann mit nachfolgendem Befehl angezeigt werden:
 +<code>
 +# postmulti -i postfix-eth0 -p status
 +postfix-eth0/postfix-script: the Postfix mail system is running: PID: 6666
 +</code>
 +
 +Nachfolgende die Bestätigung das [[http://www.postfix.org/|Postfix]] gestartet ist und auf der IP-Adresse **''localhost (127.0.0.1)''** und auf Port **''25''** lauscht, was bei einer **Standard**-[[http://www.postfix.org/|Postfix]]-Konfiguration der Fall wäre und eine [[http://www.postfix.org/|Postfix]]-Instanzen welche auf der IP-Adresse **''192.168.0.20''** und ebenfalls auf Port **''25''** lauscht:
 +
 +(:-D p.s. Da manche lieber **//Poni//**'s als **//tulpen//** mögen, hier beide Befehle zur Überprüfung)
 +<code>
 +# lsof -Poni | grep master
 +master    6511  root   13u  IPv4 135951    0t0  TCP 127.0.0.1:25 (LISTEN)
 +master    6666  root   13u  IPv4 143387    0t0  TCP 192.168.0.20:25 (LISTEN)
 +</code>
 +<code>
 +# netstat -tulpen | grep master
 +tcp        0      0 192.168.0.20:25        0.0.0.0:           LISTEN      0       143387     6666/master     
 +tcp        0      0 127.0.0.1:25           0.0.0.0:           LISTEN      0       135951     6511/master
 +</code>
 +
 +===== Konfiguration: Gesamtübersicht =====
 +
 +==== /etc/postfix/main.cf ====
 +
 +<code bash>
 +# postmulti -i - -x postconf -n
 +alias_database = hash:/etc/aliases
 +alias_maps = hash:/etc/aliases
 +command_directory = /usr/sbin
 +config_directory = /etc/postfix
 +daemon_directory = /usr/libexec/postfix
 +data_directory = /var/lib/postfix
 +debug_peer_level = 2
 +debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name
 +$process_id & sleep 5
 +html_directory = no
 +inet_interfaces = localhost
 +inet_protocols = ipv4
 +mail_owner = postfix
 +mailq_path = /usr/bin/mailq.postfix
 +manpage_directory = /usr/share/man
 +multi_instance_directories = /etc/postfix-eth0
 +multi_instance_enable = yes
 +multi_instance_wrapper = ${command_directory}/postmulti -p --
 +mydestination = $myhostname, localhost.$mydomain, localhost
 +newaliases_path = /usr/bin/newaliases.postfix
 +queue_directory = /var/spool/postfix
 +readme_directory = /usr/share/doc/postfix-2.11.11/README_FILES
 +sample_directory = /usr/share/doc/postfix-2.11.11/samples
 +sendmail_path = /usr/sbin/sendmail.postfix
 +setgid_group = postdrop
 +unknown_local_recipient_reject_code = 550
 +</code>
 +
 +==== /etc/postfix/master.cf ====
 +
 +<code bash>
 +# egrep -v "^$|^.*#" /etc/postfix/master.cf 
 +127.0.0.1:smtp inet n    -                         smtpd
 +pickup    unix  n                   60      1       pickup
 +cleanup   unix  n                               cleanup
 +qmgr      unix  n                   300           qmgr
 +tlsmgr    unix  -                   1000?         tlsmgr
 +rewrite   unix  -                               trivial-rewrite
 +bounce    unix  -                               bounce
 +defer     unix  -                               bounce
 +trace     unix  -                               bounce
 +verify    unix  -                               verify
 +flush     unix  n                   1000?         flush
 +proxymap  unix  -                               proxymap
 +proxywrite unix -                               proxymap
 +smtp      unix  -                               smtp
 +relay     unix  -                               smtp
 +showq     unix  n                               showq
 +error     unix  -                               error
 +retry     unix  -                               error
 +discard   unix  -                               discard
 +local     unix  -                               local
 +virtual   unix  -                               virtual
 +lmtp      unix  -                               lmtp
 +anvil     unix  -                               anvil
 +scache    unix  -                               scache
 +</code>
 +
 +==== /etc/postfix-eth0/main.cf ====
 +
 +<code bash>
 +# postmulti -i postfix-eth0 -x postconf -n
 +alias_database = hash:/etc/aliases
 +alias_maps = hash:/etc/aliases
 +authorized_submit_users =
 +command_directory = /usr/sbin
 +config_directory = /etc/postfix-eth0
 +daemon_directory = /usr/libexec/postfix
 +data_directory = /var/lib/postfix-eth0
 +debug_peer_level = 2
 +debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name
 +$process_id & sleep 5
 +html_directory = no
 +inet_interfaces = 192.168.0.20
 +inet_protocols = ipv4
 +mail_owner = postfix
 +mailq_path = /usr/bin/mailq.postfix
 +manpage_directory = /usr/share/man
 +master_service_disable =
 +multi_instance_enable = yes
 +multi_instance_group = mta
 +multi_instance_name = postfix-eth0
 +mydestination = $myhostname, localhost.$mydomain, localhost
 +newaliases_path = /usr/bin/newaliases.postfix
 +queue_directory = /var/spool/postfix-eth0
 +readme_directory = /usr/share/doc/postfix-2.11.11/README_FILES
 +sample_directory = /usr/share/doc/postfix-2.11.11/samples
 +sendmail_path = /usr/sbin/sendmail.postfix
 +setgid_group = postdrop
 +unknown_local_recipient_reject_code = 550
 +</code>
 +
 +==== /etc/postfix-eth0/master.cf ====
 +
 +<code bash>
 +# egrep -v "^$|^.*#" /etc/postfix-eth0/master.cf
 +192.168.0.20:smtp inet n -                         smtpd
 +pickup    unix  n                   60      1       pickup
 +cleanup   unix  n                               cleanup
 +qmgr      unix  n                   300           qmgr
 +tlsmgr    unix  -                   1000?         tlsmgr
 +rewrite   unix  -                               trivial-rewrite
 +bounce    unix  -                               bounce
 +defer     unix  -                               bounce
 +trace     unix  -                               bounce
 +verify    unix  -                               verify
 +flush     unix  n                   1000?         flush
 +proxymap  unix  -                               proxymap
 +proxywrite unix -                               proxymap
 +smtp      unix  -                               smtp
 +relay     unix  -                               smtp
 +showq     unix  n                               showq
 +error     unix  -                               error
 +retry     unix  -                               error
 +discard   unix  -                               discard
 +local     unix  -                               local
 +virtual   unix  -                               virtual
 +lmtp      unix  -                               lmtp
 +anvil     unix  -                               anvil
 +scache    unix  -                               scache
 +</code>
 +
 +===== Konfiguration: Grundlagenerweiterung =====
 +
 +==== Einschränkung: mydestination ====
 +
 +Eine mögliche Erweiterung der [[http://www.postfix.org/|Postfix]]-Instanz - ''postfix-eth0'' könnte z.B. sein, dass diese **__nur__** E-Mail's entgegen nimmt, die auf **''[User]@buero.home.tachtler.net''** lauten und nicht mehr auf z.B. ''[User]@localhost''.
 +
 +Dies kann z.B. durch Änderungen des Parameters
 +  * ''mydestination''
 +erfolgen, wie nachfolgende Befehle zeigen.
 +
 +Setzen des **FQDN** ''buero.home.tachtler.net'' beim Parameter ''mydestination'', damit sich die die [[http://www.postfix.org/|Postfix]]-Instanz - ''postfix-eth0'', nur noch für E-Mail's mit der E-Mail-Adressausgestaltung ''[User]@buero.home.tachtler.net'' als **''final (destination)''** zuständig fühlt:
 +<code>
 +# postmulti -i postfix-eth0 -x postconf -e "mydestination = buero.home.tachtler.net"
 +</code>
 +
 +Zur Überprüfung, ob der vorhergehenden Befehl korrekt umgesetzt wurde, kann die Anzeige des Inhalts des Parameters mit nachfolgendem Befehl zum Vorschein gebracht werden:
 +<code>
 +# postmulti -i postfix-eth0 -x postconf mydestination
 +mydestination = buero.home.tachtler.net
 +</code> 
 +
 +Damit auch alle, außer die Domains und Top-Level-Domains welche in ''mydestination'' eingetragen sind auch abgelehnt (**''REJECT''**) werden, ist nachfolgende Konfiguration zusätzlich noch erforderlich:
 +<code>
 +# postmulti -i postfix-eth0 -x postconf -e "smtpd_recipient_restrictions = reject_unauth_destination"
 +</code>
 +
 +Zur Überprüfung, ob der vorhergehenden Befehl korrekt umgesetzt wurde, kann die Anzeige des Inhalts des Parameters mit nachfolgendem Befehl zum Vorschein gebracht werden:
 +<code>
 +# postmulti -i postfix-eth0 -x postconf smtpd_recipient_restrictions
 +smtpd_recipient_restrictions = reject_unauth_destination
 +</code>
 +
 +Abschließen müssen die Änderungen durch das erneute einlesen der Konfiguration für die [[http://www.postfix.org/|Postfix]]-Instanz - ''postfix-eth0'' mit nachfolgendem Befehl noch aktiviert werden:
 +<code>
 +# postmulti -i postfix-eth0 -p reload
 +postfix-eth0/postfix-script: refreshing the Postfix mail system
 +</code>
 +
 +Nachfolgende abschließende Test zeigen, ob die Konfiguration zur Erreichung des Ziels erfolgreich war.
 +
 +E-Mail zur [[http://www.postfix.org/|Postfix]]-Instanz - ''postfix-eth0'' mit Empfänger: ''klaus@localhost'':
 +<code>
 +# swaks --server 192.168.0.20 --to klaus@localhost
 +=== Trying 192.168.0.20:25...
 +=== Connected to 192.168.0.20.
 +<-  220 buero.home.tachtler.net ESMTP Postfix
 + -> EHLO buero.home.tachtler.net
 +<-  250-buero.home.tachtler.net
 +<-  250-PIPELINING
 +<-  250-SIZE 10240000
 +<-  250-VRFY
 +<-  250-ETRN
 +<-  250-ENHANCEDSTATUSCODES
 +<-  250-8BITMIME
 +<-  250 DSN
 + -> MAIL FROM:<root@buero.home.tachtler.net>
 +<-  250 2.1.0 Ok
 + -> RCPT TO:<klaus@localhost>
 +<** 554 5.7.1 <klaus@localhost>: Relay access denied
 + -> QUIT
 +<-  221 2.0.0 Bye
 +=== Connection closed with remote host.
 +</code>
 +
 +E-Mail zur [[http://www.postfix.org/|Postfix]]-Instanz - ''postfix-eth0'' mit Empfänger: ''klaus@buero.home.tachtler.net'':
 +<code>
 +# swaks --server 192.168.0.20 --to klaus@buero.home.tachtler.net
 +=== Trying 192.168.0.20:25...
 +=== Connected to 192.168.0.20.
 +<-  220 buero.home.tachtler.net ESMTP Postfix
 + -> EHLO buero.home.tachtler.net
 +<-  250-buero.home.tachtler.net
 +<-  250-PIPELINING
 +<-  250-SIZE 10240000
 +<-  250-VRFY
 +<-  250-ETRN
 +<-  250-ENHANCEDSTATUSCODES
 +<-  250-8BITMIME
 +<-  250 DSN
 + -> MAIL FROM:<root@buero.home.tachtler.net>
 +<-  250 2.1.0 Ok
 + -> RCPT TO:<klaus@buero.home.tachtler.net>
 +<-  250 2.1.5 Ok
 + -> DATA
 +<-  354 End data with <CR><LF>.<CR><LF>
 + -> Date: Sat, 18 May 2019 23:08:47 +0200
 + -> To: klaus@buero.home.tachtler.net
 + -> From: root@buero.home.tachtler.net
 + -> Subject: test Sat, 18 May 2019 23:08:47 +0200
 + -> Message-Id: <20190518230847.006877@buero.home.tachtler.net>
 + -> X-Mailer: swaks v20170101.0 jetmore.org/john/code/swaks/
 + -> 
 + -> This is a test mailing
 + -> 
 + -> .
 +<-  250 2.0.0 Ok: queued as BFA022C69A
 + -> QUIT
 +<-  221 2.0.0 Bye
 +=== Connection closed with remote host.
 +</code>
 +
 +Die E-Mail an die [[http://www.postfix.org/|Postfix]]-Instanz - ''postfix-eth0'' mit dem Empfänger ''klaus@buero.home.tachtler.net'' sieht dann wie folgt aus:
 +<code bash>
 +# cat /var/spool/mail/klaus
 +From root@buero.home.tachtler.net  Sat May 18 23:08:47 2019
 +Return-Path: <root@buero.home.tachtler.net>
 +X-Original-To: klaus@buero.home.tachtler.net
 +Delivered-To: klaus@buero.home.tachtler.net
 +Received: from buero.home.tachtler.net (buero.home.tachtler.net [192.168.0.20])
 + by buero.home.tachtler.net (Postfix) with ESMTP id BFA022C69A
 + for <klaus@buero.home.tachtler.net>; Sat, 18 May 2019 23:08:47 +0200 (CEST)
 +Date: Sat, 18 May 2019 23:08:47 +0200
 +To: klaus@buero.home.tachtler.net
 +From: root@buero.home.tachtler.net
 +Subject: test Sat, 18 May 2019 23:08:47 +0200
 +Message-Id: <20190518230847.006877@buero.home.tachtler.net>
 +X-Mailer: swaks v20170101.0 jetmore.org/john/code/swaks/
 +
 +This is a test mailing
 +
 +
 +
 +</code>
 +
 +===== Nützliche Befehle =====
 +
 +Für die **__primäre__** [[http://www.postfix.org/|Postfix]]-Instanz kann für ''[Name]'' das einzelne **Zeichen** **''-''** verwendet werden, **z.B.** zur Anzeige des Status:
 +<code>
 +# postmulti -i - -p status
 +</code>
 +
 +^ Befehl                                        ^ Beschreibung                                                ^
 +| ''postmulti -e init''                         | Multi-Instanz-Unterstützung aktivieren                      |
 +| ''postmulti -I [Name] -G [Gruppe] -e create'' | Erstellen einer Instanz (Parameter -G [Gruppe] ist optional)|
 +| ''postmulti -l''                              | Liste aller Instanzen in einer Multi-Instanz-Umgebung       |
 +| ''postmulti -i [Name] -e enable''             | Aktivieren einer Instanz                                    |
 +| ''postmulti -i [Name] -e disable''            | Deaktivieren einer Instanz                                  |
 +| ''postmulti -i [Name] -x postconf -e "master_service_disable ="'' | **__Keine__** ''master''-Listener blockieren. |
 +| ''postmulti -i [Name] -p start''              | Starten einer Instanz                                       |
 +| ''postmulti -i [Name] -p status''             | Status einer Instanz anzeigen                               |
 +| ''postmulti -i [Name] -p reload''             | Konfiguration einer Instanz neu einlesen                    |
 +| ''postmulti -i [Name] -p stop''               | Stoppen einer Instanz                                       |
  
tachtler/postfix_centos_7_-_multiple_instanzen.txt · Zuletzt geändert: 2019/05/22 10:03 von klaus