working on getting a dual core dual cpu 64b 2MB cache xeon 2.8GHz w/12GB RAM and dual copper em(4) put in place in front of our MX vip for a greylisting spamd(8).
i've got a similar machine with faster CPU ( 3.0 GHz / 4MB ) but it "only" has 4GB of RAM with 4.0 installed on it now that was planning on using but i'm wondering if i'm going to definately need that extra 8GB of RAM. reason being we want to keep as much crap from talking to the MXs as we can (and thus to the spamassassin and all that stuff) - we also have some RBLs we use to flat out 5xx some incoming clients with - would like to use those for the <spamd> table with spamd-setup(8) - don't want them to go through greylisting trials and do want to be able to specify the "blacklist" message they see based on what RBL they're in. i'm not the biggest fan of RBLs, but we use some of them, so if spamd(8) can help us use them *better*, hooray. i did a few tests with pfctl(8) and spamd-setup(8) and see a concerning difference in the amount of time it takes to complete the operation of populating the addresses ( mostly in part because of the size of these RBLs, i believe ). here's a comparison of loading the 'CBL' list (i sorted it first, ascending) into pf via pfctl and then via spamd/spamd-setup. # wc -l /root/rbldns/cbl/cbl.zone.plain.sorted 3899399 /root/rbldns/cbl/cbl.zone.plain.sorted # pfctl -FT ; echo "table <cbl> persist file \"/root/rbldns/cbl/cbl.zone.plain.sorted\"" | time pfctl -vvf- -Tl 1 tables deleted. table <cbl> persist file "/root/rbldns/cbl/cbl.zone.plain.sorted" 0m12.52s real 0m4.48s user 0m7.97s system # cat /etc/spamd.conf all:cbl: cbl:black:msg="CBL":method=file:file=/root/rbldns/cbl/cbl.zone.plain.sorted # pfctl -FT; time /usr/libexec/spamd-setup 2 tables deleted. 20m19.53s real 5m38.13s user 7m23.78s system watching top(1), the greater part of 12m are spent in spamd-setup at ~100% cpu, then at about 13m spamd looks like it starts getting infos from spamd-setup, spamd itself starts having 90%+ CPU until the 20m mark when spamd-setup disappears. spamd-setup held onto its memory allocation until right near the end (~20m), here's a line from top -b a second or two before spamd-setup was out of the processlist: 15386 _spamd 64 0 127M 76M onproc/2 - 6:51 100.05% spamd 31029 root 2 0 951M 950M sleep/0 netio 12:58 0.00% spamd-setup spamd itself is now sitting at 15386 _spamd 2 0 209M 210M sleep/2 select 7:56 0.00% spamd so wrt the spamd-setup taking 20m there, i'm guessing that the only thing i can do to make that quicker would be to opportunistically supernet the source data into a file and then have spamd-setup use that one instead, but it is likely to be the case that the source data might not be very supernet-able too; i was looking at using more than just the CBL list, so instead of "only" about 3.8M entries, having something more like 12 million. the ruleset for pf i'm planning on keeping as plain as i can, probably not using altq for anything, but i'd like to use the source tracking options to keep the amount of connections from any specific non-whitelisted hosts down to a minimum. i'm anticipating i'll need to significantly jack up the default state/srctrack limits, which is ok, but primarily i'm trying to make certain that it's reasonable to put a spamd/pf box in front of the MXs and have it weather the storm and do what i hope it will benefit us with. dmesg and some details about the amount of email we get are in: http://marc.theaimsgroup.com/?l=openbsd-pf&m=116482979827642&w=2 with the exception that instead of the 1950s it's now going to probably be a 2850 ( the guy with 12GB RAM ) as the primary and failover to a 1950 who'll just pass stuff without greylisting. -- jared