Ausgehende emails umleiten / abfangen

Postfix, QMail, Sendmail, Dovecot, Cyrus, Courier, Anti-Spam
robert
Posts: 19
Joined: 2002-07-13 18:43

Ausgehende emails umleiten / abfangen

Post by robert » 2003-03-07 09:11

Hallo,

ich habe nur kurz eine Realisierungsfrage. Ist es möglich in sendmail ausgehende Emails an bestimmte Adressen umzuleiten?

jtb
Posts: 599
Joined: 2002-08-18 16:41
Location: Darmstadt

Re: Ausgehende emails umleiten / abfangen

Post by jtb » 2003-03-08 09:01

benutzen nicht fast alle MTAs die /etc/aliases Datei?

Falls sendmail die auch nutzt, dürfte folgendes helfen:
localempfaenger : emailadresse@draussen.de

robert
Posts: 19
Joined: 2002-07-13 18:43

Re: Ausgehende emails umleiten / abfangen

Post by robert » 2003-03-08 11:53

das stimmt ja auch für sendmail, aber ich möchte emails für draußen umleiten. Also joe@aol.com --> peter@gmx.de .

jtb
Posts: 599
Joined: 2002-08-18 16:41
Location: Darmstadt

Re: Ausgehende emails umleiten / abfangen

Post by jtb » 2003-03-08 17:00

??
dein sendmail ist aber nicht für @aol.com zuständig..

du willst eventl. die aol mails abholen und dann weiter verschicken?

linuxnewbie
Posts: 150
Joined: 2003-01-24 16:00

Re: Ausgehende emails umleiten / abfangen

Post by linuxnewbie » 2003-03-08 17:51

ich denke eher er will das mails die von seinem server aus gehen nach einer bestimmten adresse, auf der maschine abgefangen werden und an eine andere email addy verschickt wird.


zb du bist blubb@blubb.de und bist auf seinem server und willst

laber@laber.com eine email adresse schicken
in dem moment wo er auf abschicken klickt, fängt der mailserver die mail ab und merkt die geht an laber@laber.com und soll aber intern an moep@moep.de weitergeleitet werden ohne das er bei laber@laber.com in der emailbox eine weiterleitung eingestellt hat.

so hab ich das verstanden

ich denke nicht das soetwas ohne probleme möglich ist, denn so könnte man auch interne mails als kopie an jede beliebige person schicken ohne das der versender etwas mitbekommt

robert
Posts: 19
Joined: 2002-07-13 18:43

Re: Ausgehende emails umleiten / abfangen

Post by robert » 2003-03-08 20:21

danke LinuxNewbie. Genau das war meine Frage. Jeder sagt doch das sendmail mächtig ist. Die Frage ist ja ob es das auch kann.

alexander newald
Posts: 1117
Joined: 2002-09-27 00:54
Location: Hannover

Re: Ausgehende emails umleiten / abfangen

Post by alexander newald » 2003-03-08 20:25

robert wrote:danke LinuxNewbie. Genau das war meine Frage. Jeder sagt doch das sendmail mächtig ist. Die Frage ist ja ob es das auch kann.
Sendmail sagen, dass es für die Domain zuständig sein soll, mit Catchall alle E-Mail an diese Domain an ein Skript leiten, dies erstellt eine Kopie und versendet die Orginal E-Mail über einen weiteren SMTP Server an den Empfänger.

Ach ja, erlaubt ist sowas, glaube ich, nicht!

Alexander Newald

robert
Posts: 19
Joined: 2002-07-13 18:43

Re: Ausgehende emails umleiten / abfangen

Post by robert » 2003-03-08 22:30

catchall will ich ja garnicht machen. Ich möchte nur die Adresse abändern. Also scannen und wenn es die Addresse ist diese austauschen.

alexander newald
Posts: 1117
Joined: 2002-09-27 00:54
Location: Hannover

Re: Ausgehende emails umleiten / abfangen

Post by alexander newald » 2003-03-08 22:52

robert wrote:catchall will ich ja garnicht machen. Ich möchte nur die Adresse abändern. Also scannen und wenn es die Addresse ist diese austauschen.
Ist schon klar, wird aber nur so gehen, wie ich es beschrieben habe.

Alexander Newald

pollux
Posts: 52
Joined: 2003-03-05 18:55

So könnte es auch gehen

Post by pollux » 2003-03-09 01:42

Hallo,

sendmail IST mächtig. Ich würde soweit gehen, zu sagen, daß ALLE mailtechnischen Probleme mit sendmail gelöst werden können. Auf unserem Server tut es bsp. folgendes:

- dafür sorgen, daß die User der Präsenzen nur unter den ihnen zugeordneten Domains Email versenden dürfen (also wenn ich mich als Benutzer der Domain foo.com authorisiere, darf ich als Absender nicht "me@bar.com" angeben.
- Mails, die von einer bestimmten Adresse verschickt werden, automatisch per BCC an eine andere Emailadresse weiterleiten (dieses Feature ist gerade in der Umsetzung)

Und das OHNE zusätzliche Software. Also sendmail kann wirklich alles.

Doch zurück zu eurem Problem. So sollte es auch gehen. Und eigentlich ist es ganz einfach :) :

In der /etc/sendmail.cf ist Ruleset 0 zuständig dafür, für jeden Empfänger einen sog. "Mailer" zu finden, der benutzt wird, um die Mail weiterzuleiten. Zusätzlich wird der Host und der Benutzername ermittelt und für den späteren Aufruf des Mailers gespeichert. In dieses Ruleset 0 muß jetzt eine Regel hinein, die die gewünschte Adresse austauscht. Es muß also einfach aus "bad_user@aol.de" "me@you.com" gemacht werden. Die weiteren Regeln kümmern sich dann um den Rest. Hier lassen sich auch leicht die Datenbankfunktionen verwenden um abhängig von Domain oder User an verschiedene Adressen umzuleiten.

Wenn Ihr nicht wißt, wie man die sendmail.cf bearbeitet, einfach nochmal hier posten, dann überleg ich mir was dazu. Und wenn es geklappt hat, natürlich auch posten ;)

Grüße

Pollux

PS: Verboten ist es aber ohne wissen des Absenders trotzdem. Wenn Du es auf eine eigene Adresse umleitest verstößt DU gegen das Postgeheimnis. :twisted:

alexander newald
Posts: 1117
Joined: 2002-09-27 00:54
Location: Hannover

Re: Ausgehende emails umleiten / abfangen

Post by alexander newald » 2003-03-09 13:40

Hm, sicher, dass dein Ansatz auch für Mails geht, die sendmail als SMTP Server annimmt und weiterleitet (und nicht lokal zustellt)?

Das ganze wurde vor einigen Monaten auf der sendmail Mailingliste diskuttiert und da war man der Ansicht, das die einzige Möglichkeit die sei, die ich beschrieben habe.

Alexander Newald

pollux
Posts: 52
Joined: 2003-03-05 18:55

Und es geht!

Post by pollux » 2003-03-09 15:33

Hallo zusammen,

ich weiß ja nicht WER in dieser Sendmail-Mailing Liste diskutiert, aber offensichtlich Leute, die den Wald vor lauter Bäumen nicht sehen :lol:

Also folgendes:

Ruleset 0 nimmt die Empfängeradresse und muss am Ende folgendes zurückgeben:
- Einen Mailer, wie er mit dem M-Kommando definiert wurde. Für ausgehende Mails ist das gewöhnlich ESMTP.
- Einen Host, zu dem die Mail geschickt wird. Das geschieht durch MX-Lookups der entsprechenden Domain.
- Einen Usernamen (=Empfängeradresse), der im Envelope genannt wird. Also wenn Sendmail das SMTP-Kommando "RCPT To" gibt.

Hier ist der Ansatzpunkt: ganz zu Anfang im Ruleset 0 wird geprüft, ob es sich um eine bestimmte Adresse handelt. Wenn ja, wird sie einfach durch eine andere ersetzt. Dann läuft Ruleset 0 ganz normal durch und verschickt die Mail an die neue Adresse. Der Inhalt der Mail bleibt erhalten! Insbesondere der From-Header wird nicht verändert. Daran und an den "Recieved" Headern kann man schön sehen, wie die Mail lief.

Ich habe das getestet und es funktioniert ganz einwandfrei. Hier die Regel, die ich ganz an den Anfang von Ruleset 0 gesetzt habe (natürlich mit anderen Adressen :) ):

Code: Select all

Rbadguy<@aol.com.>      good_guy<@gmx.de.>
(Achtung: Tab-Stop vor "good_guy"!)

Dadurch wird alle Mail, die Sendmail an badguy@aol.com verschicken will an good_guy@gmx.de umgeleitet. Wer möchte, kann das ganze mit Datenbanken oder Wildcards noch flexibler auf mehrere Adressen oder ganze Domains ausdehnen.

Wie sendmail die Mail bekommt, ist übrigens egal. Und natürlich funktioniert das auch für Adressen, die eigentlich lokal zugestellt werden würden. Wir tauschen ja die Adresse aus, bevor sendmail überhaupt merkt, daß es eine lokale Adresse ist.

Also einfach mal ausprobieren. Und bei Fragen nochmal posten ;)

Grüße

Pollux

alexander newald
Posts: 1117
Joined: 2002-09-27 00:54
Location: Hannover

Re: Ausgehende emails umleiten / abfangen

Post by alexander newald » 2003-03-09 15:54

Hi,

ich erhalte:

Code: Select all

Mar  9 15:48:37 ********* sendmail[5466]: NOQUEUE: SYSERR(root): /etc/mail/sendmail.cf: line 774: unknown configuration line
Alexander Newald

pollux
Posts: 52
Joined: 2003-03-05 18:55

Re: Ausgehende emails umleiten / abfangen

Post by pollux » 2003-03-09 16:24

Hallo Alexander,

das ist komisch. Sendmail ist beim lesen seiner config-Datei sehr genau. Wo hast Du die Zeile eingefügt? Was genau hast Du eingefügt? Poste mal das ensprechende Stück der sendmail.cf

Bei mir steht die Zeile hier:

Code: Select all

.
.
.

######################################
###   Ruleset 0 -- Parse Address   ###
######################################

Sparse=0

Rbad_guy<@aol.com.>      good_guy<@gmx.de.>      Diese Zeile eingefügt

R$*                     $: $>Parse0 $1          initial parsing
R<@>                    $#local $: <@>          special case error msgs
R$*                     $: $>ParseLocal $1      handle local hacks
R$*                     $: $>Parse1 $1          final parsing

#
#  Parse0 -- do initial syntax checking and eliminate local addresses.
#       This should either return with the (possibly modified) input
#       or return with a #error mailer.  It should not return with a
.
.
.
Ã?brigens mußt Du nicht mit Deiner laufenden Konfiguration testen. Du erstellst eine Kopie der sendmail.cf, bspw. sendmail.cf.test, und änderst diese. Dann rufst Du sendmail im Ruletesting-Mode auf und gibst als Konfig-Datei die geänderte Kopie an:
sendmail -bt -C/etc/sendmail.cf.test

Nun hast Du eine Kommandozeile, in der Du testen kannst, was Sendmail mit den Adressen macht. Zuerst die Regel, dann die Emailadresse. Also z.B.
3 me@you.com

Nun gibt sendmail aus, was es macht und am Ende siehst Du wie es die Adresse umgeschrieben hat (me<@you.com.>). Unser Interesse liegt auf Ruleset 0 also testen wir das, jedoch muss die Adresse vorher durch Regel 3 aufbereitet werden, somit:
3,0 me@you.com

Als Ergebnis kommt heraus, wie Sendmail jetzt weitermachen würde:
$# esmtp $@ you . com $: me < @ you . com >
Bedeutet:
$# esmtp -> es wird der esmtp-Mailer benutzt
$@ you.com -> mit diesem Rechner (bzw. dem Eintrag in seinem MX-Record) wird verbunden
$: me<@you.com> -> das wird als Empfängeradresse angegeben (wird allerdings von sendmail nochmal bearbeitet, aber das ist nur Kosmetik).

Nun kannst Du auch Deine abgefangene Email-Adresse probieren:
3,0 bad_guy@aol.com

Du solltest sehen, wie zu Beginn des Ruleset 0 (namens "parse") die Adresse ausgetauscht wird.

Code: Select all

> 3,0 bad_guy@aol.com
canonify           input: bad_guy @ aol . com
Canonify2          input: bad_guy < @ aol . com >
Canonify2        returns: bad_guy < @ aol . com . >
canonify         returns: bad_guy < @ aol . com . >
parse              input: bad_guy < @ aol . com . >
Parse0             input: good_guy < @ gmx . de . >
Parse0           returns: good_guy < @ gmx . de . >
ParseLocal         input: good_guy < @ gmx . de . >
ParseLocal       returns: good_guy < @ gmx . de . >
Parse1             input: good_guy < @ gmx . de . >
Mailertable        input: < gmx . de > good_guy < @ gmx . de . >
Mailertable        input: gmx . < de > good_guy < @ gmx . de . >
Mailertable      returns: good_guy < @ gmx . de . >
Mailertable      returns: good_guy < @ gmx . de . >
MailerToTriple     input: < > good_guy < @ gmx . de . >
MailerToTriple   returns: good_guy < @ gmx . de . >
Parse1           returns: $# esmtp $@ gmx . de . $: good_guy < @ gmx . de . >
parse            returns: $# esmtp $@ gmx . de . $: good_guy < @ gmx . de . >
Bin gespannt, ob es so bei Dir funktioniert.

Grüße

Pollux

alexander newald
Posts: 1117
Joined: 2002-09-27 00:54
Location: Hannover

Re: Ausgehende emails umleiten / abfangen

Post by alexander newald » 2003-03-10 03:06

Hi,

ich habe es genauso wie oben bei dir eingetragen. Hm, komisch...

Alexander Newald

pollux
Posts: 52
Joined: 2003-03-05 18:55

Re: Ausgehende emails umleiten / abfangen

Post by pollux » 2003-03-11 21:53

:?:
Hast Du auf den Tab-Stop vor "good_guy" geachtet? Leerzeichen sind dort falsch am Platz und könnten zu diesem Fehler führen.

Wäre doch gelacht, wenn es bei mir läuft und bei Dir nicht :)

Pollux

alexander newald
Posts: 1117
Joined: 2002-09-27 00:54
Location: Hannover

Re: Ausgehende emails umleiten / abfangen

Post by alexander newald » 2003-03-12 03:22

Pollux wrote::?:
Hast Du auf den Tab-Stop vor "good_guy" geachtet? Leerzeichen sind dort falsch am Platz und könnten zu diesem Fehler führen.

Wäre doch gelacht, wenn es bei mir läuft und bei Dir nicht :)

Pollux
Yep, habe ich.

Alexander Newald