Sendmail: Catchall für lokale und nicht lokale Adressen

Sendmail: Catchall für lokale und nicht lokale Adressen

Ich muss eine Mailserverkonfiguration für eine Testumgebung einrichten, die alle E-Mails (also von allen Benutzern und allen Domänen, auch nicht lokalen) akzeptiert und in einem einzigen lokalen Catchall-Postfach ablegt.

Was ich habe, ist SLES 11 mit Sendmail (8.14), wo ich versucht habe, /etc/mail/virtusertable so zu ändern, dass es aussieht wie

@ catchall

oder wie

@* catchall

aber ohne Erfolg - Ziel-Mail-Adressen (zB"[email geschützt]") werden nicht umgeschrieben inSammelbegriff@, daher wird die Zustellung an den entsprechenden MX versucht:

# sendmail -bt
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
> 3,0 [email protected]
canonify           input: santa @ northpole . org
Canonify2          input: santa < @ northpole . org >
Canonify2        returns: santa < @ northpole . org . >
canonify         returns: santa < @ northpole . org . >
parse              input: santa < @ northpole . org . >
Parse0             input: santa < @ northpole . org . >
Parse0           returns: santa < @ northpole . org . >
ParseLocal         input: santa < @ northpole . org . >
ParseLocal       returns: santa < @ northpole . org . >
Parse1             input: santa < @ northpole . org . >
MailerToTriple     input: < > santa < @ northpole . org . >
MailerToTriple   returns: santa < @ northpole . org . >
Parse1           returns: $# esmtp $@ northpole . org . $: santa < @ northpole . org . >
parse            returns: $# esmtp $@ northpole . org . $: santa < @ northpole . org . >

Es scheint, als würden Platzhalter im Quelldomänenteil der Nachschlagetabelle nicht unterstützt.

Wie würde ich dies mit Sendmail implementieren?

Bearbeiten:GemäßAndrzejs KommentareIch habe versucht, einen Mailertable-Eintrag von

. local:catch-all-outgoing

sowie

.. local:catch-all-outgoing

und erhielt sendmail -bvin beiden Fällen die gleiche Ausgabe:

# sendmail -d60.5 -bv [email protected]
map_lookup(dequote, root, %0=root) => NOT FOUND (0)
map_lookup(host, example.net, %0=example.net) => example.net. (0)
[email protected]... deliverable: mailer esmtp, host example.net., user [email protected]

(ja, root, da sendmailes als Nicht-Root nicht lauffähig scheint)

Bearbeiten:Es stellte sich heraus, dass die Funktion „Mailertable“ in der Makrodatei nicht aktiviert war und sendmail.cf daher nicht die entsprechenden Umschreibregeln enthielt, damit die Funktion funktionierte.

Antwort1

Was Sie hier erwartet: /etc/mail/virtusertableIch glaube, es ist nur auf eingehende E-Mails beschränkt, nicht auf ausgehende.

Sie können die Standardroute in Mailertable oder SMART_HOST verwenden, um alle nicht lokalen Nachrichten an ein lokales Postfach/einen lokalen Alias ​​zuzustellen.

mailertable entry:
. local:catch-all-outgoing

aliases:
catch-all-outgoing: some-local-account

Jeder LHS-Eintrag, der nicht mit einem Punkt beginnt, stimmt mit dem angegebenen vollständigen Hostnamen überein. LHS-Einträge, die mit einem Punkt beginnen, stimmen mit allem überein, was mit diesem Domänennamen endet (einschließlich des führenden Punkts). Das heißt, man kann sie sich so vorstellen, als ob sie ein führendes „.+“-Regular-Ausdrucksmuster für eine nicht leere Zeichenfolge hätten.

Die rechte Seite sollte immer ein „Mailer:Host“-Paar sein. Der Mailer ist der Konfigurationsname eines Mailers (also eine M-Zeile in der Datei sendmail.cf). Der „Host“ ist der Hostname, der an diesen Mailer übergeben wird.

(Referenz:sendmail readme, Abschnitt „VERWENDUNG VON MAILERTABLES“)

Also so etwas wie:

. local:catch-all-outgoing(nur ein einziger Punkt gemäßAdrzejs Kommentar) in /etc/mail/mailertable sollte dazu führen, dass jede Domain.tld auf die lokale Mailer-Konfiguration umgeleitet wird, die in sendmail.cf definiert ist. Dabei erfasst der Alias ​​den Hostnamen catch-all-outgoingund macht ihn zu einer lokalen E-Mail-Adresse.

Damit die Mailertable funktioniert, muss sie in der Konfiguration aktiviert werden. Hinzufügen

FEATURE(`mailertable',`hash -o /etc/mail/mailertable.db')dnl

zur M4-Makrodatei, die Ihre Konfiguration generiert, sollte dies erledigen.

Auch aus den Hilfedateien der Sendmail-Site:

MAILERTABELLE:

Fügen Sie eine „Mailer-Tabelle“ hinzu, mit der das Routing für bestimmte Domänen überschrieben werden kann(die nicht in Klasse {w} sind, also lokale Hostnamen). Das Argument des FEATURE kann die Schlüsseldefinition sein. Wenn keine angegeben ist, wird die folgende Definition verwendet:

Hash /etc/mail/mailertable

Schlüssel in dieser Datenbank sind vollständig qualifizierte Domänennamen oder Teildomänen, denen ein Punkt vorangestellt ist, beispielsweise „vangogh.CS.Berkeley.EDU“ oder „.CS.Berkeley.EDU“.Als Sonderfall des Letzteren stimmt „.“ mit jeder Domäne überein, die nicht von anderen Schlüsseln abgedeckt wird.Die Werte müssen folgende Form haben: Mailer:Domain

wobei „Mailer“ der interne Mailername und „Domäne“ der Ort ist, an den die Nachricht gesendet werden soll. Diese Zuordnungen werden nicht in den Nachrichtenkopf übernommen.Als Sonderfall wird die Form: local:user an den angegebenen Benutzer mit dem lokalen Mailer weitergeleitet,

Antwort2

Sendmail: Catchall für lokale und nicht lokale Adressen

SMART_HOSTSie können nicht lokale Domänen und MAIl_HUBlokale E-Mail-Domänen definieren .

sendmail.mc:

define(`SMART_HOST',`local:some_existing_user')dnl
define(`MAIL_HUB',`local:some_existing_user')dnl
dnl optional part to list local users/mailboxes excluded from the redirect
dnl in /etc/mail/direct-users file (one user per line)
LOCAL_CONFIG
FL/etc/mail/direct-users
divert(0)

PS

Verwenden Sie echo '$=w' | sendmail -btdiese Option, um eine Liste lokaler E-Mail-Domänen abzurufen. Sendmail füllt diese standardmäßig automatisch aus.

Mailertable kann verwendet werden, um einige externe Domänen von der Umleitung auszuschließen

example.net %0

verwandte Informationen