Wie konfiguriere ich EXIM, um den SPF-Eintrag für eingehende E-Mails zu prüfen und den eingehenden E-Mails den Header „Received SPF“ hinzuzufügen?

Wie konfiguriere ich EXIM, um den SPF-Eintrag für eingehende E-Mails zu prüfen und den eingehenden E-Mails den Header „Received SPF“ hinzuzufügen?

Ich spiele mit Exim und habe einen Mailserver erstellt, der E-Mails problemlos annehmen und senden kann. Jetzt möchte ich die SPF-Prüfung für jede eingehende E-Mail aktivieren, damit Received SPFdiesen E-Mails ein Header hinzugefügt wird. Aber ich weiß einfach nicht, wie ich das machen soll.

Der Arzt sagt:SPF verification support is built into Exim if SUPPORT_SPF=yes is set in Local/Makefile. The support uses the libspf2 library https://www.libspf2.org/.

Aber ich nehme an, dass man diese Option nur auf „Ja“ setzen kann, wenn man Exim aus dem Quellcode erstellt. Ich habe es direkt aus dem Ubuntu-Paket installiert (ich nehme an, dass libspf2 dann automatisch installiert wird) und weiß nicht, wo es sich befindet Local/Makefile. Ich bin ziemlich sicher, dass das ziemlich einfach geht, aber ich habe im Moment keine Ahnung davon.

Ich habe auch das Exim-Konfigurationsverzeichnis überprüft und in der Datei den folgenden relevanten Codeausschnitt gefunden 30_exim4-config_check_rcpt.

Dies besagt eindeutig, dass Exim den SPF-Eintrag des Absenders nach dem RCPT-Befehl überprüft, wenn die SPF-Prüfung aktiviert und spf-tools-perlinstalliert ist. Ich habe es installiert spf-tools-perlund trotzdem keinen Header gesehen Received SPF. Das wirft also zwei Fragen auf.

  1. Wie aktiviere ich die SPF-Prüfung, um die Ausführung dieses Codes zu ermöglichen?
  2. Warum spf-tools-perl, wenn doch in der Dokumentation klar steht, dass Exim libspf verwendet. Warum dann zwei Bibliotheken?
  # Use spfquery to perform a pair of SPF checks.
  #
  # This is quite costly in terms of DNS lookups (~6 lookups per mail).  Do not
  # enable if that's an issue.  Also note that if you enable this, you must
  # install "spf-tools-perl" which provides the spfquery command.
  # Missing spf-tools-perl will trigger the "Unexpected error in
  # SPF check" warning.
  .ifdef CHECK_RCPT_SPF
  deny
    message = [SPF] $sender_host_address is not allowed to send mail from \
              ${if def:sender_address_domain {$sender_address_domain}{$sender_helo_name}}.
    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}}}}

  defer
    message = Temporary DNS error while checking SPF record.  Try again later.
    !acl = acl_local_deny_exceptions
    condition = ${if eq {$runrc}{5}{yes}{no}}

  warn
    condition = ${if <={$runrc}{6}{yes}{no}}
    add_header = Received-SPF: ${if eq {$runrc}{0}{pass}\
                                {${if eq {$runrc}{2}{softfail}\
                                 {${if eq {$runrc}{3}{neutral}\
                  {${if eq {$runrc}{4}{permerror}\
                   {${if eq {$runrc}{6}{none}{error}}}}}}}}}\
                } client-ip=$sender_host_address; \
                ${if def:sender_address_domain \
                   {envelope-from=${sender_address}; }{}}\
                helo=$sender_helo_name

  warn
    log_message = Unexpected error in SPF check.
    condition = ${if >{$runrc}{6}{yes}{no}}
  .endif```  

verwandte Informationen