Sehr geehrter Herr Kepler,
bei der Überprüfung unserer Postfix-Konfiguration in Verbindung mit PostSRSd ist uns ein Problem bei der Verarbeitung von E-Mail-Weiterleitungen mit aktiviertem Sender Rewriting Scheme (SRS) aufgefallen.
Problem: LiveConfig versieht bei aktivierter SRS-Option sämtliche Weiterleitungsziele eines E-Mail-Kontos mit dem Präfix srs= – unabhängig davon, ob es sich um interne oder externe Empfänger handelt.
Dadurch können auch lokale Weiterleitungen unnötig über den für SRS vorgesehenen SMTP-Transport verarbeitet werden.
1. Verwendete Umgebung
- Betriebssystem: Debian 13 (Trixie)
- LiveConfig-Version: 3.3.0
- Mailserver: Postfix mit Dovecot
- SRS-Implementierung: PostSRSd
- Verwaltung virtueller Maildomains und Postfächer über LiveConfig
- Separater Postfix-SRS-Transport über Port 10027
Die SRS-Funktion wird über folgende Option aktiviert:
„SRS (Sender Rewriting Scheme) zur Weiterleitung von E-Mails anwenden“
2. Fehlerbeschreibung anhand eines anonymisierten Beispiels
Angenommen, folgende E-Mail-Adresse wird über LiveConfig verwaltet:
info@beispiel-domain.de
Für dieses Konto sind drei Weiterleitungen eingerichtet:
intern1@beispiel-domain.de– lokales Postfachextern@example.com– externer Empfängerintern2@beispiel-domain.de– lokales Postfach
Die Domain beispiel-domain.de sowie beide internen Empfänger werden auf demselben Postfix-Server verwaltet.
Ohne aktivierte SRS-Option erzeugt LiveConfig folgende Alias-Konfiguration:
info@beispiel-domain.de intern1@beispiel-domain.de, extern@example.com, intern2@beispiel-domain.de
Wird die SRS-Option aktiviert, ergibt sich aufgrund der aktuellen Implementierung folgende Konfiguration:
info@beispiel-domain.de srs=intern1@beispiel-domain.de, srs=extern@example.com, srs=intern2@beispiel-domain.de
Damit werden auch die beiden internen Empfänger als SRS-Weiterleitungsziele behandelt.
3. Ursache im LiveConfig-Quellcode
In der Datei
/usr/lib/liveconfig/lua/postfix.lua
befindet sich innerhalb der Funktion addMailbox() folgender Abschnitt:
-- write forwards (if defined)
if type(data.forwards) == "table" then fhw:write(name, "@", data.domain, "\t") if (data.mailbox == true or data.autoresponder == true) and name ~= '' then -- save copy to local mailbox (or deliver to Dovecot Sieve for autoresponder) fhw:write(name, "@", data.domain, ", ") end for i, s in ipairs(data.forwards) do if i > 1 then fhw:write(", ") end if data.srs and not string.match(s, "^srs=") then fhw:write("srs=") end fhw:write(s) end fhw:write("\n")
end
Die entscheidende Anweisung lautet:
Hier wird lediglich geprüft, ob SRS für das Konto aktiviert wurde und ob die Weiterleitungsadresse bereits das Präfix srs= besitzt.
Eine Unterscheidung zwischen lokal verwalteten und externen Maildomains erfolgt nicht.
4. Technische Auswirkungen
In unserer Postfix-Konfiguration werden SRS-markierte Empfänger über folgende Transportregel verarbeitet:
Datei: /etc/postfix/transport_srs.regex
Der separate SMTP-Dienst übernimmt die Nachricht und übergibt sie an einen speziellen Cleanup-Dienst zur SRS-Verarbeitung.
Durch die Kennzeichnung interner Weiterleitungsziele können folgende unerwünschte Effekte entstehen:
- Unnötige erneute SMTP-Einlieferung über Port 10027
- Zusätzliche Verarbeitung durch Postfix
- Mögliche Veränderung des Envelope-Absenders auch bei lokaler Zustellung
- Erhöhte Komplexität bei der Fehleranalyse
- Unnötige zusätzliche Verarbeitungsschritte bei Weiterleitungsketten
Die tatsächlichen Auswirkungen hängen von der jeweiligen Postfix-Konfiguration ab.
5. Erwartetes Verhalten
Aus unserer Sicht sollte LiveConfig bei aktivierter SRS-Option zwischen internen und externen Weiterleitungszielen unterscheiden.
Die gewünschte Alias-Konfiguration wäre:
info@beispiel-domain.de intern1@beispiel-domain.de, srs=extern@example.com, intern2@beispiel-domain.de
Damit würden lokale Empfänger weiterhin regulär zugestellt, während nur externe Weiterleitungen über den SRS-Transport laufen.
Eine mögliche Lösung wäre die Prüfung, ob die Domain des Weiterleitungsziels in den lokal verwalteten virtuellen Maildomains enthalten ist.
Für Umgebungen mit mehreren eigenen Mailservern wäre zusätzlich eine konfigurierbare Ausnahmeliste für interne Maildomains sinnvoll.
6. Abgrenzung: Lokales Postfach mit externer Weiterleitung
Bei einem Konto mit lokalem Postfach und zusätzlicher externer Weiterleitung funktioniert die Alias-Erzeugung bereits wie gewünscht.
Beispiel:
Die lokale Postfachkopie wird ohne SRS-Präfix erzeugt.
Das Problem betrifft insbesondere Konfigurationen, bei denen mehrere Weiterleitungsadressen innerhalb von data.forwards hinterlegt sind und diese sowohl interne als auch externe Empfänger enthalten.
7. Fragen an das LiveConfig-Team
Wir würden uns über eine Rückmeldung zu folgenden Punkten freuen:
- Ist dieses Verhalten bekannt beziehungsweise beabsichtigt?
- Wäre es möglich, bei aktivierter SRS-Option lokal verwaltete Maildomains automatisch auszunehmen?
- Könnte zusätzlich eine konfigurierbare Liste interner Domains berücksichtigt werden, beispielsweise für Umgebungen mit mehreren Mailservern?
- Gibt es bereits einen offiziell unterstützten Erweiterungspunkt über
/usr/lib/liveconfig/lua/custom.lua, um die Alias-Erzeugung entsprechend anzupassen? - Ist gegebenenfalls eine Anpassung in einer zukünftigen LiveConfig-Version vorgesehen?
Wir möchten direkte Änderungen an der Originaldatei postfix.lua vermeiden, da diese bei zukünftigen LiveConfig-Updates überschrieben werden könnten.
Eine updatefeste Lösung innerhalb von LiveConfig wäre daher wünschenswert.
Vielen Dank für Ihre Unterstützung und die Prüfung des Sachverhalts.
Mit freundlichen Grüßen
Martin Krüger