äŒæ¥ã¡ãŒã«ãã¹ãã ããä¿è·ããããã®æ¹æ³è«ã«ã€ããŠèª¬æããŸããããã«ãããåã
ã®ã¢ãã¬ã¹ãã£ã«ã¿ãªã³ã°ããŒã«ã掻çšãããããã®æ¹æ³ã®æ¬ ç¹ãåé¿ã§ããŸãã
ãããã®ææ³ã¯ãDMZã«ããäŒæ¥ã®ã¡ãŒã«ãµãŒããŒãéããSMTPãããã·ã§äœ¿çšã§ããããšã«æ³šæããŠãã ããã
å€ãã®å Žåã管çè
ã¯ãã¢ãããŒãã®æ¬ ç¹ã«ãããããã€ãã®å¹æçãªãã£ã«ã¿ãªã³ã°ææ³ãé¿ããŸãã ããšãã°ãDNSBLãã£ã«ã¿ãŒã¯ãããšãã°ãåã
ã®ãããã€ããŒã®ã¢ãã¬ã¹ãããã¯å
šäœã®äžéšãšããŠã誀ã£ãŠãã£ã«ã¿ãŒã«èœã¡ãããŒãã«èª€æ€åºãäžããããšããããããŸãã AãšPTRã¬ã³ãŒããäžèŽããªãå ŽåããŸãã¯DNSãµãŒãã¹ã«åã«åé¡ãããå ŽåãPTRã¬ã³ãŒãã®åçŽãªå®çŸ©ã«åºã¥ããŠé »ç¹ã«äœ¿çšããããã£ã«ã¿ãªã³ã°æ¹æ³ã倱æããåŸåããããŸãã
ãã®èšäºã§ã¯ãåã
ã®ãã£ã«ã¿ãªã³ã°æ¹æ³ãããå°ããªãã®ã«åå²ãã1ã€ã®æåŠã«ãŒã«ã®çµæã ãã§ãªããéä¿¡ããŒãã«é¢ããéçŽããŒã¿ã«åŸã£ãŠãã£ã«ã¿ãªã³ã°ãè¡ãæ¹æ³ã瀺ããããšæããŸãã
ãã®ææ³ã¯é·ãéååšããŠãããããŸããŸãªå°éå®¶ã«ããããŸããŸãªã¢ã€ãã¢ã®å®è£
ã«åºäŒããŸããã5幎åã«exim-users@exim.orgã¡ãŒãªã³ã°ãªã¹ãã§ãã®ããªãšãŒã·ã§ã³ã«ã€ããŠç°¡åã«èª¬æããŸããïŒèšäº
ã¯ã¡ãŒãªã³ã°ãªã¹ãã¢ãŒã«ã€ãã«ãããŸã ïŒå®è£
ã®å®¹æããšããã¥ã¡ã³ãã®å
¥æå¯èœæ§ããéµäŸ¿ç®¡çè
ã«ãã£ãŠäœ¿çšãããããšã¯ã»ãšãã©ãããŸããã
hornsnhoofs.comãã¡ã€ã³ãå«ãHorns'n'Hoofs瀟ã®ã¡ãŒã«ãäŸã«äœ¿çšããŠãçºæãããŠããªããå®å
šã«æ©èœãããæŠããã®ãã£ã«ã¿ãªã³ã°ææ³ãæ€èšããŠã¿ãŸãããã
ãã®å®è£
ã®äž»ãªèãæ¹ã¯ãSQLããŒã¿ããŒã¹ã«ä¿åãããŠãããµãŒããŒèªèº«ã®ãã©ãã¯ãªã¹ããé€ããã©ã®ãã§ãã¯ããéèŠãã§ã¯ãªããšããããšã§ãã èšãæãããšãDNSBLã®äœ¿çšãæåŠããããçŽæ¥ããã³éDNSã¬ã³ãŒããä»ã®ãã¹ãã¹ãã ãã¹ããšäžèŽãããã©ããã確èªãããããããšã¯ãããŸãããããã®åŸãå¥ã®ãã§ãã¯ïŒããšãã°ãDSNBL SpamHausã§ç¹ç¯ïŒã
ãã¹ãã倱æãããã³ã«ãç¹å®ã®æ°ã®ãã€ã³ããã¬ã¿ãŒã®ãã¹ãã ãã«è¿œå ãããã ãã§ãæ§æã®ããã€ãã®ãã³ã³ãããŒã«ãã€ã³ããã®ãããã®ãã€ã³ãã®åèšéã«åºã¥ããŠãåãå
¥ããŸãã¯æåŠã®æ±ºå®ãè¡ãããŸãã ãã®ã¢ãããŒãã«ãããå€ãã®ããŒã«ã䜿çšããŠã¡ãŒã«éä¿¡è
ãè©äŸ¡ããåæã«ãã£ã«ã¿ãŒã®èª€æ€ç¥ïŒãããã誀æ€ç¥ïŒã®ã¬ãã«ãäžããããšãã§ããŸãã
ãã®èšäºã¯ãèªè
ãEximãåä¿¡ãµãŒããŒãšããŠã€ã³ã¹ããŒã«ããã³æ§æã§ããããšãåæãšããŠããŸãã ãŸããèªè
ãæ¹¿ç¹ã®å°ãªããšãç°¡åãªæ€çŽ¢ãäœæã§ããããšãé¡ã£ãŠããŸãã
ãã¡ãããæèœãªç®¡çè
ã¯SMTPãããã³ã«ãç¥ãå¿
èŠãããããã®åäœã®åçã¯RFC 821ã2821ã5321ã§è©³ãã説æãããŠããŸãããã·ã¢èªãžã®ç¿»èš³ã¯ãããã¯ãŒã¯äžã§ç°¡åã«èŠã€ããããšãã§ããŸãã å€ãã®ã¹ãã å¯Ÿçæ¹æ³ã®çè«çãªèª¬æã¯ãRFC 2505ã«èšèŒãããŠããŸãã
ããã§ã¯ãã¡ãŒã«ãµãŒããŒã®èšå®ã®èª¬æãå§ããŸãããïŒ
åèšã¹ã³ã¢ã¯å€æ°
$acl_c_spamscore
ä¿åãããŸãã ããã¯æ§æããã°ã©ã ã®äž»èŠãªå€æ°ã§ãããä»ã®ãã¹ãŠã®MTAã®åäœã¯ãã®å€ã«äŸåããŸãã
ãŸããåæå€-0ãèšå®ããŸããããšãã°ãaclã§ã¯ã
HELO MAIL FROMåŒæ°ããã§ãã¯ããŸãã
acl_check_sender: warn set acl_c_spamscore = 0 [...] accept
UPDïŒè«çãšã©ãŒã«æ°ä»ãããŠãŒã¶ãŒ
slimlvã«æè¬ããŸãã
æ¥ç¶æã«ããã«åæåãè¡ãããªãã®ã¯ãªãã§ããïŒ éåžžã«ç°¡å-RSETã³ãã³ããéä¿¡ãããšãã«ãŠã³ã¿ãŒããŒãã«ãªã»ãããããSMTPã»ãã·ã§ã³ãåéãããŸãã ãããè¡ãããªãå Žåããã€ã³ãæ°ã¯åããŸãŸã«ãªããRSETããŒã ã®åã«è¡ãããåããã§ãã¯ã«å¯ŸããŠæ°ãããã€ã³ãã远å ãããŸãã
ããã¯ãMTAããããã°ãããšãã«äžäŸ¿ã§ããæŠéã·ã¹ãã ã§ã¯ãã«ãŠã³ã¿ãŒããŒãã«ãªã»ãããããå Žæã¯é¢ä¿ãããŸãã-ããŒããæ¥ç¶ãããçŽåŸïŒacl_smtp_connectå
ïŒããŸãã¯äŸã®ããã«MAIL FROMãéä¿¡ããåŸ
å¥ã®éèŠãªå€æ°ã¯
$acl_c_bouncemessage
ãããã¯ãã¹ãŠã®ãã§ãã¯ã®çµæã«é¢ããã¡ãã»ãŒãžãå ç®ããŸãã MTAã®é«å質ã®ãããã°ã«å¿
èŠã§ãã ãµãŒããŒã®ãã°ã§ãã©ã®ãã§ãã¯ãå®äºããŠãããããã€ã³ããããã€ç²åŸãããããããã«ç¢ºèªã§ããŸãããŸããã¯ã€ã€ã®å察åŽã§é»åã¡ãŒã«ãèªã管çè
ã¯ãSMTPã»ãã·ã§ã³ãå£ããçç±ãçè§£ãããšã©ãŒãä¿®æ£ã§ããŸãïŒãããããã¯95ïŒ
ã§ããã ãã«ãã®ã¿ãå·ã€ããŸãïŒã ãã ããé©åã«æ§æããããã£ã«ã¿ãªã³ã°ã·ã¹ãã ïŒæšå¹Žã¯1ã€ãããããŸããïŒã§ã®èª€æ€åºã¯éåžžã«å°ãªãããããã®å€æ°ã¯ãããã°æã®éœåäžã®ã¿äœ¿çšããŸãã
ãã§ãã¯ã®å€§éšåã¯
acl_check_sender
ã»ã¯ã·ã§ã³ïŒãMAIL FROMïŒ<email@address.any>ãã®éä¿¡åŸã«çºçããSMTPã»ãã·ã§ã³ã®ãã§ãŒãºïŒã«å«ãŸããŠããŸãïŒ
æåããå§ããŸãããïŒ
acl_check_sender: [...] warn set acl_c_spamscore = 0 drop hosts = +blacklisted_hosts message = Connection closed. IP [$sender_host_address] is listed in Blacklist. [...] accept
ãµãŒããŒã®ãã°ã«èšé²ããããããããã¡ãã»ãŒãžãéä¿¡ãããé»åã¡ãŒã«ãšIPã¢ãã¬ã¹ã«ãªã£ãåŸããµãŒããŒã®ããŒã«ã«ããã©ãã¯ãªã¹ããïŒMySQLããŒã¿ããŒã¹å
ïŒã«ããå Žåã¯äžèŠãªããããããŒããç¡å¹ã«ã§ããŸãã远å ã®SMTPã³ãã³ããDNSããã³DNSBLã¯ãšãªã䜿çšãããã©ãã£ãã¯ã
ãã©ãã¯ãªã¹ãèªäœã¯ã
IP varchar(15)
ãš
Timestamp int(11)
ã®2ã€ã®ãã£ãŒã«ãã§æ§æãããããŒã¿ããŒã¹å
ã®ããŒãã«ã§ããIPã¢ãã¬ã¹ãšããŒã¿ããŒã¹ã«unix_time圢åŒã§è¿œå ãããæå»ãæ ŒçŽãããŸãïŒãã®åœ¢åŒã§ã¯ãéå»ã®æ°ãæžç®ãããšäŸ¿å©ã§ãç§ïŒïŒ
ãã©ãã¯ãªã¹ãã¯ãšãªã®äŸã¯éåžžã«ç°¡åã§ãïŒ
SELECT IP FROM antispam.blacklist WHERE IP='1.1.1.1' limit 1"
ã
ã¡ãŒã«ãµãŒããŒããã®ããŒã¿ããŒã¹ã®æäœãåºæ¬çã«å®è£
ãããŠããŸãã ãããè¡ãã«ã¯ãã¡ã€ã³æ§æã»ã¯ã·ã§ã³ã«ãã£ã¬ã¯ãã£ãã远å ããŸãã
hostlist blacklisted_hosts = ${lookup mysql {SELECT IP FROM antispam.blacklist \ WHERE IP='$sender_host_address' limit 1} \ }
ãã®ããã1ã€ã®IPã¢ãã¬ã¹ïŒãŸãã¯èŠæ±ãäœãè¿ãããªãã£ãå Žåã¯ãŒãã¢ãã¬ã¹ïŒãããªã¹ããäœæããããã«ã¢ã¯ã»ã¹ãªã¹ãã§
+blacklisted_hosts
ãšããŠããŒãªã³ã°ããŸãã
ãã¡ãããããŒã¿ããŒã¹ã®æ¥ç¶ã®ããã®ãã©ã¡ãŒã¿ãŒãå«ãèšå®ã®
hide mysql_servers = 127.0.0.1/antispam/mta/mtapass
ãã
hide mysql_servers = 127.0.0.1/antispam/mta/mtapass
ãã£ã¬ã¯ãã£ã
hide mysql_servers = 127.0.0.1/antispam/mta/mtapass
ãå¿ããŠã¯ãããŸããã
ãã©ãã¯ãªã¹ãããŒãã«ã«ã¯ã以äžã«ç€ºãMTAèªäœã§IPã¢ãã¬ã¹ãèªåçã«å
¥åãããŸãã
次ã«ãã¹ãã 察çã®ã匟é ããèŠãŠãã ããã
warn !condition = ${lookup{$sender_address_domain}wildlsearch{/CONFIG_PREFIX/\ additional/trusted_zones}{1}{0}} set acl_c_spamscore = ${eval:$acl_c_spamscore+20} set acl_c_bouncemessage = $acl_c_bouncemessage Suspicious e-mail address;
ããã§ãtrusted_zonesã¯ãeximæ§æã®ãã©ã«ããŒå
ã®è¿œå ãã£ã¬ã¯ããªãŒã«ãããã¬ãŒã³ããã¹ããã¡ã€ã«ã§ãã æ¬¡ã®ãããªãã®ãå«ãŸããŠããŸãã
^.*\\.ru\$ ^.*\\.ua\$ ^.*\\.by\$ ^.*\\.com\$ ^.*\\.org\$ ^.*\\.net\$ ^.*\\.edu\$
æ£èŠè¡šçŸã¯ãé»åã¡ãŒã«ã¢ãã¬ã¹ïŒDNSãšã¯ãŸã é¢ä¿ãããŸããïŒããéåžžéä¿¡ãåãããã¡ã€ã³ãŸãŒã³ã衚ããŸãã äžèšã®äŸã«ã¯å¿
èŠãªæå°å€ãå«ãŸããŠãããå¿
èŠã«å¿ããŠç·šéã§ããŸãã
èŠåæä»€ã¯ãæçŽãåãå
¥ãããããæåŠããããããå¿
èŠããªãããšãEximaã«äŒââããŸãã æ¡ä»¶ãæºãããã»ãã·ã§ã³ãããã«åŠçããã ãã§ãã
ãã®ããšãããéä¿¡è
ã®ã¢ãã¬ã¹ã«ããåä¿¡ã¡ãŒã«ã«å¯ŸããŠãã¡ã€ã³ãŸãŒã³ã®ãªãæåãéä¿¡ããããŒãïŒã¡ãã»ãŒãžæ¬æã® "FromïŒ"èŠåºããšæ··åããªãã§ãã ããïŒã¯20ãã€ã³ããåãåããå
ã«é²ã¿ãŸãã
#-----------------------------DNS Records verify------------------------------------ warn !verify = reverse_host_lookup set acl_c_spamscore = ${eval:$acl_c_spamscore+30} set acl_c_bouncemessage = $acl_c_bouncemessage Reverse host lookup failed;
+30ãã€ã³ã-çŽæ¥ïŒAïŒDNSã¬ã³ãŒããšéïŒPTRïŒDNSã¬ã³ãŒããäžèŽããªãå Žåã
warn condition = ${if eq {$acl_c_reverse_zone}{}} set acl_c_spamscore = ${eval:$acl_c_spamscore+50} set acl_c_bouncemessage = $acl_c_bouncemessage No DNS PTR record found;
å¥ã®50-ãªããŒã¹ïŒPTRïŒé²é³ã®æ¬ åŠã
åŸã§ç€ºãããã«ãããŒãããã°ã¬ãŒãªã¹ããïŒã°ã¬ãŒãªã¹ãïŒã«å
¥ããã«ã¯8ã€ã®ãã€ã³ãã§ååã§ãã
#-----------------------------------------------------------------------------------
$acl_c_reverse_zone
倿°ãããã«è¡šç€ºããããã®ãã§ãã¯ã®çµæïŒããŒãã®DNS PTRå€ïŒãå«ãŸããŠããããšã
$acl_c_reverse_zone
ãŸãã
set acl_c_reverse_zone = ${escape:${lookup dnsdb{ptr=$sender_host_address}}}
ããŒãã®æ¥ç¶æïŒããæ£ç¢ºãª
acl_smtp_connect
å
ïŒããŸãã¯
acl_check_helo
HELOåŒæ°ã®ãã§ãã¯æã«ããã®å€ãèšå®ã§ããŸãã
$acl_c_spamscore
åæåãããŸãã éãã¯ãããã§ãã äžè¬çã«ã©ãã§ãæ§ç¯ã䜿çšã§ããŸãïŒ
warn condition = ${if eq {${escape:${lookup dnsdb{ptr=$sender_host_address}}}}\ {}}
ãã ãããã®ãããªã«ãã¯ã¢ããããšã«ãDNSã¯ãšãªãçæãããããšã«æ³šæããŠãã ããã 倧éã®ã¡ãŒã«ïŒã¹ãã ïŒããããšãããã«ããäžèŠãªè² è·ãçºçããŸãã å°ããªãããŒã§ã¯ãéããæããããšã¯ã»ãšãã©ãããŸããã
#-----------------------------Dynamic IP pools processing--------------------------- warn condition = $wildlsearch\ } set acl_c_spamscore = $ set acl_c_bouncemessage = $acl_c_bouncemessage Suspected PTR DNS record \ points to dynamic IP pool;
DNSãã¹ããåçã¢ãã¬ã¹ããŒã«ããã€ã³ãããŠããå Žåãéä¿¡ãã¹ãã¯+70ãã€ã³ããåãåããŸãã ãã®ãããªããŒã«ã¯ããŠã€ã«ã¹ã®ç¹æ®å°ã§ããããã®çµæãããããããã«ãšã£ãŠè¯ãåå£ã§ãã
#-----------------------------------------------------------------------------------
dynamic_poolsãã¡ã€ã«ã¯ãtrusted_zonesãã¡ã€ã«ãšæ§é ã䌌ãŠãããã¢ãã ãadslãããŒãžã£ãŒãããã³åçã«å²ãåœãŠãããipãæã€ä»ã®ããŒãã®DNSã¬ã³ãŒãããã§ãã¯ããããã®æ£èŠè¡šçŸãå«ãŸããŠããŸãã
^.*([0-9]+).([0-9]+).([0-9]+).([0-9]+).* ^.*host.([0-9]+).* ^.*dynamic.* ^.*dial.* ^.*ppp.* ^.*pptp.* ^.*broadband.* ^.*dhcp.*
ããã«ç¬èªã®ã«ãŒã«ã远å ã§ããŸãããããã¯å¿
èŠæå°éã®ãã®ã§ãã
#---------------------------Geographical DNS zone processing------------------------ warn !condition = ${lookup {$sender_host_name}wildlsearch{/CONFIG_PREFIX/\ additional/trusted_zones}{1}{0}} set acl_c_spamscore = ${eval:$acl_c_spamscore+20} set acl_c_bouncemessage = $acl_c_bouncemessage Untrusted domain zone;
é»åã¡ãŒã«ã®ãã§ãã¯ã«ä»¥åã«äœ¿çšãããã®ãšåãtrusted_zonesããå®éã®DNSã¬ã³ãŒãã«ãããã£ã«ã¿ãªã³ã°ã«äœ¿çšãããããã«ãªããŸããã
ãã¡ã€ã³ãŸãŒã³ã®ãªã¹ãã«ãªãäžåœãã¡ãã·ã³ãéåœãªã©ããã®ã¡ãŒã«ã®å Žåã+ 20ãã€ã³ãã
#------------------------------------------------------------------------------------------ #-------------------Huge DSL & DialUp ISP's DNS zone processing--------------------- warn condition = ${lookup {$sender_host_name}wildlsearch{CONFIG_PREFIX/\ additional/spamvertised_isp}{1}{0}} set acl_c_spamscore = ${eval:$acl_c_spamscore+40} set acl_c_bouncemessage = $acl_c_bouncemessage Spamvertised ISP DNS zone;
ããããããã«ãã£ãŠçæãããçºä¿¡ãã©ãã£ãã¯ã®ãã£ã«ã¿ãªã³ã°ãæ°ã«ããªãåã
ã®å€§èŠæš¡ãããã€ããŒã+40ãã€ã³ãã
#-----------------------------------------------------------------------------------
spamvertised_ispãã¡ã€ã«ã«ã¯ãã¢ãã©ãŒãããŒã25ïŒãã°ã§èšç®ïŒãžã®çºä¿¡æ¥ç¶ãèš±å¯ããå€ãã®å€§èŠæš¡ãããã€ããŒããªã¹ããããŠããŸãã
^.*comcast\\.net ^.*pppoe\\.mtu-net\\.ru ^.*qwerty\\.ru ^.*ono\\.com ^.*virtua\\.com\\.br
ç¬èªã®ã¡ã¢ã远å ã§ããŸãã ãããå¿
èŠã§ã
#----------------------------Handler for impossible HELO's------------------------- warn condition = ${if or {\ {match{$sender_helo_name}{localhost}}\ {match{$sender_helo_name}{mail.hornsnhoofs.com}}\ {match{$sender_helo_name}{^127\\.0\\.0\\.([0-9]+)}}\ }{1}{0}\ } set acl_c_spamscore = ${eval:$acl_c_spamscore+60} set acl_c_bouncemessage = $acl_c_bouncemessage HELO $sender_helo_name is forged;
+60ã¯ãHELOã®åŒæ°ãšããŠã¡ãŒã«ãµãŒããŒïŒåä¿¡ïŒã瀺ãã¹ãããŒãæããŸãã
#---------------------------------------------------------------------------------- #------------------------------Handler for wrong HELO's---------------------------- warn !condition = ${if or {\ {match{$sender_helo_name}{^.+\\.((?i)[az]+)\$}}\ [...] }{1}{0}\ } set acl_c_spamscore = ${eval:$acl_c_spamscore+20} set acl_c_bouncemessage = $acl_c_bouncemessage HELO name is not \ Fully Qualified Domain Name;
HELOãFQDNã§ãªãå Žåã+ 20ã¹ãã ãã€ã³ãã
#---------------------------------------------------------------------------------- #--------------------------Handler for forged HELO arguments----------------------- warn !condition = ${if or {\ {eq{$sender_helo_name}{$sender_host_name}}\ }\ } set acl_c_spamscore = ${eval:$acl_c_spamscore+20} set acl_c_bouncemessage = $acl_c_bouncemessage HELO not equals Hostname;
HELOåŒæ°ãéä¿¡ãã¹ãã®ãã¹ã¿ãŒDNSã¬ã³ãŒãïŒAïŒãšäžèŽããªãå Žåãããã«20ã
#---------------------------------------------------------------------------------- #------------------------Handler for suspicious HELO arguments--------------------- warn !condition = ${lookup {$sender_helo_name}wildlsearch{/CONFIG_PREFIX/\ additional/trusted_zones}{1}{0}} set acl_c_spamscore = ${eval:$acl_c_spamscore+20} set acl_c_bouncemessage = $acl_c_bouncemessage Suspicious HELO argument;
å€ãè¯ãtrusted_zonesãHELOåŒæ°ã®ãã¹ãã«äœ¿çšãããããã«ãªããŸããã
äžåœäººãéåœäººããã®ä»ã®ã¡ãã·ã³äººæ¥æ¬äººã+20ãã€ã³ãã
#----------------------------------------------------------------------------------
æåŸã«ãDNSBLããŒãªã³ã°ã®æ£ããå®è£
ïŒ
ãã®ãããªã·ã¹ãã ã§ã®ã¿èŒãããŒãããªãã«ããããšã¯ã§ããŸããã 圌ãå¶ç¶ããã«çããå¯èœæ§ãé«ãã
DNSBLã®äœ¿çšãå®å
šã«æŸæ£ããªãã§ãã ãã-ããã¯åŒ·åãªãã£ã«ã¿ãªã³ã°ããŒã«ã§ãã
ããŒããã¹ãããŒãšå®£èšã§ããã®ã¯ããã®ãããªã·ã¹ãã ã2ã€ä»¥äžåæã«å®è¡ããå Žåã®ã¿ã§ãã
#-------------------------------DNSBL processing section--------------------------- warn dnslists = sbl.spamhaus.org set acl_c_spamscore = ${eval:$acl_c_spamscore+60} set acl_c_bouncemessage = $acl_c_bouncemessage Listed in DNSBL $dnslist_domain; warn dnslists = bl.spamcop.net set acl_c_spamscore = ${eval:$acl_c_spamscore+60} set acl_c_bouncemessage = $acl_c_bouncemessage Listed in DNSBL $dnslist_domain; warn dnslists = dnsbl.sorbs.net set acl_c_spamscore = ${eval:$acl_c_spamscore+60} set acl_c_bouncemessage = $acl_c_bouncemessage Listed in DNSBL $dnslist_domain; warn dnslists = dul.ru set acl_c_spamscore = ${eval:$acl_c_spamscore+60} set acl_c_bouncemessage = $acl_c_bouncemessage Listed in DNSBL $dnslist_domain;
ãDNSãã©ãã¯ãªã¹ããã«å
¥ããšã+ 60ãã€ã³ãã åæã«2ã€ã®ãªã¹ãã«å
¥ããšãããŒãã¯120ãã€ã³ããåãåããŸããããã¯ãããããã®ã¡ãŒã«ã®åä¿¡ã忢ããã«ã¯ååã§ãããããŒã«ã«ãã©ãã¯ãªã¹ãã«èªåçã«è¿œå ããã«ã¯äžååã§ãã éä¿¡ã¡ãŒã«ãµãŒããŒã®ç®¡çè
ãå°ãªããšã1ã€ã®DNSBLãããã°ãããµãã¹ã¯ã©ã€ããè§£é€ã§ããå Žåãã¡ãŒã«è»¢éã®åœ±é¿ã¯æå°éã«ãªããŸãã
DNSBLããŒãªã³ã°ã¯ãä»ã®ãã§ãã¯ãšçµã¿åãããŠ-ã¹ãããŒãéåžžã«ããæé€ãããããã®ãã€ã³ãã¯ãIPã¢ãã¬ã¹ã1é±éããŒã«ã«ãã©ãã¯ãªã¹ãã«å
¥ããããã«ãã°ãã°éèŠã«ãªããŸãã
#----------------------------------------------------------------------------------- warn !verify = sender/callout=3m,defer_ok set acl_c_spamscore = ${eval:$acl_c_spamscore+60} set acl_c_bouncemessage = $acl_c_bouncemessage Cannot complete sender verify;
ããã§ã³ãŒã«ã¢ãŠããè¡ãããŸãïŒéä¿¡è
ããã¯ã¹ã®ååšã確èªããŸãïŒã ãµãŒããŒã«ã¯æ€èšŒã®ããã«æå€§3åéãäžããããŠããŸãïŒãã以å€ã®å Žåãæ¥ç¶ããã³ã°ãããããæ€èšŒãå®äºããã®ãåŸ
ããã«ãè¯ããéä¿¡è
ãè±èœãããªã¹ã¯ããããŸãïŒããªã¢ãŒãããŒãã®ã¢ã¯ã»ã¹äžèœã¯æ€æ»ã®æåãšèŠãªãããŸãã ã€ãŸã ããŒãã¯ãäžåšã®ïŒã»ãšãã©ã®å Žåã¯åœã®ïŒé»åã¡ãŒã«ã¢ãã¬ã¹ããã¡ãŒã«ãéä¿¡ãããšã60ãã€ã³ããåãåããŸãã
ãã®ãããwww @ webserver.example.orgã®ãããªã¢ãã¬ã¹ããã®æ£åœãªã¡ãŒã«éä¿¡ãè¡ãã¹ãã§ã¯ãããŸããã ã³ãŒã«ã¢ãŠãã¯äžè¬çãªãã£ã«ã¿ãªã³ã°æ¹æ³ã§ãããå€ãã®ææ°ã®MTAå®è£
ã§ãµããŒããããŠããŸãã
accept condition = ${if >{$acl_c_spamscore}{145}}
ããã§ã¯ãã¡ãã£ãšããããªãã¯-145ãã€ã³ã以äžã®ããŒã-ãããŒã«ã«ãã©ãã¯ãªã¹ãã®çã®åè£ã§ãã ãããããã§ãã¯ããå¿
èŠã¯ãããããŸãããæ¬¡ã®ACLã«è»¢éããããã§å³ããçŠæ¢ããŸãã
accept delay = ${eval:$acl_c_spamscore/2}s
145ãã€ã³ããç²åŸããŠããªã人ã¯ãæ·åã»ãã·ã§ã³ã®é
å»¶ãçµéšããŸããåä¿¡MTAã¯ãäžæ£ãªæ¥ç¶ãæš¡å£ããã¹ãã ãã€ã³ãã®æ°ã®ååã«çžåœããæ°ç§éããªãŒãºããŸãã 60ãã€ã³ãã®ããŒãã30ç§éãäžæãããããšããŸãã
éåžžãã¹ãããŒã¯å¿çãåŸ
ã€æéãããŸããªãã15ã20ç§ã§èœã¡ãŸãã
ããã§ãæåŸã®ACLã«å°éããSMTPã»ãã·ã§ã³ã®ãã©ã¡ãŒã¿ãŒã®æ£ç¢ºæ§ã確èªããŸããïŒRCPT TOïŒã®åŸã«æ©èœããŸãïŒã ãã®äžã«ã¯ãåèšãã€ã³ãã®ãéã¿ä»ãããšãæçŽã®ãããªãéåœã®æ±ºå®ããããŸãã
acl_check_rcpt: [...] #------Spamtraps check------- warn condition = ${lookup {$local_part@$domain}lsearch{/CONFIG_PREFIX/\ additional/spamtraps}{1}{0}} set acl_c_spamscore = ${eval:$acl_c_spamscore+50} set acl_c_bouncemessage = $acl_c_bouncemessage Spamtrap hit;
ã¹ãã ãã©ããã«é¥ã£ãå Žåã¯+50ãã€ã³ãã
#----------------------------
ãã©ããã¢ãã¬ã¹ã®ãªã¹ãã¯ã次ã®è¡ã«é»åã¡ãŒã«ã§éä¿¡ãããspamtrapsãã¡ã€ã«ã«ãããŸãã
spamtrap@hornsnhoofs.com honeypot@hornsnhoofs.com
ãªã©ãªã©ã
ç¬èªã®ã¹ãã ãã©ããã䜿çšããããšã¯ãé»åã¡ãŒã«ã®ãããã§ã€ã³ã¿ãŒããããæãå€§èŠæš¡ãªã¡ãŒã©ãŒãã身ãé ãè¯ãæ¹æ³ã§ãã æ¬¡ã«ããããã®ã¢ãã¬ã¹ã¯ãã¡ãŒãªã³ã°ãªã¹ãã®äžéšãšããŠè»¢éã販売ãããã³é
åžãããŸãã ã€ãŸãããããã¯ã¹ãããŒã«ãã£ãŠæ¡æ£ãããŸãã
ãã®ãããªã¢ãã¬ã¹ã®æåã®é
åžã«ã¯å°é£ãçããããããããã¯ã¹ãããŒã«éä¿¡ãããŸãã ããšãã°ãäŒç€Ÿã®ã¡ã€ã³Webãµã€ãã§
wpoisonãªã©ã®ã¡ã«ããºã ã䜿çšã§ããŸãã äž»ãªããšã¯ãæ€çŽ¢ãšã³ãžã³ã«ããã€ã³ããã¯ã¹äœæã®çŠæ¢ãå¿ããªãããšã§ãïŒrobots.txtãŸãã¯META CONTENT = "NOINDEXãNOFOLLOW"ã䜿çšïŒã
å€ãã®å Žåãå€ããã¡ã€ã³ã«ã¯æ¢ã«ã¢ãã¬ã¹ãç Žæ£ãããŠãããããŸã£ããååšããŠããŸããããããã§ã1ã€ã®ã¹ãã ãéä¿¡ãããŸãã ãããã¯ãã¹ãã ãã©ãããšããŠäœ¿çšããã®ã«çæ³çãªåè£ã§ãã äž»ãªããšã¯ããã®ãããªããã¯ã¹ã¯é·æé䜿çšããªãã§ãã ãããããã«è¯ãããšã«ã䜿çšããªãã§ãã ããã
é説çã«ãããã¯äºå®ã§ã-仿¥äœ¿çšããŠãããã©ããã¢ãã¬ã¹ã®å€ãã¯ãã¹ãã ããŒã¿ããŒã¹ãé€ããã©ãã«ãååšããŠããŸããã ããã«ã©ã®ããã«ç»å Žãããã¯äžæã§ãããã¹ãã ã宿çã«å±ããŸãã ã¡ãŒã©ãŒã®ãã°ãé·æé調ã¹ãŠãããã«äŒŒããããªãã®ãããããšã確èªããŠãã ããã
#---------------------------Blacklist Processing Section------------------------ drop !senders = : !condition = ${if <{$acl_c_spamscore}{150}} message = Connection closed. Spamscore threshold (150 points) reached. \ Spamscore is $acl_c_spamscore! \ Warning: IP [$sender_host_address] added to Blacklist. \ Details: $acl_c_bouncemessage condition = ${lookup mysql \ {\ insert into antispam.blacklist (IP,Timestamp)\ values ('${sender_host_address}',${tod_epoch});\ }\ }
150ãã€ã³ã以äžãç²åŸã§ãã人ã¯ããã£ã³ããªã³ãšå®£èšãããŸãïŒ ãããã®IPã¢ãã¬ã¹ã¯ããŒã«ã«ãã©ãã¯ãªã¹ãã«ç»é²ããããããã«ã€ããŠã®å声ã¯1é±éæ¢ãŸããŸããã
ãã®äžã«ããããŒãã¯ããMAIL FROMïŒãã³ãã³ããéä¿¡ããçŽåŸã«ããããããŸãã
#-------------------------------------------------------------------------------
ãã§ã«è¿°ã¹ãããã«ããã©ãã¯ãªã¹ãã®ã¬ã³ãŒãã®æå¹æéã¯1é±éïŒ604800ç§ïŒã§ãã ããŒã¹ã¯1æéããšã«ã¯ã©ãŠã³ã§æž
æãããŸãã
#!/bin/bash echo "delete from blacklist where Timestamp < `echo "\`date +%s\`-604800" | bc`;" | /usr/local/bin/mysql -u mta -pmtapass antispam echo "optimize table blacklist" | /usr/local/bin/mysql -u mta -pmtapass antispam
deny condition = ${if >{$acl_c_spamscore}{100}} condition = ${if ={$acl_c_validrcpt}{1}} message = Message rejected. Spamscore threshold (100 points) reached. \ Spamscore is $acl_c_spamscore! Details: acl_c_bouncemessage
ããã§ã¯ãã¹ãŠãç°¡åã§ãã 100ç¹ä»¥äžãç²åŸ-ã550ã¡ãã»ãŒãžæåŠããåãåããŸããã åæã«ãåŸç¹ãšå€±æãããã§ãã¯ã®ã¬ããŒãã®æ°ããã°ã«èšé²ãããŸãã åãæ
å ±ã¯ãã¯ã€ã€ã®å察åŽã®ã¡ãŒã«ã®ç®ãšäžç·ã«è¡ããŸãã çªç¶èª°ãããããã°ã«åœ¹ç«ã¡ãŸãã
ã»ãã·ã§ã³ãäžæããã«ïŒaclã§åä¿¡ã«æåãæã¡èŸŒãŸããã«ãŒã¿ãŒãšãã©ã³ã¹ããŒãã«ããåŠçãéå§ããã«ïŒããããšãéä¿¡ããããšãéèŠã§ããããããªããšãã€ãã³ããããŸãæ©èœããªãå ŽåããããŸãã
è¿ä¿¡ã®åœ¢åŒã§ã¹ãã ãéä¿¡ããããšã«ã€ããŠç°¡åã«èª¬æããŸããååšããªãã¡ãŒã«ã¢ãã¬ã¹nosuchaddress@hornsnhoofs.comã«ãMAIL FROMïŒãã®ãvasyapupkin@gmail.comãã瀺ãã¹ãã ã¬ã¿ãŒãæžããšããã®ã¡ãŒã«ã¯ã¡ãŒã«ãµãŒããŒã§åãå
¥ããããã¡ãŒã«ãåä¿¡ããåŸãã«ãŒã¿ãŒã¯å®å
ã¢ãã¬ã¹ãååšããªããšå€æãããšããµãŒããŒã¯ã¹ãã ã¡ãŒã«ãæ°ãããšã³ãããŒãã§ã©ãããããã®ããããšã®è¡ã远å ããŠãéä¿¡è
ãã«è¿éããŸã-Vasya PupkinãGmail.comã§çããªãã
次ã«ãçå°äŒç€Ÿã¯ãµãŒããŒãããã©ãã¯ãªã¹ããã«ãã°ãã远å ãããã®IPããã®ã¡ãŒã«ã®åä¿¡ããããã¯ããŸãã ä»ãããªãã¯æè¡ãµããŒãã«èª¬æçãªæçŽãæžããŠãåä»ãªã¹ãããŒãç¬ããŸãã
ãã ããããã¯çŸè±¡ã®éåžžã«ç°¡åãªèª¬æã§ããããããé²ãä»ã®æ¹æ³ããããŸãããã»ãã·ã§ã³ã忢ããã«å«ããªäººã転éããæŠè¡ãæãæ£ããã§ãã
ãã䟿å©ãªãããã°ã®ããã«ããã®æ
å ±ãã¬ã¿ãŒã®ãµãŒãã¹ããããŒã«è¿œå ããããšãã§ããŸãã ãã ããããã¯éåžžã«ãªãã·ã§ã³ã§ãã
accept condition = ${if <{$acl_c_spamscore}{70}} condition = ${if ={$acl_c_validrcpt}{1}}
ã¹ãã ãã€ã³ãã70æªæºã®ãã¹ãã¯æ£åœã§ãããšèŠãªãããåä¿¡è
ã®ã¢ãã¬ã¹ïŒ
$acl_c_validrcpt
ïŒãååšããå Žåããã¹ãããã®æçŽãåãå
¥ããŸãã
ãã®å€æ°ãå€ãååŸããæ¹æ³ã«ã€ããŠã¯èª¬æããŸããã ã¡ãŒã«ãŠãŒã¶ãŒã«é¢ããããŒã¿ã®ä¿åæ¹æ³ã«ãã£ãŠç°ãªããŸãã LDAPæ€çŽ¢ã§Active Directoryã®åä¿¡è
ã®ã¡ãŒã«ã¢ãã¬ã¹ã確èªããåŸãç§ãããããçå®ïŒãŸãã¯1ã€ã ãïŒã«ãªããšèšããŸãã
ããã¯ãEximã§ãµããŒããããŠããéãããŠãŒã¶ãŒããããã¹ãŠã®ããŒã¿ããŒã¹ã«å¯ŸããŠå®è¡ã§ããŸããæãè峿·±ãã®ã¯ãããŒãã70ãã€ã³ããã100ãã€ã³ãã®åŸç¹ã«ãªãããšã§ããæ£åœãªãã¹ããã¹ãããŒã«èµ·å ãããã®ã§ã¯ãããŸããããããã£ãŠãããããgrelistã§29åéã©ããããŸãïŒééã¯ãMTAéä¿¡è
ã«ããã¡ãŒã«ãã¥ãŒã®2åç®ã®å®è¡ãæ³å®ããŠéžæãããŸãïŒã #--------------------------Greylist Processing Section-------------------------- defer condition = ${if ={$acl_c_validrcpt}{1}} condition = ${lookup mysql \ {\ select Source from antispam.greylist where \ Source='$sender_host_address' \ and Timestamp > ${eval:$tod_epoch-1740} limit 1\ }{1}{0}\ } message = Message deferred. Try again later. You was been already greylisted. accept condition = ${lookup {$acl_c_reverse_zone}wildlsearch{CONFIG_PREFIX/\ additional/dynamic_pools}{1}{0}} condition = ${if ={$acl_c_validrcpt}{1}} condition = ${lookup mysql \ {\ select Source from antispam.greylist where \ Source='$sender_host_address' \ and grey_hash = '${md5:${lc:$sender_address\ $local_part@$domain}}' \ and Timestamp < ${eval:$tod_epoch-1740} limit 1 \ }{1}{0}\ } condition = ${lookup mysql \ {\ delete from antispam.greylist where \ Source='$sender_host_address' \ and grey_hash = '${md5:${lc:$sender_address\ $local_part@$domain}}' \ }\ } accept !condition = ${lookup {$acl_c_reverse_zone}wildlsearch{CONFIG_PREFIX/\ additional/dynamic_pools}{1}{0}} condition = ${if ={$acl_c_validrcpt}{1}} condition = ${lookup mysql \ {\ select Source from antispam.greylist where \ Source='$sender_host_address' \ and grey_hash = '${md5:${lc:$sender_address\ $local_part@$domain}}' \ and Timestamp < ${eval:$tod_epoch-1740} limit 1 \ }{1}{0}\ } condition = ${lookup mysql \ {\ insert into antispam.whitelist (IP, Timestamp) \ values ('$sender_host_address',$tod_epoch) \ }{1}{1}\ } condition = ${lookup mysql \ {\ delete from antispam.greylist where \ Source='$sender_host_address' \ and grey_hash = '${md5:${lc:$sender_address\ $local_part@$domain}}' \ }\ } defer condition = ${if ={$acl_c_validrcpt}{1}} condition = ${if >={$acl_c_spamscore}{70}} condition = ${lookup mysql \ {\ insert into antispam.greylist (Source,grey_hash,Timestamp) \ values ('$sender_host_address',\ '${md5:${lc:$sender_address$local_part@$domain}}',\ ${tod_epoch}); \ }\ } message = Message deferred. Spamscore is $acl_c_spamscore! Try again later. \ Greylisting in progress. Details: $acl_c_bouncemessage #-----------------------------------------------------------------------------
defer , c 4xx, , .
: SMTP- 451 , « », .
«», : ip- .
, , greylist, :
Source varchar(15)
,
grey_hash varchar(32)
,
Timestamp int(11)
ã Sourceãã£ãŒã«ãã«ã¯éä¿¡è
ã®IPã¢ãã¬ã¹ãå«ãŸããgray_hashã¯éä¿¡è
ãšåä¿¡è
ã®ã¢ãã¬ã¹ããã®md5ããã·ã¥ãTimestampã¯ã¬ã³ãŒããunix_time圢åŒã§è¿œå ãããæå»ã§ããããã«å ããŠãã°ã¬ãŒåã«ã¯ãã¯ã€ããªã¹ãããŒãã«ãå¿
èŠã§ããããã«ãããã°ã¬ãŒåã«åæ ŒããããŒãã®ã¢ãã¬ã¹ã远å ã§ããŸãããã¯ã€ããªã¹ãããŒãã«ã®åœ¢åŒã¯ãäžèšã®ãã©ãã¯ãªã¹ãããŒãã«ã®åœ¢åŒãå®å
šã«ç¹°ãè¿ããŸããããŒãã«ã¯ã¯ã©ãŠã³ã«ãã£ãŠãã¯ãªã¢ãããŸããã°ã¬ãŒãªã¹ãã®ã¬ã³ãŒãã¯1æ¥ããã¯ã€ããªã¹ãã®æã¯ä¿åãããŸãã deny message = Message rejected. No such user here. Relaying denied. $acl_c_support set acl_c_spamscore = ${eval:$acl_c_spamscore+5} set acl_c_bouncemessage = $acl_c_bouncemessage RCPT Fail; delay = ${eval:$acl_c_spamscore/2}s
æé«ã®ç¬ã®é£Œè²è
ã®æšå¥šã«ãããšãæåŸã®ãã£ã«ã¿ãªã³ã°èŠåã¯çŠæ¢ãããŠããŸãã圌ã®ä»äºã¯ããéããããã¡ã€ã¢ãŠã©ãŒã«ã®æåŸã®ã«ãŒã«ã«ãããã䌌ãŠããdeny ip from any to any
ãSMTPã»ãã·ã§ã³ã®ã¿ã«åœ±é¿ããŸããããã«ããRCPT TOïŒãã®ééã£ãã¢ãã¬ã¹ããšã«ïŒSMTPãããã³ã«ã§ã¯1æåã«è€æ°ã®åä¿¡è
ãæå®ã§ããŸãïŒãããŒãã¯ç¡æ¡ä»¶ã®ããããã³ã°ãããå€ã«éãããŸã§ã5ã€ã®è¿œå ã¹ãã ãã€ã³ããåãåããŸãããããã¯ã-åãRCPT TOïŒãã®åŸã«ã»ãã·ã§ã³ãé
ãããæ·åããããŸããã¡ãŒã«ãµãŒããŒã®æ§æã§å°ãªããšããããã®æ§æã䜿çšãããšã誀æ€ç¥ã®æ°ãå¢ããããšãªãã¹ãã ã®çŽ90ã95ïŒ
ãåæžã§ããŸãã( -) ( , , gmail.com mail.ru, , , ) .
, .
, SPF DKIM, , « » ( -), , . , .