PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Postfix als Mailrelay nach Innen und draussen



Thovan
10.05.05, 14:45
Folgendes Problem:
Ein Groupware-Server soll aus der DMZ und dafür soll ein Postfix-Mailrelay in die DMZ, das dann ankommende Mails prüft, annimmt (oder abweist) und dann (falls nicht abgewiesen) an den Groupware-Server weitergibt.
Gleichzeitig soll der Relay-Server aber auch Mails die vom Groupware-Server "nach draussen" gehen, annehmen und weiterreichen, dabei aber alle hinweise auf den Groupware-Server entfernen.

Google sei Dank habe ich auch schon zum ersten Fall (Mail annehmen und durchreichen, bei gleichzeitiger Überprüfung auf korrekte Empfänger-Adresse) ein gutes HowTo gefunden.
Wo ich jetzt das Problem habe, ist beim Verständnis der main.cf von postfix, wie muss die Aussehen, dass Sie von aussen nur Mails an bestimmte Domänen annimmt und an den Groupware-Server weiterreicht, aber gleichzeitig alle Mails von drinnen rausgibt?

Thovan
13.05.05, 11:17
Nochmal zur genaueren Erklärung.

Der derzeitige Aufbau ist wie folgt.

Internet <---> Groupware-Server (Exchange) <---> Clients

Der neue Aufbau soll so sein:

Internet <---> Postfix-Server <---> Groupware-Server (Exchange) <---> Clients

Der Postfix-Server soll eMails für mehrere Domains/Subdomains annehmen, mit Spamassassin und Konsorten prüfen, filtern, abweisen.... und dann an den Exchange-Server weiterleiten. Dabei prüft er auch, ob der Empfänger-User existiert und lehnt falls nicht die Mail ab.
(Dafür habe ich schon die Anleitung von Patrick Kötter/state-of-mind)
Alles was an existierende User geschickt wird, kein Spam und auch nicht verseucht ist, wird dann weitergereicht an den Exchange-Server.

Gleichzeitig sollen aber auch alle (vom Exchange-Server) ausgehenden Mails weitergegeben werden und so modifiziert werden, dass dieser unsichtbar bleibt.

Wäre wirklich super, wenn mir da jemand beratend zur Seite stehen würde.

bla!zilla
13.05.05, 11:25
Nochmal zur genaueren Erklärung.

Der derzeitige Aufbau ist wie folgt.

Internet <---> Groupware-Server (Exchange) <---> Clients

Der neue Aufbau soll so sein:

Internet <---> Postfix-Server <---> Groupware-Server (Exchange) <---> Clients


Vorbildhaft. :)



Der Postfix-Server soll eMails für mehrere Domains/Subdomains annehmen, mit Spamassassin und Konsorten prüfen, filtern, abweisen.... und dann an den Exchange-Server weiterleiten. Dabei prüft er auch, ob der Empfänger-User existiert und lehnt falls nicht die Mail ab.


Brauchst du auf dem Relay nicht zu machen. Das Relay kann alles für die Domains an den Exchange weiterleiten. Dieser überprüft dann eh ob es einen passenden Benutzer dafür gibt und lehnt ggfl. die Mail ab.



(Dafür habe ich schon die Anleitung von Patrick Kötter/state-of-mind)
Alles was an existierende User geschickt wird, kein Spam und auch nicht verseucht ist, wird dann weitergereicht an den Exchange-Server.

[QUOTE]
Gleichzeitig sollen aber auch alle (vom Exchange-Server) ausgehenden Mails weitergegeben werden und so modifiziert werden, dass dieser unsichtbar bleibt.


Das wird nicht gehen ohne die Header der Mail aktiv zu ändern. Dein Exchange ist mit in den Mailverkehr eingebunden und taucht somit ordentlich im Header auf. Den Header zu manipulieren ist nicht protokollkonform.

Webdude
13.05.05, 11:32
In der main.cf würde das ungefähr so aussehen:


mynetworks=127.0.0.1, ip.postfix.server, ip.exchange.server

smtpd_recipient_restrictions =
reject_unknown_sender_domain,
reject_non_fqdn_sender,
reject_invalid_hostname,
permit_mynetworks,
reject_unauth_destination,
permit


Hier ist die Reihenfolge besonders wichtig.
reject_unauth_destination verhindert das relaying von Mails. Vorher wird mit permit_mynetworks deinen Hosts aus mynetworks das Relaying erlaubt.
Soll heissen, alles was in mynetworks steht darf Mails auch ins Internet schicken.

Wenn du mehr wissen willst, besorg dir "Das Postfixbuch" von Peer Heinlein, www.opensourcepress.de. (ich kanns nicht oft genug sagen)

Wordooo
13.05.05, 11:33
du tust in der main.cf z.b. den parameter relay_domains auf ne datei (kein hash) verweisen und da traegst du die domains ein, dann in dem transport table (hash) eintragen wo diese domains dann hingehen (exchange) und die ip vom exchange traegst du in mynetworks ein. der default wert von smtpd_receipient_restrictions sollte dann auch reichen.

(alles nur ausm kopf, keine gewaehr)

[WCM]Manx
13.05.05, 11:42
Der Postfix-Server soll eMails für mehrere Domains/Subdomains annehmen, mit Spamassassin und Konsorten prüfen, filtern, abweisen.... und dann an den Exchange-Server weiterleiten. Dabei prüft er auch, ob der Empfänger-User existiert und lehnt falls nicht die Mail ab.


Brauchst du auf dem Relay nicht zu machen. Das Relay kann alles für die Domains an den Exchange weiterleiten. Dieser überprüft dann eh ob es einen passenden Benutzer dafür gibt und lehnt ggfl. die Mail ab.
Hi!

Das ist das ursprüngliche Verhalten im SMTP, was auch gut ist (war), denn so konnte von extern nicht festgestellt werden, ob Email-Adressen tatsächlich vorhanden sind oder nicht. Emails für nicht vorhandene Benutzer werden später dann gebounced.

Leider bereitet das in letzter Zeit (SPAM und Viren) große Probleme, da es zu einer großen Zahl an Bounces kommt, die ersten nicht zugestellt werden können, weil der Absernder gefälscht ist und nicht existiert, bzw. bekommt den Bounce jemand, der die Mail nicht verschickt hat (als Absender wurde vom Virus z.B lediglich dessen Adresse verwendet)

Deshalb macht es mittlerweile IMHO schon Sinn am Relay auf existente Benutzer zu prüfen.

Lösungsvorschläge:

qmail-ldap kann sich die Benutzer auch aus dem Active Directory holen (nicht getestet Info aus der Mailinglist) und mittels RCPTCHECK auf Existenz der Mail-Adresse prüfen.

Ob man Postfix eine LDAP-Anbindung an ein AD beibringen kann, sorry => googlen?

Grüße

Manx

Webdude
13.05.05, 11:48
Gleichzeitig sollen aber auch alle (vom Exchange-Server) ausgehenden Mails weitergegeben werden und so modifiziert werden, dass dieser unsichtbar bleibt.
.

In der main.cf eintragen:
header_check = regexp:/etc/postfix/header_checks

Datei header_checks anlegen und das eintragen:

/^Received: from mein.exchange.server/ IGNORE

Webdude
13.05.05, 11:50
Per LDAP ein Lotus Domino Directory und Exchange 5.5 abzufragen klappt auf jeden Fall problemlos.
Die Empfänger zu verifizieren ist sehr sinnvoll. Das Postfix Gateway soll schliesslich soviel Müll wie möglich von den internen Mailservern abhalten.

Thovan
13.05.05, 12:23
Zunächst: Danke euch allen!


Vorbildhaft. :)

Danke =)
Was denn eigentlich? Mein Schema oder die geplante Umstrukturierung zur Steigerung der Sicherheit.



Brauchst du auf dem Relay nicht zu machen. Das Relay kann alles für die Domains an den Exchange weiterleiten. Dieser überprüft dann eh ob es einen passenden Benutzer dafür gibt und lehnt ggfl. die Mail ab.

Ja, aber so schwierig ist das nicht, dem Postfix-Server alle Exchange-User mitzuteilen. In besagtem Tutorial/HowTo ist sehr gut beschrieben, wie man das automatisieren kann und selbst das ist wäre momentan nicht mal nötig, da bei 100 Usern derzeit, ein neuer User leicht manuell eingetragen wäre.


Per LDAP ein Lotus Domino Directory und Exchange 5.5 abzufragen klappt auf jeden Fall problemlos.
Die Empfänger zu verifizieren ist sehr sinnvoll. Das Postfix Gateway soll schliesslich soviel Müll wie möglich von den internen Mailservern abhalten.

Eben! Ich möchte gerne die komplette Mail-Absicherung gegen Spammer etc. vom Postfix-Server übernehmen lassen, damit der Exchange-Server wirklich nur für die Groupware zuständig ist.
(Ausserdem will ich den Exchange-Server ja gerne "verschleiern" und wenn dieser dann abweisen würde, wäre er wahrscheinlich wieder erkennbar)



Das wird nicht gehen ohne die Header der Mail aktiv zu ändern. Dein Exchange ist mit in den Mailverkehr eingebunden und taucht somit ordentlich im Header auf. Den Header zu manipulieren ist nicht protokollkonform.

Nun ja, protkollkonform heißt aber doch nicht, dass man es nicht machen darf, sondern nur, dass man es nicht machen sollte, oder?
Und es dient meines Erachtens der Sicherheit, wenn aussenstehende nicht gleich sehen, dass der Groupware-Server unter Exchange läuft.
(Wird irgendwann sicherlich sowieso abgelöst, aber trotzdem will ich den nicht unbedingt sichtbar haben)


In der main.cf eintragen:
header_check = regexp:/etc/postfix/header_checks

Datei header_checks anlegen und das eintragen:

/^Received: from mein.exchange.server/ IGNORE
Danke! genau was ich suchte :)

Thovan
13.05.05, 12:31
In der main.cf würde das ungefähr so aussehen:


mynetworks=127.0.0.1, ip.postfix.server, ip.exchange.server

smtpd_recipient_restrictions =
reject_unknown_sender_domain,
reject_non_fqdn_sender,
reject_invalid_hostname,
permit_mynetworks,
reject_unauth_destination,
permit


Hier ist die Reihenfolge besonders wichtig.
reject_unauth_destination verhindert das relaying von Mails. Vorher wird mit permit_mynetworks deinen Hosts aus mynetworks das Relaying erlaubt.
Soll heissen, alles was in mynetworks steht darf Mails auch ins Internet schicken.

Kannst Du mir die anderen Parameter bitte noch erklären?

Edit:
Danke, hab's schon raus =)

Die Reihenfolge ist ne Rangfolge, oder!?

Webdude
13.05.05, 12:56
Die Parameter sind in der Postfix Doku und im Postfixbuch besser und ausführlicher erklärt als ich das könnte.

Eine Konfig mit diversen Antispammassnahmen könnte z.B. so aussehen:



smtpd_recipient_restrictions =
reject_unknown_sender_domain,
#blockt wenn der Absender über keine gültigen A oder MX Records verfügt
reject_non_fqdn_sender,
#blockt wenn die Mail Adresse kein FQDN ist
reject_invalid_hostname,
#blockt wenn nach HELO ein ungültiger Hostname angegeben wird
permit_mynetworks,
reject_unauth_destination,
#blockt alle Mails solange nicht die Zieladresse in $relay_domains, $mydestination, $inet_interfaces, $virtual_maps vorkommt (verhindert relaying)
check_sender_access hash:/etc/postfix/sender_access,
check_recipient_access hash:/etc/postfix/recipient_access,
#Black- oder Whitlisten um einzelne Absender/Empfänger zu blocken
reject_rbl_client sbl-xbl.spamhaus.org,
reject_rbl_client relays.ordb.org,
reject_rhsbl_client blackhole.securitysage.com,
reject_rhsbl_sender blackhole.securitysage.com,
#Abfrage von verschiedenen DNS Blacklisten (blockt hier allein um 25.000 Mails am Tag)
permit

Thovan
17.05.05, 12:11
Hy Folks,

Danke schonmal für die vielen nützlichen Hinweise.
Jetzt geht's weiter:
Ich würde gerne einen Spam-Filter (Spamassassin?)
und einen VirenScanner installieren.

Was für Software ist da sinnvoll?
Welche Software könnt Ihr generell für das Mailrelay noch empfehlen?

Wie bereitsbeschrieben handelt es sich um ein postfix-Mailrelay für nen Exchange-Groupware-Server!

Webdude
17.05.05, 13:11
amavisd-new + spamassassin