Regex mehrere Catch-All-Setup in Postfix

8

Ich muss eine Regex-Catch-All-Funktion für Postfix einrichten, so dass:

Wie kann dies in Postfix erreicht werden?

thevikas
quelle

Antworten:

18

Fügen Sie dies Ihrer main.cf hinzu:

alias_maps = regexp:/etc/postfix/aliases

Dann erstellen Sie /etc/postfix/aliaseswie folgt:

/^tom\..*@domain.com$/     [email protected]
/^phil\..*@domain.com$/    [email protected]

Weitere Informationen finden Sie in der Dokumentation zur Regexp-Tabelle .

Schwach
quelle
Ich richte wie vorgeschlagen ein. Absprung erhalten als: (Aktion: fehlgeschlagen, Status: 5.1.1, Diagnosecode: x-unix; Benutzer unbekannt). Ich habe postconf -m überprüft und festgestellt, dass regulärer Ausdruck unterstützt wird, aber immer noch nicht funktioniert. bounce beschweren [email protected] ist kein echtes Postfach, aber das ist der Sinn des Alias. Es sollte E-Mails an [email protected] weiterleiten, die sich an anderer Stelle befinden, ohne sich zu beschweren. (Ich benutze Postfix mit funktionierenden Mailman-Listen auf Ubuntu, wenn das hilft)
thevikas
Möglicherweise müssen Sie virtuelle Aliase usw. konfigurieren, wenn domain.com ein virtueller Alias ​​ist.
Flimzy
3
Vielen Dank! nannte es virtual_alias_maps = regexp: / etc / postfix / aliases und brachte es zum Laufen.
Thevikas
Ist es möglich, diese Art von regulärem Ausdruck in einem LDAP-Setup zu verwenden?
Dolanor
3

Ich werde dies für Leute hinzufügen, die sich fragen, ob es möglich ist, mehrere Adressaliasnamen mit weniger Konfiguration zu verarbeiten:

/^(.*)\..*@domain.com$/     [email protected]

Dies wird weiterleiten:

<anything>.<part_b>@domain.com

zu

<anything>@other.com

L422Y
quelle
-1

Ich kenne Postfix nicht, aber der Regex, den Sie suchen, ist:

/^.*(\..*)@(domain).com$/

Dann ersetzen Sie die erste übereinstimmende Gruppe durch nichts (leere Zeichenfolge) und die zweite Gruppe durch "andere".

In Perl würden Sie beispielsweise Folgendes tun:

my $regex = '^.*(\..*)@(domain).com$';

$your_string =~ /$regex/;
$aux = $2;
$your_string =~ s/$1//;
$your_string =~ s/$aux/other/;

print $your_string;

Dies funktioniert natürlich nur, wenn die E-Mail-Adresse "Domain" als Domain hat. Wenn Sie möchten, dass die Domain etwas ist, lautet der reguläre Ausdruck:

^.*(\..*)@(.*).com$
m0skit0
quelle