Sorry for top posting. Forgot to add something earlier: Proxymap seems to be exiting on my system immediately after servicing requests. It does not seem to be obeying $max_use or $max_idle which are both set to 100. It did this even before I added cidr lists to proxymap a few hours ago. Before that, afaik, it was only being called for local alias verification, and it exited immediately in that case as well.
-- Stan Stan Hoeppner put forth on 1/30/2010 11:13 PM: > Wietse Venema put forth on 1/30/2010 7:14 PM: >> Stan Hoeppner: >>> AFAIK I don't use Berkeley DB tables, only hash (small,few) and cidr >>> (very large, a handful). >> >> hash (and btree) == Berkeley DB. > > Ahh, good to know. I'd thought only btree used Berkeley DB and that hash > tables > used something else. > >> If you have big CIDR tables, you can save lots of memory by using >> proxy:cidr: instead of cidr: (and running "postfix reload"). >> Effectively, this turns all that private memory into something that >> can be shared via the proxy: protocol. > > I implemented proxymap but it doesn't appear to have changed the memory > footprint of smtpd much at all, if any. I reloaded once, and restarted once > just in case. > > PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND > 4554 postfix 20 0 20828 17m 2268 S 0 4.5 0:00.46 smtpd > 4560 postfix 20 0 20036 16m 2268 S 0 4.3 0:00.47 smtpd > 4555 postfix 20 0 6812 3056 1416 S 0 0.8 0:00.10 proxymap > >> The current CIDR implementation is optimized to make it easy to >> verify for correctness, and is optimized for speed when used with >> limited lists of netblocks (mynetworks, unassigned address blocks, >> reserved address blocks, etc.). > > Understood. > >> If you want to list large portions of Internet address space such >> as entire countries the current implementation starts burning CPU >> time (it examines all CIDR patterns in order; with a bit of extra >> up-front work during initialization, address lookups could skip >> over a lot of patterns, but the implementation would of course be >> harder to verify for correctness), and it wastes 24 bytes per CIDR >> rule when Postfix is compiled with IPv6 support (this roughly >> doubles the amount memory that is used by CIDR tables). > > I don't really notice much CPU burn on any postfix processes with these > largish > CIDRs, never have. I've got 12,212 CIDRs in 3 files, 11,148 of them in just > the > "countries" file alone. After implementing proxymap, I'm not seeing much > reduction in smtpd RES size, maybe 1MB if that. SHR is almost identical to > before. If it's not the big tables bloating smtpd, I wonder what is? Or, > have > I not implemented proxymap correctly? Following are my postconf -n and > main.cf > relevant parts. > > alias_maps = hash:/etc/aliases > append_dot_mydomain = no > biff = no > config_directory = /etc/postfix > disable_vrfy_command = yes > header_checks = pcre:/etc/postfix/header_checks > inet_interfaces = all > message_size_limit = 10240000 > mime_header_checks = pcre:/etc/postfix/mime_header_checks > mydestination = hardwarefreak.com > myhostname = greer.hardwarefreak.com > mynetworks = 192.168.100.0/24 > myorigin = hardwarefreak.com > parent_domain_matches_subdomains = debug_peer_list smtpd_access_maps > proxy_interfaces = 65.41.216.221 > proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps > $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains > $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps > $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks > $sender_bcc_maps $recipient_bcc_maps $smtp_generic_maps $lmtp_generic_maps > proxy:${cidr}/countries proxy:${cidr}/spammer proxy:${cidr}/misc-spam-srcs > readme_directory = /usr/share/doc/postfix > recipient_bcc_maps = hash:/etc/postfix/recipient_bcc > relay_domains = > smtpd_banner = $myhostname ESMTP Postfix > smtpd_helo_required = yes > smtpd_recipient_restrictions = permit_mynetworks > reject_unauth_destination check_recipient_access > hash:/etc/postfix/whitelist check_sender_access hash:/etc/postfix/whitelist > check_client_access hash:/etc/postfix/whitelist check_client_access > hash:/etc/postfix/blacklist check_client_access > regexp:/etc/postfix/fqrdns.regexp check_client_access > pcre:/etc/postfix/ptr-tld.pcre check_client_access proxy:${cidr}/countries > check_client_access proxy:${cidr}/spammer check_client_access > proxy:${cidr}/misc-spam-srcs reject_unknown_reverse_client_hostname > reject_non_fqdn_sender reject_non_fqdn_helo_hostname > reject_invalid_helo_hostname reject_unknown_helo_hostname > reject_unlisted_recipient reject_rbl_client zen.spamhaus.org > check_policy_service inet:127.0.0.1:60000 > strict_rfc821_envelopes = yes > virtual_alias_maps = hash:/etc/postfix/virtual > > /etc/postfix/main.cf snippet > > cidr=cidr:/etc/postfix/cidr_files > > proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps > $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains > $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps > $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks > $sender_bcc_maps $recipient_bcc_maps $smtp_generic_maps $lmtp_generic_maps > proxy:${cidr}/countries proxy:${cidr}/spammer proxy:${cidr}/misc-spam-srcs > > check_client_access proxy:${cidr}/countries > check_client_access proxy:${cidr}/spammer > check_client_access proxy:${cidr}/misc-spam-srcs >