Postfix-Konfiguration mit make verwalten
Die Postfix-Konfiguration verteilt sich auf verschiedene Dateien, die unterschiedlich behandelt werden, um die enthaltenen Informationen zu aktivieren.
Änderungen in der lokalen Alias-Datei /etc/aliases
werden mit dem Befehl newaliases
aktiviert und
Maps mit postmap
in das gewählte Binärformat umgewandelt.
Für Änderungen in main.cf und master.cf schließlich
gibt es den Befehl: postfix reload
.
Dabei sind viele Abhängigkeiten zu bedenken und gerade, wenn ich die Konfiguration nur selten ändere, habe ich nicht alle nötigen Befehle im Kopf und vergesse gern das eine oder andere.
Ein Skript
Gegen Vergesslichkeit helfen Skripts und ein solches verwende ich, um nach Konfigurationsänderungen am Mailserver diese mit wenig Aufwand zu aktivieren.
Ein Shell-Skript wäre prinzipiell möglich, aber dieses würde entweder die Abhängigkeiten nicht berücksichtigen und immer alle Aktionen ausführen. Oder es wäre so komplex, dass es kompliziert zu schreiben und zu warten wäre.
Ein Makefile hingegen
berücksichtigt Abhängigkeiten automatisch
anhand des Änderungsdatums von Dateien
und kann daher sehr kurz und einfach ausfallen.
Damit rufe ich postfix reload
, postmap
und newaliases
genau dann auf, wenn es nötig ist und muss mir nur einen Befehl merken:
make
Diesen muss ich allerdings im Verzeichnis /etc/postfix/ aufrufen.
Wie sieht das Makefile aus?
Ich verwende ein sehr einfaches Makefile:
# Makefile für Postfix
MAPS = /etc/aliases.db \
transports.db \
#
all: .reloaded
.reloaded: $(MAPS) main.cf master.cf
postfix reload && touch .reloaded
%.db: %
postmap $<
/etc/aliases.db: /etc/aliases
newaliases
Es enthält eine Liste aller Maps (MAPS
) sowie Regeln,
um diese in das verwendete Binärformat umzuwandeln.
Das können generische Musterregeln sein (%.db: %
)
oder spezifische wie für die lokale Alias-Datenbank.
Eine Vergleichsdatei (.reloaded) hält den Zeitpunkt fest,
zu dem die Konfiguration das letzte Mal durch make
neu geladen wurde.
Diese Datei ist für make
abhängig von allen Maps
sowie den beiden Konfigurationsdateien.
Über die Abhängigkeiten bestimmt make, welche Aktionen auszuführen sind.
Der Bequemlichkeit halber gibt es die allererste Regel (all: .reloaded
),
die dafür sorgt, dass make beim Aufruf ohne Argumente
alles tut, was notwendig ist,
um eine geänderte Konfiguration zu aktivieren.
Damit habe ich alles Nötige zusammen, um Änderungen an der Postfix-Konfiguration vollständig zu aktivieren.
Damit ich mir nicht merken muss,
dass ich make
im Verzeichnis /etc/postfix/
und mit Root-Rechten aufrufen muss,
kann ich die Befehlsfolge
cd/etc/postfix && sudo make
als Alias, Shellfunktion oder Skript
mit Namen activate_postfix_changes
ablegen
und brauch mir noch weniger zu merken.