Skrypt postfix-policyd-spf-perl pozwala Postfiksowi sprawdzać SPF nadawcy.

Zainstaluj Mail::SPF:

$ perl -MCPAN -e shell
Terminal does not support AddHistory.

To fix that, maybe try>  install Term::ReadLine::Perl

cpan shell -- CPAN exploration and modules installation (v2.36)
Enter 'h' for help.

cpan[1]> 
install Mail::SPF

Ściągnij i zainstaluj postfix-policyd-spf-perl:

$ cd /usr/src
$ wget https://launchpad.net/postfix-policyd-spf-perl/trunk/2.011/+download/postfix-policyd-spf-perl-2.011.tar.gz
$ tar xvfz postfix-policyd-spf-perl-2.011.tar.gz
$ cd postfix-policyd-spf-perl-2.011
$ mkdir -p /usr/local/lib/postfix
$ cp postfix-policyd-spf-perl /usr/local/lib/postfix/policyd-spf-perl

Dodaj do /etc/postfix/master.cf:

policyd-spf     unix  -       n       n       -       -       spawn
    user=nobody argv=/usr/bin/perl /usr/local/lib/postfix/policyd-spf-perl

Dodaj do /etc/postfix/main.cf:

smtpd_recipient_restrictions =
    [...]
    reject_unauth_destination
    check_policy_service unix:private/policyd-spf
    [...]

Przetestuj:

$ /usr/local/lib/postfix/policyd-spf-perl
request=smtpd_access_policy
protocol_state=RCPT
protocol_name=SMTP
helo_name=mail.big.corp
queue_id=8045F2AB23
sender=jdoe@big.corp
recipient=joan.doe@bogus.corp
client_address=123.123.123.123
client_name=big.corp

action=PREPEND Received-SPF: pass (false.cf: 123.123.123.123 is authorized to 
use 'jdoe@big.corp' in 'mfrom' identity (mechanism 'mx' matched)) 
receiver=srv.localdomain; identity=mailfrom; envelope-from="jdoe@big.corp"; 
helo=mail.big.corp; client-ip=123.123.123.123
Porada

Jeśli po uruchomieniu policyd-spf-perl dostajesz błąd, np.:

Can't locate Sys/Hostname/Long.pm in @INC (you may need to install 
the Sys::Hostname::Long module) (@INC entries checked: 
/usr/lib/perl5/site_perl /usr/share/perl5/site_perl /usr/lib/perl5/vendor_perl 
/usr/share/perl5/vendor_perl /usr/lib/perl5/core_perl /usr/share/perl5/core_perl) 
at /usr/local/lib/postfix/policyd-spf-perl line 36.
BEGIN failed--compilation aborted at 
/usr/local/lib/postfix/policyd-spf-perl line 36.

brakuje ci potrzebnego modułu (tutaj: Sys::Hostname::Long). Zainstaluj go:

install Sys::Hostname::Long

Refs