| #!/usr/bin/perl -T |
| |
| use lib '.'; use lib 't'; |
| use SATest; sa_t_init("freemail"); |
| |
| use Test::More; |
| |
| plan tests => 23; |
| |
| # --------------------------------------------------------------------------- |
| |
| # Global |
| tstprefs (" |
| freemail_domains gmail.com |
| "); |
| |
| ## Standard + whitelist should not hit |
| |
| tstlocalrules (q{ |
| freemail_import_whitelist_auth 0 |
| whitelist_auth test@gmail.com |
| header FREEMAIL_FROM eval:check_freemail_from() |
| score FREEMAIL_FROM 3.3 |
| header FREEMAIL_REPLYXX eval:check_freemail_replyto('reply') |
| score FREEMAIL_REPLYXX 3.3 |
| header FREEMAIL_REPLYTO eval:check_freemail_replyto('replyto') |
| score FREEMAIL_REPLYTO 3.3 |
| header FREEMAIL_REPLYXX eval:check_freemail_replyto('reply') |
| score FREEMAIL_REPLYXX 3.3 |
| header FREEMAIL_ENVFROM_END_DIGIT eval:check_freemail_header('EnvelopeFrom', '\d@') |
| score FREEMAIL_ENVFROM_END_DIGIT 3.3 |
| header FREEMAIL_REPLYTO_END_DIGIT eval:check_freemail_header('Reply-To', '\d@') |
| score FREEMAIL_REPLYTO_END_DIGIT 3.3 |
| header FREEMAIL_HDR_REPLYTO eval:check_freemail_header('Reply-To') |
| score FREEMAIL_HDR_REPLYTO 3.3 |
| }); |
| |
| %patterns = ( |
| q{ 3.3 FREEMAIL_FROM }, 'FREEMAIL_FROM', |
| ); |
| %anti_patterns = ( |
| # No Reply-To or body |
| q{ 3.3 FREEMAIL_REPLYTO }, 'FREEMAIL_REPLYTO', |
| q{ 3.3 FREEMAIL_REPLYXX }, 'FREEMAIL_REPLYXX', |
| q{ 3.3 FREEMAIL_ENVFROM_END_DIGIT }, 'FREEMAIL_ENVFROM_END_DIGIT', |
| q{ 3.3 FREEMAIL_REPLYTO_END_DIGIT }, 'FREEMAIL_REPLYTO_END_DIGIT', |
| q{ 3.3 FREEMAIL_HDR_REPLYTO }, 'FREEMAIL_HDR_REPLYTO', |
| ); |
| |
| ok sarun ("-L -t < data/spam/relayUS.eml", \&patterns_run_cb); |
| ok_all_patterns(); |
| clear_pattern_counters(); |
| |
| ## Now test with freemail_import_whitelist_auth, should not hit |
| |
| %patterns = (); |
| %anti_patterns = ( |
| q{ 3.3 FREEMAIL_FROM }, 'FREEMAIL_FROM', |
| ); |
| |
| tstlocalrules (q{ |
| freemail_import_whitelist_auth 1 |
| whitelist_auth test@gmail.com |
| header FREEMAIL_FROM eval:check_freemail_from() |
| score FREEMAIL_FROM 3.3 |
| }); |
| |
| ok sarun ("-L -t < data/spam/relayUS.eml", \&patterns_run_cb); |
| ok_all_patterns(); |
| |
| ## From and Reply-To different |
| |
| %patterns = ( |
| q{ 3.3 FREEMAIL_FROM }, 'FREEMAIL_FROM', |
| q{ 3.3 FREEMAIL_REPLYTO }, 'FREEMAIL_REPLYTO', |
| q{ 3.3 FREEMAIL_REPLYXX }, 'FREEMAIL_REPLYXX', |
| q{ 3.3 FREEMAIL_ENVFROM_END_DIGIT }, 'FREEMAIL_ENVFROM_END_DIGIT', |
| q{ 3.3 FREEMAIL_REPLYTO_END_DIGIT }, 'FREEMAIL_REPLYTO_END_DIGIT', |
| q{ 3.3 FREEMAIL_HDR_REPLYTO }, 'FREEMAIL_HDR_REPLYTO', |
| ); |
| %anti_patterns = (); |
| |
| tstlocalrules (q{ |
| header FREEMAIL_FROM eval:check_freemail_from() |
| score FREEMAIL_FROM 3.3 |
| header FREEMAIL_REPLYTO eval:check_freemail_replyto('replyto') |
| score FREEMAIL_REPLYTO 3.3 |
| header FREEMAIL_REPLYXX eval:check_freemail_replyto('reply') |
| score FREEMAIL_REPLYXX 3.3 |
| header FREEMAIL_ENVFROM_END_DIGIT eval:check_freemail_header('EnvelopeFrom', '\d@') |
| score FREEMAIL_ENVFROM_END_DIGIT 3.3 |
| header FREEMAIL_REPLYTO_END_DIGIT eval:check_freemail_header('Reply-To', '\d@') |
| score FREEMAIL_REPLYTO_END_DIGIT 3.3 |
| header FREEMAIL_HDR_REPLYTO eval:check_freemail_header('Reply-To') |
| score FREEMAIL_HDR_REPLYTO 3.3 |
| }); |
| |
| ok sarun ("-L -t < data/spam/freemail1", \&patterns_run_cb); |
| ok_all_patterns(); |
| |
| ## Multiple Reply-To values, no email on body |
| |
| %patterns = ( |
| q{ 3.3 FREEMAIL_REPLYTO }, 'FREEMAIL_REPLYTO', |
| q{ 3.3 FREEMAIL_REPLYXX }, 'FREEMAIL_REPLYXX', |
| q{ 3.3 FREEMAIL_REPLYTO_END_DIGIT }, 'FREEMAIL_REPLYTO_END_DIGIT', |
| q{ 3.3 FREEMAIL_HDR_REPLYTO }, 'FREEMAIL_HDR_REPLYTO', |
| ); |
| %anti_patterns = (); |
| |
| tstlocalrules (q{ |
| header FREEMAIL_REPLYTO eval:check_freemail_replyto('replyto') |
| score FREEMAIL_REPLYTO 3.3 |
| header FREEMAIL_REPLYXX eval:check_freemail_replyto('reply') |
| score FREEMAIL_REPLYXX 3.3 |
| header FREEMAIL_REPLYTO_END_DIGIT eval:check_freemail_header('Reply-To', '\d@') |
| score FREEMAIL_REPLYTO_END_DIGIT 3.3 |
| header FREEMAIL_HDR_REPLYTO eval:check_freemail_header('Reply-To') |
| score FREEMAIL_HDR_REPLYTO 3.3 |
| }); |
| |
| ok sarun ("-L -t < data/spam/freemail2", \&patterns_run_cb); |
| ok_all_patterns(); |
| |
| ## No Reply-To, another freemail in body |
| |
| %patterns = ( |
| q{ 3.3 FREEMAIL_REPLYXX }, 'FREEMAIL_REPLYXX', |
| ); |
| %anti_patterns = (); |
| |
| tstlocalrules (q{ |
| header FREEMAIL_REPLYXX eval:check_freemail_replyto('reply') |
| score FREEMAIL_REPLYXX 3.3 |
| }); |
| |
| ok sarun ("-L -t < data/spam/freemail3", \&patterns_run_cb); |
| ok_all_patterns(); |
| |