mirror of
https://git.proxmox.com/git/proxmox-spamassassin
synced 2025-08-13 08:16:21 +00:00
137 lines
2.7 KiB
Perl
Executable File
137 lines
2.7 KiB
Perl
Executable File
#!/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();
|
|
|