On 9/13/2009 10:45 AM, Sahil Tandon wrote:
On Sun, 13 Sep 2009, mouss wrote:

What I mean by this is, if a malicious attacker send an email from
dam...@hotmail.com is there anyway to check that the email came from
hotmail.com via a DNS lookup?

the simplest thing you can do is something like this:

smtpd_sender_restrictions =
        ...
        check_client_access hash:/etc/postfix/forged_sender_wl
        check_sender_access hash:/etc/postfix/forged_sender_bl


== forged_sender_wl
hotmail.com     OK
.hotmail.com    OK
yahoo.com       OK
.yahoo.com      OK
...

== forged_sender_bl
hotmail.com     REJECT blah blah
yahoo.com       REJECT blah blah blah
...

Mouss, a thought: what if there is a temporary DNS lookup problem so
that Postfix believes the client hostname is 'unknown' instead of
'foo.bar.yahoo.com'?  Unless reject_unknown_client_hostname is specified
before these checks (with the default unknown_client_reject_code of
450), the sending server would incorrectly be turned away with a 5xx.
This is because the hostname passed to the check_client_access query
would not contain the expected domain.tld.  Or am I totally off with my
reasoning?

I use "reject_unknown_client_hostname" as part of the freemail restriction class. That way temporary DNS errors result in a temporary reject, and impostors without proper DNS are simply rejected.

  -- Noel Jones


Based on the above understanding, in my policy server, I reject certain
freemail envelopes only if the client hostname != '*.freemail.tld' AND
hostname != 'unknown'.  This does have the unfortunate consequence of
allowing spammers with bad DNS to spoof freemail envelopes, but at least
it won't 5xx mail that is really coming from a freemail server.  FWIW, I
do not use the reject_unknown_client_hostname restriction.


Reply via email to