Lesen Sie zuerst den vorherigen Teil
Dieser Artikel ist der siebte Beitrag in der Serie „E-Mail-Server unter Linux einrichten“.
Im vorherigen Teil haben wir behandelt, wie Dovecot mit PostgreSQL integriert wird, um die Benutzerauthentifizierung einzurichten.
Falls Sie es noch nicht überprüft haben, empfehle ich, dies zuerst zu lesen.
👉 Vorheriger Teil: Dovecot auth-sql.conf.ext Einstellungen und Passwort-Hashing


Postfix-Konfigurationsdateistruktur

Postfix ist ein SMTP-Server, der für den Versand von E-Mails verantwortlich ist und verschiedene Konfigurationsdateien verwendet, um seine Funktionsweise zu steuern.
In diesem Artikel wird die Struktur der Postfix-Konfigurationsdateien und ihre Hauptfunktionen erläutert.

Postfix Konfigurationsdiagramm

Wichtige Postfix-Konfigurationsdateien

Dateiname Rolle
/etc/postfix/main.cf Wichtige Konfigurationsdatei von Postfix (E-Mail-Versand, Netzwerkeinstellungen usw.)
/etc/postfix/master.cf Verwaltung der Postfix-Dienste (SMTP, LMTP, SASL-Authentifizierung usw.)
/etc/postfix/virtual Mapping von virtuellen Benutzern (Domain)
/etc/postfix/aliases Verwaltung von E-Mail-Aliasen für Systembenutzer
/etc/postfix/transport Festlegung des E-Mail-Versandweges für bestimmte Domains/Adressen
/etc/postfix/relay_domains Festlegung der Relay-erlaubten Domains
/etc/postfix/sasl_passwd Speicherung von Authentifizierungsinformationen für den SMTP-Relay-Server
/etc/postfix/sql/*.cf Konfigurationsdateien zur Datenbankanbindung (PostgreSQL)

Wichtige Postfix-Konfigurationselemente (main.cf)

Schauen wir uns die wichtigsten Konfigurationseinstellungen an, die das Verhalten von Postfix definieren. Der Dateipfad ist /etc/postfix/main.cf.

1️⃣ Grundlegende E-Mail-Server-Einstellungen

myhostname = mail.example.com
mydomain = example.com
myorigin = $mydomain
inet_interfaces = all
inet_protocols = ipv4
  • myhostname → Hostname des E-Mail-Servers
  • mydomain → Standard-Domain-Einstellung
  • inet_interfaces → Konfiguration zum Empfangen von E-Mails über alle Netzwerk-Interfaces
  • inet_protocols → Nur IPv4 verwenden (IPv6 kann deaktiviert werden)

2️⃣ E-Mail-Relay-Beschränkungen

smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
  • permit_mynetworks → Relay nur in vertrauenswürdigen Netzwerken erlauben
  • permit_sasl_authenticated → Nur SASL-authentifizierte Benutzer dürfen E-Mails relayn
  • defer_unauth_destination → Unauthentifiziertes externes Relay blockieren

3️⃣ Virtuelle Benutzer und Datenbankintegration

Um Postfix PostgreSQL zur Verwaltung virtueller Domains und Mailboxen zu verwenden, müssen die folgenden Einstellungen hinzugefügt werden.

virtual_mailbox_domains = pgsql:/etc/postfix/sql/virtual_domains.cf
virtual_mailbox_maps = pgsql:/etc/postfix/sql/virtual_mailboxes.cf
virtual_alias_maps = pgsql:/etc/postfix/sql/virtual_aliases.cf

🔹 Erklärung
- virtual_mailbox_domains → Abfrage der empfangbaren virtuellen Domains aus der Datenbank
- virtual_mailbox_maps → Abfrage der Benutzer-Email-Box-Informationen aus der Datenbank
- virtual_alias_maps → Abfrage der E-Mail-Aliase aus der Datenbank

💡 Im Falle von MySQL
Sie können pgsql: durch mysql: ersetzen.

💡 In einer Umgebung mit hohem Datenverkehr kann die Verwendung von proxy:pgsql: in Bezug auf die Leistung vorteilhaft sein. Allerdings funktioniert es in einer allgemeinen Umgebung auch ohne proxy: gut.


Postfix so einrichten, dass es die Datenbank verwendet

Um Postfix PostgreSQL verwenden zu lassen, müssen die entsprechenden Pakete installiert werden.

sudo apt update
sudo apt install postfix postfix-pgsql
  • postfix → Grundlegender Postfix SMTP-Server
  • postfix-pgsql → Paket, das Postfix die Integration mit PostgreSQL ermöglicht

Nach der Installation müssen Sie eine Konfigurationsdatei erstellen, damit Postfix Benutzerinformationen von PostgreSQL abruft.


Postfix-Datenbankintegrationskonfiguration (Erstellen von virtual_*.cf Dateien)

Postfix verwendet die Dateien virtual_domains.cf, virtual_mailboxes.cf und virtual_aliases.cf, um Informationen aus der Datenbank abzurufen.
Diese Dateien müssen direkt erstellt werden; orientieren Sie sich an den folgenden Inhalten, um diese zu erstellen.

1️⃣ /etc/postfix/sql/virtual_domains.cf (Domainabfrageeinstellungen)

user = mailadmin
password = yourpassword
dbname = mail
hosts = 127.0.0.1
query = SELECT domain_name FROM mail_domain WHERE domain_name='%s' AND active=true

Erklärung

user → PostgreSQL-Benutzerkonto (Stellen Sie sicher, dass der Benutzer, der auf die DB zugreift, zuvor in der DB erstellt wurde.)
password → Passwort des PostgreSQL-Kontos (Datenbankbenutzer mailadmin Passwort)
dbname → Datenbankname
hosts → Datenbankserveradresse (lokaler Server verwenden)
query → Abfrage von empfangbaren Domains aus der mail_domain-Tabelle

2️⃣ /etc/postfix/sql/virtual_mailboxes.cf (Mailboxabfrageeinstellungen)

user = mailadmin
password = yourpassword
dbname = mail
hosts = 127.0.0.1
query = SELECT home_directory FROM mail_users WHERE email='%s'

Erklärung

query → Abfrage des Speicherorts der E-Mails des Benutzers (gibt das Feld home_directory aus der Tabelle mail_users zurück)
Postfix gibt den Pfad zurück, damit die E-Mails des Benutzers im richtigen Verzeichnis gespeichert werden.

3️⃣ /etc/postfix/sql/virtual_aliases.cf (E-Mail-Aliasabfrageeinstellungen)

user = mailadmin
password = yourpassword
dbname = mail
hosts = 127.0.0.1
query = SELECT destination_email FROM mail_alias WHERE source_email='%s'

Erklärung

query → Bei Vorhandensein von Aliassen wird die tatsächliche Ziel-E-Mail abgerufen, an die die E-Mail weitergeleitet wird.
Es sucht in der Tabelle mail_alias nach der registrierten E-Mail des Aliasses und gibt sie zurück.


Sicherheitskonfiguration

Diese Konfigurationsdateien müssen aufgrund der enthaltenen Passwörter gesperrt werden.

sudo chmod 640 /etc/postfix/sql/virtual_*.cf
sudo chown root:postfix /etc/postfix/sql/virtual_*.cf

🔒 Sicherheitshinweise:

Da die Konfigurationsdateien Passwörter enthalten, müssen die Zugriffsrechte eingeschränkt werden, damit andere Benutzer sie nicht lesen können.
Setzen Sie die Berechtigung auf 640, sodass nur der Postfix-Prozess (Gruppe postfix) darauf zugreifen kann.


Postfix-Konfiguration neu laden

Nachdem die Konfiguration vollständig ist, sollten Sie Postfix neu starten, um die Änderungen zu übernehmen.

sudo systemctl restart postfix

Zusammenfassung und nächste Schritte

Erklärung der Struktur und Rolle der Postfix-Konfigurationsdateien
Hinzufügen von Hauptkonfigurationen in main.cf von Postfix
Konfiguration der virtual_*.cf Dateien, um Postfix mit PostgreSQL zu integrieren

Im nächsten Teil werden wir behandeln, wie Postfix mit Dovecot integriert wird, um SMTP-Authentifizierung zu konfigurieren.
Dabei werden wir den E-Mail-Server so konfigurieren, dass er die Funktionen des Sendens und Empfangens vollständig unterstützen kann.

👉 Nächster Teil: Integration von Postfix und Dovecot sowie SMTP-Authentifizierung (Demnächst!)