PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Postfix vor Exchange



nr8
20.11.10, 20:46
Hallo.

Ich habe eine Frage an euch.
Ich habe einen Postfix vor einem Exchange geschalten und ich muss dem Postfix natürlich eine Möglichkeit geben um zu überprüfen ob die Adresse an die die Mail gehen soll auch stimmt.

Gibt es da noch andere Möglichkeiten als LDAP um dies zu tun?

Danke.

L00NIX
21.11.10, 10:31
Gibt es da noch andere Möglichkeiten als LDAP um dies zu tun?


Ja, du kannst die Liste "von Hand" führen. Ob das besser ist, wage ich zu bezweifeln.

Es gibt ein paar Perl-Skripts, die die relay_recipients automatisch generieren.

Stichwörter zum suchen sind z.B. "script relay recipients exchange".

Gruß
L00NIX

TMOS
21.11.10, 12:50
reject_unverified_recipient einsetzen.
Dann testet Postfix vorher auf dem Exchange ob es den User überhaupt gibt. Dafür muss natürlich der Exchange ungültige User auch mit einem 550 quittieren sonst funktioniert es nicht.

L00NIX
21.11.10, 19:35
Ein Nachteil dieser Echtzeitsuche ist das DDOS, gelle?

stefaan
21.11.10, 23:23
Servus,


Ein Nachteil dieser Echtzeitsuche ist das DDOS, gelle?

smtpd_client_connection_*_limit & Co setzen...

z.B.:
http://krul.nu/2007/09/05/stop-spamattacks-with-postfix-in-a-high-volume-environment/

Grüße, Stefan

nr8
23.11.10, 14:52
Danke für eure Antworten.

Ich habe das mit reject_unverified_recipient versucht nur leider hat es nicht funktioniert.


# RECEIVER
smtpd_recipient_restrictions = permit_sasl_authenticated,
permit_mynetworks,
reject_unverified_recipient,
reject_unknown_recipient_domain,
reject_non_fqdn_recipient,
reject_unauth_destination,
check_sender_access hash:/etc/postfix/restrictions/spammers,
check_recipient_access hash:/etc/postfix/client_access,
#check_policy_service inet:127.0.0.1:60000,
permit_auth_destination,
check_relay_domains,
reject

@L00NIX: Eine Liste von Hand möchte ich nicht anlegen. Du meinst es gibt Scripts die mir soeine Liste erstellen können? Wo finde ich so etwas?

Danke

L00NIX
23.11.10, 19:51
@l00nix: Eine liste von hand möchte ich nicht anlegen. Du meinst es gibt scripts die mir soeine liste erstellen können? Wo finde ich so etwas?

Danke


stichwörter zum suchen sind z.b. "script relay recipients exchange".

Google ?

TMOS
24.11.10, 09:54
Danke für eure Antworten.

Ich habe das mit reject_unverified_recipient versucht nur leider hat es nicht funktioniert.



Logfileauszug zeigen.
Transportmap zeigen.

nr8
26.11.10, 11:24
Transport:

domain.com smtp:172.16.100.2:25

Log:

Nov 26 11:20:13 srvli01 postfix/smtpd[8523]: connect from domain.org[IP]
Nov 26 11:20:13 srvli01 postfix/smtpd[8523]: NOQUEUE: reject: RCPT from domain.org[IP]: 550 5.1.1 <user@domain.com>: Recipient address rejected: User unknown in local recipient table; from=<user@domain.org> to=<user@domian.com> proto=ESMTP helo=<host.domain.org>
Nov 26 11:20:13 srvli01 postfix/smtpd[8523]: disconnect from domain.org[IP]

Und hier noch ein Teil aus der main.cf

# RECEIVER
smtpd_recipient_restrictions = permit_sasl_authenticated,
permit_mynetworks,
reject_unverified_recipient,
reject_unknown_recipient_domain,
reject_non_fqdn_recipient,
reject_unauth_destination,
check_sender_access hash:/etc/postfix/restrictions/spammers,
check_recipient_access hash:/etc/postfix/client_access,
permit_auth_destination,
check_relay_domains,
reject

Danke

TMOS
27.11.10, 13:44
Dein Postfix fühlt sich selbst für domain.org zuständig und sucht den User daher in seiner local recipient table.
Daher fragt er den Exchange auch nicht ab.

Du müsstest mal postconf -n zeigen.

In mydestination sollte domain.org nicht auftauchen.
Ebenso sollte der Parameter relay_domains gesetzt sein für die Domains die an den Exchange gehen sollen.

Das Abfragen des Users übernimmt Postfix aus der Transporttable die bei Dir so aussehen sollte:
domain.com smtp:[172.16.100.2]

Das :25 kannst Du dir sparen wenn vorne schon smtp steht und der Standardport verwendet werden soll.
Ebenso sollte es in [] stehen damit keine MX DNS-Auflösung versucht wird.


Also sollte es funktionieren wenn Du im bei bringst, dass er die Domains relayen soll und er nicht selbst dafür zuständig ist.

nr8
30.11.10, 18:24
Danke für deine Hilfe. Den Eintrag im Transport-File hab ich geändert.
Wenn ich jetzt aber in der main.cf diese Sachen ändere bekomme ich diese Fehler:


Von:
myhostname = srvli01.domain.com
mydestination = $myhostname, localhost

Auf:
mydestination = srvli01.domain.local
relay_domains = domain.com

Bekomm ich im Log:

Nov 30 18:15:29 srvli01 postfix/smtpd[8565]: NOQUEUE: reject: RCPT from mail.versender.org[IP]: 450 4.1.2 <a.huber@domain.com>: Recipient address rejected: Domain not found; from=<versender@versender.org> to=<a.huber@domain.com> proto=ESMTP helo=<host.versender.org>

Postconf -n:

append_dot_mydomain = no
biff = no
canonical_maps = hash:/etc/postfix/canonical
config_directory = /etc/postfix
content_filter = amavis:[127.0.0.1]:10024
delay_warning_time = 15m
disable_vrfy_command = yes
header_size_limit = 102400
inet_interfaces = all
line_length_limit = 2048
mailbox_size_limit = 0
maximal_queue_lifetime = 5
message_size_limit = 31457280
mydestination = $mydomain, $myhostname, localhost
myhostname = srvli01.domain.com
mynetworks = 172.16.100.0/24, 127.0.0.0/8
myorigin = /etc/mailname
readme_directory = no
recipient_delimiter = +
relay_domains = domain.com
relayhost =
sender_canonical_maps = hash:/etc/postfix/sender_canonical
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
smtpd_client_restrictions = permit_mynetworks, hash:/etc/postfix/client_access,
smtpd_delay_reject = yes
smtpd_helo_required = yes
smtpd_helo_restrictions = permit_mynetworks, reject_invalid_hostname, permit
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks,
reject_unverified_recipient, reject_unknown_recipient_domain, reject_non_fqdn_recipient, reject_unauth_destination, check_sender_access hash:/etc/postfix/restrictions/spammers, check_recipient_access hash:/etc/postfix/client_access,
permit_auth_destination,
check_relay_domains, reject
smtpd_sender_restrictions = permit_mynetworks, reject_unknown_sender_domain, reject_non_fqdn_sender, permit
smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = yes
transport_maps = hash:/etc/postfix/transport
virtual_alias_maps = hash:/etc/postfix/virtualtable

TMOS
30.11.10, 22:32
Die Ablehnung kommt aus der sender_restrictions. Ich würde alles in die recipient_restrictions machen und erst prüfen wenn alle Informationen vorliegen.

reject_unknown_sender_domain <- Postfix kann aber schon DNS Anfragen stellen?

Ansonsten mein Vorschlag:



smtpd_recipient_restrictions =
permit_sasl_authenticated,
permit_mynetworks,
reject_unauth_destination,
reject_unverified_recipient,
check_sender_access hash:/etc/postfix/restrictions/spammers,
check_recipient_access hash:/etc/postfix/client_access,
reject_non_fqdn_sender,
reject_non_fqdn_recipient,
reject_unknown_recipient_domain,
reject_rbl_client ix.dnsbl.manitu.net,
reject_rbl_client zen.spamhaus.org,
permit


Der Code Tag zeigt falsch an, Leerzeichen müssen sein damit erkannt wird dass das noch zu den restrictions gehört. Also vor jedem permit/reject noch min. 1 Leerzeichen setzen.

nr8
02.12.10, 17:07
Vielen Dank für deine Hilfe. Das ganze lauft jetzt. Nur eine Frage/Problem ab ich noch.

Ich habe jetzt eine Mail an eine Adresse geschickt die es nicht gibt.
Der Exchange gibt die Mail auch richtig zurück und sagt das es diesen User nicht gibt

status=undeliverable (host 172.16.100.2[172.16.100.2] said: 550 5.1.1 User unknown (in reply to RCPT TO command)

Das Mail wurde aber dann an den Mailbackup-Server übergeben und dieser versucht die Mail noch einmal zuzustellen und der Postfix gibt eine 4.5.0 Meldung zurück. Soweit glaub ich passt das recht gut. Nur ich hab keine Fehlermeldung an die Absenderadresse zurück bekommen.

Was ist jetzt mit dem Mail passiert? Liegt es noch am Mailbackup-Server? Wird dieses noch einmal versucht zuzustellen und erst nach einer gewissen Zeit bekomme ich eine Fehlermail zurück an den Absender? sollte das nicht sofort passieren?

Danke

TMOS
02.12.10, 21:37
Setz mal den Parameter in die main.cf

unverified_recipient_reject_code = 550


Ebenso sollte natürlich

soft_bounce = no

gesetzt sein.

nr8
06.12.10, 16:48
Super danke. Das lauft wunderbar.