Dies ist eine alte Version des Dokuments!
erweiterte gewichtete Prüfungen mittels policyd-weight
# systemctl start policyd-weight
# systemctl status policyd-weight
policyd-weight.service - policyd-weight is a Perl policy daemon for the Postfix MTA (2.1 and later) intended to eliminate forged envelope senders and HELOs (i.e. in bogus mails). Loaded: loaded (/usr/lib/systemd/system/policyd-weight.service; disabled) Active: active (running) since Wed 2014-11-05 16:46:56 CET; 8s ago Process: 6315 ExecStart=/usr/bin/policyd-weight start (code=exited, status=0/SUCCESS) Main PID: 6316 (policyd-weight ) CGroup: /system.slice/policyd-weight.service ├─6316 policyd-weight (master) └─6317 policyd-weight (cache) Nov 05 16:46:56 vml000087.dmz.nausch.org systemd[1]: Started policyd-weight is a Perl policy daemon for the Postfix MTA (2.1 and later) intended to eliminate forged envelope senders and HE...gus mails).. Nov 05 16:46:56 vml000087.dmz.nausch.org postfix/policyd-weight[6316]: policyd-weight 0.1.15 beta-2 started and daemonized. conf:/etc/policyd-weight.conf; GID:995 995 EGID:995 995 UID:995 E...int mode: 0 Nov 05 16:46:56 vml000087.dmz.nausch.org postfix/policyd-weight[6316]: cache_query: start: calling spawn_cache() Nov 05 16:46:56 vml000087.dmz.nausch.org postfix/policyd-weight[6317]: cache spawned Hint: Some lines were ellipsized, use -l to show in full.
# less /var/log/maillog
Nov 5 16:46:56 vml000087 postfix/policyd-weight[6316]: policyd-weight 0.1.15 beta-2 started and daemonized. conf:/etc/policyd-weight.conf; GID:995 995 EGID:995 995 UID:995 EUID:995; taint mode: 0 Nov 5 16:46:56 vml000087 postfix/policyd-weight[6316]: cache_query: start: calling spawn_cache() Nov 5 16:46:56 vml000087 postfix/policyd-weight[6317]: cache spawned
# netstat -tulpen
Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State User Inode PID/Program name tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 0 56505 4931/master tcp 0 0 0.0.0.0:587 0.0.0.0:* LISTEN 0 56511 4931/master tcp 0 0 127.0.0.1:12525 0.0.0.0:* LISTEN 0 67780 6316/policyd-weight tcp 0 0 0.0.0.0:465 0.0.0.0:* LISTEN 0 56517 4931/master tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 0 24989 1223/sshd tcp6 0 0 :::25 :::* LISTEN 0 56506 4931/master tcp6 0 0 :::587 :::* LISTEN 0 56512 4931/master tcp6 0 0 :::465 :::* LISTEN 0 56518 4931/master tcp6 0 0 :::22 :::* LISTEN 0 24991 1223/sshd udp 0 0 0.0.0.0:50558 0.0.0.0:* 70 21030 571/avahi-daemon: r udp 0 0 0.0.0.0:46503 0.0.0.0:* 0 20919 594/chronyd udp 0 0 0.0.0.0:5353 0.0.0.0:* 70 21029 571/avahi-daemon: r udp 0 0 127.0.0.1:323 0.0.0.0:* 0 20920 594/chronyd
# lsof -i:12525
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME policyd-w 6316 polw 4u IPv4 67780 0t0 TCP localhost:12525 (LISTEN)
Postfix Konfiguration
Bei den smtpd_recipient_restrictions tragen wir nun zur Aktivierung folgenden Eintrag nach dem greylisting-Eintrag ein.
# vim /etc/postfix/main.cf
... # Greylisting via postgrey checken via Unix-Socket (Kapitel 9.2.5 postgrey installieren) check_policy_service unix:postgrey/socket, # Policyd-Weight check over TCP-Connection (Kapitel 9.3 policyd-weight installieren) check_client_access btree:/etc/postfix/policyd_weight_client_whitelist, check_policy_service inet:127.0.0.1:12525, ...
Ausnahmeregelungen für Absendeserver
Leider kommt es auch vor, dass vor allem große Provider hinter ihren MX ein cluster betreiben, die mit wechselnden IP-Adrressen aus einem Pool aufschlagen. Damit können unter Umständen Probleme bei der Bewertung entstehen. Diese schalten wir dann bei Bedarf in der policyd_weight_client_whitelist frei.
# vim /etc/postfix/policyd_weight_client_whitelist
- /etc/postfix/policyd_weight_client_whitelist
# Django : 2012-02-03 # Datei zu Definition von Ausnahmeregeln für die gewichtete Überprüfung des Policyd-weight Daemon. # Policyd-weight ist ein E-Mail-Filter für den Postfix Mail Transfer Agent der von Robert Felber # in Perl entwickelt wurde. Policyd-weight untersucht die Mail bei der Einlieferung anhand des # Envelope Sender, des Envelope To und der HELO-Daten, die während des SMTP-Handshakes übertragen # werden und vergibt für verschiedene Kriterien Punkte. Dabei werden zum Beispiel Realtime Blackhole # Listen abgefragt oder die DNS-Konfiguration des Absenders überprüft. Für jeden Regelverstoß gibt # es negative Punkte und ab einer bestimmten Wertung wird die Mail abgelehnt. # # Nach Änderungen an den policyd-weight Ausnahmeliste policyd_weight_client_whitelist ist die # zugehörige Datenbank-Datei mit Hilfe von "postmap /etc/postfix/policyd_weight_client_whitelist" # zu erstellen und der Daemon von den Änderungen mit einem reload in Kenntnis zu setzen! # "service policyd-weight reload" # # Django : 2008-10-08 # 1und1.com (big pool, inserted by Django) kundenserver.de OK
Nach Änderungen an den policyd-weight Ausnahmeliste policyd_weight_client_whitelist ist die zugehörige Datenbank-Datei mit Hilfe von
# postmap /etc/postfix/policyd_weight_client_whitelist
zu erstellen und der Daemon von den Änderungen mit einem reload in Kenntnis zu setzen!
# service policyd-weight reload
Bewertungsbeispiele
erfolgreiche negative Bewertung einer Anlieferung
Am nachfolgenden Beispiel sehen wir, den erfolgreichen Mailversand nach der Bewertung durch policyd-weight.
Oct 14 22:31:30 nss postfix/smtpd[14044]: connect from www.linuxtv.org[212.227.166.180] Oct 14 22:31:34 nss postfix/policyd-weight[2715]: decided action=PREPEND X-policyd-weight: using cached result; rate: -7.6; <client=212.227.166.180> <helo=www.linuxtv.org> <from=vdr-bounces+michl=naush.org@linuxtv.org> <to=grossermeister@naush.org>; delay: 1s Oct 14 22:31:34 nss postgrey[21879]: action=pass, reason=triplet found, client_name=www.linuxtv.org, client_address=212.227.166.180, sender=vdr-bounces+michl=naush.org@linuxtv.org, recipient=michl@naush.org Oct 14 22:31:34 nss postgrey[21879]: cleaning up old logs... Oct 14 22:31:34 nss postfix/smtpd[14044]: 31F5E76022D: client=www.linuxtv.org[212.227.166.180] Oct 14 22:31:34 nss postfix/cleanup[14048]: 31F5E76022D: message-id=<Pine.LNX.4.64.0810142329220.5339@shogun.pilppa.org> Oct 14 22:31:34 nss postfix/qmgr[1304]: 31F5E76022D: from=<vdr-bounces+michl=naush.org@linuxtv.org>, size=3523, nrcpt=1 (queue active) Oct 14 22:31:34 nss postfix/smtpd[14044]: disconnect from www.linuxtv.org[212.227.166.180]
erfolgreiche positive Bewertung einer Anlieferung
In der Regel dauert es nicht all zulange und ein SPAMer wird erfolgreich positiv bewertet, also als SPAM erkannt und die Annahme abgelehnt.
Jun 6 08:46:11 pml010001 postfix/policyd-weight[6560]: weighted check: IN_DYN_PBL_SPAMHAUS=3.25 NOT_IN_SBL_X BL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 NOT_IN_BL_NJABL=-1.5 DSBL_ORG=SKIP(0) BAD_MX=6.825 BOGUS_MX=5.35 CL_IP_NE _HELO=4.75 RESOLVED_IP_IS_NOT_HELO=1.5 (check from: .nausch. - helo: .computer. - helo-domain: .computer.) FR OM_NOT_FAILED_HELO(DOMAIN)=6.25; <client=115.246.189.233> <helo=computer> <from=michael@nausch.org> <to=michae l@nausch.org>; rate: 23.425 Jun 6 08:46:11 pml010001 postfix/policyd-weight[6560]: decided action=550 Mail appeared to be SPAM or forged. Ask your Mail/DNS-Administrator to correct HELO and DNS MX settings or to get removed from DNSBLs; MTA helo: computer, MTA hostname: unknown[115.246.189.233] (helo/hostname mismatch); <client=115.246.189.233> <helo=computer> <from=michael@nausch.org> <to=michael@nausch.org>; delay: 0s Jun 6 08:46:11 pml010001 postfix/smtpd[31326]: NOQUEUE: reject: RCPT from unknown[115.246.189.233]: 550 5.7.1 <michael@nausch.org>: Recipient address rejected: Mail appeared to be SPAM or forged. Ask your Mail/DNS-Administrator to correct HELO and DNS MX settings or to get removed from DNSBLs; MTA helo: computer, MTA hostname: unknown[115.246.189.233] (helo/hostname mismatch); from=<michael@nausch.org> to=<michael@nausch.org> proto=SMTP helo=<computer>
Fehlerbehandlung
Sollte im maillog folgende Fehlermeldung auftauchen …
Feb 25 07:52:27 vml000080 postfix/policyd-weight[10649]: warning: cache_query: $csock couln't be created: connect: Connection refused, calling spawn_cache()
… dann wird der Mailsever die Annahme der Nachrichten mit einem temporären Fehler ablehnen. 451 4.3.5 Server configuration problem
Dann einfach den Deamon neu starten und sein temporäres Arbeitsverzeichnis vorher löschen.
- Daemon stoppen
# systemctl stop policyd-weight
- Arbeitsverzeichnis löschen
# rm /tmp/.policyd-weight/* -rf
- Daemon starten
# systemctl start policyd-weight start