postfix - wie leiten Sie alle E-Mails an einen Benutzer weiter, z. B. *@example.com → user@example.com


27

Ich benutze Postfix für meine E-Mail. Ich weiß, dass ich den Befehl / etc / aliases und newaliases verwenden kann, um bestimmte E-Mails umzuleiten. Beispielsweise kann ich root@example.com an user@example.com umleiten, indem root: userich / etc / aliases eingebe und dann ausführe newaliases. Ich würde jedoch gerne das Gleiche tun *: user, damit alle E-Mails an example.com an user@example.com gesendet werden.

Wie mache ich das?

Antworten:


19

luser_relay = user@example.comin deinem main.cfist was du willst.

Um die Benutzerüberprüfung zu deaktivieren und alle E-Mails anzunehmen, müssen Sie die local_recipient_maps =Option hinzufügen . Dokumentation


1
Ich habe das zu main.cf hinzugefügt und postfix neu gestartet. In /var/log/main.info ist folgender Fehler aufgetreten: <pre> 550 5.1.1 <myrandom@example.org>: Empfängeradresse abgelehnt: Benutzer in lokaler Empfängertabelle unbekannt; von = <me@gmail.com> bis = <myrandom@example.org> </ pre>
Rory

Example.org befindet sich also nicht in Ihrer lokalen Empfängerdomänenliste, oder es wurde etwas anderes falsch konfiguriert.
womble

7
Ich habe es geschafft. Als luser_relay-Option, die Sie erwähnt haben, müssen Sie auch die Option "local_recipient_maps =" hinzufügen. Diese Postfix-Dokumentationsseite erklärt Folgendes
Rory

Behält diese Methode die E-Mail-Adresse An bei? (Die virtuellen Karten schreiben es neu und die ursprüngliche To:
-Adresse

1
Bei @Sverre-Fragen handelt es sich um Fragen, nicht um Kommentare zu sieben Jahre alten Antworten auf tangentiale Fragen.
womble

17

Was Sie suchen, ist eine virtuelle Alias-Tabelle und kann mit den folgenden ...

Zuerst müssen Sie die Datei / etc / postfix / virtual bearbeiten oder erstellen, falls sie noch nicht vorhanden ist .

example.com   whatever
@example.com  user@example.com

Nachdem dies gespeichert wurde, müssen Sie postmap /etc/postfix/virtualausführen, um die indizierte Datei /etc/postfix/virtual.db zu erstellen. Postfix wird gelesen.

Sie müssen dann die Datei /etc/postfix/main.cf bearbeiten und sicherstellen, dass die folgende Zeile nicht kommentiert ist:

virtual_alias_maps = hash:/etc/postfix/virtual

Dadurch wird postfix über die virtuelle Alias-Tabelle informiert und verwendet.

Das Problem bei der Verwendung der luser_relayOption, wie von anderen erwähnt, besteht darin, dass diese vom lokalen Zustellungsagenten als Benutzer der letzten Auswege für unbekannte Adressen behandelt wird. Wenn Postfix nur E-Mails für eine Domäne verarbeitet, kann dies verwendet werden, es kann jedoch andere Konfigurationsfehler maskieren und zu unerwarteten Ergebnissen führen, wenn mehr als eine Domäne verarbeitet wird.

Die einzige Einschränkung, die ich erwähnen muss, ist, dass Sie durch das Erstellen eines solchen Platzhalter-Alias ​​Ihr Mail-System öffnen, um Nachrichten für Adressen anzunehmen, die nicht existieren, und das Risiko eingehen, dass das Postfach schnell mit Spam gefüllt wird, wenn es nicht existiert Postfächer.


8

Es ist eigentlich ganz einfach. Alles was Sie tun müssen, ist etwas in Ihre main.cfDatei zu schreiben:

virtual_alias_maps = regexp:/etc/postfix/virtual_alias

Das regexpTeil macht den Trick. Außerdem schreiben /etc/postfix/virtual_aliasSie so etwas:

/^test/ you@yourdomain.com

In diesem Beispiel sollten Sie alle E-Mails mit dem Ziel "test" erhalten. Vergiss nicht, / etc / postfix / virtual_alias zu posten und postfix neu zu laden.


6

Um eine Antwort / einen Kommentar darüber zu kombinieren, der für mich am einfachsten war (ich habe eine primäre Domain):
Fügen Sie Folgendes hinzu zu /etc/postfix/main.cf:

luser_relay = user@domain.com (or local system user)
local_recipient_maps =

( local_recipient_maps =hat keinen Wert gesetzt)

Ich verwende ein lokales Linux - Benutzerkonto und füge den gleichen Benutzer zu / etc / aliases hinzu, damit der Benutzer alle E - Mails an root, postmaster usw. Erhält.

Sie können dieselbe Adresse auch in Ihrer kombinieren virtual_alias_mapsund alle virtuellen Domänen-Catchalls auf dasselbe primäre Konto verweisen.

Bitte konsultieren Sie luser_relay für weitere Informationen .


3

Wenn Sie eine Catch-All-Adresse für meine Domain verwenden möchten, können Sie in /etc/aliasesKombination mit einer Regex wie folgt vorgehen :

In /etc/postfix/main.cfhinzufügen
alias_maps = hash:/etc/aliases, regexp:/etc/postfix/catch-all-local.regexp

In /etc/postfix/catch-all-local.regexphinzufügen
!/^owner-/ your-catch-all-user

Dies sollte den Trick machen. Es hat bei mir funktioniert und funktioniert mit parallel gesetzten virtual_alias_maps.


0

Es gibt einen weniger bekannten statischen Nachschlagetabellentyp in Postfix, der genau für diesen Zweck verwendet werden kann:

alias_database = static:user@example.com
alias_maps = static:user@example.com

Wenn user@example.com für dieses System nicht lokal ist, möchten Sie wahrscheinlich auch alle Unzustellbarkeitsnachrichten verwerfen, indem Sie Zeilen ersetzen, die bouncemit discardin enden master.cf, um Mail-Schleifen zu vermeiden.


-4

Ich hasse es, ein Killjoy zu sein, aber Ihr Problem ist, dass Sie Postfix verwenden. Postfix macht genau diese Übung sehr schwierig. Ich weiß: Ich musste es vor einigen Jahren tun und es dauerte Tage und Tage, um es richtig zu machen. Die luserOption ist die richtige, aber es gibt auch andere Dinge, die richtig sind. (Und selbst der Name der Option zeigt, dass die Autoren von Postfix dies nicht wirklich unterstützen wollten.)

Ich empfehle zu Courier zu wechseln. Courier unterstützt diese "Catch-All" -Methode aufgrund der Art und Weise, in der es sein vorhandenes Alias-System erweitert, viel sinnvoller.


1
Postfix macht es überhaupt nicht schwierig. Virtuelle Aliase sind die Standardmethode für Catchalls in Postfix und sehr einfach. Abgesehen davon, dass Catchalls auf nichts anderem als einem Spielzeug-Mailserver für Ihre persönliche Domain eine sehr schlechte Idee sind.
Rob Chanter
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.