Lines 82-94
Link Here
|
82 |
# use bytes; |
82 |
# use bytes; |
83 |
use re 'taint'; |
83 |
use re 'taint'; |
84 |
|
84 |
|
85 |
use Mail::SpamAssassin::Util; |
|
|
86 |
use Mail::SpamAssassin::NetSet; |
85 |
use Mail::SpamAssassin::NetSet; |
87 |
use Mail::SpamAssassin::Constants qw(:sa :ip); |
86 |
use Mail::SpamAssassin::Constants qw(:sa :ip); |
88 |
use Mail::SpamAssassin::Conf::Parser; |
87 |
use Mail::SpamAssassin::Conf::Parser; |
89 |
use Mail::SpamAssassin::Logger; |
88 |
use Mail::SpamAssassin::Logger; |
90 |
use Mail::SpamAssassin::Util::TieOneStringHash; |
89 |
use Mail::SpamAssassin::Util::TieOneStringHash; |
91 |
use Mail::SpamAssassin::Util qw(untaint_var); |
90 |
use Mail::SpamAssassin::Util qw(untaint_var idn_to_ascii); |
92 |
use File::Spec; |
91 |
use File::Spec; |
93 |
|
92 |
|
94 |
use vars qw{ |
93 |
use vars qw{ |
Lines 3477-3484
Link Here
|
3477 |
|
3476 |
|
3478 |
=item util_rb_tld tld1 tld2 ... |
3477 |
=item util_rb_tld tld1 tld2 ... |
3479 |
|
3478 |
|
3480 |
This option maintains list of valid TLDs in the RegistryBoundaries code. |
3479 |
This option maintains a list of valid TLDs in the RegistryBoundaries code. |
3481 |
TLDs include things like com, net, org, etc. |
3480 |
Top level domains (TLD) include things like com, net, org, xn--p1ai, рф, ... |
|
|
3481 |
International domain names may be specified in ASCII-compatible encoding (ACE), |
3482 |
e.g. xn--p1ai, xn--qxam, or with Unicode labels encoded as UTF-8 octets, |
3483 |
e.g. рф, ελ. |
3482 |
|
3484 |
|
3483 |
=cut |
3485 |
=cut |
3484 |
|
3486 |
|
Lines 3541-3547
Link Here
|
3541 |
xn--wgbh1c xn--wgbl6a xn--xhq521b xn--xkc2al3hye2a xn--xkc2dl3a5ee0h |
3543 |
xn--wgbh1c xn--wgbl6a xn--xhq521b xn--xkc2al3hye2a xn--xkc2dl3a5ee0h |
3542 |
xn--yfro4i67o xn--ygbi2ammx xn--zfr164b xxx xyz yachts yandex ye yokohama |
3544 |
xn--yfro4i67o xn--ygbi2ammx xn--zfr164b xxx xyz yachts yandex ye yokohama |
3543 |
youtube yt za zm zone zw |
3545 |
youtube yt za zm zone zw |
3544 |
/) { $self->{valid_tlds}{lc $_} = 1; } |
3546 |
/) { $self->{valid_tlds}{idn_to_ascii($_)} = 1 } |
3545 |
|
3547 |
|
3546 |
push (@cmds, { |
3548 |
push (@cmds, { |
3547 |
setting => 'util_rb_tld', |
3549 |
setting => 'util_rb_tld', |
Lines 3555-3561
Link Here
|
3555 |
return $INVALID_VALUE; |
3557 |
return $INVALID_VALUE; |
3556 |
} |
3558 |
} |
3557 |
foreach (split(/\s+/, $value)) { |
3559 |
foreach (split(/\s+/, $value)) { |
3558 |
$self->{valid_tlds}{lc $_} = 1; |
3560 |
$self->{valid_tlds}{idn_to_ascii($_)} = 1; |
3559 |
} |
3561 |
} |
3560 |
dbg("config: added tld list - $value"); |
3562 |
dbg("config: added tld list - $value"); |
3561 |
} |
3563 |
} |
Lines 3564-3570
Link Here
|
3564 |
=item util_rb_2tld 2tld-1.tld 2tld-2.tld ... |
3566 |
=item util_rb_2tld 2tld-1.tld 2tld-2.tld ... |
3565 |
|
3567 |
|
3566 |
This option maintains list of valid 2nd-level TLDs in the RegistryBoundaries |
3568 |
This option maintains list of valid 2nd-level TLDs in the RegistryBoundaries |
3567 |
code. 2TLDs include things like co.uk, fed.us, etc. |
3569 |
code. 2TLDs include things like co.uk, fed.us, etc. International domain |
|
|
3570 |
names may be specified in ASCII-compatible encoding (ACE), or with Unicode |
3571 |
labels encoded as UTF-8 octets. |
3568 |
|
3572 |
|
3569 |
=cut |
3573 |
=cut |
3570 |
|
3574 |
|
Lines 3735-3741
Link Here
|
3735 |
net.ye org.ye ac.za alt.za bourse.za city.za co.za edu.za gov.za law.za |
3739 |
net.ye org.ye ac.za alt.za bourse.za city.za co.za edu.za gov.za law.za |
3736 |
mil.za net.za ngo.za nom.za org.za school.za tm.za web.za ac.zm co.zm |
3740 |
mil.za net.za ngo.za nom.za org.za school.za tm.za web.za ac.zm co.zm |
3737 |
com.zm edu.zm gov.zm org.zm sch.zm ac.zw co.zw gov.zw org.zw |
3741 |
com.zm edu.zm gov.zm org.zm sch.zm ac.zw co.zw gov.zw org.zw |
3738 |
/) { $self->{two_level_domains}{lc $_} = 1; } |
3742 |
/) { $self->{two_level_domains}{idn_to_ascii($_)} = 1 } |
3739 |
|
3743 |
|
3740 |
push (@cmds, { |
3744 |
push (@cmds, { |
3741 |
setting => 'util_rb_2tld', |
3745 |
setting => 'util_rb_2tld', |
Lines 3749-3755
Link Here
|
3749 |
return $INVALID_VALUE; |
3753 |
return $INVALID_VALUE; |
3750 |
} |
3754 |
} |
3751 |
foreach (split(/\s+/, $value)) { |
3755 |
foreach (split(/\s+/, $value)) { |
3752 |
$self->{two_level_domains}{lc $_} = 1; |
3756 |
$self->{two_level_domains}{idn_to_ascii($_)} = 1; |
3753 |
} |
3757 |
} |
3754 |
} |
3758 |
} |
3755 |
}); |
3759 |
}); |
Lines 3757-3763
Link Here
|
3757 |
=item util_rb_3tld 3tld1.some.tld 3tld2.other.tld ... |
3761 |
=item util_rb_3tld 3tld1.some.tld 3tld2.other.tld ... |
3758 |
|
3762 |
|
3759 |
This option maintains list of valid 3rd-level TLDs in the RegistryBoundaries |
3763 |
This option maintains list of valid 3rd-level TLDs in the RegistryBoundaries |
3760 |
code. 3TLDs include things like demon.co.uk, plc.co.im, etc. |
3764 |
code. 3TLDs include things like demon.co.uk, plc.co.im, etc. International |
|
|
3765 |
domain names may be specified in ASCII-compatible encoding (ACE), or with |
3766 |
Unicode labels encoded as UTF-8 octets. |
3761 |
|
3767 |
|
3762 |
=cut |
3768 |
=cut |
3763 |
|
3769 |
|
Lines 3766-3772
Link Here
|
3766 |
# sa-update 20_aux_tlds.cf. |
3772 |
# sa-update 20_aux_tlds.cf. |
3767 |
foreach (qw/ |
3773 |
foreach (qw/ |
3768 |
demon.co.uk esc.edu.ar lkd.co.im plc.co.im |
3774 |
demon.co.uk esc.edu.ar lkd.co.im plc.co.im |
3769 |
/) { $self->{three_level_domains}{lc $_} = 1; } |
3775 |
/) { $self->{three_level_domains}{idn_to_ascii($_)} = 1 } |
3770 |
|
3776 |
|
3771 |
push (@cmds, { |
3777 |
push (@cmds, { |
3772 |
setting => 'util_rb_3tld', |
3778 |
setting => 'util_rb_3tld', |
Lines 3780-3786
Link Here
|
3780 |
return $INVALID_VALUE; |
3786 |
return $INVALID_VALUE; |
3781 |
} |
3787 |
} |
3782 |
foreach (split(/\s+/, $value)) { |
3788 |
foreach (split(/\s+/, $value)) { |
3783 |
$self->{three_level_domains}{lc $_} = 1; |
3789 |
$self->{three_level_domains}{idn_to_ascii($_)} = 1; |
3784 |
} |
3790 |
} |
3785 |
} |
3791 |
} |
3786 |
}); |
3792 |
}); |