linux-rhel-centos-fedora mail postfix rhel selinux mta

Postfix on RHEL: Mail Transfer Agent (Artikel 099)

Konfiguration von Postfix unter RHEL. Erfahren Sie alles über das alternatives-System, die Integration in firewalld und das Härten des Mail-Versands mittels SELinux.

# Postfix on RHEL: Sicherer Mail-Versand im Red Hat Standard

TL;DR / Management Summary In RHEL ist Postfix der Standard-MTA (Mail Transfer Agent). Ein Senior Admin muss wissen, dass RHEL über das alternatives-System verfügt, um zwischen verschiedenen MTAs (wie Sendmail oder Postfix) zu wechseln. Zudem erfordert der Betrieb von Postfix auf RHEL eine präzise Abstimmung mit der Firewalld (Port 25/587) und die Beachtung von SELinux-Kontexten für Mail-Spools und Aliase.


# 1. Einführung & Architektur

Die RHEL Mail-Struktur.

Postfix in RHEL ist hochgradig modular und wird über systemd verwaltet.

# Die Komponenten (Mermaid)

graph LR
    A[Applikation: PHP/Bash] -->|Binary: /usr/sbin/sendmail| B[alternatives system]
    B -->|Symlink| C[Postfix MTA]
    C -->|Spool| D[/var/spool/postfix]
    C -->|Queue Management| E[Master Daemon]
    E -->|SMTP| F[External Smarthost / Internet]
    G{firewalld} -->|Filter| C

# 2. Installation & alternatives System

Den richtigen MTA setzen.

RHEL erlaubt die Koexistenz mehrerer MTAs.

# Installation

sudo dnf install postfix mailx

# MTA umschalten

# Zeige alle installierten MTAs
sudo alternatives --display mta

# Setze Postfix als Standard
sudo alternatives --set mta /usr/sbin/sendmail.postfix

# 3. SELinux & Postfix: Den Spool absichern

Sicherheit für Mail-Daten.

Postfix nutzt dedizierte Verzeichnisse für die Warteschlange. Diese müssen korrekt gelabelt sein.

# Standard-Labels prüfen

ls -Z /var/spool/postfix
# Output: system_u:object_r:postfix_spool_t:s0

# Der Mail-Webserver Boolean

Wenn Ihr Webserver (httpd_t) Mails via Postfix versenden soll, müssen Sie oft einen Boolean setzen:

sudo setsebool -P httpd_can_sendmail on

# 4. Day-2 Operations: Konfiguration & Firewall

Den Betrieb sichern.

# Firewall öffnen

Für ein reines Versandsystem (Client) reicht inet_interfaces = loopback-only in der main.cf. Wenn der Server Mails empfangen soll:

sudo firewall-cmd --permanent --add-service=smtp
sudo firewall-cmd --reload

# Aliase verwalten

Datei: /etc/aliases Vergessen Sie nicht, System-Mails an eine echte Adresse umzuleiten:

root:    sysadmin@company.com

Danach Datenbank aktualisieren: sudo newaliases.


# 5. Troubleshooting & “War Stories”

Wenn die Mail im Spool verhungert.

# Story 1: “Der blockierte Sendmail-Aufruf”

Symptom: Skripte melden “Permission Denied” beim Aufruf von mail oder sendmail. Ursache: Das alternatives-System zeigt auf einen falschen Pfad oder SELinux blockiert die Ausführung für den spezifischen User-Kontext. Lösung: Prüfen Sie getsebool -a | grep mail und stellen Sie sicher, dass das Binary das Label postfix_exec_t trägt.

# Story 2: “Die volle /var Partition”

Symptom: Postfix stellt den Dienst ein mit “Queue report: out of disk space”. Ursache: Ein Cronjob erzeugt Fehlermeldungen im Sekundentakt, die in der Postfix-Queue landen, weil der Smarthost nicht erreichbar ist. Lösung: Queue leeren (postsuper -d ALL) und die Ursache des Mail-Spams im Cronjob beheben. Limitieren Sie die Queue-Größe in der main.cf: message_size_limit = 10240000.


# 6. Fazit & Empfehlung

  • RHEL Standard: Nutzen Sie Postfix. Es ist besser dokumentiert und sicherer als das alte Sendmail.
  • Security: Nutzen Sie smtpd_banner, um die Software-Version zu verschleiern.
  • Wichtig: Testen Sie den Mail-Versand immer mit mail -s "Test" root, um sicherzustellen, dass die Aliase funktionieren.

# Anhang: Cheatsheet

Aufgabe RHEL Befehl
Status prüfen systemctl status postfix
Queue anzeigen postqueue -p
Queue erzwingen postqueue -f
Einzelne Mail löschen postsuper -d <ID>
Alle Mails löschen postsuper -d ALL
Config validieren postconf -n
SELinux Status `sestatus -b
Gecachte Aliase ls -l /etc/aliases.db