Inhaltsverzeichnis
Postfix ArchLinux - Konfiguration: main server - Virtual-Domain
Postfix ist Wietse Venema's Mail-Server, welcher bei „IBM research“ als Alternative zum ehemals weit verbreiteten Programm Sendmail entwickelt wurde. Postfix erhebt den Anspruch ein schneller, einfach zu administrierender und sicherer Mail-Server zu sein.
Postfix wird von Wietse Venema entwickelt.
Beschreibung | Externer Link |
---|---|
Homepage | http://www.postfix.org |
Ankündigungen | http://www.postfix.org/announcements.html |
Dokumentation | http://www.postfix.org/documentation.html Postfix Virtual Domain Hosting Howto |
Ab hier werden zur Ausführung nachfolgender Befehle root
-Rechte benötigt. Um der Benutzer root
zu werden, melden Sie sich bitte als root
-Benutzer am System an, oder wechseln mit nachfolgendem Befehl zum Benutzer root
:
$ su - Password:
Vorhaben
Es soll für die Kommunikation via E-Mail mit Postfix nachfolgendes Konstrukt, wie in der gezeigten Skizze zu sehen ist, zum Einsatz kommen:
┌──────────────────────┐ ┌───┐ │ Postfix- │ │ I │ │ null client │ │ N │ ├──────────────────────┤ │ T │ │ Interne │ ┌───────◄ E │ │ clients │ │ │ R │ ├──────────────────────┤ │ │ N │ │ │ │ │ E │ │ Relay: main client │ │ │ T │ │ │ │ │ │ └▼───▼───▼─────────────┘ │ └─▲─┘ │ │ │ │ │ │ │ │ ┌───────────────────────────────────────────────────┘ │ │ │ │ │ │ │ │ │ │ ┌───────────────────────────────────────────┐ │ │ │ │ │ │ Postfix- │ │ │ │ │ │ │ main server │ │ │ │ │ │ ├───────────────────────────────────────────┤ │ │ │ │ │ │ │ │ │ │ │ │ │ ┌───────────────────────────────────┐ │ │ │ │ └───┴───┼───► IN Port: 25 OUT │ │ │ │ │ │ ├───────────────────────────────────┤ │ │ │ │ │ │ ✔ interne E-Mail │ │ │ │ │ │ │ ✘ externe E-Mail │ │ │ │ │ │ │ ✔ Verschlüsselungen: möglich │ │ │ │ │ │ │ ✘ Authentifizierung: KEINE │ │ │ │ │ │ └───────────────────────────────────┘ │ │ │ │ │ │ │ │ │ │ ┌───────────────────────────────────┐ │ │ │ └───────────┼───► IN Port: 465 OUT ►───┼─────────────┤ │ │ ├───────────────────────────────────┤ │ │ │ │ │ ✔ interne E-Mail │ │ │ │ │ │ ✔ externe E-Mail │ │ │ │ │ │ ✔ Verschlüsselungen: möglich │ │ │ │ │ │ ✔ Authentifizierung: Zertifikat │ │ │ │ │ └───────────────────────────────────┘ │ │ │ │ │ │ │ │ ┌───────────────────────────────────┐ │ │ └───────────────┼───► IN Port: 587 OUT ►───┼─────────────┘ │ ├───────────────────────────────────┤ │ │ │ ✔ interne E-Mail │ │ │ │ ✔ externe E-Mail │ │ │ │ ✔ Verschlüsselungen: möglich │ │ │ │ ✔ Authentifizierung: SASL │ │ │ └───────────────────────────────────┘ │ │ │ │ 'mx1.tachtler.net' │ │ │ └───┬───────────────────────────────────┬───┘ │ │ ┌───────────▼───────────────────┐ ┌───────────▼───────────┐ │ │ │ │ │ 'postfixadmin.tachtler.net' │ │ 'imap.tachtler.net' │ │ │ │ │ │ Port: 80/443 ◄───┼ Port: 24 │ │ ✔ TLS-verschlüsselt │ │ ✔ TLS-verschlüsselt │ │ ✔ Datenbank-Anbindung │ │ ✔ LMTP(s)-Transport │ │ │ │ │ └───────────────────────────────┘ └───────────────────────┘
Der Postfix-main server soll über die nachfolgenden drei Ports aus dem internen Netz und externen Internet wie folgt erreichbar gemacht werden:
25
-smtp
- ohne Authentifizierung - Zustellung an lokale Empfänger, jedoch keine Zustellung an externe Empfänger (relay).465
-smtps
- Zertifikats-Authentifiziert - Zustellungen an lokale Empfänger und externe Empfänger (relay)587
-submission
- SASL-Authentifiziert - Zustellungen an lokale Empfänger und externe Empfänger (relay)
HINWEIS - Eine Zustellung von E-Mails an externe Empfänger im Internet soll auch für interne Clients auf Port
25
NICHT möglich sein!
Dabei soll über alle Ports aus dem internen Netz und externen Internet via TLS/StartTLS-Verschlüsselung kommuniziert werden können.
Der Postfix-main server soll alle E-Mails an Dovecot: imap-tachtler.net
über Port 24
und via TLS-Verschlüsselung weiterleiten.
Voraussetzungen
Für die nachfolgende Installation wird vorausgesetzt,
- dass eine lauffähige Version von Postfix ab Version 3.9
vorhanden ist und die unter nachfolgenden Links beschriebenen Installationen und Konfigurationen von Postfix als Mindestvoraussetzung zwingend durchgeführt wurden:
Für die nachfolgende Installation wird zusätzlich vorausgesetzt,
- dass eine lauffähige Version von Dovecot ab Version 2.3
vorhanden ist und die unter nachfolgenden Links beschriebenen Installationen und Konfigurationen von Dovecot als Mindestvoraussetzung zwingend durchgeführt wurden:
Da für Postfix und auch für Dovecot jeweils SQL-Abfragen zur Ermittlung der benötigten Informationen, über die
- Domains
- Postfächer
- Aliase
genutzt werden sollen, ist als Verwaltung für die in einer Datenbank hinterlegten Informationen eine weitere unabdingbare und zwingende Voraussetzung für das nachfolgende Vorgehen
- dass eine lauffähige Version von PostfixAdmin
vorhanden ist und die unter nachfolgendem Link beschriebene Installation und Konfiguration von
erforderlich.
Grundlagen
Lokale Domains
Die meisten Postfix-Systeme sind das endgültige Ziel (final destination) für nur wenige Domänennamen. Dazu gehören die Hostnamen und [die IP-Adressen] des Servers, auf dem Postfix läuft, und manchmal auch die übergeordnete Domain des Hostnamens. Diese Domänen werden als kanonische Domänen (canonical domains) bezeichnet. Diese werden in der Regel mit der lokalen Domänenadressklasse von Postfix implementiert, wie sie in der Datei ADDRESS_CLASS_README definiert ist.
Virtuelle Domains
Neben den kanonischen Domänen (canonical domains) kann Postfix so konfiguriert werden, dass Postfix das endgültige Ziel (final destination) für eine beliebige Anzahl weiterer Domänen ist. Diese Domänen werden als gehostet oder virtuelle bezeichnet, da sie nicht direkt mit dem Namen des Rechners selbst verbunden sind. Gehostete bzw. virtuelle Domainen werden in der Regel mit der virtuellen Alias-Domain-Adressklasse und/oder mit der virtuellen Mailbox-Domain-Adressklasse implementiert, wie in der ADDRESS_CLASS_README-Datei definiert.
Zusätzlich kann Postfix auch als Backup-MX-Host für andere Domänen konfiguriert werden. In diesem Fall ist Postfix nicht das endgültige Ziel (final destination) für diese Domänen. Es stellt die E-Mails lediglich in eine Warteschlange, wenn der primäre MX-Host nicht erreichbar ist, und leitet die E-Mails weiter, wenn der primäre MX-Host wieder verfügbar ist. Diese Funktion wird mit der Klasse der Relay-Domain-Adressen implementiert, die in der ADDRESS_CLASS_README-Datei definiert ist.
Andere Domains
Schließlich kann Postfix als Transithost für den Versand von E-Mails über das Internet konfiguriert werden. Natürlich ist Postfix nicht das endgültige Ziel (final destination) für solche E-Mails. Diese Funktion ist nur für autorisierte Clients und/oder Benutzer verfügbar und wird durch die Standard-Domänenadressklasse implementiert, die in der ADDRESS_CLASS_README-Datei definiert ist.
Ziel-Definition
Unter nachfolgendem externen Link (aus der original Dokumentation) ist beschrieben, wie die Ziel-Definition assehen soll:
Dies ist eine Variante des Postfix für virtuelle Postfächer. Auch hier kann jede gehostete bzw. virtuelle Adresse ihre eigene Mailbox haben. Die meisten Parameter, die den Zustellungsagenten virtual
steuern, sind jedoch nicht mehr anwendbar: nur virtual_mailbox_domains und virtual_mailbox_maps bleiben in Kraft. Diese Parameter werden benötigt, um E-Mails für unbekannte Empfänger zurückzuweisen.
Auch wenn Nicht-Postfix-Software für die endgültige Zustellung verwendet wird, werden einige Postfix-Konzepte weiterhin benötigt, um alles zusammenzuhalten. Weitere Informationen zu diesem Zusammenhalt finden Sie in der ADDRESS_CLASS_README-Datei unter der Klasse der virtuellen Postfächer.
Installation
Zur Installation des Postfix wird nachfolgendes Paket benötigt:
Mit nachfolgendem Befehl, wird das Pakete postfix
installiert:
# pacman -S --noconfirm postfix-mysql
Mit nachfolgendem Befehl kann überprüft werden, welche Inhalte mit den Paket postfix-mysql
installiert wurden:
# pacman -Qil postfix-mysql
Konfiguration
virtual_mailbox_domains
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#virtual_mailbox_domains Postfix Virtual Domain Hosting Howto Postfix configuration for use with PostfixAdmin |
Defaultwert | virtual_mailbox_domains = $virtual_mailbox_maps |
Neuer Wert | virtual_mailbox_domains = lmdb:/etc/postfix/virtual_mailbox_domains_maps, proxy:mysql:/etc/postfix/sql/mysql_virtual_domains_maps.cf |
Beschreibung | Postfix ist das endgültige Ziel (final destination) für die angegebene Liste von Domänen; die Post wird über den Postzustellungs-Transport virtual_transport zugestellt. Standardmässig ist dies der Postfix virtual -Zustellungsagent. Der SMTP-Server überprüft die Empfängeradressen mit virtual_mailbox_maps und lehnt Mails für nicht existierende Empfänger ab. Siehe auch die Domänenklasse der virtuellen Postfächer in der ADDRESS_CLASS_README-Datei. Dieser Parameter erwartet die gleiche Syntax wie der Konfigurationsparameter mydestination . |
SQL-Ergebnis | /etc/postfix/sql/mysql_virtual_domains_maps.cf +--------------+ | DOMAIN | +--------------+ | tachtler.net | +--------------+ 1 ROW IN SET (0.001 sec) |
Siehe auch | Postfix ArchLinux - Konfiguration: main server - Virtual-Domain - /etc/postfix/virtual_mailbox_domains_maps Postfix ArchLinux - Konfiguration: main server - Virtual-Domain - /etc/postfix/sql/mysql_virtual_domains_maps.cf |
virtual_mailbox_maps
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#virtual_mailbox_maps Postfix Virtual Domain Hosting Howto Postfix configuration for use with PostfixAdmin |
Defaultwert | virtual_mailbox_maps = |
Neuer Wert | virtual_mailbox_maps = lmdb:/etc/postfix/virtual_mailbox_maps, proxy:mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf, proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf |
Beschreibung | Optionale Nachschlagetabellen mit allen gültigen Adressen in den Domänen, die mit $virtual_mailbox_domains übereinstimmen. Es sind null oder mehr „type:name“-Suchtabellen anzugeben, getrennt durch Leerzeichen oder Komma. Die Tabellen werden in der angegebenen Reihenfolge durchsucht, bis eine Übereinstimmung gefunden wird. Es werden in einer Nachschlagetabelle auf der linken Seite „@domain.tld“ angegeben, um alle Benutzer in der angegebenen Domäne zu finden, die keinen spezifischen „user@domain.tld“-Eintrag haben. Mit der Voreinstellung virtual_mailbox_domains = $virtual_mailbox_maps benötigen Nachschlagetabellen auch Einträge mit der linken Seite domain.tld , um virtuelle_mailbox_domain -Suchvorgänge zu erfüllen (die rechte Seite ist erforderlich, wird aber nicht verwendet). Der Rest dieser Beschreibung ist spezifisch für den virtual -Zustellagenten. Er gilt nicht, wenn die Post mit einem anderen Mail-Zustellungsprogramm zugestellt wird.Der Zustellungsagent virtual verwendet diese Tabelle, um den Postfach- oder Maildir-Pfadnamen des Empfängers nachzuschlagen. Wenn das Ergebnis der Suche mit einem Schrägstrich („/“) endet, wird die Zustellung im Maildir-Stil durchgeführt, andernfalls wird angenommen, dass der Pfad eine Mailbox-Datei im UNIX-Stil angibt. Es ist zu beachten, dass virtual_mailbox_base diesem Pfad bedingungslos vorangestellt wird. Wenn eine Empfängeradresse eine optionale Adresserweiterung hat (user+foo@domain.tld), sucht der virtual -Zustellungsagent zuerst nach der vollständigen Adresse, und wenn die Suche fehlschlägt, sucht er nach der Adresse ohne Erweiterung (user@domain.tld). Anmerkung 1: Aus Sicherheitsgründen verbietet der virtual -Lieferagent die Ersetzung von $1 usw. durch reguläre Ausdrücke in Tabellen mit regulären Ausdrücken, da dies eine Sicherheitslücke öffnen würde. Anmerkung 2: Aus Sicherheitsgründen ignoriert der virtual -Lieferagent Anfragen, den proxymap -Server zu benutzen, stillschweigend. Stattdessen wird er die Tabelle direkt öffnen. Vor Postfix-Version 2.2 wird der virtual -Zustellungsagent mit einem schwerwiegenden Fehler abgebrochen. |
SQL-Ergebnis | /etc/postfix/sql/mysql_virtual_mailbox_maps.cf +---------------------+ | maildir | +---------------------+ | tachtler.net/klaus/ | +---------------------+ 1 ROW IN SET (0.001 sec)
Empty SET (0.001 sec) |
Siehe auch | Postfix ArchLinux - Konfiguration: main server - Virtual-Domain - /etc/postfix/virtual_mailbox_maps Postfix ArchLinux - Konfiguration: main server - Virtual-Domain - /etc/postfix/sql/mysql_virtual_mailbox_maps.cf Postfix ArchLinux - Konfiguration: main server - Virtual-Domain - /etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf |
virtual_alias_domains
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#virtual_alias_domains Postfix Virtual Domain Hosting Howto Postfix configuration for use with PostfixAdmin |
Defaultwert | virtual_alias_domains = $virtual_alias_maps |
Neuer Wert | virtual_alias_domains = lmdb:/etc/postfix/virtual_alias_domains_maps |
Beschreibung | Postfix ist das endgültige Ziel (final destination) für die angegebene Liste virtueller Alias-Domänen, d. h. Domänen, bei denen alle Adressen als Alias auf Adressen in anderen lokalen oder entfernten Domänen verweisen. Der SMTP-Server überprüft die Empfängeradressen mit virtual_alias_maps und weist nicht existierende Empfänger ab. Siehe auch die Klasse der virtuellen Alias-Domänen in der Datei ADDRESS_CLASS_README. Diese Funktion ist in Postfix Version 2.0 und höher verfügbar. Der Standardwert ist rückwärtskompatibel mit Postfix Version 1.1. Der Standardwert ist virtual_alias_maps , damit alle Informationen über virtuelle Alias-Domains an einem Ort aufbewahrt werden können. Wenn es viele Benutzer gibt, ist es besser, die Informationen, die sich häufiger ändern (Zuordnung virtuelle Adresse - lokale oder entfernte Adresse), von den Informationen zu trennen, die sich seltener ändern (die Liste der virtuellen Domänennamen). Es sollte eine Liste von Host- oder Domänennamen, /file/name - oder „type:table“-Mustern angegeben werden, getrennt durch Kommas und/oder Leerzeichen. Ein /file/name -Muster wird durch seinen Inhalt ersetzt; eine „type:table“-Suchtabelle wird abgeglichen, wenn ein Tabelleneintrag mit einem Host- oder Domänennamen übereinstimmt (das Suchergebnis wird ignoriert). Es können lange Zeilen fortgesetzte werden, indem die nächste Zeile mit einem Leerzeichen beginnt. Es können „!pattern“ angegeben werden, um einen Host- oder Domänennamen von der Liste auszuschliessen. Die Form !/file/name wird nur in Postfix Version 2.4 und höher unterstützt. Siehe auch die Dokumente VIRTUAL_README und ADDRESS_CLASS_README für weitere Informationen. |
Siehe auch | Postfix ArchLinux - Konfiguration: main server - Virtual-Domain - /etc/postfix/virtual_alias_domains_maps |
virtual_alias_maps
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#virtual_alias_maps Postfix Virtual Domain Hosting Howto Postfix configuration for use with PostfixAdmin |
Defaultwert | virtual_alias_maps = |
Neuer Wert | virtual_alias_maps = lmdb:/etc/postfix/virtual_alias_maps, proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf, proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf, proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf |
Beschreibung | Optionale Nachschlagetabellen, die häufig mit einer vollständigen E-Mail-Adresse (einschliesslich Domäne) durchsucht werden und für alle Empfänger gelten: local , virtual und remote ; dies steht im Gegensatz zu alias_maps , die nur mit einem lokalen Teil der E-Mail-Adresse (ohne Domäne) durchsucht werden und nur für local -Empfänger gelten. Das Tabellenformat von virtual_alias_maps und die Suchvorgänge sind in virtual dokumentiert. Einen Überblick über die Adressmanipulationen von Postfix sind unter ADDRESS_REWRITING_README dokumentiert. Diese Funktion ist in Postfix Version 2.0 und höher verfügbar. Der Standardwert ist rückwärtskompatibel mit Postfix Version 1.1. Es können null oder mehr „type:name“ Nachschlagetabellen angegeben werden, getrennt durch Leerzeichen oder Komma. Die Tabellen werden in der angegebenen Reihenfolge durchsucht, bis eine Übereinstimmung gefunden wird. Hinweis: Diese Suchvorgänge sind rekursiv. Wenn diese Funktion mit indizierten Dateien verwendet wird, muss postmap /etc/postfix/virtual ausgeführt werden, nachdem die Datei geändert wurde. |
SQL-Ergebis | /etc/postfix/sql/mysql_virtual_alias_maps.cf +--------------------+ | GOTO | +--------------------+ | klaus@tachtler.net | +--------------------+ 1 ROW IN SET (0.001 sec)
Empty SET (0.001 sec)
Empty SET (0.001 sec) |
Siehe auch | Postfix ArchLinux - Konfiguration: main server - Virtual-Domain - /etc/postfix/virtual_alias_maps Postfix ArchLinux - Konfiguration: main server - Virtual-Domain - /etc/postfix/sql/mysql_virtual_alias_maps.cf Postfix ArchLinux - Konfiguration: main server - Virtual-Domain - /etc/postfix/sql/mysql_virtual_alias_domain_maps.cf Postfix ArchLinux - Konfiguration: main server - Virtual-Domain - /etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf |
mydestination
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#mydestination http://www.postfix.org/ADDRESS_CLASS_README.html http://www.postfix.org/VIRTUAL_README.html |
Defaultwert | mydestination = $myhostname, localhost.$mydomain, localhost |
Neuer Wert | mydestination = $myhostname, localhost.$mydomain, localhost, server.idmz.$mydomain |
Beschreibung | Eine Liste von Domänen, die über den E-Mail-Transport Weg $local_transport zugestellt werden. Standardmässig ist dies der Postfix local Zustellungs Agent, der alle Empfänger in /etc/passwd und /etc/aliases nach schlägt. Der SMTP-Server überprüft die Empfängeradressen mit $local_recipient_maps und weist nicht existierende Empfänger ab. Siehe auch die Klasse local domain unter ADDRESS_CLASS_README.Der Standardwert mydestination gibt nur Namen für den lokalen Rechner an. Bei einem Mail-Domain-Gateway sollten auch $mydomain hinzugefügt werden.Die Zustellungsmethode $local_transport wird auch für E-Mails gewählt, die an user@[the.net.work.address] des E-Mail-Systems adressiert sind (die mit den Parametern inet_interfaces und proxy_interfaces angegebenen IP-Adressen). |
Siehe auch | Postfix ArchLinux - Konfiguration: main server - myhostname Postfix ArchLinux - Konfiguration: main server - myorigin |
HINWEIS - Veränderung zu (siehe nachfolgenden internen Link)
HINWEIS - Die NUR temporär gesetzte Variable
$mydomain
MUSS entfernt werden!
HINWEIS - Der Inhalt von
$mydomain
ist JETZT Bestandteil von einem virtuellen Domain Hosting !
- Siehe dazu auch den nachfolgenden externen Link: Postfix Virtual Domain Hosting Howto
Ein virtuelles Domain Hosting ist immer dann erforderlich, wenn auch E-Mails für Empfänger angenommen werden sollen, welche kein lokales Benutzerkonto auf dem Server besitzen - sprich es keinen lokalen Benutzer direkt auf dem Server gibt!
mailbox_transport
HINWEIS - Veränderung zu (siehe nachfolgenden internen Link)
Maps
/etc/postfix/virtual_mailbox_domains_maps
Mit nachfolgendem Befehl wird die Konfigurationsdatei /etc/postfix/virtual_mailbox_domains_maps
angelegt und auch gleich mit leerem Inhalt konfiguriert:
# touch /etc/postfix/virtual_mailbox_domains_maps
Anschliessend ist sind die Änderungen noch in ein für Postfix besser lesbares Datenbankformat umzuwandeln, was erstmals mit nachfolgendem Befehl durchgeführt werden kann:
# postmap lmdb:/etc/postfix/virtual_mailbox_domains_maps
HINWEIS - Es erfolgt keine Ausgabe, nach Befehlsausführung!
Abschliessend kann mit nachfolgendem Befehl überprüft werden, ob die Änderungen übernommen wurden:
# ls -l /etc/postfix/virtual_mailbox_domains_maps* -rw-r--r-- 1 root root 63 Apr 15 21:42 /etc/postfix/virtual_mailbox_domains_maps -rw-r--r-- 1 root root 8192 Apr 15 21:42 /etc/postfix/virtual_mailbox_domains_maps.lmdb
HINWEIS - Hier könnten Domains hinterlegt werden, zusätzlich zum Ergebnis der SQL-Abfrage!
/etc/postfix/virtual_mailbox_maps
Mit nachfolgendem Befehl wird die Konfigurationsdatei /etc/postfix/virtual_mailbox_maps
angelegt und auch gleich mit leerem Inhalt konfiguriert:
# touch /etc/postfix/virtual_mailbox_maps
Anschliessend ist sind die Änderungen noch in ein für Postfix besser lesbares Datenbankformat umzuwandeln, was erstmals mit nachfolgendem Befehl durchgeführt werden kann:
# postmap lmdb:/etc/postfix/virtual_mailbox_maps
HINWEIS - Es erfolgt keine Ausgabe, nach Befehlsausführung!
Abschliessend kann mit nachfolgendem Befehl überprüft werden, ob die Änderungen übernommen wurden:
# ls -l /etc/postfix/virtual_mailbox_maps* -rw-r--r-- 1 root root 55 Apr 19 17:25 /etc/postfix/virtual_mailbox_maps -rw-r--r-- 1 root root 8192 Apr 19 17:25 /etc/postfix/virtual_mailbox_maps.lmdb
HINWEIS - Hier könnten weitere Postfächer hinterlegt werden, zusätzlich zum Ergebnis der SQL-Abfrage!
/etc/postfix/virtual_alias_domains_maps
Mit nachfolgendem Befehl wird die Konfigurationsdatei /etc/postfix/virtual_alias_domains_maps
angelegt und auch gleich mit leerem Inhalt konfiguriert:
# touch /etc/postfix/virtual_alias_domains_maps
Anschliessend ist sind die Änderungen noch in ein für Postfix besser lesbares Datenbankformat umzuwandeln, was erstmals mit nachfolgendem Befehl durchgeführt werden kann:
# postmap lmdb:/etc/postfix/virtual_alias_domains_maps
HINWEIS - Es erfolgt keine Ausgabe, nach Befehlsausführung!
Abschliessend kann mit nachfolgendem Befehl überprüft werden, ob die Änderungen übernommen wurden:
# ls -l /etc/postfix/virtual_alias_domains_maps* -rw-r--r-- 1 root root 61 Apr 19 18:21 /etc/postfix/virtual_alias_domains_maps -rw-r--r-- 1 root root 8192 Apr 19 18:27 /etc/postfix/virtual_alias_domains_maps.lmdb
HINWEIS - Hier könnten Domains hinterlegt werden, zusätzlich zum Ergebnis der SQL-Abfrage!
/etc/postfix/virtual_alias_maps
/etc/postfix/aliases wird nicht mehr ausgewertet! - Die Inhalt der obsoleten Konfigurationsdatei /etc/postfix/aliases MÜSSEN hierher mit übernommen werden! |
---|
Mit nachfolgendem Befehl wird die Konfigurationsdatei /etc/postfix/virtual_alias_maps
angelegt und auch gleich mit nachfolgend angepasstem Inhalt (nachfolgend als Beispiel) konfiguriert:
# vim /etc/postfix/virtual_alias_maps
# Basic system aliases -- these MUST be present
MAILER-DAEMON@tachtler.net postmaster@tachtler.net
postmaster@tachtler.net root@tachtler.net
hostmaster@tachtler.net root@tachtler.net
webmaster@tachtler.net root@tachtler.net
# General redirections for pseudo accounts
bin@tachtler.net root@tachtler.net
daemon@tachtler.net root@tachtler.net
named@tachtler.net root@tachtler.net
nobody@tachtler.net root@tachtler.net
uucp@tachtler.net root@tachtler.net
www@tachtler.net root@tachtler.net
ftp-bug@tachtler.net root@tachtler.net
postfix@tachtler.net root@tachtler.net
chrony@tachtler.net root@tachtler.net
dbus@tachtler.net root@tachtler.net
ftp@tachtler.net root@tachtler.net
git@tachtler.net root@tachtler.net
http@tachtler.net root@tachtler.net
ldap@tachtler.net root@tachtler.net
mail@tachtler.net root@tachtler.net
tss@tachtler.net root@tachtler.net
uuid@tachtler.net root@tachtler.net
_talkd@tachtler.net root@tachtler.net
# Put your local aliases here.
# Well-known aliases
manager@tachtler.net root@tachtler.net
dumper@tachtler.net root@tachtler.net
operator@tachtler.net root@tachtler.net
abuse@tachtler.net postmaster@tachtler.net
# trap decode to catch security attacks
decode@tachtler.net root@tachtler.net
# Redirect system aliases
postmaster@tachtler.net root@tachtler.net
hostmaster@tachtler.net root@tachtler.net
webmaster@tachtler.net root@tachtler.net
# Person who should get root's mail. Don't receive mail as root!
root@tachtler.net klaus@tachtler.net
HINWEIS - Der Inhalt lehnt sich stark an die Konfigurationsdatei
/etc/postfix/aliases
an!
ACHTUNG - Im Gegensatz zur Konfigurationsdatei
/etc/postfix/aliases
gibt es keine Doppelpunkte in dieser Datei!
ACHTUNG - Die Datei wird von oben nach unten Abgearbeitet, deshalb ist es wichtig die Reihenfolge gegenüber der Konfigurationsdatei
/etc/postfix/aliases
anzupassen!
Anschliessend ist sind die Änderungen noch in ein für Postfix besser lesbares Datenbankformat umzuwandeln, was erstmals mit nachfolgendem Befehl durchgeführt werden kann:
# postmap lmdb:/etc/postfix/virtual_alias_maps
HINWEIS - Es erfolgt keine Ausgabe, nach Befehlsausführung!
Abschliessend kann mit nachfolgendem Befehl überprüft werden, ob die Änderungen übernommen wurden:
# ls -l /etc/postfix/virtual_alias_maps* -rw-r--r-- 1 root root 1774 Apr 20 06:25 /etc/postfix/virtual_alias_maps -rw-r--r-- 1 root root 12288 Apr 20 06:25 /etc/postfix/virtual_alias_maps.lmdb
HINWEIS - Hier MÜSSEN Aliase hinterlegt werden, zusätzlich zum Ergebnis der SQL-Abfrage!
SQL Maps
/etc/postfix/sql
Bevor weitere Konfigurationsdateien für „SQL Maps“ angelegt werden können, sollte mit nachfolgendem Befehl ein neues Verzeichnis wie folgt erstellt werden:
# mkdir /etc/postfix/sql
Anschliessend sollten noch die richtigen Besitz- und Dateirechte wie folgt gesetzt werden:
Besitzrechte:
# chown -R root:root /etc/postfix/sql
Dateirechte:
# chmod -R 755 /etc/postfix/sql
/etc/postfix/sql/mysql_virtual_domains_maps.cf
Mit nachfolgendem Befehl wird die Konfigurationsdatei /etc/postfix/sql/mysql_virtual_domains_maps.cf
angelegt und auch gleich mit nachfolgendem Inhalt konfiguriert:
# vim /etc/postfix/sql/mysql_virtual_domains_maps.cf
user = postfixuser password = geheim hosts = db.idmz.tachtler.net dbname = postfix query = SELECT domain FROM domain WHERE domain='%s' AND backupmx = '0' AND active = '1' AND transport = 'virtual'
Anschliessend sollten noch die richtigen Besitz- und Dateirechte wie folgt gesetzt werden, da hier das Passwort für den Datenbankzugriff im Klartext enthalten ist, sollte diese nicht von jedem Benutzer gelesen werden können:
Besitzrechte:
# chown -R root:postfix /etc/postfix/sql/mysql_virtual_domains_maps.cf
Dateirechte:
# chmod -R 640 /etc/postfix/sql/mysql_virtual_domains_maps.cf
/etc/postfix/sql/mysql_virtual_mailbox_maps.cf
Mit nachfolgendem Befehl wird die Konfigurationsdatei /etc/postfix/sql/mysql_virtual_mailbox_maps.cf
angelegt und auch gleich mit nachfolgendem Inhalt konfiguriert:
# vim /etc/postfix/sql/mysql_virtual_mailbox_maps.cf
user = postfixuser password = geheim hosts = db.idmz.tachtler.net dbname = postfix query = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1'
Anschliessend sollten noch die richtigen Besitz- und Dateirechte wie folgt gesetzt werden, da hier das Passwort für den Datenbankzugriff im Klartext enthalten ist, sollte diese nicht von jedem Benutzer gelesen werden können:
Besitzrechte:
# chown -R root:postfix /etc/postfix/sql/mysql_virtual_mailbox_maps.cf
Dateirechte:
# chmod -R 640 /etc/postfix/sql/mysql_virtual_mailbox_maps.cf
/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf
Mit nachfolgendem Befehl wird die Konfigurationsdatei /etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf
angelegt und auch gleich mit nachfolgendem Inhalt konfiguriert:
# vim /etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf
user = postfixuser password = geheim hosts = db.idmz.tachtler.net dbname = postfix query = SELECT maildir FROM mailbox,alias_domain WHERE alias_domain.alias_domain = '%d' and mailbox.username = CONCAT('%u', '@', alias_domain.target_domain) AND mailbox.active='1' AND alias_domain.active='1'
Anschliessend sollten noch die richtigen Besitz- und Dateirechte wie folgt gesetzt werden, da hier das Passwort für den Datenbankzugriff im Klartext enthalten ist, sollte diese nicht von jedem Benutzer gelesen werden können:
Besitzrechte:
# chown -R root:postfix /etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf
Dateirechte:
# chmod -R 640 /etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf
/etc/postfix/sql/mysql_virtual_alias_maps.cf
Mit nachfolgendem Befehl wird die Konfigurationsdatei /etc/postfix/sql/mysql_virtual_alias_maps.cf
angelegt und auch gleich mit nachfolgendem Inhalt konfiguriert:
# vim /etc/postfix/sql/mysql_virtual_alias_maps.cf
user = postfixuser password = geheim hosts = db.idmz.tachtler.net dbname = postfix query = SELECT goto FROM alias WHERE address='%s' AND active = '1'
Anschliessend sollten noch die richtigen Besitz- und Dateirechte wie folgt gesetzt werden, da hier das Passwort für den Datenbankzugriff im Klartext enthalten ist, sollte diese nicht von jedem Benutzer gelesen werden können:
Besitzrechte:
# chown -R root:postfix /etc/postfix/sql/mysql_virtual_alias_maps.cf
Dateirechte:
# chmod -R 640 /etc/postfix/sql/mysql_virtual_alias_maps.cf
/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf
Mit nachfolgendem Befehl wird die Konfigurationsdatei /etc/postfix/sql/mysql_virtual_alias_domain_maps.cf
angelegt und auch gleich mit nachfolgendem Inhalt konfiguriert:
# vim /etc/postfix/sql/mysql_virtual_alias_domain_maps.cf
user = postfixuser password = geheim hosts = db.idmz.tachtler.net dbname = postfix query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('%u', '@', alias_domain.target_domain) AND alias.active='1' AND alias_domain.active='1'
Anschliessend sollten noch die richtigen Besitz- und Dateirechte wie folgt gesetzt werden, da hier das Passwort für den Datenbankzugriff im Klartext enthalten ist, sollte diese nicht von jedem Benutzer gelesen werden können:
Besitzrechte:
# chown -R root:postfix /etc/postfix/sql/mysql_virtual_alias_domain_maps.cf
Dateirechte:
# chmod -R 640 /etc/postfix/sql/mysql_virtual_alias_domain_maps.cf
/etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf
Mit nachfolgendem Befehl wird die Konfigurationsdatei /etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf
angelegt und auch gleich mit nachfolgendem Inhalt konfiguriert:
# vim /etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf
user = postfixuser password = geheim hosts = db.idmz.tachtler.net dbname = postfix query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('@', alias_domain.target_domain) AND alias.active='1' AND alias_domain.active='1'
Anschliessend sollten noch die richtigen Besitz- und Dateirechte wie folgt gesetzt werden, da hier das Passwort für den Datenbankzugriff im Klartext enthalten ist, sollte diese nicht von jedem Benutzer gelesen werden können:
Besitzrechte:
# chown -R root:postfix /etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf
Dateirechte:
# chmod -R 640 /etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf
/etc/postfix/main.cf
HINWEIS - Es sind keine zusätzliche Änderungen notwendig!
Falls vorstehende Änderungen durchgeführt wurden, sollte ein Neustart von Postfix nichts mehr im Wege stehen.
Bevor der der postfix/master
-Daemon/Dienst zum ersten mal gestartet werden soll, ist eine Überprüfung der korrekten Konfiguration durch nachfolgenden Befehl, zu empfehlen
postconf -n
und es sollte eine Ausgabe, in etwa wie die nachfolgend gezeigte erscheinen:
# postconf -n alias_database = $alias_maps alias_maps = lmdb:${config_directory}/aliases broken_sasl_auth_clients = yes compatibility_level = 3.10 debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5 lmtp_tls_CApath = $smtp_tls_CApath lmtp_tls_block_early_mail_reply = $smtp_tls_block_early_mail_reply lmtp_tls_chain_files = ${config_directory}/ssl/certs/server-lmtp-chain.pem lmtp_tls_ciphers = high lmtp_tls_exclude_ciphers = $smtp_tls_exclude_ciphers lmtp_tls_loglevel = $smtp_tls_loglevel lmtp_tls_mandatory_ciphers = high lmtp_tls_mandatory_exclude_ciphers = $smtp_tls_mandatory_exclude_ciphers lmtp_tls_mandatory_protocols = $smtp_tls_mandatory_protocols lmtp_tls_protocols = $smtp_tls_protocols lmtp_tls_security_level = secure lmtp_tls_wrappermode = yes mydestination = $myhostname, localhost.$mydomain, localhost, server.idmz.$mydomain myhostname = mx1.tachtler.net mynetworks = 127.0.0.0/32 10.0.0.0/24 192.168.0.0/24 [::1]/128 [fd00:0:0:10::]/64 [fe80:0:0:10::]/64 [fd00:0:0:192::]/64 myorigin = server.idmz.$mydomain proxy_interfaces = 88.217.171.167 recipient_canonical_maps = lmdb:${config_directory}/recipient_canonical_maps smtp_dns_support_level = dnssec smtp_tls_CApath = ${config_directory}/ssl/certs smtp_tls_block_early_mail_reply = yes smtp_tls_chain_files = ${config_directory}/ssl/certs/server-chain.pem smtp_tls_connection_reuse = yes smtp_tls_exclude_ciphers = ECDHE-RSA-AES256-SHA384, ECDHE-RSA-AES256-SHA, DHE-RSA-AES256-GCM-SHA384, DHE-RSA-AES256-SHA256, DHE-RSA-AES256-SHA, ECDHE-RSA-CAMELLIA256-SHA384, DHE-RSA-CAMELLIA256-SHA256, DHE-RSA-CAMELLIA256-SHA, AES256-SHA256, AES256-SHA, CAMELLIA256-SHA256, CAMELLIA256-SHA, ECDHE-RSA-AES128-SHA256, ECDHE-RSA-AES128-SHA, DHE-RSA-AES128-SHA256, DHE-RSA-AES128-SHA, ECDHE-RSA-CAMELLIA128-SHA256, DHE-RSA-CAMELLIA128-SHA256, DHE-RSA-CAMELLIA128-SHA, AES128-SHA256, AES128-SHA, CAMELLIA128-SHA256, CAMELLIA128-SHA smtp_tls_loglevel = 1 smtp_tls_mandatory_exclude_ciphers = ECDHE-RSA-AES256-SHA384, ECDHE-RSA-AES256-SHA, DHE-RSA-AES256-GCM-SHA384, DHE-RSA-AES256-SHA256, DHE-RSA-AES256-SHA, ECDHE-RSA-CAMELLIA256-SHA384, DHE-RSA-CAMELLIA256-SHA256, DHE-RSA-CAMELLIA256-SHA, AES256-SHA256, AES256-SHA, CAMELLIA256-SHA256, CAMELLIA256-SHA, ECDHE-RSA-AES128-SHA256, ECDHE-RSA-AES128-SHA, DHE-RSA-AES128-SHA256, DHE-RSA-AES128-SHA, ECDHE-RSA-CAMELLIA128-SHA256, DHE-RSA-CAMELLIA128-SHA256, DHE-RSA-CAMELLIA128-SHA, AES128-SHA256, AES128-SHA, CAMELLIA128-SHA256, CAMELLIA128-SHA smtp_tls_mandatory_protocols = >=TLSv1.2, <=TLSv1.3 smtp_tls_protocols = >=TLSv1.2, <=TLSv1.3 smtp_tls_security_level = dane smtp_tls_session_cache_database = lmdb:${data_directory}/smtp_scache smtpd_recipient_restrictions = check_policy_service inet:imap.tachtler.net:12340 smtpd_sasl_auth_enable = yes smtpd_sasl_local_domain = $mydomain smtpd_sasl_path = inet:imap.tachtler.net:12345 smtpd_sasl_security_options = noanonymous, noplaintext smtpd_sasl_tls_security_options = noanonymous smtpd_sasl_type = dovecot smtpd_tls_CApath = ${config_directory}/ssl/certs smtpd_tls_ask_ccert = yes smtpd_tls_auth_only = yes smtpd_tls_chain_files = ${config_directory}/ssl/certs/server-chain.pem smtpd_tls_exclude_ciphers = ECDHE-RSA-AES256-SHA384, ECDHE-RSA-AES256-SHA, DHE-RSA-AES256-GCM-SHA384, DHE-RSA-AES256-SHA256, DHE-RSA-AES256-SHA, ECDHE-RSA-CAMELLIA256-SHA384, DHE-RSA-CAMELLIA256-SHA256, DHE-RSA-CAMELLIA256-SHA, AES256-SHA256, AES256-SHA, CAMELLIA256-SHA256, CAMELLIA256-SHA, ECDHE-RSA-AES128-SHA256, ECDHE-RSA-AES128-SHA, DHE-RSA-AES128-SHA256, DHE-RSA-AES128-SHA, ECDHE-RSA-CAMELLIA128-SHA256, DHE-RSA-CAMELLIA128-SHA256, DHE-RSA-CAMELLIA128-SHA, AES128-SHA256, AES128-SHA, CAMELLIA128-SHA256, CAMELLIA128-SHA smtpd_tls_loglevel = 1 smtpd_tls_mandatory_exclude_ciphers = ECDHE-RSA-AES256-SHA384, ECDHE-RSA-AES256-SHA, DHE-RSA-AES256-GCM-SHA384, DHE-RSA-AES256-SHA256, DHE-RSA-AES256-SHA, ECDHE-RSA-CAMELLIA256-SHA384, DHE-RSA-CAMELLIA256-SHA256, DHE-RSA-CAMELLIA256-SHA, AES256-SHA256, AES256-SHA, CAMELLIA256-SHA256, CAMELLIA256-SHA, ECDHE-RSA-AES128-SHA256, ECDHE-RSA-AES128-SHA, DHE-RSA-AES128-SHA256, DHE-RSA-AES128-SHA, ECDHE-RSA-CAMELLIA128-SHA256, DHE-RSA-CAMELLIA128-SHA256, DHE-RSA-CAMELLIA128-SHA, AES128-SHA256, AES128-SHA, CAMELLIA128-SHA256, CAMELLIA128-SHA smtpd_tls_mandatory_protocols = >=TLSv1.2, <=TLSv1.3 smtpd_tls_protocols = >=TLSv1.2, <=TLSv1.3 smtpd_tls_received_header = yes smtpd_tls_security_level = may smtpd_tls_session_cache_database = lmdb:${data_directory}/smtpd_scache tls_append_default_CA = yes tls_preempt_cipherlist = yes tls_random_bytes = 255 virtual_alias_domains = lmdb:/etc/postfix/virtual_alias_domains_maps virtual_alias_maps = lmdb:/etc/postfix/virtual_alias_maps, proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf, proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf, proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf virtual_mailbox_domains = lmdb:/etc/postfix/virtual_mailbox_domains_maps, proxy:mysql:/etc/postfix/sql/mysql_virtual_domains_maps.cf virtual_mailbox_maps = lmdb:/etc/postfix/virtual_mailbox_maps, proxy:mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf, proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf virtual_transport = lmtp:inet:imap.tachtler.net:24
HINWEIS - die Konfiguration des
postfix/master
-Daemon/Dienst konnte korrekt gelesen werden, wenn die Konfiguration ohne Fehlermeldungen erscheint, was letztendlich zwar nicht bedeutet, das Sie auch korrekt ist, aber zumindest syntaktische Fehler ausschliesst !!!
Neustart
Zuerst sollte nun der postfix-Server mit nachfolgendem Befehle neu gestartet werden:
# systemctl restart postfix.service
Mit nachfolgendem Befehl kann der Status des Postfix-Servers abgefragt werden:
# systemctl status postfix.service ● postfix.service - Postfix Mail Transport Agent Loaded: loaded (/usr/lib/systemd/system/postfix.service; enabled; preset: > Active: active (running) since Mon 2024-12-30 19:45:17 CET; 7s ago Invocation: d54adbb5677b4df691177de4c31b9a10 Process: 4487 ExecStart=/usr/bin/postfix start (code=exited, status=0/SUCCE> Main PID: 4556 (master) Tasks: 3 (limit: 2315) Memory: 2.7M (peak: 4.1M) CPU: 263ms CGroup: /system.slice/postfix.service ├─4556 /usr/lib/postfix/bin/master -w ├─4557 pickup -l -t unix -u └─4558 qmgr -l -t unix -u Dec 30 19:45:16 server systemd[1]: Starting Postfix Mail Transport Agent... Dec 30 19:45:17 server postfix[4554]: postfix/postlog: starting the Postfix mai> Dec 30 19:45:17 server postfix/postfix-script[4554]: starting the Postfix mail > Dec 30 19:45:17 server postfix/master[4556]: daemon started -- version 3.9.1, c> Dec 30 19:45:17 server systemd[1]: Started Postfix Mail Transport Agent.
Nachfolgender Befehl listet die IP-Adressen und die Ports auf, auf denen der Postfix-Server lauscht:
# ss -taubenp | grep postfix tcp LISTEN 0 100 0.0.0.0:465 0.0.0.0:* users:(("master",pid=4556,fd=25)) ino:57586 sk:b cgroup:/system.slice/postfix.service <-> tcp LISTEN 0 100 0.0.0.0:25 0.0.0.0:* users:(("master",pid=4556,fd=13)) ino:57571 sk:c cgroup:/system.slice/postfix.service <-> tcp LISTEN 0 100 0.0.0.0:587 0.0.0.0:* users:(("master",pid=4556,fd=21)) ino:57580 sk:e cgroup:/system.slice/postfix.service <-> tcp LISTEN 0 100 [::]:465 [::]:* users:(("master",pid=4556,fd=26)) ino:57587 sk:12 cgroup:/system.slice/postfix.service v6only:1 <-> tcp LISTEN 0 100 [::]:25 [::]:* users:(("master",pid=4556,fd=14)) ino:57572 sk:13 cgroup:/system.slice/postfix.service v6only:1 <-> tcp LISTEN 0 100 [::]:587 [::]:* users:(("master",pid=4556,fd=22)) ino:57581 sk:16 cgroup:/system.slice/postfix.service v6only:1 <->
Test
HINWEIS - Ein Test, ob Dovecot die SQL-Ermittlung der einzelnen Benutzer honoriert, kann erst erfolgen, wenn ein MTA z.B. Postfix so konfiguriert wurde, das dieser den Dovecot ArchLinux - SQL von Dovecot bei der Entgegennahme einer E-Mail ebenfalls konsultiert, ob der Benutzer gültig ist und genug Speicherplatz für die in den Dovecot einzuliefernde E-Mail vorhanden ist.
Siehe dazu auch den nachfolgenden internen Link