SPF-check und exim4

Debian macht sich hervorragend als Web- und Mailserver. Schau auch in den " Tipps und Tricks"-Bereich.
Antworten
scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

SPF-check und exim4

Beitrag von scientific » 13.02.2017 16:51:35

Hallo Leute!

Ich beschäftige mich gerade mit exim4 und SPF-Check.

Dabei ist mir aufgefallen, dass von einigen Absendern die Mails aufgrund eines fehlgeschlagenen SPF-Checks nicht durchkommen. Dazu gehören Notifications von Twitter und Facebook, aber auch eine Antwort des Supports meines Webhosters...

Da dies nur einige wenige Emails/Absender waren, dachte ich an eine Fehlkonfiguration der dortigen Mail-Infrastruktur.

Ich bin dem jetzt aber genauer nachgegangen und habe festgestellt, dass die zurückgewiesenen Emails als $sender_host_address 127.0.0.1 haben. Der Host ist mein Mailserver.
Hab mir die entsprechenden Emails genauer angesehen, und die haben korrekte Sender-IP-Adressen, Gmail hat den SPF-Check auch mit "pass" quittiert.
Die einzige 127.0.0.1-Adresse ist im letzten "Received"-Header bei der Zustellung von Exim an den localen Dovecot.
Ich hab mir andere Emails angesehen, und dort ist das ebenso.

Warum erkennt exim4 bei manchen Emails nicht die korrekte sender_host_address und nimmt stattdessen die letzte Zustellung auf localhost her?

Ich hab den SPF-Check vorübergehend wieder deaktiviert, da hier doch einige Mails nicht zugestellt werden, die aber zugestellt werden müssten, und die mein exim4 (dieser Teil ist in Originalkonfiguration von Debian!!!!) falsch behandelt...

Hat jemand eine Idee dazu?

[EDIT]
Auf http://www.exim.org/exim-html-3.30/doc/ ... er_34.html steht:

Code: Alles auswählen

$sender_host_address: When a message is received from a remote host, this variable contains that host's IP address. 
Bei mir ist exim so gut wie in der Standardconfig. Die Mails werden von fetchmail abgeholt und an exim übergeben. Dieses stellt die Emails dann lokal zu. Ich hab nicht mal spamassassin laufen. Ich hab noch rausgefunden, dass sender_host_address auf 127.0.0.1 gesetzt wird, wenn exim die message von localhost erhält (oder eben auf die IP-adresse des Absenders).

Warum geschieht das nur bei manchen Emails?
lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: SPF-check und exim4

Beitrag von scientific » 15.02.2017 01:46:15

Ich habe jetzt herausgefunden, dass das wohl damit zu tun hat, dass ich meine Mails per fetchmail abhole, deswegen der Absender-Host verändert ist und deswegen der Check fehlschlägt.

Ich habe jetzt zur ACL-Regel
domain=!+local_domains
hinzugefügt.
/etc/exim4/conf.d/acl/30_exim4-config_check_rcpt sieht jetzt so aus: (Ausschnitt)

Code: Alles auswählen

  deny
    domains = !+local_domains
    message = [SPF] $sender_host_address is not allowed to send mail from \
              ${if def:sender_address_domain {$sender_address_domain}{$sender_helo_name}}.  \
              Please see \
              http://www.openspf.org/Why?scope=${if def:sender_address_domain \
              {mfrom}{helo}};identity=${if def:sender_address_domain \
              {$sender_address}{$sender_helo_name}};ip=$sender_host_address
    log_message = SPF check failed.
    !acl = acl_local_deny_exceptions
    condition = ${run{/usr/bin/spfquery.mail-spf-perl --ip \
                   ${quote:$sender_host_address} --identity \
                   ${if def:sender_address_domain \
                       {--scope mfrom  --identity ${quote:$sender_address}}\
                       {--scope helo --identity ${quote:$sender_helo_name}}}}\
                   {no}{${if eq {$runrc}{1}{yes}{no}}}}

Weiters hab ich meine Domain des Smarthost zu /etc/exim4/conf.d/main/000_localmacros

Code: Alles auswählen

MAIN_LOCAL_DOMAINS = @ : localhost : meinedomain.invalid
hinzugefügt.

Jetzt kann ich direkt am Mailserver Mails abkippen, und auch von localhost welche wegschicken (an eine andere Adresse von mir) und dann mit fetchmail abholen.

Die Mails werden jetzt zugestellt mit einem zusätzlich eingfügten Header, dass SPF-Check erfolgreich war.

lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

Antworten