Postscreen und Blocklisten

rolapp

Fan vom SSF
Kurze Frage mal an die Experten.
habe postscreen mit div Blocklisten installiert.
jetzt habe ich gemerkt das Mails z.B von facebook oder gmail duch Blocklisten gesperrt werden. Habt Ihr das auch schon festgestellt.
Welche Listen sind empfehlenswert?
 
Ich habe postscreen so konfiguriert und fahre damit ganz gut:
Code:
postscreen_bare_newline_action = enforce
postscreen_bare_newline_enable = yes
postscreen_dnsbl_action = enforce
postscreen_dnsbl_sites =
  list.dnswl.org=127.0.[0..255].0*-2
  list.dnswl.org=127.0.[0..255].1*-4
  list.dnswl.org=127.0.[0..255].2*-6
  list.dnswl.org=127.0.[0..255].3*-8
  zen.spamhaus.org=127.0.0.9*25
  zen.spamhaus.org=127.0.0.3*10
  zen.spamhaus.org=127.0.0.2*5
  zen.spamhaus.org=127.0.0.[4..7]*3
  zen.spamhaus.org=127.0.0.[10..11]*3
  swl.spamhaus.org*-10
  bl.mailspike.net=127.0.0.2*10
  bl.mailspike.net=127.0.0.10*5
  bl.mailspike.net=127.0.0.11*4
  bl.mailspike.net=127.0.0.12*3
  bl.mailspike.net=127.0.0.13*2
  bl.mailspike.net=127.0.0.14*1
  wl.mailspike.net=127.0.0.16*-2
  wl.mailspike.net=127.0.0.17*-4
  wl.mailspike.net=127.0.0.18*-6
  wl.mailspike.net=127.0.0.19*-8
  wl.mailspike.net=127.0.0.20*-10
  backscatter.spameatingmonkey.net*2
  bl.ipv6.spameatingmonkey.net*2
  bl.spameatingmonkey.net*2
  ix.dnsbl.manitu.net*2
  bl.spamcop.net*2
  db.wpbl.info*2
  psbl.surriel.com*2
  torexit.dan.me.uk*2
  tor.dan.me.uk*1
  safe.dnsbl.sorbs.net*1
postscreen_dnsbl_threshold = 5
postscreen_dnsbl_whitelist_threshold = 0
postscreen_greet_action = enforce
postscreen_non_smtp_command_enable = yes
postscreen_pipelining_enable = yes
Die smtpd_*_restrictions müssen natürlich auch passen.
 
Last edited by a moderator:
cbl.abuseat.org*2 der hat mir gestern gmail ausgefiltert. Nach dem ich die Liste auskommentiert habe ist die Mail angekommen.
Habe eigentlich so konfiguriert wie du geschrieben hast.
 
Wenn Du den threshold auch auf 5 hast, können die 2 von abusenet nicht der alleinige Grund sein. Und wenn Du auch noch die Whitelists mit drin hast, dann kann gmail dank der -20 bis -30 aus den Whitelists gar nicht gefiltert werden, da immer mindestens -4 übrig bleiben.
 
Hallo Joe User

Das lag wohl nicht an postscreen selber, sondern am eingeschaltetem Greylisting für die Email-Adresse.

Bei der Blocklist habe ich mich vertan, das war der Whitelist Eintrag wl.mailspike.net wie ich jetzt auf den anderen gekommen bin Keine Ahnung.

Ich bin ein bisschen durcheinander gekommen wegen der Fehlermeldung
Code:
postfix/postscreen[1446]: NOQUEUE: reject: RCPT from [209.85.214.51]:38428: 450 4.3.2 Service currently unavailable; from=<sender@googlemail.com>, to=<empfänger@empfänger.de>, proto=ESMTP, helo=<mail-it0-f51.google.com>

Die großen Provider nehmen dann auch immer einen anderen Server mit anderer IP und da geht das Greylisting wieder von vorn los. Das war wahrscheinlich der Grund warum das am Sonntag nicht ging. Heute kamen die Mails direkt.

Na ja, man kann es mit dem Spamschutz auch übertreiben.

Danke für deine Hilfe.
 
postscreen macht selbst effektives Greylisting, da brauchst Du kein extra Tool mehr. Ein extra Tool würde auch zu einem doppelten Greylisting und damit mindestens doppelter Freigabezeit führen.
Gleiches gilt auch für Black/Whitelists.

postscreen ist somit auch ein vollwertiger, effektiver, sauberer, leichtgewichtiger und OOTB funkionierender Ersatz für Amavis und Co.
 
Habe in den letzten Wochen/Monaten auch immer wieder offensichtlichen Spam (Gener...ika, usw..), der über Mailspike WL durchkommt und werde diese WL wohl demnächst wieder rausnehmen.
 
Die smtpd_*_restrictions müssen natürlich auch passen.
Moin, da ich ja durch mein anderes Topic auf der Suche nach Lösungen und Ansätze von anderen Usern bin und gerne schaue, wie sie dem Spam entgegen gehen würde mich interessieren wie du deine smtpd restrictions aufgebaut hast :)

Eine meiner restrictions sieht aktuell wie folgt aus...
Code:
smtpd_recipient_restrictions =
 permit_mynetworks,
 permit_sasl_authenticated,
 reject_invalid_hostname,
 reject_non_fqdn_hostname,
 reject_non_fqdn_sender,
 reject_non_fqdn_recipient,
 reject_unauth_destination,
 reject_unauth_pipelining,
 reject_unknown_sender_domain,
 reject_unknown_reverse_client_hostname,
 reject_unknown_helo_hostname,
 check_recipient_access mysql:/etc/postfix/mysql-virtual_recipient.cf,
 check_policy_service inet:127.0.0.1:10023
Über Port 10023 läuft 'postgrey', falls jemand nicht weiß für was der da ist.

Gruß, Domi
 
Alle smtpd_*_restrictions versuchen unter smtpd_recipient_restrictions zusammenzufassen hat man vielleicht noch vor zehn Jahren gemacht, das ist allerdings falsch und sehr fehleranfällig. Die verschiedenen smtpd_*_restrictions sollte man strikt trennen, das trägt nicht nur zur Reduzierung der potentiellen Konfigurationsfehler bei, sondern erhöht auch die Flexibilität und Lesbarkeit.


Ich verwende folgende Konfiguration für Postfix 3.1.4 (Milter: opendkim, opendmarc):

main.cf
Code:
allow_percent_hack = no
always_add_missing_headers = yes
biff = no
compatibility_level = 2
data_directory = /var/lib/postfix
disable_vrfy_command = yes
dovecot_destination_recipient_limit = 1
enable_long_queue_ids = yes
fast_flush_domains =
home_mailbox = .maildir/
inet_interfaces = all
inet_protocols = all
lmtp_tls_fingerprint_digest = sha1
local_header_rewrite_clients = permit_mynetworks permit_sasl_authenticated
mail_spool_directory = /var/vmail
mailbox_size_limit = 0
masquerade_domains = $mydomain
masquerade_exceptions = root mailer-daemon
message_size_limit = 0
mydestination = $myhostname localhost.$mydomain localhost
mydomain = example.com
myhostname = mail.$mydomain
mynetworks_style = host
notify_classes = data protocol resource software
openssl_path = /usr/bin/openssl
postscreen_bare_newline_action = enforce
postscreen_bare_newline_enable = yes
postscreen_dnsbl_action = enforce
postscreen_dnsbl_sites =
  list.dnswl.org=127.0.[0..255].0*-2
  list.dnswl.org=127.0.[0..255].1*-4
  list.dnswl.org=127.0.[0..255].2*-6
  list.dnswl.org=127.0.[0..255].3*-8
  zen.spamhaus.org=127.0.0.9*25
  zen.spamhaus.org=127.0.0.3*10
  zen.spamhaus.org=127.0.0.2*5
  zen.spamhaus.org=127.0.0.[4..7]*3
  zen.spamhaus.org=127.0.0.[10..11]*3
  swl.spamhaus.org*-10
  bl.mailspike.net=127.0.0.2*10
  bl.mailspike.net=127.0.0.10*5
  bl.mailspike.net=127.0.0.11*4
  bl.mailspike.net=127.0.0.12*3
  bl.mailspike.net=127.0.0.13*2
  bl.mailspike.net=127.0.0.14*1
  wl.mailspike.net=127.0.0.16*-2
  wl.mailspike.net=127.0.0.17*-4
  wl.mailspike.net=127.0.0.18*-6
  wl.mailspike.net=127.0.0.19*-8
  wl.mailspike.net=127.0.0.20*-10
  backscatter.spameatingmonkey.net*2
  bl.ipv6.spameatingmonkey.net*2
  bl.spameatingmonkey.net*2
  ix.dnsbl.manitu.net*2
  bl.spamcop.net*2
  db.wpbl.info*2
  psbl.surriel.com*2
  torexit.dan.me.uk*2
  tor.dan.me.uk*1
  safe.dnsbl.sorbs.net*1
postscreen_dnsbl_threshold = 5
postscreen_dnsbl_whitelist_threshold = 0
postscreen_greet_action = enforce
postscreen_non_smtp_command_enable = yes
postscreen_pipelining_enable = yes
queue_directory = /var/spool/postfix
recipient_delimiter = +
remote_header_rewrite_domain = domain.invalid
show_user_unknown_table_name = no
smtp_dns_support_level = enabled
smtp_tls_CAfile = /usr/local/share/certs/ca-root-nss.crt
smtp_tls_ciphers = medium
smtp_tls_exclude_ciphers = CAMELLIA SEED IDEA RC2 RC4 aDSS kECDHe kECDHr kDHd kDHr eNULL aNULL MEDIUM LOW EXPORT
smtp_tls_fingerprint_digest = sha1
smtp_tls_loglevel = 1
smtp_tls_mandatory_ciphers = medium
smtp_tls_mandatory_exclude_ciphers = CAMELLIA SEED IDEA RC2 RC4 aDSS kECDHe kECDHr kDHd kDHr eNULL aNULL MEDIUM LOW EXPORT
smtp_tls_note_starttls_offer = yes
smtp_tls_security_level = may
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_client_port_logging = yes
smtpd_client_restrictions =
  sleep 1
  permit
smtpd_data_restrictions =
  reject_unauth_pipelining
  reject_multi_recipient_bounce
  permit
smtpd_end_of_data_restrictions =
  permit
smtpd_etrn_restrictions =
  reject
smtpd_helo_required = yes
smtpd_helo_restrictions =
  permit_mynetworks
  permit_sasl_authenticated
  reject_invalid_helo_hostname
  reject_non_fqdn_helo_hostname
  permit
smtpd_milters = inet:127.0.0.1:8891 inet:127.0.0.1:8893
smtpd_recipient_restrictions =
  permit_mynetworks
  permit_sasl_authenticated
  reject_non_fqdn_recipient
  reject_unknown_recipient_domain
  check_recipient_access pcre:${config_directory}/recipient_checks.pcre
  permit
smtpd_relay_restrictions =
  permit_mynetworks
  permit_sasl_authenticated
  defer_unauth_destination
  permit
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = yes
smtpd_sasl_path = private/auth
smtpd_sasl_type = dovecot
smtpd_sender_restrictions =
  reject_non_fqdn_sender
  reject_unknown_sender_domain
  permit
smtpd_tls_auth_only = yes
smtpd_tls_cert_file = /etc/ssl/certs/mail.example.com.crt
smtpd_tls_ciphers = medium
smtpd_tls_exclude_ciphers = CAMELLIA SEED IDEA RC2 RC4 aDSS kECDHe kECDHr kDHd kDHr eNULL aNULL MEDIUM LOW EXPORT
smtpd_tls_fingerprint_digest = sha1
smtpd_tls_key_file = /etc/ssl/private/mail.example.com.key
smtpd_tls_loglevel = 1
smtpd_tls_mandatory_ciphers = medium
smtpd_tls_mandatory_exclude_ciphers = CAMELLIA SEED IDEA RC2 RC4 aDSS kECDHe kECDHr kDHd kDHr eNULL aNULL MEDIUM LOW EXPORT
smtpd_tls_received_header = yes
smtpd_tls_security_level = may
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
strict_rfc821_envelopes = yes
swap_bangpath = no
tls_daemon_random_bytes = 64
tls_high_cipherlist = EECDH+ECDSA+CHACHA20 EECDH+CHACHA20 EECDH+ECDSA+AESGCM EECDH+AESGCM EECDH+ECDSA+AES256 EECDH+AES256 EECDH+ECDSA+AES128 EECDH+AES128 EECDH+ECDSA+3DES EECDH+3DES EDH+CHACHA20 EDH+AESGCM EDH+AES256 EDH+AES128 EDH+3DES
tls_medium_cipherlist = EECDH+ECDSA+CHACHA20 EECDH+CHACHA20 EECDH+ECDSA+AESGCM EECDH+AESGCM EECDH+ECDSA+AES256 EECDH+AES256 EECDH+ECDSA+AES128 EECDH+AES128 EECDH+ECDSA+3DES EECDH+3DES EDH+CHACHA20 EDH+AESGCM EDH+AES256 EDH+AES128 EDH+3DES AESGCM AES256 AES128 3DES
tls_preempt_cipherlist = yes
tls_random_bytes = 64
tls_ssl_options = NO_COMPRESSION
virtual_alias_domains = hash:${config_directory}/virtual_alias_domains
virtual_alias_maps = hash:${config_directory}/virtual_alias_maps
virtual_gid_maps = static:5000
virtual_mailbox_base = /var/vmail
virtual_mailbox_domains = hash:${config_directory}/virtual_mailbox_domains
virtual_mailbox_limit = 0
virtual_mailbox_maps = hash:${config_directory}/virtual_mailbox_maps
virtual_minimum_uid = 5000
virtual_transport = dovecot
virtual_uid_maps = static:5000

master.cf
Code:
smtp      inet  n       -       n       -       1       postscreen
smtpd     pass  -       -       n       -       -       smtpd
dnsblog   unix  -       -       n       -       0       dnsblog
tlsproxy  unix  -       -       n       -       0       tlsproxy
submission inet n       -       n       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o milter_macro_daemon_name=ORIGINATING
pickup    unix  n       -       n       60      1       pickup
cleanup   unix  n       -       n       -       0       cleanup
qmgr      unix  n       -       n       300     1       qmgr
tlsmgr    unix  -       -       n       1000?   1       tlsmgr
rewrite   unix  -       -       n       -       -       trivial-rewrite
bounce    unix  -       -       n       -       0       bounce
defer     unix  -       -       n       -       0       bounce
trace     unix  -       -       n       -       0       bounce
verify    unix  -       -       n       -       1       verify
flush     unix  n       -       n       1000?   0       flush
proxymap  unix  -       -       n       -       -       proxymap
proxywrite unix -       -       n       -       1       proxymap
smtp      unix  -       -       n       -       -       smtp
relay     unix  -       -       n       -       -       smtp
showq     unix  n       -       n       -       -       showq
error     unix  -       -       n       -       -       error
retry     unix  -       -       n       -       -       error
discard   unix  -       -       n       -       -       discard
local     unix  -       n       n       -       -       local
virtual   unix  -       n       n       -       -       virtual
lmtp      unix  -       -       n       -       -       lmtp
anvil     unix  -       -       n       -       1       anvil
scache    unix  -       -       n       -       1       scache
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/dovecot-lda
  -f ${sender} -a ${recipient} -d ${user}@${nexthop}

recipient_checks.pcre
Code:
/^\@/             550 Invalid address format.
/[!%\@].*\@/      550 This server disallows weird address syntax.
/^postmaster\@/   OK
/^hostmaster\@/   OK
/^security\@/     OK
/^abuse\@/        OK
/^admin\@/        OK

Das erschlägt zwar nicht alle Spams, aber mit den aktuell circa 1%-2% durchschlüpfenden Spam kann ich durchaus leben.
 
Last edited by a moderator:
Woa, hammer... vielen dank! Ich glaube da kann ich ganz viel optimieren. Was mir aufgefallen ist, bezüglich dkim schaut dein Postfix auch schon nach. Heißt das, wenn ich dir jetzt von meinem Server eine E-Mail zusenden würde, wäre die im Trash oder SPAM, weil meine Domain noch kein DKIM kann?

Meine Domains sind nämlich bei INWX und wenn ich mich nicht irre, kann ich da noch kein DKIM hinterlegen. Zumindest hatte ich nur SPF gefunden, mehr aber nicht.

Was den SPAM an sich angeht... seit ein paar Wochen bekomme ich oft solche Dinger wie "sie brauchen eine Versicherung" und die kommen trotz aktivierter greylist durch. Daher bin ich wieder dabei zu gucken was andere Leute so gegen den SPAM unternehmen :)

Bezüglich der smtpd restrictions bin ich immer etwas vorsichtig... Klar macht es Sinn, helo oder recipient zu trennen, die würde ich sogar noch vom Ansatz komplett verstehen. Da aber das eine oder das andere (vom Verständnis her) gleicht, war ich der Meinung das weniger, etwas mehr ist. Gerade im Bezug auf recipient und client... relay sowie data wäre auch noch selbsterklärend, wollte nun aber nicht so viel einstellen das ich auf einmal alles dicht mache. Bin da auch etwas vorsichtig (oder zu vorsichtig).

Gruß, Domi

Nachtrag: Eines ist mir gerade noch eingefallen... Bei uns in der Firma könnte ich (glaube ich) diesen smtpd_sender_restrictions = reject_non_fqdn_sender gar nicht verwenden, weil eine Firma mit der wir in Kontakt stehen über ihren ms01.firma.int (so nennt sich der Server beim HELO) E-Mails versendet. Das ist deren Exchange und der steht hinter einer dynamischen IP. Oder gab es für den PTR Check noch eine andere restriction?
 
Last edited by a moderator:
Meine Domains sind nämlich bei INWX und wenn ich mich nicht irre, kann ich da noch kein DKIM hinterlegen. Zumindest hatte ich nur SPF gefunden, mehr aber nicht.

DKIM (und auch SPF) wird als TXT-Record im DNS hinterlegt. SPF-Records gab es zwar mal als eigenständige Records, die sind aber obsolet geworden und werden von Mailservern eigentlich auch garnicht mehr ausgewertet.
 
Last edited by a moderator:
Woa, hammer... vielen dank! Ich glaube da kann ich ganz viel optimieren. Was mir aufgefallen ist, bezüglich dkim schaut dein Postfix auch schon nach. Heißt das, wenn ich dir jetzt von meinem Server eine E-Mail zusenden würde, wäre die im Trash oder SPAM, weil meine Domain noch kein DKIM kann?

opendkim und opendmarc setzen beziehungsweise überprüfen lediglich die entsprechenden Header beziehungsweise DNS-Records, aber sie filtern nicht.
Bei mir sind (abgesehen von postscreen) grundsätzlich die Mailclients fürs Filtern zuständig und nicht der Mailserver. So wie es die RFC für Mail vorgeben.

opendkim.conf
Code:
AuthservID              mail.example.org
AutoRestart             yes
AutoRestartRate         10/1h
Canonicalization        relaxed/relaxed
ExternalIgnoreList      refile:/var/lib/opendkim/trustedhosts
InternalHosts           refile:/var/lib/opendkim/trustedhosts
KeyTable                refile:/var/lib/opendkim/keytable
LogWhy                  yes
Mode                    sv
ReportAddress           "DKIM Error Postmaster" <postmaster@example.org>
SendReports             yes
SignatureAlgorithm      rsa-sha256
SignHeaders             From,Reply-To,To,Cc,In-Reply-To,References,Date,Subject,Content-Type,Content-Transfer-Encoding,MIME-Version
SigningTable            refile:/var/lib/opendkim/signingtable
SMTPURI                 smtp://localhost
Socket                  inet:8891@localhost
SubDomains              yes
Syslog                  yes
TrustAnchorFile         /etc/unbound/root.key
UMask                   022
UserID                  mailnull:mailnull

opendmarc.conf
Code:
AuthservID              mail.example.org
AutoRestart             true
AutoRestartRate         10/1h
FailureReports          true
FailureReportsOnNone    true
FailureReportsSentBy    postmaster@example.org
HistoryFile             /var/lib/opendmarc/opendmarc.dat
IgnoreAuthenticatedClients true
IgnoreHosts             /var/lib/opendmarc/ignorehosts
PublicSuffixList        /usr/share/public_suffix_list/public_suffix_list.dat
RejectFailures          false
Socket                  inet:8893@localhost
SPFIgnoreResults        true
SPFSelfValidate         true
Syslog                  true
TrustedAuthservIDs      mail.example.org
UMask                   022
UserID                  mailnull:mailnull
 
Last edited by a moderator:
Bezüglich der smtpd restrictions bin ich immer etwas vorsichtig... Klar macht es Sinn, helo oder recipient zu trennen, die würde ich sogar noch vom Ansatz komplett verstehen. Da aber das eine oder das andere (vom Verständnis her) gleicht, war ich der Meinung das weniger, etwas mehr ist. Gerade im Bezug auf recipient und client... relay sowie data wäre auch noch selbsterklärend, wollte nun aber nicht so viel einstellen das ich auf einmal alles dicht mache. Bin da auch etwas vorsichtig (oder zu vorsichtig).
Wann welche smtpd_*_restrictions zum Tragen kommen, steht in http://www.postfix.org/SMTPD_ACCESS_README.html


Nachtrag: Eines ist mir gerade noch eingefallen... Bei uns in der Firma könnte ich (glaube ich) diesen smtpd_sender_restrictions = reject_non_fqdn_sender gar nicht verwenden, weil eine Firma mit der wir in Kontakt stehen über ihren ms01.firma.int (so nennt sich der Server beim HELO) E-Mails versendet. Das ist deren Exchange und der steht hinter einer dynamischen IP. Oder gab es für den PTR Check noch eine andere restriction?
Die jeweils gültigen Restrictions und ihre Wirkung ist in der Doku an folgenden Stellen beschrieben:
http://www.postfix.org/postconf.5.html#smtpd_client_restrictions
http://www.postfix.org/postconf.5.html#smtpd_helo_restrictions
http://www.postfix.org/postconf.5.html#smtpd_sender_restrictions
http://www.postfix.org/postconf.5.html#smtpd_recipient_restrictions
http://www.postfix.org/postconf.5.html#smtpd_relay_restrictions
http://www.postfix.org/postconf.5.html#smtpd_data_restrictions
http://www.postfix.org/postconf.5.html#smtpd_end_of_data_restrictions
http://www.postfix.org/postconf.5.html#smtpd_etrn_restrictions
 
Nabend, für mich wäre interessant wenn die meisten Mails (Spam) vom Server weg gefiltert werden. Es würde sogar schon ausreichend sein, wenn sie als JUNK Markiert werden und im JUNK landen. Wobei ich dieses mit einer sieve Regel steuern könnte.

Den Rest kann Thunderbird eigentlich recht gut durchführen. Da ich allerdings via IMAP die Mails abrufe und K9-Mail den SPAM nicht so gut weg filtert (glaube, sogar er filtert gar nichts), passiert es sehr oft das mein Handy brummt und dann wieder nur SPAM dabei war.
 
Wenn Dir bei obiger Konfiguration wirklich noch störend zuviel Spam durchkommt, dann kannst Du selbstverständlich noch einen Spamfilter ala Spamassassin (ohne Amavis) einbinden.
Mir persönlich reicht der Kosten-Nutzen-Faktor nicht, aber den muss jeder für sich selbst berechnen ;)
 
Back
Top