Diese Frage ist ziemlich alt, aber ich bin gerade auf dieselbe Situation mit derselben Umgebung gestoßen (postfix; dovecot; mysql) und habe den folgenden Ansatz realisiert:
Ich habe eine neue Datenbank-Tabelle erstellt, in der meine virtuellen Vorwärtskonfigurationen gespeichert sind:
CREATE TABLE `virtual_forwards` (
`id` int(11) NOT NULL auto_increment,
`domain_id` int(11) NOT NULL,
`source` varchar(100) NOT NULL,
`destination` varchar(100) NOT NULL,
PRIMARY KEY (`id`),
FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Ich habe dann eine neue virtuelle Weiterleitungszuordnungsdatei erstellt, /etc/postfix/mysql-virtual-forward-maps.cf
die die zuvor erstellte virtual_forwards
Tabelle abfragt UND immer die verkettete Quell- und Zieladresse zurückgibt (E-Mail wird an Alias UND Ziel gesendet):
user = mailuser
password = <PASS>
hosts = 127.0.0.1
dbname = <DB_NAME>
query = SELECT CONCAT(source, ',', destination) FROM virtual_forwards WHERE source='%s'
Und schließlich habe ich die neue Map - Datei zu meiner /etc/postfix/main.cf
als virtual_alias_maps
:
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf,mysql:/etc/postfix/mysql-virtual-forward-maps.cf
Starten Sie Ihren Postfix-Server neu und alles sollte wie erwartet funktionieren. Ich bevorzuge diesen Ansatz gegen das Hinzufügen einer durch Kommas getrennten Liste zur virtual_aliases
Tabelle, da es sich für mich einfach falsch anfühlt. Aber das könnte mein persönliches Problem sein :)
Ich bin mir der Tatsache bewusst, dass ich nicht mehrere Weiterleitungen basierend auf derselben Quelladresse hinzufügen kann (z. B. test @ tworabbits => test1 @ tworabbits, test2 @ tworabbits), aber man könnte die virtual_forwards
Tabelle leicht in virtual_forward_sources
AND aufteilen, virtual_forward_destinations
um dies zu erfüllen Anforderung.
Ich hoffe das hilft jemandem, wenn weitere fünf Jahre vergangen sind :) Prost!
query = SELECT destination FROM virtual_aliases WHERE source='%s'