View Single Post

  #1 (permalink)  
Old 10-10-2006
Matthew X. Economou
 
Posts: n/a
Default Testing the access tables (check_*_access)

(Postfix 2.3.3 on FreeBSD 6.1-RELEASE-p6, installed from ports with
'POSTFIX_OPTIONS="SASL2 SASLKRB5 SPF TLS BDB MySQL OpenLDAP CDB VDA"'
and 'WITH_BDB_VER=43' set.)

I use a check_sender_access directive in $smtpd_recipient_restrictions
to allow or block mail from particular individuals as identified by
their message envelopes. If I read access(5) correctly, I should be
able to match on the domain part of a particular email address using
the hashed version (db or dbm) of the access table. In practice,
entries listing only the domain part do not match full email
addresses. For example, I have the following line in my sender access
list:

.intruguarddevices.com REJECT

(The file is in the "hash:" format, if that makes a difference.)
According to the mail logs and the Return-Path headers, sender
envelope addresses that should match this rule look like this:

webinar@intruguarddevices.com

Yet, Postfix does not block these addresses, even using the following
simplified configuration:

smtpd_recipient_restrictions =
permit_sasl_authenticated
permit_mynetworks
reject_unauth_destination
check_sender_access hash:/usr/local/etc/postfix/maps/access_sender
permit

When I query the access list using the postmap command, I get no
result:

postmap -q webinar@intruguarddevices.com access_sender || echo not found
not found

postmap -q .intruguarddevices.com access_sender || echo not found
REJECT

Now, it's possible that postmap's -q flag does not follow the same
semantics as Postfix itself in terms of selecting a match, but I don't
know how else to test or to reproduce my problem.

What am I doing wrong? Am I using this facility correctly? Should I
switch to some other lookup method (e.g., PCRE)?

Best wishes,
Matthew

--
Every time Bruce Schneier smiles, an amateur cryptographer dies.
(http://geekz.co.uk/schneierfacts/fact/55)
Reply With Quote