spamd config question

Graham Toal <[email protected]>
Newsgroups gmane.mail.spam.greylist.user
Message-ID <[email protected]>
Hello again folks,
  you may remember much earlier in the year I struggled with and finally
succeeded in implementing spamd in the configuration where the greylist
box has a real IP.  I'm now re-building that server as a transparent
bridge, and things are mostly going well except that I'm unable to
forward connections to spamd when they come in.

After a lot of head-scratching, what I finally discovered was that
the destination address was correctly being rewritten along with
the destination port.  However the rewritten packet is being sent
out the $int_if interface rather than the loopback interface.

Here's my pf.conf.  Can anyone see an obvious problem with it?
Do I need some nat commands as well?

Note the transparent bridge is *not* a firewall.  All other packets in
and out should be allowed through untouched.


thanks

Graham



# pf.conf

ext_if="xl0"
int_if="fxp1"
in_mx="129.113.1.6"

table <spamd> persist file "/etc/spammers.txt"
table <spamd-white> persist
table <whitelist> persist file "/etc/whitelist.txt"

scrub in

# allow whitelisted sites to pass straight through (WORKS, DON'T TWEAK!)
rdr on $ext_if proto tcp from <whitelist> to port smtp -> $in_mx port smtp

# specifically redirect sites in spamd list to tarpit
rdr on $ext_if proto tcp from <spamd> to port smtp -> 127.0.0.1 port spamd
# - it is the redirection to 127.0.0.1 which is broken.  If we
# redirect -> $in_mx port smtp, that works OK.


# finally, anyone *not* in spamd-white also goes to tarpit.  (I'm a little
# surprised that the defaults are handled this way around.)

# (interesting to note that telnet localhost 25 works OK via this rule
# - definitely makes me suspect a NAT problem...)

# AHA!  Uing tcpdump, it seems that the incoming call *is* converted to
# a request for port 'spamd' on server 'localhost', *HOWEVER* it is
# sending that request through $int_if rather than lo0!

# rdr - should this be rdr pass ?
rdr on $ext_if inet proto tcp from !<spamd-white> to any port smtp \
	-> 127.0.0.1 port spamd


# default rules should pass anyone else (i.e. people in spamd-white)
# through to the real server...  just to be safe, we'll make it explicit...
# This rule does work correctly when the caller is in the white list. (TESTED)
rdr on $ext_if inet proto tcp from any to any port smtp -> $in_mx

# all packets go through both interfaces, so we want to ignore one
# interface completely and do all our filtering on the other.  It's
# fairly arbitrary which interface you filter on but for the sake of
# clarity, we will always filter on the external interface and allow
# everything on the internal interface to pass untouched:
pass in quick on $int_if all
pass out quick on $int_if all
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.