blob: 9987b621f91b573c3153f1a1b7d0f0a72f0e3c96 [file] [log] [blame]
#!/usr/bin/perl -T
use lib '.'; use lib 't';
use SATest; sa_t_init("dmarc");
use Test::More;
use vars qw(%patterns %anti_patterns);
use constant HAS_MAILSPF => eval { require Mail::SPF; };
use constant HAS_DKIM_VERIFIER => eval {
require Mail::DKIM::Verifier;
version->parse(Mail::DKIM::Verifier->VERSION) >= version->parse(0.31);
};
use constant HAS_MAILDMARC => eval { require Mail::DMARC::PurePerl; };
plan skip_all => "Net tests disabled" unless conf_bool('run_net_tests');
plan skip_all => "Needs Mail::SPF" unless HAS_MAILSPF;
plan skip_all => "Needs Mail::DMARC::PurePerl" unless HAS_MAILDMARC;
plan skip_all => "Needs Mail::DKIM::Verifier >= 0.31" unless HAS_DKIM_VERIFIER ;
plan tests => 18;
tstprefs("
header SPF_PASS eval:check_for_spf_pass()
tflags SPF_PASS nice userconf net
full DKIM_SIGNED eval:check_dkim_signed()
tflags DKIM_SIGNED net
# Check that rename backwards compatibility works with if's
ifplugin Mail::SpamAssassin::Plugin::Dmarc
if plugin ( Mail::SpamAssassin::Plugin::Dmarc)
ifplugin Mail::SpamAssassin::Plugin::DMARC
header DMARC_PASS eval:check_dmarc_pass()
tflags DMARC_PASS net
header DMARC_NONE eval:check_dmarc_none()
tflags DMARC_NONE net
header DMARC_QUAR eval:check_dmarc_quarantine()
tflags DMARC_QUAR net
header DMARC_REJECT eval:check_dmarc_reject()
tflags DMARC_REJECT net
header DMARC_MISSING eval:check_dmarc_missing()
tflags DMARC_MISSING net
endif
endif
endif
");
##
## PASS
##
%patterns = (
q{ DMARC_PASS } => '',
);
%anti_patterns = (
qr/DMARC_(?!PASS)/ => '',
);
sarun ("-t < data/nice/dmarc/noneok.eml", \&patterns_run_cb);
ok_all_patterns();
sarun ("-t < data/nice/dmarc/quarok.eml", \&patterns_run_cb);
ok_all_patterns();
sarun ("-t < data/nice/dmarc/rejectok.eml", \&patterns_run_cb);
ok_all_patterns();
sarun ("-t < data/nice/dmarc/strictrejectok.eml", \&patterns_run_cb);
ok_all_patterns();
##
## REJECT
##
%patterns = (
q{ DMARC_REJECT } => '',
);
%anti_patterns = (
qr/DMARC_(?!REJECT)/ => '',
);
sarun ("-t < data/spam/dmarc/rejectko.eml", \&patterns_run_cb);
ok_all_patterns();
sarun ("-t < data/spam/dmarc/strictrejectko.eml", \&patterns_run_cb);
ok_all_patterns();
##
## QUAR
##
%patterns = (
q{ DMARC_QUAR } => '',
);
%anti_patterns = (
qr/DMARC_(?!QUAR)/ => '',
);
sarun ("-t < data/spam/dmarc/quarko.eml", \&patterns_run_cb);
ok_all_patterns();
##
## NONE
##
%patterns = (
q{ DMARC_NONE } => '',
);
%anti_patterns = (
qr/DMARC_(?!NONE)/ => '',
);
sarun ("-t < data/spam/dmarc/noneko.eml", \&patterns_run_cb);
ok_all_patterns();
##
## MISSING
##
%patterns = (
q{ DMARC_MISSING } => '',
);
%anti_patterns = (
qr/DMARC_(?!MISSING)/ => '',
);
sarun ("-t < data/spam/dmarc/nodmarc.eml", \&patterns_run_cb);
ok_all_patterns();