Regex mehrere Catch-All-Setup in Postfix


8

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

  • tom. (irgendetwas) @ domain.com geht an tom@other.com
  • phil. (irgendetwas) @ domain.com geht an phil@other.com

Wie kann dies in Postfix erreicht werden?

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$/     tom@other.com
/^phil\..*@domain.com$/    phil@other.com

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


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 tom.curry@domain.com ist kein echtes Postfach, aber das ist der Sinn des Alias. Es sollte E-Mails an tom@other.com 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$/     $1@other.com

Dies wird weiterleiten:

<anything>.<part_b>@domain.com

zu

<anything>@other.com


-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$
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.