#!/usr/bin/perl -w # test URIs as grabbed from text/plain messages BEGIN { if (-e 't/test_dir') { # if we are running "t/rule_names.t", kluge around ... chdir 't'; } if (-e 'test_dir') { # running from test directory, not .. unshift(@INC, '../blib/lib'); } } my $prefix = '.'; if (-e 'test_dir') { # running from test directory, not .. $prefix = '..'; } use strict; use SATest; sa_t_init("uri_text"); use Test; use Mail::SpamAssassin; use vars qw(%patterns %anti_patterns); # settings plan tests => 678; # initialize SpamAssassin my $sa = create_saobj({'dont_copy_prefs' => 1}); $sa->init(0); # parse rules # load tests and write mail %patterns = (); %anti_patterns = (); my $message = write_mail(); my $mail = $sa->parse($message); my $msg = Mail::SpamAssassin::PerMsgStatus->new($sa, $mail); my $uris = join("\n", $msg->get_uri_list(), ""); # run patterns and anti-patterns my $failures = 0; for my $pattern (keys %patterns) { if (!ok($uris =~ /${pattern}/m)) { warn "failure: did not find /$pattern/\n"; $failures++; } } for my $anti_pattern (keys %anti_patterns) { if (!ok($uris !~ /${anti_pattern}/m)) { warn "failure: did find /$anti_pattern/\n"; $failures++; } } if ($failures) { print "URIs found:\n$uris"; } # function to write test email sub write_mail { my $message = <<'EOF'; Message-ID: Date: Mon, 07 Oct 2002 09:00:00 +0000 From: Sender MIME-Version: 1.0 To: Recipient Subject: this is a trivial message Content-Type: text/plain Content-Transfer-Encoding: 7bit EOF while () { chomp; next if /^#/; next if /^\s*$/; if (/^(.*?)\t+(.*?)\s*$/) { my $string = $1; my @patterns = split(' ', $2); if ($string && @patterns) { $string =~ s/{ESC}/\x1b/gs; # magic, to avoid ^[ chars in source $message .= "$string\n"; for my $pattern (@patterns) { if ($pattern =~ /^\!(.*)/) { $anti_patterns{$1} = 1; } else { $patterns{$pattern} = 1; } } } } else { warn "unparseable line: $_"; } } return $message; } # : # : string in the body # : one or more tabs # : patterns expected to be found in URI output, if preceded by ! if # it is an antipattern, each pattern is separated by whitespace __DATA__ www5.poh6feib.com poh6feib vau6yaer.com vau6yaer www5.poh6feib.info poh6feib Haegh3de.co.uk Haegh3de ftp.yeinaix3.co.uk ftp://ftp.yeinaix3.co.uk !http://ftp.yeinaix3.co.uk ftp5.riexai5r.co.uk http://ftp5.riexai5r.co.uk !ftp://ftp5.riexai5r.co.uk 10.1.1.1 !10.1.1.1 10.1.2.1/ !10.1.2.1 http://10.1.3.1/ 10.1.3.1 quau0wig.quau0wig !quau0wig foo.Cahl1goo.php !Cahl1goo www5.mi1coozu.php !mi1coozu www.mezeel0P.php !mezeel0P bar.neih6fee.com.php !neih6fee www.zai6Vuwi.com.bar !zai6Vuwi =www.deiJ1pha.com www.deiJ1pha.com @www.Te0xohxu.com www.Te0xohxu.com .www.kuiH5sai.com www.kuiH5sai.com a=www.zaiNgoo7.com www.zaiNgoo7.com b@www.vohWais0.com mailto:b@www.vohWais0.com !http://www.vohWais0.com c.www.moSaoga8.com www.moSaoga8.com xyz..geifoza0.com !geifoza0 xyz.geifoza1.com/..xyz xyz.geifoza1.com !xyz.geifoza1.com/..xyz xyz.geifoza2.CoM xyz.geifoza2.CoM http://xyz..geifoza3.com !geifoza3 http://xyz.geifoza4.com/..xyz xyz.geifoza4.com/..xyz http://xyz.geifoza5.CoM xyz.geifoza5.CoM joe@koja3fui.koja3fui !koja3fui mailto:xuq@dsj.x.thriyi.com !http\S*thriyi http://www.example.com/about/wahfah7d.html wahfah7d http://www.example.com?xa1kaLuo \?xa1kaLuo http://www.lap7thob.com/ ^http://www.lap7thob.com/$ www.phoh1Koh.com/ ^www.phoh1Koh.com/$ www.Tar4caeg.com:80 http://www.Tar4caeg.com:80 www.Coo4mowe.com:80/foo/foo.html ^www.Coo4mowe.com:80/foo/foo.html www.Nee2quae.com:80/ ^www.Nee2quae.com:80/$ HAETEI3D.com HAETEI3D CUK3VEIZ.us CUK3VEIZ CHAI7SAI.biz CHAI7SAI VU4YAPHU.info VU4YAPHU NAUVE1PH.net NAUVE1PH LEIX6QUU.org LEIX6QUU LOT1GOHV.ws LOT1GOHV LI4JAIZI.name LI4JAIZI BA1LOOXU.tv BA1LOOXU yiez7too.CC yiez7too huwaroo1.DE huwaroo1 chohza7t.JP chohza7t the7zuum.BE the7zuum sai6bahg.AT sai6bahg leow3del.UK leow3del ba5keinu.NZ ba5keinu chae2shi.CN chae2shi roo7kiey.TW roo7kiey www.Chiew0ch.COM www.Chiew0ch.COM www.thohY2qu.US www.thohY2qu.US www.teiP7gei.BIZ www.teiP7gei.BIZ www.xohThai8.INFO www.xohThai8.INFO www.haik7Ram.NET www.haik7Ram.NET www.Quaes3se.ORG www.Quaes3se.ORG www.Chai6tah.WS www.Chai6tah.WS www.Thuoth1y.NAME www.Thuoth1y.NAME www.Chieb8ge.TV www.Chieb8ge.TV WWW.quus4Rok.cc WWW.quus4Rok.cc WWW.maic6Hei.de WWW.maic6Hei.de WWW.he4Hiize.jp WWW.he4Hiize.jp WWW.Soh1toob.be WWW.Soh1toob.be WWW.chahMee5.at WWW.chahMee5.at WWW.peepooN0.uk WWW.peepooN0.uk WWW.Kiox3phi.nz WWW.Kiox3phi.nz WWW.jong3Xou.cn WWW.jong3Xou.cn WWW.waeShoe0.tw WWW.waeShoe0.tw invalid_ltd.foo !invalid_tld invalid_ltd.bar !invalid_tld invalid_ltd.xyzzy !invalid_tld invalid_ltd.co.zz !invalid_tld www.invalid_ltd.foo !invalid_tld www.invalid_ltd.bar !invalid_tld www.invalid_ltd.xyzzy !invalid_tld www.invalid_ltd.co.zz !invalid_tld command.com command.com cmd.exe !cmd.exe commander !commander aaacomaaa !aaacomaaa aaa.com.aaa !aaa.com.aaa com.foo.web !com.foo.web # IPs for www.yahoo.com 66.94.230.32 !66.94.230.32 http://66.94.230.33 http://66.94.230.33 http://1113515555 http://66.94.230.35 gooboo4k@xieyohy0.com mailto:gooboo4k@xieyohy0.com mailto:baeb1fai@quo6puyo.com mailto:baeb1fai@quo6puyo.com http://www.luzoop5k.com http://www.luzoop5k.com https://www.luzoop5k.com https://www.luzoop5k.com ftp://www.luzoop5k.com ftp://www.luzoop5k.com mailto:www.luzoop5k.com !mailto:www.luzoop5k.com # no longer accept file: scheme file://www.luzoop5k.com !file://www.luzoop5k.com # //:@:/ http://user:pass@jiefeet4.com:80/x/y http://user:pass@jiefeet4.com:80/x/y www.liy8quei:80 !liy8quei www.veibi6cu:443 !veibi6cu puahi8si.com:80 !puahi8si.com:80 chop8tan.com:443 !chop8tan.com:443 www.puahi9si.com:80 puahi9si.com:80 www.chop9tan.com:443 chop9tan.com:443 ftp://name@su5queib.ca//etc/motd ftp://name@su5queib.ca//etc/motd ftp://name@faikaj4t.dom/%2Fetc/motd !ftp://name@faikaj4t.dom//etc/motd ftp://name@faikaj4t.com/%2Fetc/motd ftp://name@faikaj4t.com//etc/motd keyword:sportscar !sportscar # questionable tests mailto://cah3neun@thaihe4d.com mailto://cah3neun@thaihe4d.com mailto://jicu8vah@another@jicu8vah !jicu8vah@another@jicu8vah baeb1fai@@example.com !baeb1fai@@example.com mailto://yie6xuna !yie6xuna mailto://yie6xuna@nottld !yie6xuna@nottld !^http://.*addr.com@verper.com mailto:sentto-4934-foo=addr.com@verper.com http://foo23498.com/{ESC}(B ^http://foo23498.com/$ {ESC}(Bhttp://foo23499.com/ ^http://foo23499.com/$ http://foo23500.com{ESC}(B/ ^http://foo23500.com(?:/?)$ M0"-AE/9Y.KN:_0D2F:95^H*:I,8 !9Y\.KN >delimtest1.com http://delimtest1.com ^http://www.delimtest15.com/foo-~!@#\^&\*\(\)_\+=:;'\?,\.xyz$ .....www.delimtest16.com.......... ^http://www.delimtest16.com$ -----www.delimtest17.com---------- ^http://www.delimtest17.com$ .....http://www.delimtest18.com.......... ^http://www.delimtest18.com$ -----http://www.delimtest19.com---------- ^http://www.delimtest19.com$ # check all the TLDs (might as well be thorough) # the inactive TLDs have negative checks # first confirm that it will not match 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$ www.example.al ^http://www.example.al$ www.example.am ^http://www.example.am$ www.example.an ^http://www.example.an$ 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.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$ www.example.be ^http://www.example.be$ www.example.bf ^http://www.example.bf$ 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$ www.example.bo ^http://www.example.bo$ www.example.br ^http://www.example.br$ www.example.bs ^http://www.example.bs$ www.example.bt ^http://www.example.bt$ www.example.bv !^http://www.example.bv$ www.example.bw ^http://www.example.bw$ 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$ www.example.cg ^http://www.example.cg$ www.example.ch ^http://www.example.ch$ www.example.ci ^http://www.example.ci$ www.example.ck ^http://www.example.ck$ www.example.cl ^http://www.example.cl$ 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.cu ^http://www.example.cu$ www.example.cv ^http://www.example.cv$ www.example.cx ^http://www.example.cx$ www.example.cy ^http://www.example.cy$ www.example.cz ^http://www.example.cz$ www.example.de ^http://www.example.de$ www.example.dj ^http://www.example.dj$ www.example.dk ^http://www.example.dk$ www.example.dm ^http://www.example.dm$ 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.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$ www.example.fm ^http://www.example.fm$ www.example.fo ^http://www.example.fo$ www.example.fr ^http://www.example.fr$ www.example.ga ^http://www.example.ga$ www.example.gb !^http://www.example.gb$ www.example.gd ^http://www.example.gd$ www.example.ge ^http://www.example.ge$ www.example.gf ^http://www.example.gf$ www.example.gg ^http://www.example.gg$ www.example.gh ^http://www.example.gh$ www.example.gi ^http://www.example.gi$ 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$ www.example.gs ^http://www.example.gs$ www.example.gt ^http://www.example.gt$ www.example.gu ^http://www.example.gu$ www.example.gw ^http://www.example.gw$ www.example.gy ^http://www.example.gy$ www.example.hk ^http://www.example.hk$ www.example.hm ^http://www.example.hm$ www.example.hn ^http://www.example.hn$ www.example.hr ^http://www.example.hr$ www.example.ht ^http://www.example.ht$ www.example.hu ^http://www.example.hu$ www.example.id ^http://www.example.id$ www.example.ie ^http://www.example.ie$ 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$ www.example.is ^http://www.example.is$ www.example.it ^http://www.example.it$ 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$ www.example.kh ^http://www.example.kh$ www.example.ki ^http://www.example.ki$ www.example.km ^http://www.example.km$ www.example.kn ^http://www.example.kn$ www.example.kp ^http://www.example.kp$ www.example.kr ^http://www.example.kr$ www.example.kw ^http://www.example.kw$ www.example.ky ^http://www.example.ky$ www.example.kz ^http://www.example.kz$ www.example.la ^http://www.example.la$ www.example.lb ^http://www.example.lb$ www.example.lc ^http://www.example.lc$ www.example.li ^http://www.example.li$ www.example.lk ^http://www.example.lk$ www.example.lr ^http://www.example.lr$ www.example.ls ^http://www.example.ls$ www.example.lt ^http://www.example.lt$ www.example.lu ^http://www.example.lu$ www.example.lv ^http://www.example.lv$ www.example.ly ^http://www.example.ly$ 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$ www.example.nl ^http://www.example.nl$ www.example.no ^http://www.example.no$ www.example.np ^http://www.example.np$ www.example.nr ^http://www.example.nr$ 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$ www.example.pg ^http://www.example.pg$ www.example.ph ^http://www.example.ph$ www.example.pk ^http://www.example.pk$ www.example.pl ^http://www.example.pl$ 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$ www.example.py ^http://www.example.py$ 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$ www.example.sb ^http://www.example.sb$ www.example.sc ^http://www.example.sc$ www.example.sd ^http://www.example.sd$ www.example.se ^http://www.example.se$ www.example.sg ^http://www.example.sg$ www.example.sh ^http://www.example.sh$ www.example.si ^http://www.example.si$ www.example.sj !^http://www.example.sj$ www.example.sk ^http://www.example.sk$ www.example.sl ^http://www.example.sl$ www.example.sm ^http://www.example.sm$ www.example.sn ^http://www.example.sn$ 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$ www.example.tj ^http://www.example.tj$ www.example.tk ^http://www.example.tk$ www.example.tl ^http://www.example.tl$ www.example.tm ^http://www.example.tm$ www.example.tn ^http://www.example.tn$ 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$ www.example.tz ^http://www.example.tz$ www.example.ua ^http://www.example.ua$ www.example.ug ^http://www.example.ug$ www.example.uk ^http://www.example.uk$ www.example.um !^http://www.example.um$ www.example.us ^http://www.example.us$ www.example.uy ^http://www.example.uy$ www.example.uz ^http://www.example.uz$ www.example.va ^http://www.example.va$ www.example.vc ^http://www.example.vc$ www.example.ve ^http://www.example.ve$ www.example.vg ^http://www.example.vg$ www.example.vi ^http://www.example.vi$ www.example.vn ^http://www.example.vn$ www.example.vu ^http://www.example.vu$ www.example.wf ^http://www.example.wf$ www.example.ws ^http://www.example.ws$ www.example.ye ^http://www.example.ye$ www.example.yt !^http://www.example.yt$ www.example.yu ^http://www.example.yu$ www.example.za ^http://www.example.za$ www.example.zm ^http://www.example.zm$ www.example.zw ^http://www.example.zw$