A good combination of rbl lists with postscreen im using. postscreen_dnsbl_threshold=4 postscreen_dnsbl_sites = b.barracudacentral.org*4 bad.psky.me*4 zen.spamhaus.org*4 dnsbl.cobion.com*2 bl.spameatingmonkey.net*2 fresh.spameatingmonkey.net*2 dnsbl.anonmails.de*2 dnsbl.kempt.net*2 dnsbl.inps.de*2 bl.spamcop.net*2 dnsbl.sorbs.net*2 psbl.surriel.com*2 bl.mailspike.net*2 bl.suomispam.net*2 all.rbl.jp*2 swl.spamhaus.org*-4
basicly. If one of the servers is in barracuda spamhaus or psky its always spam so i gave the the max (4). If its a "new" domain name fresh.spameatingmonkey.net give 2. And mostly one of the other gives also to if its really spam. Works good here and espacialy with fail2ban Using these filter/failregex failregex = addr <HOST> listed by domain client \[<HOST>\] blocked using multiple DNS-based blocklists Which reduces cpu load and unneeded connections. And if you use spamassassin https://github.com/extremeshok/spamassassin-extremeshok_fromreplyto but setting up dkim dmarc spf is recommended yes. Greetz, Louis > -----Oorspronkelijk bericht----- > Van: postfixlists-070...@billmail.scconsult.com [mailto:owner-postfix- > us...@postfix.org] Namens Bill Cole > Verzonden: woensdag 13 juli 2016 7:53 > Aan: postfix-users@postfix.org > Onderwerp: Re: This ought to be simple to stop. Am I missing something? > > On 12 Jul 2016, at 15:44, Phil Stracchino wrote: > > > On 07/12/16 10:30, Bill Cole wrote: > >> On 12 Jul 2016, at 9:14, Phil Stracchino wrote: > >> > >>> I'm getting spam leaking through from sites with non-resolving IP or > >>> invalid DNS, sending mail to myself as me. > >> > >> You COULD use reject_unknown_client_hostname but it has substantial > >> false positives. > >> > >> More directly, you could enforce your own SPF record: > >> > >> caerllewys.net. 259200 IN TXT "v=spf1 > ip4:216.246.132.90 -all" > > > > I'm trying to. :) > > Well, the choices for how to do that are many. Probably the simplest way > to do it is with a "policy daemon" and the pypolicyd-spf implementation > is the purest up-to-date SPF enforcement tool in that class. > > Other options: there are other more comprehensive policy daemons, you > can do SPF checks with amavisd-new, or if you're a Perl weenie like me > you can install MIMEDefang and either implement SPF checks through one > of the available Perl modules in filter_sender() or let SpamAssassin > handle it. > > I'd definitely choose pypolicyd-spf if I had noticeable quantities of > this sort of crap making it to holistic filtering. SPF failure is > actually decisive in so little mail that I see anywhere that I've not > seen a need to push it to the top of the filtering heap. > > That's assuming you have a need to accept some mail claiming to be from > addresses in your own domain via that service, which you may not if > you've got a submission service set up. Based on the absence of any SASL > settings in your postconf -n output, I'm guessing you have such a > service, unless you rely entirely on source IP (i.e. permit_mynetworks) > for relay control. > > [...] > >> In this case it also appears that the IP address was in the CBL and > >> hence SpamHaus Zen when you accepted it. Maybe not, but if you are > >> not > >> killing such IPs in postscreen you're going to have a lot of spam > >> getting further in than it needs to. Also, if you're running a > >> smallish > >> mail system with a limited audience that does not include a need to > >> communicate with Vietnamese correspondents, you can probably block > >> all > >> email traffic from 14.160.0.0/11. > > > > I considered that option, yes. I ... could have sworn I *was* using > > the Zen RBL, actually. It looks as though I took it out for some > > reason > > at some time in the past and never restored it. > > I strongly recommend it. If you want fine-grained control over which > parts you use, you can select which return codes to look for. In my > case, I use these as part of my smtpd_recipient_restrictions list: > > reject_rbl_client zen.spamhaus.org=127.0.0.2, > reject_rbl_client zen.spamhaus.org=127.0.0.3, > reject_rbl_client zen.spamhaus.org=127.0.0.4, > reject_rbl_client zen.spamhaus.org=127.0.0.10, > reject_rbl_client zen.spamhaus.org=127.0.0.11, > > Those are, in order: SBL(chronic spam sources), CSS(snowshoers), > CBL(spambots), PBL(ISP-designated dynamic), and PBL(Spamhaus-determined > dynamic) > > > I haven't deployed postscreen yet, as I simply don't know enough about > > it. > > It's designed for doing the simplest and most numerous spam rejections > with the least effort. Its best features are the greeting delay, which > catches many of the most aggressively obnoxious bots, and the ability to > use multiple DNSBLs and DNSWLs in a scoring configuration. ~90% of the > rejections my personal mail system does are by postscreen, and I don't > believe it has ever made a mistake in rejecting a would-be sender. > That's with ONLY the DNSBL and PREGREET functions enabled. Obviously > everything else I do to keep the spam out is marginal in comparison... > > > I've been working on various additional services (including DKIM) > > to try to tighten things up, but I have limited time to work on my own > > stuff and - I admit - it tends to get attention mainly when something > > is > > obviously broken. > > > > > >> Why are you signing mail that came from a random bot in Vietnam? If > >> OpenDKIM can't be made to require authentication in order to sign > >> mail, > >> it is broken. I'm not familiar with it, so I expect you're just > >> missing > >> some setting that exists... > > > > Quite likely, yes. I'm fairly new to OpenDKIM and don't know all of > > the > > best practices for it yet. It certainly SHOULDN'T have been signing > > it. > [...] > >>> OpenDKIM is picking up that 14.167.212.244 is falsely trying to send > >>> mail as caerllewys.net, > >> > >> It doesn't seem to me like OpenDKIM is noticing any sort of falsity, > >> since it claims to be adding a signature. > > > > Which is probably a configuration error on my part. > > I don't use it so I don't know what knob to turn, but if this is a pure > MTA then the opendkim milter probably shouldn't be signing at all. Sign > messages only in the submission service, verify only on the MTA. > > >>> [...] but surely there should be some straightforward > >>> directive to tell Postfix not to allow a site outside of $mynetworks > >>> to send me mail using my own email address as sender. > >> > >> Yes, there are such directives, and you're not showing the most > >> suitable > >> places for them. > >> > >> You should have smtpd_recipient_restrictions and maybe > >> smtpd_relay_restrictions lists, one or both of which end with > >> "reject". > > > > I'm quite possibly doing some checks in the wrong (or sub-optimal) > > places. And it's been a while since I last read through the full > > documentation, and I know I haven't kept up with changes. > > > > Postconf -n output follows; I'd appreciate any tips on errors I'm > > making > > or places where I could improve my configuration. There's always room > > to learn more. > > 1st note: You have a lot of explicitly set parameters that simply > replicate defaults. That's not harmful per se, but it adds noise to > postconf -n. The ones I found trivially are: > > allow_untrusted_routing > fast_flush_domains > inet_interfaces > invalid_hostname_reject_code > local_destination_concurrency_limit > mail_owner > milter_default_action > parent_domain_matches_subdomains > relay_transport > setgid_group > smtpd_soft_error_limit > soft_bounce > tls_random_source > unknown_client_reject_code > unknown_local_recipient_reject_code > > So you can reduce clutter in main.cf and postconf -n by removing the > explicit setting of those. There are likely others. > > [...] > > smtpd_client_restrictions = permit_mynetworks > > Noise. There's no need to define any of the smtpd_*_restrictions lists > if the definition only includes a sequence of conditions that are going > to show up in logically later ones. > > > smtpd_helo_restrictions = reject_invalid_hostname > > reject_unknown_reverse_client_hostname pcre:/etc/postfix/helo.pcre > > I cannot make sense of the dangling map reference at the end. Perhaps > you want 'check_helo_access' before it? I would expect an error to be > logged about this. > > Also: it seems that you've been using Postfix longer than me. :) The > 'new' name for "reject_invalid_hostname" is > "reject_invalid_helo_hostname" because there are too many nuances in > email jargon... Non-critical to change it, but doing so may save you a > 'man 5 postconf' next year or later. > > Also, consider putting all of that in smtpd_recipient_restrictions > instead, after permit_mynetworks. > > > smtpd_milters = inet:localhost:8891 > > Presumably opendkim? > > > > smtpd_recipient_restrictions = permit_mynetworks > > reject_unauth_destination reject_unknown_reverse_client_hostname > > All fine, and a fine order, but I would suggest a consolidation (see > above and below...) > > > smtpd_sender_restrictions = permit_mynetworks reject_invalid_hostname > > reject_unknown_sender_domain reject_non_fqdn_sender > > check_sender_access > > btree:/etc/postfix/block-local-sender > > There's probably no reason not to merge this list and > smtpd_helo_restrictions into one grand smtpd_recipient_restrictions > list: > > smtpd_recipient_restrictions = > permit_mynetworks,reject_unauth_destination, > > reject_unknown_reverse_client_hostname,reject_invalid_helo_hostname, > check_helo_access pcre:/etc/postfix/helo.pcre, > reject_unknown_sender_domain,reject_non_fqdn_sender, > check_sender_access btree:/etc/postfix/block-local-sender > > CAVEAT: taking advice from me on this is worth what you pay for it, *at > most*. Note that I go a bit "grander" myself: > > # postconf -f smtpd_recipient_restrictions|wc > 26 59 1709 > > Which includes 12 map checks, 11 DNSBL checks, and 7 simple of postfix's > reject_* rules. (It's complicated) > > Also, it is quite safe to add: > > smtpd_data_restrictions = > reject_multi_recipient_bounce,reject_unauth_pipelining,permit > > Those will not catch much which won't be caught by Zen and/or > postscreen's PREGREET check, but they are non-zero and extremely safe. > > > unknown_client_reject_code = 450 > > If you're sticking with reject_unknown_reverse_client_hostname only > (which I'd recommend) you can change this safely to 550 (and in my > opinion should, on a 'fail fast' principle.)