You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spamassassin.apache.org by si...@apache.org on 2008/02/08 04:23:00 UTC

svn commit: r619753 - in /spamassassin/trunk: lib/Mail/SpamAssassin/PerMsgStatus.pm lib/Mail/SpamAssassin/Util/RegistrarBoundaries.pm t/uri_text.t

Author: sidney
Date: Thu Feb  7 19:22:58 2008
New Revision: 619753

URL: http://svn.apache.org/viewvc?rev=619753&view=rev
Log:
bug 5813: correct TLD lookup to match current ICANN list and add all TLDs to regression tests

Modified:
    spamassassin/trunk/lib/Mail/SpamAssassin/PerMsgStatus.pm
    spamassassin/trunk/lib/Mail/SpamAssassin/Util/RegistrarBoundaries.pm
    spamassassin/trunk/t/uri_text.t

Modified: spamassassin/trunk/lib/Mail/SpamAssassin/PerMsgStatus.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/PerMsgStatus.pm?rev=619753&r1=619752&r2=619753&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/PerMsgStatus.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/PerMsgStatus.pm Thu Feb  7 19:22:58 2008
@@ -1665,17 +1665,17 @@
 # regexps for finding plain text non-scheme hostnames with valid TLDs.
 
 # the list from %VALID_TLDS in Util/RegistrarBoundaries.pm, as a
-# Regexp::Optimize optimized regexp ;)  accurate as of 20050318
+# Regexp::List optimized regexp ;)  accurate as of 20080208
 my $tldsRE = qr/
-    (?=[a-wyz])
-    (?:a(?:e(?:ro)?|r(?:pa)?|[cdfgilmnoqstuwzx])|b(?:iz?|[abdefghjmnorstvwyz])
-      |c(?:o(?:m|op)?|[acdfghiklmnrsu])|d[ejkmoz]|e[ceghrst]|f[ijkmor]
-      |g(?:[abdefghilmnpqrstuwy]|ov)|h[kmnrtu]|i(?:n(?:fo|t)?|[delmoqrst])
-      |j[emop]|k[eghimnprwyz]|l[abcikrstuvy]
-      |m(?:u(?:seum)?|[acdghkmnopqrstvwxyz]|i?l)|n(?:a(?:me)?|et?|[cfgilopruz])
-      |o(?:m|rg)|p(?:ro?|[aefghklmnstwy])|r[eouw]|s[abcdeghijklmnortvyzu]
-      |t[cdfghjklmnoprtvwz]|u[agkmsyz]|v[aceginu]|w[fs]|xxx|y[etu]|z[amw]|ed?u|qa
-    )/ix;
+  (?=[a-wyz])
+  (?:a(?:e(?:ro)?|r(?:pa)?|s(?:ia)?|[cdfgilmnoqtuwxz])|b(?:iz?|[abdefghjmnorstvwyz])
+    |c(?:at?|o(?:m|op)?|[cdfghiklmnruvxyz])|d[ejkmoz]|e(?:[cegrst]|d?u)|f[ijkmor]
+    |g(?:[abdefghilmnpqrstuwy]|ov)|h[kmnrtu]|i(?:n(?:fo|t)?|[delmoqrst])
+    |j(?:o(?:bs)?|[emp])|k[eghimnprwyz]|l[abcikrstuvy]
+    |m(?:o(?:bi)?|u(?:seum)?|[acdeghkmnpqrstvwxyz]|i?l)|n(?:a(?:me)?|et?|[cfgilopruz])
+    |o(?:m|rg)|p(?:ro?|[aefghklmnstwy])|r[eosuw]|s[abcdeghijklmnortuvyz]
+    |t(?:r(?:avel)?|[cdfghjkmnoptvwz]|e?l)|u[agkmsyz]|v[aceginu]|w[fs]|y[etu]|z[amw]|qa
+  )/ix;
 
 # knownscheme regexp looks for either a https?: or ftp: scheme, or www\d*\. or ftp\. prefix, i.e., likely to start a URL
 # schemeless regexp looks for a valid TLD at the end of what may be a FQDN, followed by optional ., optional :portnum, optional /rest_of_uri

Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Util/RegistrarBoundaries.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Util/RegistrarBoundaries.pm?rev=619753&r1=619752&r2=619753&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Util/RegistrarBoundaries.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Util/RegistrarBoundaries.pm Thu Feb  7 19:22:58 2008
@@ -31,28 +31,22 @@
 
 # The list of currently-valid TLDs for the DNS system.
 #
-# http://www.iana.org/cctld/cctld-whois.htm
-# "su" Extra from http://www.iana.org/root-whois/
-# http://www.iana.org/gtld/gtld.htm
-# http://www.iana.org/arpa-dom/
+# http://data.iana.org/TLD/tlds-alpha-by-domain.txt
+# Version 2008020601, Last Updated Thu Feb  7 09:07:00 2008 UTC
 foreach (qw/
-  ac ad ae af ag ai al am an ao aq ar as at au aw az ax ba bb bd be bf bg bh bi 
-  bj bm bn bo br bs bt bv bw by bz ca cc cd cf cg ch ci ck cl cm cn co cr cs cu 
-  cv cx cy cz de dj dk dm do dz ec ee eg eh er es et fi fj fk fm fo fr ga gb gd 
-  ge gf gg gh gi gl gm gn gp gq gr gs gt gu gw gy hk hm hn hr ht hu id ie il im 
-  in io iq ir is it je jm jo jp ke kg kh ki km kn kp kr kw ky kz la lb lc li lk 
-  lr ls lt lu lv ly ma mc md mg mh mk ml mm mn mo mp mq mr ms mt mu mv mw mx my 
-  mz na nc ne nf ng ni nl no np nr nu nz om pa pe pf pg ph pk pl pm pn pr ps pt 
-  pw py qa re ro ru rw sa sb sc sd se sg sh si sj sk sl sm sn so sr st sv sy sz 
-  tc td tf tg th tj tk tl tm tn to tp tr tt tv tw tz ua ug uk um us uy uz va vc 
-  ve vg vi vn vu wf ws ye yt yu za zm zw 
-  su
-  aero biz com coop info museum name net org pro gov edu mil int
-  arpa
-  eu
-  jobs travel
-  xxx
-  mobi asia cat tel
+  ac ad ae aero af ag ai al am an ao aq ar arpa as asia at au aw ax az
+  ba bb bd be bf bg bh bi biz bj bm bn bo br bs bt bv bw by bz ca cat cc
+  cd cf cg ch ci ck cl cm cn co com coop cr cu cv cx cy cz de dj dk dm
+  do dz ec edu ee eg er es et eu fi fj fk fm fo fr ga gb gd ge gf gg gh
+  gi gl gm gn gov gp gq gr gs gt gu gw gy hk hm hn hr ht hu id ie il im
+  in info int io iq ir is it je jm jo jobs jp ke kg kh ki km kn kp kr kw
+  ky kz la lb lc li lk lr ls lt lu lv ly ma mc md me mg mh mil mk ml mm
+  mn mo mobi mp mq mr ms mt mu museum mv mw mx my mz na name nc ne net
+  nf ng ni nl no np nr nu nz om org pa pe pf pg ph pk pl pm pn pr pro ps
+  pt pw py qa re ro rs ru rw sa sb sc sd se sg sh si sj sk sl sm sn so
+  sr st su sv sy sz tc td tel tf tg th tj tk tl tm tn to tp tr travel tt
+  tv tw tz ua ug uk um us uy uz va vc ve vg vi vn vu wf ws ye yt yu za
+  zm zw
   /) { 
   $VALID_TLDS{$_} = 1;
 }

Modified: spamassassin/trunk/t/uri_text.t
URL: http://svn.apache.org/viewvc/spamassassin/trunk/t/uri_text.t?rev=619753&r1=619752&r2=619753&view=diff
==============================================================================
--- spamassassin/trunk/t/uri_text.t (original)
+++ spamassassin/trunk/t/uri_text.t Thu Feb  7 19:22:58 2008
@@ -24,7 +24,7 @@
 use vars qw(%patterns %anti_patterns);
 
 # settings
-plan tests => 406;
+plan tests => 678;
 
 # initialize SpamAssassin
 my $sa = create_saobj({'dont_copy_prefs' => 1});
@@ -282,11 +282,289 @@
 # check all the TLDs (might as well be thorough)
 
 # first confirm that it will fail on not a TLD
+example.foo	!^http://example.foo$
+example.xxx	!^http://example.xxx$
+
+example.ac	^http://example.ac$
+example.ad	^http://example.ad$
+example.ae	^http://example.ae$
+example.aero	^http://example.aero$
+example.af	^http://example.af$
+example.ag	^http://example.ag$
+example.ai	^http://example.ai$
+example.al	^http://example.al$
+example.am	^http://example.am$
+example.an	^http://example.an$
+example.ao	^http://example.ao$
+example.aq	^http://example.aq$
+example.ar	^http://example.ar$
+example.arpa	^http://example.arpa$
+example.as	^http://example.as$
+example.asia	^http://example.asia$
+example.at	^http://example.at$
+example.au	^http://example.au$
+example.aw	^http://example.aw$
+example.ax	^http://example.ax$
+example.az	^http://example.az$
+example.ba	^http://example.ba$
+example.bb	^http://example.bb$
+example.bd	^http://example.bd$
+example.be	^http://example.be$
+example.bf	^http://example.bf$
+example.bg	^http://example.bg$
+example.bh	^http://example.bh$
+example.bi	^http://example.bi$
+example.biz	^http://example.biz$
+example.bj	^http://example.bj$
+example.bm	^http://example.bm$
+example.bn	^http://example.bn$
+example.bo	^http://example.bo$
+example.br	^http://example.br$
+example.bs	^http://example.bs$
+example.bt	^http://example.bt$
+example.bv	^http://example.bv$
+example.bw	^http://example.bw$
+example.by	^http://example.by$
+example.bz	^http://example.bz$
+example.ca	^http://example.ca$
+example.cat	^http://example.cat$
+example.cc	^http://example.cc$
+example.cd	^http://example.cd$
+example.cf	^http://example.cf$
+example.cg	^http://example.cg$
+example.ch	^http://example.ch$
+example.ci	^http://example.ci$
+example.ck	^http://example.ck$
+example.cl	^http://example.cl$
+example.cm	^http://example.cm$
+example.cn	^http://example.cn$
+example.co	^http://example.co$
+example.com	^http://example.com$
+example.coop	^http://example.coop$
+example.cr	^http://example.cr$
+example.cu	^http://example.cu$
+example.cv	^http://example.cv$
+example.cx	^http://example.cx$
+example.cy	^http://example.cy$
+example.cz	^http://example.cz$
+example.de	^http://example.de$
+example.dj	^http://example.dj$
+example.dk	^http://example.dk$
+example.dm	^http://example.dm$
+example.do	^http://example.do$
+example.dz	^http://example.dz$
+example.ec	^http://example.ec$
+example.edu	^http://example.edu$
+example.ee	^http://example.ee$
+example.eg	^http://example.eg$
+example.er	^http://example.er$
+example.es	^http://example.es$
+example.et	^http://example.et$
+example.eu	^http://example.eu$
+example.fi	^http://example.fi$
+example.fj	^http://example.fj$
+example.fk	^http://example.fk$
+example.fm	^http://example.fm$
+example.fo	^http://example.fo$
+example.fr	^http://example.fr$
+example.ga	^http://example.ga$
+example.gb	^http://example.gb$
+example.gd	^http://example.gd$
+example.ge	^http://example.ge$
+example.gf	^http://example.gf$
+example.gg	^http://example.gg$
+example.gh	^http://example.gh$
+example.gi	^http://example.gi$
+example.gl	^http://example.gl$
+example.gm	^http://example.gm$
+example.gn	^http://example.gn$
+example.gov	^http://example.gov$
+example.gp	^http://example.gp$
+example.gq	^http://example.gq$
+example.gr	^http://example.gr$
+example.gs	^http://example.gs$
+example.gt	^http://example.gt$
+example.gu	^http://example.gu$
+example.gw	^http://example.gw$
+example.gy	^http://example.gy$
+example.hk	^http://example.hk$
+example.hm	^http://example.hm$
+example.hn	^http://example.hn$
+example.hr	^http://example.hr$
+example.ht	^http://example.ht$
+example.hu	^http://example.hu$
+example.id	^http://example.id$
+example.ie	^http://example.ie$
+example.il	^http://example.il$
+example.im	^http://example.im$
+example.in	^http://example.in$
+example.info	^http://example.info$
+example.int	^http://example.int$
+example.io	^http://example.io$
+example.iq	^http://example.iq$
+example.ir	^http://example.ir$
+example.is	^http://example.is$
+example.it	^http://example.it$
+example.je	^http://example.je$
+example.jm	^http://example.jm$
+example.jo	^http://example.jo$
+example.jobs	^http://example.jobs$
+example.jp	^http://example.jp$
+example.ke	^http://example.ke$
+example.kg	^http://example.kg$
+example.kh	^http://example.kh$
+example.ki	^http://example.ki$
+example.km	^http://example.km$
+example.kn	^http://example.kn$
+example.kp	^http://example.kp$
+example.kr	^http://example.kr$
+example.kw	^http://example.kw$
+example.ky	^http://example.ky$
+example.kz	^http://example.kz$
+example.la	^http://example.la$
+example.lb	^http://example.lb$
+example.lc	^http://example.lc$
+example.li	^http://example.li$
+example.lk	^http://example.lk$
+example.lr	^http://example.lr$
+example.ls	^http://example.ls$
+example.lt	^http://example.lt$
+example.lu	^http://example.lu$
+example.lv	^http://example.lv$
+example.ly	^http://example.ly$
+example.ma	^http://example.ma$
+example.mc	^http://example.mc$
+example.md	^http://example.md$
+example.me	^http://example.me$
+example.mg	^http://example.mg$
+example.mh	^http://example.mh$
+example.mil	^http://example.mil$
+example.mk	^http://example.mk$
+example.ml	^http://example.ml$
+example.mm	^http://example.mm$
+example.mn	^http://example.mn$
+example.mo	^http://example.mo$
+example.mobi	^http://example.mobi$
+example.mp	^http://example.mp$
+example.mq	^http://example.mq$
+example.mr	^http://example.mr$
+example.ms	^http://example.ms$
+example.mt	^http://example.mt$
+example.mu	^http://example.mu$
+example.museum	^http://example.museum$
+example.mv	^http://example.mv$
+example.mw	^http://example.mw$
+example.mx	^http://example.mx$
+example.my	^http://example.my$
+example.mz	^http://example.mz$
+example.na	^http://example.na$
+example.name	^http://example.name$
+example.nc	^http://example.nc$
+example.ne	^http://example.ne$
+example.net	^http://example.net$
+example.nf	^http://example.nf$
+example.ng	^http://example.ng$
+example.ni	^http://example.ni$
+example.nl	^http://example.nl$
+example.no	^http://example.no$
+example.np	^http://example.np$
+example.nr	^http://example.nr$
+example.nu	^http://example.nu$
+example.nz	^http://example.nz$
+example.om	^http://example.om$
+example.org	^http://example.org$
+example.pa	^http://example.pa$
+example.pe	^http://example.pe$
+example.pf	^http://example.pf$
+example.pg	^http://example.pg$
+example.ph	^http://example.ph$
+example.pk	^http://example.pk$
+example.pl	^http://example.pl$
+example.pm	^http://example.pm$
+example.pn	^http://example.pn$
+example.pr	^http://example.pr$
+example.pro	^http://example.pro$
+example.ps	^http://example.ps$
+example.pt	^http://example.pt$
+example.pw	^http://example.pw$
+example.py	^http://example.py$
+example.qa	^http://example.qa$
+example.re	^http://example.re$
+example.ro	^http://example.ro$
+example.rs	^http://example.rs$
+example.ru	^http://example.ru$
+example.rw	^http://example.rw$
+example.sa	^http://example.sa$
+example.sb	^http://example.sb$
+example.sc	^http://example.sc$
+example.sd	^http://example.sd$
+example.se	^http://example.se$
+example.sg	^http://example.sg$
+example.sh	^http://example.sh$
+example.si	^http://example.si$
+example.sj	^http://example.sj$
+example.sk	^http://example.sk$
+example.sl	^http://example.sl$
+example.sm	^http://example.sm$
+example.sn	^http://example.sn$
+example.so	^http://example.so$
+example.sr	^http://example.sr$
+example.st	^http://example.st$
+example.su	^http://example.su$
+example.sv	^http://example.sv$
+example.sy	^http://example.sy$
+example.sz	^http://example.sz$
+example.tc	^http://example.tc$
+example.td	^http://example.td$
+example.tel	^http://example.tel$
+example.tf	^http://example.tf$
+example.tg	^http://example.tg$
+example.th	^http://example.th$
+example.tj	^http://example.tj$
+example.tk	^http://example.tk$
+example.tl	^http://example.tl$
+example.tm	^http://example.tm$
+example.tn	^http://example.tn$
+example.to	^http://example.to$
+example.tp	^http://example.tp$
+example.tr	^http://example.tr$
+example.travel	^http://example.travel$
+example.tt	^http://example.tt$
+example.tv	^http://example.tv$
+example.tw	^http://example.tw$
+example.tz	^http://example.tz$
+example.ua	^http://example.ua$
+example.ug	^http://example.ug$
+example.uk	^http://example.uk$
+example.um	^http://example.um$
+example.us	^http://example.us$
+example.uy	^http://example.uy$
+example.uz	^http://example.uz$
+example.va	^http://example.va$
+example.vc	^http://example.vc$
+example.ve	^http://example.ve$
+example.vg	^http://example.vg$
+example.vi	^http://example.vi$
+example.vn	^http://example.vn$
+example.vu	^http://example.vu$
+example.wf	^http://example.wf$
+example.ws	^http://example.ws$
+example.ye	^http://example.ye$
+example.yt	^http://example.yt$
+example.yu	^http://example.yu$
+example.za	^http://example.za$
+example.zm	^http://example.zm$
+example.zw	^http://example.zw$
+
+# with www. prefix tests a different table of TLDs
+
 www.example.foo	!^http://www.example.foo$
+www.example.xxx	!^http://www.example.xxx$
 
 www.example.ac	^http://www.example.ac$
 www.example.ad	^http://www.example.ad$
 www.example.ae	^http://www.example.ae$
+www.example.aero	^http://www.example.aero$
 www.example.af	^http://www.example.af$
 www.example.ag	^http://www.example.ag$
 www.example.ai	^http://www.example.ai$
@@ -296,12 +574,14 @@
 www.example.ao	^http://www.example.ao$
 www.example.aq	^http://www.example.aq$
 www.example.ar	^http://www.example.ar$
+www.example.arpa	^http://www.example.arpa$
 www.example.as	^http://www.example.as$
+www.example.asia	^http://www.example.asia$
 www.example.at	^http://www.example.at$
 www.example.au	^http://www.example.au$
 www.example.aw	^http://www.example.aw$
-www.example.az	^http://www.example.az$
 www.example.ax	^http://www.example.ax$
+www.example.az	^http://www.example.az$
 www.example.ba	^http://www.example.ba$
 www.example.bb	^http://www.example.bb$
 www.example.bd	^http://www.example.bd$
@@ -310,6 +590,7 @@
 www.example.bg	^http://www.example.bg$
 www.example.bh	^http://www.example.bh$
 www.example.bi	^http://www.example.bi$
+www.example.biz	^http://www.example.biz$
 www.example.bj	^http://www.example.bj$
 www.example.bm	^http://www.example.bm$
 www.example.bn	^http://www.example.bn$
@@ -322,6 +603,7 @@
 www.example.by	^http://www.example.by$
 www.example.bz	^http://www.example.bz$
 www.example.ca	^http://www.example.ca$
+www.example.cat	^http://www.example.cat$
 www.example.cc	^http://www.example.cc$
 www.example.cd	^http://www.example.cd$
 www.example.cf	^http://www.example.cf$
@@ -333,8 +615,9 @@
 www.example.cm	^http://www.example.cm$
 www.example.cn	^http://www.example.cn$
 www.example.co	^http://www.example.co$
+www.example.com	^http://www.example.com$
+www.example.coop	^http://www.example.coop$
 www.example.cr	^http://www.example.cr$
-www.example.cs	^http://www.example.cs$
 www.example.cu	^http://www.example.cu$
 www.example.cv	^http://www.example.cv$
 www.example.cx	^http://www.example.cx$
@@ -347,12 +630,13 @@
 www.example.do	^http://www.example.do$
 www.example.dz	^http://www.example.dz$
 www.example.ec	^http://www.example.ec$
+www.example.edu	^http://www.example.edu$
 www.example.ee	^http://www.example.ee$
 www.example.eg	^http://www.example.eg$
-www.example.eh	^http://www.example.eh$
 www.example.er	^http://www.example.er$
 www.example.es	^http://www.example.es$
 www.example.et	^http://www.example.et$
+www.example.eu	^http://www.example.eu$
 www.example.fi	^http://www.example.fi$
 www.example.fj	^http://www.example.fj$
 www.example.fk	^http://www.example.fk$
@@ -370,6 +654,7 @@
 www.example.gl	^http://www.example.gl$
 www.example.gm	^http://www.example.gm$
 www.example.gn	^http://www.example.gn$
+www.example.gov	^http://www.example.gov$
 www.example.gp	^http://www.example.gp$
 www.example.gq	^http://www.example.gq$
 www.example.gr	^http://www.example.gr$
@@ -389,6 +674,8 @@
 www.example.il	^http://www.example.il$
 www.example.im	^http://www.example.im$
 www.example.in	^http://www.example.in$
+www.example.info	^http://www.example.info$
+www.example.int	^http://www.example.int$
 www.example.io	^http://www.example.io$
 www.example.iq	^http://www.example.iq$
 www.example.ir	^http://www.example.ir$
@@ -397,6 +684,7 @@
 www.example.je	^http://www.example.je$
 www.example.jm	^http://www.example.jm$
 www.example.jo	^http://www.example.jo$
+www.example.jobs	^http://www.example.jobs$
 www.example.jp	^http://www.example.jp$
 www.example.ke	^http://www.example.ke$
 www.example.kg	^http://www.example.kg$
@@ -423,27 +711,33 @@
 www.example.ma	^http://www.example.ma$
 www.example.mc	^http://www.example.mc$
 www.example.md	^http://www.example.md$
+www.example.me	^http://www.example.me$
 www.example.mg	^http://www.example.mg$
 www.example.mh	^http://www.example.mh$
+www.example.mil	^http://www.example.mil$
 www.example.mk	^http://www.example.mk$
 www.example.ml	^http://www.example.ml$
 www.example.mm	^http://www.example.mm$
 www.example.mn	^http://www.example.mn$
 www.example.mo	^http://www.example.mo$
+www.example.mobi	^http://www.example.mobi$
 www.example.mp	^http://www.example.mp$
 www.example.mq	^http://www.example.mq$
 www.example.mr	^http://www.example.mr$
 www.example.ms	^http://www.example.ms$
 www.example.mt	^http://www.example.mt$
 www.example.mu	^http://www.example.mu$
+www.example.museum	^http://www.example.museum$
 www.example.mv	^http://www.example.mv$
 www.example.mw	^http://www.example.mw$
 www.example.mx	^http://www.example.mx$
 www.example.my	^http://www.example.my$
 www.example.mz	^http://www.example.mz$
 www.example.na	^http://www.example.na$
+www.example.name	^http://www.example.name$
 www.example.nc	^http://www.example.nc$
 www.example.ne	^http://www.example.ne$
+www.example.net	^http://www.example.net$
 www.example.nf	^http://www.example.nf$
 www.example.ng	^http://www.example.ng$
 www.example.ni	^http://www.example.ni$
@@ -454,6 +748,7 @@
 www.example.nu	^http://www.example.nu$
 www.example.nz	^http://www.example.nz$
 www.example.om	^http://www.example.om$
+www.example.org	^http://www.example.org$
 www.example.pa	^http://www.example.pa$
 www.example.pe	^http://www.example.pe$
 www.example.pf	^http://www.example.pf$
@@ -464,6 +759,7 @@
 www.example.pm	^http://www.example.pm$
 www.example.pn	^http://www.example.pn$
 www.example.pr	^http://www.example.pr$
+www.example.pro	^http://www.example.pro$
 www.example.ps	^http://www.example.ps$
 www.example.pt	^http://www.example.pt$
 www.example.pw	^http://www.example.pw$
@@ -471,6 +767,7 @@
 www.example.qa	^http://www.example.qa$
 www.example.re	^http://www.example.re$
 www.example.ro	^http://www.example.ro$
+www.example.rs	^http://www.example.rs$
 www.example.ru	^http://www.example.ru$
 www.example.rw	^http://www.example.rw$
 www.example.sa	^http://www.example.sa$
@@ -489,11 +786,13 @@
 www.example.so	^http://www.example.so$
 www.example.sr	^http://www.example.sr$
 www.example.st	^http://www.example.st$
+www.example.su	^http://www.example.su$
 www.example.sv	^http://www.example.sv$
 www.example.sy	^http://www.example.sy$
 www.example.sz	^http://www.example.sz$
 www.example.tc	^http://www.example.tc$
 www.example.td	^http://www.example.td$
+www.example.tel	^http://www.example.tel$
 www.example.tf	^http://www.example.tf$
 www.example.tg	^http://www.example.tg$
 www.example.th	^http://www.example.th$
@@ -505,6 +804,7 @@
 www.example.to	^http://www.example.to$
 www.example.tp	^http://www.example.tp$
 www.example.tr	^http://www.example.tr$
+www.example.travel	^http://www.example.travel$
 www.example.tt	^http://www.example.tt$
 www.example.tv	^http://www.example.tv$
 www.example.tw	^http://www.example.tw$
@@ -531,27 +831,3 @@
 www.example.za	^http://www.example.za$
 www.example.zm	^http://www.example.zm$
 www.example.zw	^http://www.example.zw$
-www.example.su	^http://www.example.su$
-www.example.aero	^http://www.example.aero$
-www.example.biz	^http://www.example.biz$
-www.example.com	^http://www.example.com$
-www.example.coop	^http://www.example.coop$
-www.example.info	^http://www.example.info$
-www.example.museum	^http://www.example.museum$
-www.example.name	^http://www.example.name$
-www.example.net	^http://www.example.net$
-www.example.org	^http://www.example.org$
-www.example.pro	^http://www.example.pro$
-www.example.gov	^http://www.example.gov$
-www.example.edu	^http://www.example.edu$
-www.example.mil	^http://www.example.mil$
-www.example.int	^http://www.example.int$
-www.example.arpa	^http://www.example.arpa$
-www.example.eu	^http://www.example.eu$
-www.example.jobs	^http://www.example.jobs$
-www.example.travel	^http://www.example.travel$
-www.example.xxx	^http://www.example.xxx$
-www.example.mobi	^http://www.example.mobi$
-www.example.asia	^http://www.example.asia$
-www.example.cat	^http://www.example.cat$
-www.example.tel	^http://www.example.tel$



Re: svn commit: r619753 - in /spamassassin/trunk: lib/Mail/SpamAssassin/PerMsgStatus.pm lib/Mail/SpamAssassin/Util/RegistrarBoundaries.pm t/uri_text.t

Posted by Sidney Markowitz <si...@sidney.com>.
Michael Parker wrote, On 8/2/08 4:31 PM:
> Would anyone object to removing .so from this list?

After reading the Wikipedia entries for the TLDs that they list as unused, I would be in 
favor of removing all of them

  bv gb pm sj so um yt

If spammers can't use them as domains, then all including them could do would be to 
generate false positives.

The three listed as "phaseout", su tp yu, on the other hand, I would keep, because it 
appears from the Wikipedia articles that they are in active use either during a transition 
period or because their phaseout is being resisted.

If we can reach consensus on this, I'll make the changes to the code I committed.

  -- sidney

Re: svn commit: r619753 - in /spamassassin/trunk: lib/Mail/SpamAssassin/PerMsgStatus.pm lib/Mail/SpamAssassin/Util/RegistrarBoundaries.pm t/uri_text.t

Posted by Michael Parker <pa...@pobox.com>.
Would anyone object to removing .so from this list?  The .so TLD is  
basically dead and we've found that lots of bogus domains like lib*.so  
are being caught by this.  Also sometimes you'll have spammers who are  
putting in gibberish or funny punctuation and you'll get sentences  
like 'blah blah.So this is'.  It also occurs with a couple of other  
domains but .so is by far the worst.

For more info on the .so domain you can read about it here: http://en.wikipedia.org/wiki/.so_%28domain_name%29

Michael

On Feb 7, 2008, at 9:23 PM, sidney@apache.org wrote:

> Author: sidney
> Date: Thu Feb  7 19:22:58 2008
> New Revision: 619753
>
> URL: http://svn.apache.org/viewvc?rev=619753&view=rev
> Log:
> bug 5813: correct TLD lookup to match current ICANN list and add all  
> TLDs to regression tests
>
> Modified:
>    spamassassin/trunk/lib/Mail/SpamAssassin/PerMsgStatus.pm
>    spamassassin/trunk/lib/Mail/SpamAssassin/Util/ 
> RegistrarBoundaries.pm
>    spamassassin/trunk/t/uri_text.t
>
> Modified: spamassassin/trunk/lib/Mail/SpamAssassin/PerMsgStatus.pm
> URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/PerMsgStatus.pm?rev=619753&r1=619752&r2=619753&view=diff
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- spamassassin/trunk/lib/Mail/SpamAssassin/PerMsgStatus.pm  
> (original)
> +++ spamassassin/trunk/lib/Mail/SpamAssassin/PerMsgStatus.pm Thu  
> Feb  7 19:22:58 2008
> @@ -1665,17 +1665,17 @@
> # regexps for finding plain text non-scheme hostnames with valid TLDs.
>
> # the list from %VALID_TLDS in Util/RegistrarBoundaries.pm, as a
> -# Regexp::Optimize optimized regexp ;)  accurate as of 20050318
> +# Regexp::List optimized regexp ;)  accurate as of 20080208
> my $tldsRE = qr/
> -    (?=[a-wyz])
> -    (?:a(?:e(?:ro)?|r(?:pa)?|[cdfgilmnoqstuwzx])|b(?:iz?| 
> [abdefghjmnorstvwyz])
> -      |c(?:o(?:m|op)?|[acdfghiklmnrsu])|d[ejkmoz]|e[ceghrst]| 
> f[ijkmor]
> -      |g(?:[abdefghilmnpqrstuwy]|ov)|h[kmnrtu]|i(?:n(?:fo|t)?| 
> [delmoqrst])
> -      |j[emop]|k[eghimnprwyz]|l[abcikrstuvy]
> -      |m(?:u(?:seum)?|[acdghkmnopqrstvwxyz]|i?l)|n(?:a(?:me)?|et?| 
> [cfgilopruz])
> -      |o(?:m|rg)|p(?:ro?|[aefghklmnstwy])|r[eouw]| 
> s[abcdeghijklmnortvyzu]
> -      |t[cdfghjklmnoprtvwz]|u[agkmsyz]|v[aceginu]|w[fs]|xxx|y[etu]| 
> z[amw]|ed?u|qa
> -    )/ix;
> +  (?=[a-wyz])
> +  (?:a(?:e(?:ro)?|r(?:pa)?|s(?:ia)?|[cdfgilmnoqtuwxz])|b(?:iz?| 
> [abdefghjmnorstvwyz])
> +    |c(?:at?|o(?:m|op)?|[cdfghiklmnruvxyz])|d[ejkmoz]|e(?:[cegrst]| 
> d?u)|f[ijkmor]
> +    |g(?:[abdefghilmnpqrstuwy]|ov)|h[kmnrtu]|i(?:n(?:fo|t)?| 
> [delmoqrst])
> +    |j(?:o(?:bs)?|[emp])|k[eghimnprwyz]|l[abcikrstuvy]
> +    |m(?:o(?:bi)?|u(?:seum)?|[acdeghkmnpqrstvwxyz]|i?l)| 
> n(?:a(?:me)?|et?|[cfgilopruz])
> +    |o(?:m|rg)|p(?:ro?|[aefghklmnstwy])|r[eosuw]| 
> s[abcdeghijklmnortuvyz]
> +    |t(?:r(?:avel)?|[cdfghjkmnoptvwz]|e?l)|u[agkmsyz]|v[aceginu]| 
> w[fs]|y[etu]|z[amw]|qa
> +  )/ix;
>
> # knownscheme regexp looks for either a https?: or ftp: scheme, or  
> www\d*\. or ftp\. prefix, i.e., likely to start a URL
> # schemeless regexp looks for a valid TLD at the end of what may be  
> a FQDN, followed by optional ., optional :portnum, optional / 
> rest_of_uri
>
> Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Util/ 
> RegistrarBoundaries.pm
> URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Util/RegistrarBoundaries.pm?rev=619753&r1=619752&r2=619753&view=diff
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- spamassassin/trunk/lib/Mail/SpamAssassin/Util/ 
> RegistrarBoundaries.pm (original)
> +++ spamassassin/trunk/lib/Mail/SpamAssassin/Util/ 
> RegistrarBoundaries.pm Thu Feb  7 19:22:58 2008
> @@ -31,28 +31,22 @@
>
> # The list of currently-valid TLDs for the DNS system.
> #
> -# http://www.iana.org/cctld/cctld-whois.htm
> -# "su" Extra from http://www.iana.org/root-whois/
> -# http://www.iana.org/gtld/gtld.htm
> -# http://www.iana.org/arpa-dom/
> +# http://data.iana.org/TLD/tlds-alpha-by-domain.txt
> +# Version 2008020601, Last Updated Thu Feb  7 09:07:00 2008 UTC
> foreach (qw/
> -  ac ad ae af ag ai al am an ao aq ar as at au aw az ax ba bb bd be  
> bf bg bh bi
> -  bj bm bn bo br bs bt bv bw by bz ca cc cd cf cg ch ci ck cl cm cn  
> co cr cs cu
> -  cv cx cy cz de dj dk dm do dz ec ee eg eh er es et fi fj fk fm fo  
> fr ga gb gd
> -  ge gf gg gh gi gl gm gn gp gq gr gs gt gu gw gy hk hm hn hr ht hu  
> id ie il im
> -  in io iq ir is it je jm jo jp ke kg kh ki km kn kp kr kw ky kz la  
> lb lc li lk
> -  lr ls lt lu lv ly ma mc md mg mh mk ml mm mn mo mp mq mr ms mt mu  
> mv mw mx my
> -  mz na nc ne nf ng ni nl no np nr nu nz om pa pe pf pg ph pk pl pm  
> pn pr ps pt
> -  pw py qa re ro ru rw sa sb sc sd se sg sh si sj sk sl sm sn so sr  
> st sv sy sz
> -  tc td tf tg th tj tk tl tm tn to tp tr tt tv tw tz ua ug uk um us  
> uy uz va vc
> -  ve vg vi vn vu wf ws ye yt yu za zm zw
> -  su
> -  aero biz com coop info museum name net org pro gov edu mil int
> -  arpa
> -  eu
> -  jobs travel
> -  xxx
> -  mobi asia cat tel
> +  ac ad ae aero af ag ai al am an ao aq ar arpa as asia at au aw ax  
> az
> +  ba bb bd be bf bg bh bi biz bj bm bn bo br bs bt bv bw by bz ca  
> cat cc
> +  cd cf cg ch ci ck cl cm cn co com coop cr cu cv cx cy cz de dj dk  
> dm
> +  do dz ec edu ee eg er es et eu fi fj fk fm fo fr ga gb gd ge gf  
> gg gh
> +  gi gl gm gn gov gp gq gr gs gt gu gw gy hk hm hn hr ht hu id ie  
> il im
> +  in info int io iq ir is it je jm jo jobs jp ke kg kh ki km kn kp  
> kr kw
> +  ky kz la lb lc li lk lr ls lt lu lv ly ma mc md me mg mh mil mk  
> ml mm
> +  mn mo mobi mp mq mr ms mt mu museum mv mw mx my mz na name nc ne  
> net
> +  nf ng ni nl no np nr nu nz om org pa pe pf pg ph pk pl pm pn pr  
> pro ps
> +  pt pw py qa re ro rs ru rw sa sb sc sd se sg sh si sj sk sl sm sn  
> so
> +  sr st su sv sy sz tc td tel tf tg th tj tk tl tm tn to tp tr  
> travel tt
> +  tv tw tz ua ug uk um us uy uz va vc ve vg vi vn vu wf ws ye yt yu  
> za
> +  zm zw
>   /) {
>   $VALID_TLDS{$_} = 1;
> }
>
> Modified: spamassassin/trunk/t/uri_text.t
> URL: http://svn.apache.org/viewvc/spamassassin/trunk/t/uri_text.t?rev=619753&r1=619752&r2=619753&view=diff
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- spamassassin/trunk/t/uri_text.t (original)
> +++ spamassassin/trunk/t/uri_text.t Thu Feb  7 19:22:58 2008
> @@ -24,7 +24,7 @@
> use vars qw(%patterns %anti_patterns);
>
> # settings
> -plan tests => 406;
> +plan tests => 678;
>
> # initialize SpamAssassin
> my $sa = create_saobj({'dont_copy_prefs' => 1});
> @@ -282,11 +282,289 @@
> # check all the TLDs (might as well be thorough)
>
> # first confirm that it will fail on not a TLD
> +example.foo	!^http://example.foo$
> +example.xxx	!^http://example.xxx$
> +
> +example.ac	^http://example.ac$
> +example.ad	^http://example.ad$
> +example.ae	^http://example.ae$
> +example.aero	^http://example.aero$
> +example.af	^http://example.af$
> +example.ag	^http://example.ag$
> +example.ai	^http://example.ai$
> +example.al	^http://example.al$
> +example.am	^http://example.am$
> +example.an	^http://example.an$
> +example.ao	^http://example.ao$
> +example.aq	^http://example.aq$
> +example.ar	^http://example.ar$
> +example.arpa	^http://example.arpa$
> +example.as	^http://example.as$
> +example.asia	^http://example.asia$
> +example.at	^http://example.at$
> +example.au	^http://example.au$
> +example.aw	^http://example.aw$
> +example.ax	^http://example.ax$
> +example.az	^http://example.az$
> +example.ba	^http://example.ba$
> +example.bb	^http://example.bb$
> +example.bd	^http://example.bd$
> +example.be	^http://example.be$
> +example.bf	^http://example.bf$
> +example.bg	^http://example.bg$
> +example.bh	^http://example.bh$
> +example.bi	^http://example.bi$
> +example.biz	^http://example.biz$
> +example.bj	^http://example.bj$
> +example.bm	^http://example.bm$
> +example.bn	^http://example.bn$
> +example.bo	^http://example.bo$
> +example.br	^http://example.br$
> +example.bs	^http://example.bs$
> +example.bt	^http://example.bt$
> +example.bv	^http://example.bv$
> +example.bw	^http://example.bw$
> +example.by	^http://example.by$
> +example.bz	^http://example.bz$
> +example.ca	^http://example.ca$
> +example.cat	^http://example.cat$
> +example.cc	^http://example.cc$
> +example.cd	^http://example.cd$
> +example.cf	^http://example.cf$
> +example.cg	^http://example.cg$
> +example.ch	^http://example.ch$
> +example.ci	^http://example.ci$
> +example.ck	^http://example.ck$
> +example.cl	^http://example.cl$
> +example.cm	^http://example.cm$
> +example.cn	^http://example.cn$
> +example.co	^http://example.co$
> +example.com	^http://example.com$
> +example.coop	^http://example.coop$
> +example.cr	^http://example.cr$
> +example.cu	^http://example.cu$
> +example.cv	^http://example.cv$
> +example.cx	^http://example.cx$
> +example.cy	^http://example.cy$
> +example.cz	^http://example.cz$
> +example.de	^http://example.de$
> +example.dj	^http://example.dj$
> +example.dk	^http://example.dk$
> +example.dm	^http://example.dm$
> +example.do	^http://example.do$
> +example.dz	^http://example.dz$
> +example.ec	^http://example.ec$
> +example.edu	^http://example.edu$
> +example.ee	^http://example.ee$
> +example.eg	^http://example.eg$
> +example.er	^http://example.er$
> +example.es	^http://example.es$
> +example.et	^http://example.et$
> +example.eu	^http://example.eu$
> +example.fi	^http://example.fi$
> +example.fj	^http://example.fj$
> +example.fk	^http://example.fk$
> +example.fm	^http://example.fm$
> +example.fo	^http://example.fo$
> +example.fr	^http://example.fr$
> +example.ga	^http://example.ga$
> +example.gb	^http://example.gb$
> +example.gd	^http://example.gd$
> +example.ge	^http://example.ge$
> +example.gf	^http://example.gf$
> +example.gg	^http://example.gg$
> +example.gh	^http://example.gh$
> +example.gi	^http://example.gi$
> +example.gl	^http://example.gl$
> +example.gm	^http://example.gm$
> +example.gn	^http://example.gn$
> +example.gov	^http://example.gov$
> +example.gp	^http://example.gp$
> +example.gq	^http://example.gq$
> +example.gr	^http://example.gr$
> +example.gs	^http://example.gs$
> +example.gt	^http://example.gt$
> +example.gu	^http://example.gu$
> +example.gw	^http://example.gw$
> +example.gy	^http://example.gy$
> +example.hk	^http://example.hk$
> +example.hm	^http://example.hm$
> +example.hn	^http://example.hn$
> +example.hr	^http://example.hr$
> +example.ht	^http://example.ht$
> +example.hu	^http://example.hu$
> +example.id	^http://example.id$
> +example.ie	^http://example.ie$
> +example.il	^http://example.il$
> +example.im	^http://example.im$
> +example.in	^http://example.in$
> +example.info	^http://example.info$
> +example.int	^http://example.int$
> +example.io	^http://example.io$
> +example.iq	^http://example.iq$
> +example.ir	^http://example.ir$
> +example.is	^http://example.is$
> +example.it	^http://example.it$
> +example.je	^http://example.je$
> +example.jm	^http://example.jm$
> +example.jo	^http://example.jo$
> +example.jobs	^http://example.jobs$
> +example.jp	^http://example.jp$
> +example.ke	^http://example.ke$
> +example.kg	^http://example.kg$
> +example.kh	^http://example.kh$
> +example.ki	^http://example.ki$
> +example.km	^http://example.km$
> +example.kn	^http://example.kn$
> +example.kp	^http://example.kp$
> +example.kr	^http://example.kr$
> +example.kw	^http://example.kw$
> +example.ky	^http://example.ky$
> +example.kz	^http://example.kz$
> +example.la	^http://example.la$
> +example.lb	^http://example.lb$
> +example.lc	^http://example.lc$
> +example.li	^http://example.li$
> +example.lk	^http://example.lk$
> +example.lr	^http://example.lr$
> +example.ls	^http://example.ls$
> +example.lt	^http://example.lt$
> +example.lu	^http://example.lu$
> +example.lv	^http://example.lv$
> +example.ly	^http://example.ly$
> +example.ma	^http://example.ma$
> +example.mc	^http://example.mc$
> +example.md	^http://example.md$
> +example.me	^http://example.me$
> +example.mg	^http://example.mg$
> +example.mh	^http://example.mh$
> +example.mil	^http://example.mil$
> +example.mk	^http://example.mk$
> +example.ml	^http://example.ml$
> +example.mm	^http://example.mm$
> +example.mn	^http://example.mn$
> +example.mo	^http://example.mo$
> +example.mobi	^http://example.mobi$
> +example.mp	^http://example.mp$
> +example.mq	^http://example.mq$
> +example.mr	^http://example.mr$
> +example.ms	^http://example.ms$
> +example.mt	^http://example.mt$
> +example.mu	^http://example.mu$
> +example.museum	^http://example.museum$
> +example.mv	^http://example.mv$
> +example.mw	^http://example.mw$
> +example.mx	^http://example.mx$
> +example.my	^http://example.my$
> +example.mz	^http://example.mz$
> +example.na	^http://example.na$
> +example.name	^http://example.name$
> +example.nc	^http://example.nc$
> +example.ne	^http://example.ne$
> +example.net	^http://example.net$
> +example.nf	^http://example.nf$
> +example.ng	^http://example.ng$
> +example.ni	^http://example.ni$
> +example.nl	^http://example.nl$
> +example.no	^http://example.no$
> +example.np	^http://example.np$
> +example.nr	^http://example.nr$
> +example.nu	^http://example.nu$
> +example.nz	^http://example.nz$
> +example.om	^http://example.om$
> +example.org	^http://example.org$
> +example.pa	^http://example.pa$
> +example.pe	^http://example.pe$
> +example.pf	^http://example.pf$
> +example.pg	^http://example.pg$
> +example.ph	^http://example.ph$
> +example.pk	^http://example.pk$
> +example.pl	^http://example.pl$
> +example.pm	^http://example.pm$
> +example.pn	^http://example.pn$
> +example.pr	^http://example.pr$
> +example.pro	^http://example.pro$
> +example.ps	^http://example.ps$
> +example.pt	^http://example.pt$
> +example.pw	^http://example.pw$
> +example.py	^http://example.py$
> +example.qa	^http://example.qa$
> +example.re	^http://example.re$
> +example.ro	^http://example.ro$
> +example.rs	^http://example.rs$
> +example.ru	^http://example.ru$
> +example.rw	^http://example.rw$
> +example.sa	^http://example.sa$
> +example.sb	^http://example.sb$
> +example.sc	^http://example.sc$
> +example.sd	^http://example.sd$
> +example.se	^http://example.se$
> +example.sg	^http://example.sg$
> +example.sh	^http://example.sh$
> +example.si	^http://example.si$
> +example.sj	^http://example.sj$
> +example.sk	^http://example.sk$
> +example.sl	^http://example.sl$
> +example.sm	^http://example.sm$
> +example.sn	^http://example.sn$
> +example.so	^http://example.so$
> +example.sr	^http://example.sr$
> +example.st	^http://example.st$
> +example.su	^http://example.su$
> +example.sv	^http://example.sv$
> +example.sy	^http://example.sy$
> +example.sz	^http://example.sz$
> +example.tc	^http://example.tc$
> +example.td	^http://example.td$
> +example.tel	^http://example.tel$
> +example.tf	^http://example.tf$
> +example.tg	^http://example.tg$
> +example.th	^http://example.th$
> +example.tj	^http://example.tj$
> +example.tk	^http://example.tk$
> +example.tl	^http://example.tl$
> +example.tm	^http://example.tm$
> +example.tn	^http://example.tn$
> +example.to	^http://example.to$
> +example.tp	^http://example.tp$
> +example.tr	^http://example.tr$
> +example.travel	^http://example.travel$
> +example.tt	^http://example.tt$
> +example.tv	^http://example.tv$
> +example.tw	^http://example.tw$
> +example.tz	^http://example.tz$
> +example.ua	^http://example.ua$
> +example.ug	^http://example.ug$
> +example.uk	^http://example.uk$
> +example.um	^http://example.um$
> +example.us	^http://example.us$
> +example.uy	^http://example.uy$
> +example.uz	^http://example.uz$
> +example.va	^http://example.va$
> +example.vc	^http://example.vc$
> +example.ve	^http://example.ve$
> +example.vg	^http://example.vg$
> +example.vi	^http://example.vi$
> +example.vn	^http://example.vn$
> +example.vu	^http://example.vu$
> +example.wf	^http://example.wf$
> +example.ws	^http://example.ws$
> +example.ye	^http://example.ye$
> +example.yt	^http://example.yt$
> +example.yu	^http://example.yu$
> +example.za	^http://example.za$
> +example.zm	^http://example.zm$
> +example.zw	^http://example.zw$
> +
> +# with www. prefix tests a different table of TLDs
> +
> www.example.foo	!^http://www.example.foo$
> +www.example.xxx	!^http://www.example.xxx$
>
> www.example.ac	^http://www.example.ac$
> www.example.ad	^http://www.example.ad$
> www.example.ae	^http://www.example.ae$
> +www.example.aero	^http://www.example.aero$
> www.example.af	^http://www.example.af$
> www.example.ag	^http://www.example.ag$
> www.example.ai	^http://www.example.ai$
> @@ -296,12 +574,14 @@
> www.example.ao	^http://www.example.ao$
> www.example.aq	^http://www.example.aq$
> www.example.ar	^http://www.example.ar$
> +www.example.arpa	^http://www.example.arpa$
> www.example.as	^http://www.example.as$
> +www.example.asia	^http://www.example.asia$
> www.example.at	^http://www.example.at$
> www.example.au	^http://www.example.au$
> www.example.aw	^http://www.example.aw$
> -www.example.az	^http://www.example.az$
> www.example.ax	^http://www.example.ax$
> +www.example.az	^http://www.example.az$
> www.example.ba	^http://www.example.ba$
> www.example.bb	^http://www.example.bb$
> www.example.bd	^http://www.example.bd$
> @@ -310,6 +590,7 @@
> www.example.bg	^http://www.example.bg$
> www.example.bh	^http://www.example.bh$
> www.example.bi	^http://www.example.bi$
> +www.example.biz	^http://www.example.biz$
> www.example.bj	^http://www.example.bj$
> www.example.bm	^http://www.example.bm$
> www.example.bn	^http://www.example.bn$
> @@ -322,6 +603,7 @@
> www.example.by	^http://www.example.by$
> www.example.bz	^http://www.example.bz$
> www.example.ca	^http://www.example.ca$
> +www.example.cat	^http://www.example.cat$
> www.example.cc	^http://www.example.cc$
> www.example.cd	^http://www.example.cd$
> www.example.cf	^http://www.example.cf$
> @@ -333,8 +615,9 @@
> www.example.cm	^http://www.example.cm$
> www.example.cn	^http://www.example.cn$
> www.example.co	^http://www.example.co$
> +www.example.com	^http://www.example.com$
> +www.example.coop	^http://www.example.coop$
> www.example.cr	^http://www.example.cr$
> -www.example.cs	^http://www.example.cs$
> www.example.cu	^http://www.example.cu$
> www.example.cv	^http://www.example.cv$
> www.example.cx	^http://www.example.cx$
> @@ -347,12 +630,13 @@
> www.example.do	^http://www.example.do$
> www.example.dz	^http://www.example.dz$
> www.example.ec	^http://www.example.ec$
> +www.example.edu	^http://www.example.edu$
> www.example.ee	^http://www.example.ee$
> www.example.eg	^http://www.example.eg$
> -www.example.eh	^http://www.example.eh$
> www.example.er	^http://www.example.er$
> www.example.es	^http://www.example.es$
> www.example.et	^http://www.example.et$
> +www.example.eu	^http://www.example.eu$
> www.example.fi	^http://www.example.fi$
> www.example.fj	^http://www.example.fj$
> www.example.fk	^http://www.example.fk$
> @@ -370,6 +654,7 @@
> www.example.gl	^http://www.example.gl$
> www.example.gm	^http://www.example.gm$
> www.example.gn	^http://www.example.gn$
> +www.example.gov	^http://www.example.gov$
> www.example.gp	^http://www.example.gp$
> www.example.gq	^http://www.example.gq$
> www.example.gr	^http://www.example.gr$
> @@ -389,6 +674,8 @@
> www.example.il	^http://www.example.il$
> www.example.im	^http://www.example.im$
> www.example.in	^http://www.example.in$
> +www.example.info	^http://www.example.info$
> +www.example.int	^http://www.example.int$
> www.example.io	^http://www.example.io$
> www.example.iq	^http://www.example.iq$
> www.example.ir	^http://www.example.ir$
> @@ -397,6 +684,7 @@
> www.example.je	^http://www.example.je$
> www.example.jm	^http://www.example.jm$
> www.example.jo	^http://www.example.jo$
> +www.example.jobs	^http://www.example.jobs$
> www.example.jp	^http://www.example.jp$
> www.example.ke	^http://www.example.ke$
> www.example.kg	^http://www.example.kg$
> @@ -423,27 +711,33 @@
> www.example.ma	^http://www.example.ma$
> www.example.mc	^http://www.example.mc$
> www.example.md	^http://www.example.md$
> +www.example.me	^http://www.example.me$
> www.example.mg	^http://www.example.mg$
> www.example.mh	^http://www.example.mh$
> +www.example.mil	^http://www.example.mil$
> www.example.mk	^http://www.example.mk$
> www.example.ml	^http://www.example.ml$
> www.example.mm	^http://www.example.mm$
> www.example.mn	^http://www.example.mn$
> www.example.mo	^http://www.example.mo$
> +www.example.mobi	^http://www.example.mobi$
> www.example.mp	^http://www.example.mp$
> www.example.mq	^http://www.example.mq$
> www.example.mr	^http://www.example.mr$
> www.example.ms	^http://www.example.ms$
> www.example.mt	^http://www.example.mt$
> www.example.mu	^http://www.example.mu$
> +www.example.museum	^http://www.example.museum$
> www.example.mv	^http://www.example.mv$
> www.example.mw	^http://www.example.mw$
> www.example.mx	^http://www.example.mx$
> www.example.my	^http://www.example.my$
> www.example.mz	^http://www.example.mz$
> www.example.na	^http://www.example.na$
> +www.example.name	^http://www.example.name$
> www.example.nc	^http://www.example.nc$
> www.example.ne	^http://www.example.ne$
> +www.example.net	^http://www.example.net$
> www.example.nf	^http://www.example.nf$
> www.example.ng	^http://www.example.ng$
> www.example.ni	^http://www.example.ni$
> @@ -454,6 +748,7 @@
> www.example.nu	^http://www.example.nu$
> www.example.nz	^http://www.example.nz$
> www.example.om	^http://www.example.om$
> +www.example.org	^http://www.example.org$
> www.example.pa	^http://www.example.pa$
> www.example.pe	^http://www.example.pe$
> www.example.pf	^http://www.example.pf$
> @@ -464,6 +759,7 @@
> www.example.pm	^http://www.example.pm$
> www.example.pn	^http://www.example.pn$
> www.example.pr	^http://www.example.pr$
> +www.example.pro	^http://www.example.pro$
> www.example.ps	^http://www.example.ps$
> www.example.pt	^http://www.example.pt$
> www.example.pw	^http://www.example.pw$
> @@ -471,6 +767,7 @@
> www.example.qa	^http://www.example.qa$
> www.example.re	^http://www.example.re$
> www.example.ro	^http://www.example.ro$
> +www.example.rs	^http://www.example.rs$
> www.example.ru	^http://www.example.ru$
> www.example.rw	^http://www.example.rw$
> www.example.sa	^http://www.example.sa$
> @@ -489,11 +786,13 @@
> www.example.so	^http://www.example.so$
> www.example.sr	^http://www.example.sr$
> www.example.st	^http://www.example.st$
> +www.example.su	^http://www.example.su$
> www.example.sv	^http://www.example.sv$
> www.example.sy	^http://www.example.sy$
> www.example.sz	^http://www.example.sz$
> www.example.tc	^http://www.example.tc$
> www.example.td	^http://www.example.td$
> +www.example.tel	^http://www.example.tel$
> www.example.tf	^http://www.example.tf$
> www.example.tg	^http://www.example.tg$
> www.example.th	^http://www.example.th$
> @@ -505,6 +804,7 @@
> www.example.to	^http://www.example.to$
> www.example.tp	^http://www.example.tp$
> www.example.tr	^http://www.example.tr$
> +www.example.travel	^http://www.example.travel$
> www.example.tt	^http://www.example.tt$
> www.example.tv	^http://www.example.tv$
> www.example.tw	^http://www.example.tw$
> @@ -531,27 +831,3 @@
> www.example.za	^http://www.example.za$
> www.example.zm	^http://www.example.zm$
> www.example.zw	^http://www.example.zw$
> -www.example.su	^http://www.example.su$
> -www.example.aero	^http://www.example.aero$
> -www.example.biz	^http://www.example.biz$
> -www.example.com	^http://www.example.com$
> -www.example.coop	^http://www.example.coop$
> -www.example.info	^http://www.example.info$
> -www.example.museum	^http://www.example.museum$
> -www.example.name	^http://www.example.name$
> -www.example.net	^http://www.example.net$
> -www.example.org	^http://www.example.org$
> -www.example.pro	^http://www.example.pro$
> -www.example.gov	^http://www.example.gov$
> -www.example.edu	^http://www.example.edu$
> -www.example.mil	^http://www.example.mil$
> -www.example.int	^http://www.example.int$
> -www.example.arpa	^http://www.example.arpa$
> -www.example.eu	^http://www.example.eu$
> -www.example.jobs	^http://www.example.jobs$
> -www.example.travel	^http://www.example.travel$
> -www.example.xxx	^http://www.example.xxx$
> -www.example.mobi	^http://www.example.mobi$
> -www.example.asia	^http://www.example.asia$
> -www.example.cat	^http://www.example.cat$
> -www.example.tel	^http://www.example.tel$
>
>