You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

headers.inc 9.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. # Different headers violation
  2. # Subject need encoding
  3. $__SUBJECT_ENCODED_B64 = "Subject=/=\?\S+\?B\?/iX";
  4. $__SUBJECT_ENCODED_QP="Subject=/=\?\S+\?Q\?/iX";
  5. $__SUBJECT_NEEDS_MIME="Subject=/[\x00-\x08\x0b\x0c\x0e-\x1f\x7f-\xff]/X";
  6. $SUBJECT_NEEDS_ENCODING = "!${__SUBJECT_ENCODED_B64} & !${__SUBJECT_ENCODED_QP} & ${__SUBJECT_NEEDS_MIME}";
  7. $__HAS_SUBJECT="header_exists(Subject)";
  8. $__EMPTY_SUBJECT="Subject=/^$/";
  9. $MISSING_SUBJECT="!${__HAS_SUBJECT} | ${__EMPTY_SUBJECT}";
  10. $__R_RCVD_POCHTA_RU="Received=/by mail\d\.ks\.pochta\.ru \( sendmail 8\.\d{2}\.\d\/8\.\d{2}\.\d\) with esmtpa id/H";
  11. $__R_MUA_OUTLOOK="X-Mailer=/^Microsoft Outlook Express/Hr";
  12. $__R_MUA_THEBAT="X-Mailer=/^The Bat!/H";
  13. $__R_CTYPE_TEXT="content_type_is_type(text)";
  14. $__R_CTE_7BIT="compare_transfer_encoding(7bit)";
  15. $__R_BODY_8BIT="/[^\x01-\x7f]/Pr";
  16. $R_BAD_CTE_7BIT="${__R_CTYPE_TEXT} & ${__R_CTE_7BIT} & ${__R_BODY_8BIT}";
  17. $R_TLD_TK = "/\.tk$/U";
  18. $R_POCHTA_RU = "${__R_RCVD_POCHTA_RU} & ${R_TLD_TK} & ${SUBJECT_NEEDS_ENCODING}";
  19. $R_TMP_SPAMMY_MAILER = "X-Mailer=/^(?:Exim 3\.12|Gentoo|Qmail 2\.67|Sendmail 3\.84\/3\.84|WebPOP 1\.0|mLogic)/H";
  20. $R_WWW_EKONF_COM = "${__R_MEGA_TABLE} & ${__R_GREEK_SYMBOLS}";
  21. $R_FREE_HOSTING_NAROD = "/\.narod\.ru/U";
  22. $R_TINYURL = "/http:\/\/(?:tinyurl\.com|snipr\.com|b23\.ru)\/\w/U";
  23. $R_FREE_HOSTING = "/\.(?:fromru\.com|front\.ru|hotbox\.ru|hotmail\.ru|krovatka\.su|land\.ru|mail15\.com|mail333\.com|newmail\.ru|nightmail\.ru|nm\.ru|pisem\.net|pochtamt\.ru|pop3\.ru|rbcmail\.ru|smtp\.ru)/U";
  24. $__HAS_TO="header_exists(To)";
  25. $MISSING_TO="!${__HAS_TO}";
  26. $__UNDISC_RCPT="To=/^<?undisclosed-recipient/Hi";
  27. $R_UNDISC_RCPT="${MISSING_TO} | ${__UNDISC_RCPT}";
  28. $__HAS_MID="header_exists(Message-Id)";
  29. $MISSING_MID="!${__HAS_MID}";
  30. $R_RCVD_SPAMBOTS="Received=/^from \[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\] by [-.\w+]{5,255}; [SMTWF][a-z][a-z], [\s\d]?\d [JFMAJSOND][a-z][a-z] \d{4} \d{2}:\d{2}:\d{2} [-+]\d{4}$/mH";
  31. $R_TO_SEEMS_AUTO="To=/\"?(?<bt>[-.\w]{1,64})\"?\s<\k<bt>\@/H";
  32. $R_MISSING_CHARSET="content_type_is_type(text) & !content_type_has_param(charset)";
  33. $R_SAJDING="Subject=/\bsajding(?:om|a)?\b/iH";
  34. $__R_MUA_MPOP_WEBMAIL="X-Mailer=/^mPOP Web-Mail \d\.\d{2}$/H";
  35. $__R_MID_MAILRU="Message-Id=/\@w+\.mail\.ru>$/H";
  36. $__R_RCVD_FROM_MAILRU="Received=/ by [a-z\.]+\d*\.mail\.ru with /H";
  37. $__R_X_RCVD_FROM_MAILRU="X-Received=/ by [a-z\.]+\d*\.mail\.ru with /H";
  38. $R_FORGED_MPOP_WEBMAIL="${__R_MUA_MPOP_WEBMAIL} & !(${__R_RCVD_FROM_MAILRU} | ${__R_X_RCVD_FROM_MAILRU} | ${__R_MID_MAILRU})";
  39. $__R_BGCOLOR="/BGCOLOR=/iM";
  40. $__R_FONT_COLOR="/font color=[\"']?\#FFFFFF[\"']?/iM";
  41. $R_WHITE_ON_WHITE="(!${__R_BGCOLOR} & ${__R_FONT_COLOR})";
  42. $R_NO_SPACE_IN_FROM="From=/\S<[-\w\.]+\@[-\w\.]+>/X";
  43. $R_FLASH_REDIR_IMGSHACK="/^(?:http:\/\/)?img\d{1,5}\.imageshack\.us\/\S+\.swf/U";
  44. $__R_RCVD_FROM_VALUEHOST="Received=/\sb0\.valuehost\.ru/H";
  45. $__R_CYR_PHONE="/8 \(\xD799\)/P";
  46. $R_SPAM_FROM_VALUEHOST="${__R_RCVD_FROM_VALUEHOST} & ${__R_CYR_PHONE}";
  47. $__HAS_USER_AGENT="header_exists(User-Agent)";
  48. $__HAS_X_MAILER="header_exists(X-Mailer)";
  49. $__R_RCVD_FROM_MTU="Received=/smtp\d*\.mtu\.ru/H";
  50. $__R_MID_MTU="Message-Id=/\@smtp\d*\.mtu\.ru>$/H";
  51. $__R_RCVD_FROM_ONO="Received=/smtp\d*\.ono\.com/H";
  52. $__R_MID_ONO="Message-Id=/\@ono\.com>$/H";
  53. $__R_RCVD_FROM_VERSATEL="Received=/mail\d*do\.versatel\.de/H";
  54. $__R_MID_VERSATEL="Message-Id=/\@versanet\.de>$/H";
  55. $__R_RCVD_FROM_LIBERO="Received=/cp-out\d+\.libero\.it/H";
  56. $__R_MID_LIBERO="Message-Id=/[\da-f]{12}\.[\da-f]{16}@/H";
  57. $R_SPAM_FROM_MTU="!(${__HAS_X_MAILER} | ${__HAS_USER_AGENT}) & ${__R_RCVD_FROM_MTU} & ${__R_MID_MTU}";
  58. $R_SPAM_FROM_ONO="!(${__HAS_X_MAILER} | ${__HAS_USER_AGENT}) & ${__R_RCVD_FROM_ONO} & ${__R_MID_ONO}";
  59. $R_SPAM_FROM_VERSATEL="!(${__HAS_X_MAILER} | ${__HAS_USER_AGENT}) & ${__R_RCVD_FROM_VERSATEL} & ${__R_MID_VERSATEL}";
  60. $R_SPAM_FROM_LIBERO="!(${__HAS_X_MAILER} | ${__HAS_USER_AGENT}) & ${__R_RCVD_FROM_LIBERO} & ${__R_MID_LIBERO}";
  61. #$R_FAKE_OUTLOOK="${__R_MUA_OUTLOOK}";
  62. # $R_FAKE_OUTLOOK="${__R_MUA_OUTLOOK} & (${SUBJECT_NEEDS_ENCODING} | ${R_BAD_CTE_7BIT})";
  63. $R_FAKE_OUTLOOK="${__R_MUA_OUTLOOK} & ${R_BAD_CTE_7BIT}";
  64. $R_FAKE_THEBAT="${__R_MUA_THEBAT} & ${SUBJECT_NEEDS_ENCODING}";
  65. $__YAHOO_BULK="Received=/from \[\S+\] by \S+\.(?:groups|scd|dcn)\.yahoo\.com with NNFMP/H";
  66. $__ANY_OUTLOOK_MUA="X-Mailer=/^Microsoft Outlook\b/H";
  67. $MIME_HTML_ONLY="has_only_html_part()";
  68. $FORGED_OUTLOOK_HTML="!${__YAHOO_BULK} & ${__ANY_OUTLOOK_MUA} & ${MIME_HTML_ONLY}";
  69. $SUSPICIOUS_RECIPS="compare_recipients_distance(0.85)";
  70. $SORTED_RECIPS="is_recipients_sorted()";
  71. $TRACKER_ID="/^[a-z0-9]{6,24}[-_a-z0-9]{2,36}[a-z0-9]{6,24}\s*\z/isPr";
  72. $__FROM_ENCODED_B64="From=/\=\?\S+\?B\?/iX";
  73. $__FROM_NEEDS_MIME="From=/[\x00-\x08\x0b\x0c\x0e-\x1f\x7f-\xff]/H";
  74. $FROM_EXCESS_BASE64="${__FROM_ENCODED_B64} & !${__FROM_NEEDS_MIME}";
  75. $__OE_MUA="X-Mailer=/\bOutlook Express [456]\./H";
  76. $__OE_MSGID_1="Message-Id=/^[A-Za-z0-9-]{7}[A-Za-z0-9]{20}\@hotmail\.com$/mH";
  77. $__OE_MSGID_2="Message-Id=/^(?:[0-9a-f]{8}|[0-9a-f]{12})\$[0-9a-f]{8}\$[0-9a-f]{8}\@\S+$/mH";
  78. $__LYRIS_EZLM_REMAILER="List-Unsubscribe=/<mailto:(?:leave-\S+|\S+-unsubscribe)\@\S+>$/H";
  79. #$__GATED_THROUGH_RCVD_REMOVER="gated_through_received_hdr_remover()";
  80. $__WACKY_SENDMAIL_VERSION="Received=/\/CWT\/DCE\)/H";
  81. $__IPLANET_MESSAGING_SERVER="Received=/iPlanet Messaging Server/H";
  82. $__HOTMAIL_BAYDAV_MSGID="Message-Id=/^BAY\d+-DAV\d+[A-Z0-9]{25}\@phx\.gbl$/mH";
  83. $__SYMPATICO_MSGID="Message-Id=/^BAYC\d+-PASMTP\d+[A-Z0-9]{25}\@CEZ\.ICE$/mH";
  84. # $__UNUSABLE_MSGID="${__LYRIS_EZLM_REMAILER} | ${__GATED_THROUGH_RCVD_REMOVER} | ${__WACKY_SENDMAIL_VERSION} | ${__IPLANET_MESSAGING_SERVER} | ${__HOTMAIL_BAYDAV_MSGID} | ${__SYMPATICO_MSGID}";
  85. $__UNUSABLE_MSGID="${__LYRIS_EZLM_REMAILER} | ${__WACKY_SENDMAIL_VERSION} | ${__IPLANET_MESSAGING_SERVER} | ${__HOTMAIL_BAYDAV_MSGID} | ${__SYMPATICO_MSGID}";
  86. $__FORGED_OE="${__OE_MUA} & !{__OE_MSGID_1 & !${__OE_MSGID_2} & !{__UNUSABLE_MSGID}";
  87. $__OUTLOOK_DOLLARS_MUA="X-Mailer=/^Microsoft Outlook(?: 8| CWS, Build 9|, Build 10)\./H";
  88. $__OUTLOOK_DOLLARS_OTHER="Message-Id=/^\!\~\!/mH";
  89. $__VISTA_MSGID="Message-Id=/^[A-F\d]{32}\@\S+$/mH";
  90. $__IMS_MSGID="Message-Id=/^[A-F\d]{36,40}\@\S+$/mH";
  91. $__FORGED_OUTLOOK_DOLLARS="${__OUTLOOK_DOLLARS_MUA} & !${__OE_MSGID_2} & !${__OUTLOOK_DOLLARS_OTHER} & !${__VISTA_MSGID} & !${__IMS_MSGID} & !${__UNUSABLE_MSGID}";
  92. $__FMO_EXCL_O3416="X-Mailer=/^Microsoft Outlook, Build 10.0.3416$/H";
  93. $__FMO_EXCL_OE3790="X-Mailer=/^Microsoft Outlook Express 6.00.3790.3959$/H";
  94. $FORGED_MUA_OUTLOOK="(${__FORGED_OE} | ${__FORGED_OUTLOOK_DOLLARS}) & !${__FMO_EXCL_O3416} & !${__FMO_EXCL_OE3790} & !${__VISTA_MSGID}";
  95. $__SANE_MSGID="Message-Id=/^[^<>\\ \t\n\r\x0b\x80-\xff]+\@[^<>\\ \t\n\r\x0b\x80-\xff]+\s*$/mH";
  96. $__MSGID_COMMENT="Message-Id=/\(.*\)/mH";
  97. $INVALID_MSGID="${__HAS_MID} & !(${__SANE_MSGID} | ${__MSGID_COMMENT})";
  98. $HTML_MIME_NO_HTML_TAG="${MIME_HTML_ONLY} & !${__TAG_EXISTS_HTML}";
  99. $__CD="header_exists(Content-Disposition)";
  100. $__CTE="header_exists(Content-Transfer-Encoding)";
  101. $__CT="header_exists(Content-Type)";
  102. $__MIME_VERSION="raw_header_exists(MIME-Version)";
  103. #$__CT_TEXT_PLAIN="Content-Type=/^text\/plain\b/iH";
  104. $__CT_TEXT_PLAIN="content_type_is_type(text) & content_type_is_subtype(plain)";
  105. $MIME_HEADER_CTYPE_ONLY="!${__CD} & !${__CTE} & ${__CT} & !${__MIME_VERSION} & !${__CT_TEXT_PLAIN}";
  106. $__HAS_MSMAIL_PRI="header_exists(X-MSMail-Priority)";
  107. $__HAS_MIMEOLE="header_exists(X-MimeOLE)";
  108. $__HAS_SQUIRRELMAIL_IN_MAILER="X-Mailer=/SquirrelMail\b/H";
  109. $MISSING_MIMEOLE="${__HAS_MSMAIL_PRI} & !${__HAS_MIMEOLE} & !${__HAS_SQUIRRELMAIL_IN_MAILER}";
  110. $__MSGID_DOLLARS_OK="Message-Id=/[0-9a-f]{4,}\$[0-9a-f]{4,}\$[0-9a-f]{4,}\@\S+/Hr";
  111. $__MIMEOLE_MS="X-MimeOLE=/^Produced By Microsoft MimeOLE/H";
  112. $__RCVD_WITH_EXCHANGE="Received=/with Microsoft Exchange Server/H";
  113. $RATWARE_MS_HASH="${__MSGID_DOLLARS_OK} & !${__MIMEOLE_MS} & !${__RCVD_WITH_EXCHANGE}";
  114. $STOX_REPLY_TYPE="Content-Type=/text\/plain; .* reply-type=original/H";
  115. $__FHELO_VERIZON="X-Spam-Relays-Untrusted=/^[^\]]+ helo=[^ ]+verizon\.net /iH";
  116. $__FHOST_VERIZON="X-Spam-Relays-Untrusted=/^[^\]]+ rdns=[^ ]+verizon\.net /iH";
  117. $FM_FAKE_HELO_VERIZON="${__FHELO_VERIZON} & !${__FHOST_VERIZON}";
  118. $__AT_YAHOO_MSGID="Message-Id=/\@yahoo\.com\b/iH";
  119. $__FROM_YAHOO_COM="From=/\@yahoo\.com\b/iH";
  120. $FORGED_MSGID_YAHOO="${__AT_YAHOO_MSGID} & !${__FROM_YAHOO_COM}";
  121. $__THEBAT_MUA_V1="X-Mailer=/^The Bat! \(v1\./H";
  122. $__CTYPE_HAS_BOUNDARY="Content-Type=/boundary/iH";
  123. $__BAT_BOUNDARY="Content-Type=/boundary=\"?-{10}/H";
  124. $__MAILMAN_21="X-Mailman-Version=/\d/H";
  125. $__DOUBLE_IP_SPAM_1="Received=/from \[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\] by \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3} with/H";
  126. $__DOUBLE_IP_SPAM_2="Received=/from\s+\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\s+by\s+\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3};/H";
  127. $FORGED_MUA_THEBAT_BOUN="${__THEBAT_MUA_V1} & ${__CTYPE_HAS_BOUNDARY} & !${__BAT_BOUNDARY} & !${__MAILMAN_21}";
  128. $RCVD_DOUBLE_IP_SPAM="${__DOUBLE_IP_SPAM_1} | ${__DOUBLE_IP_SPAM_2}";
  129. $__REPTO_QUOTE="Reply-To=/\".*\"\s*\</H";
  130. $__FROM_YAHOO_COM="From=/\@yahoo\.com\b/iH";
  131. $__AT_YAHOO_MSGID="Message-Id=/\@yahoo\.com\b/iH";
  132. $REPTO_QUOTE_YAHOO="${__REPTO_QUOTE} & (${__FROM_YAHOO_COM} | ${__AT_YAHOO_MSGID})";
  133. $__XM_GNUS="X-Mailer=/^Gnus v/H";
  134. $__XM_MSOE5="X-Mailer=/^Microsoft Outlook Express 5/H";
  135. $__XM_MSOE6="X-Mailer =~ /^Microsoft Outlook Express 6/H";
  136. $__XM_MOZ4="X-Mailer=/^Mozilla 4/H";
  137. $__XM_SKYRI="X-Mailer=/^SKYRiXgreen/H";
  138. $__XM_WWWMAIL="X-Mailer=/^WWW-Mail \d/H";
  139. $__UA_GNUS="User-Agent=/^Gnus/H";
  140. $__UA_KNODE="User-Agent=/^KNode/H";
  141. $__UA_MUTT="User-Agent=/^Mutt/H";
  142. $__UA_PAN="User-Agent=/^Pan/H";
  143. $__UA_XNEWS="User-Agent=/^Xnews/H";
  144. $__NO_INR_YES_REF="${__XM_GNUS} | ${__XM_MSOE5} | ${__XM_MSOE6} | ${__XM_MOZ4} | ${__XM_SKYRI} | ${__XM_WWWMAIL} | ${__UA_GNUS} | ${__UA_KNODE} | ${__UA_MUTT} | ${__UA_PAN} | ${__UA_XNEWS}";
  145. $__SUBJ_RE="Subject=/^R[eE]:/H";
  146. $__HAS_REF="header_exists(References)";
  147. $__MISSING_REF="!${__HAS_REF}";
  148. $FAKE_REPLY_C="${__SUBJ_RE} & ${__MISSING_REF} & ${__NO_INR_YES_REF}";
  149. # Vowel rules
  150. $FROM_DOMAIN_NOVOWEL="From=/\@\S*[bcdfghjklmnpqrstvwxz]{7}/Hi";
  151. $FROM_LOCAL_NOVOWEL="From=/[bcdfghjklmnpqrstvwxz]{7}\S*\@/Hi";
  152. $FROM_LOCAL_HEX="From=/[0-9a-f]{11}\S*\@/iH";
  153. $FROM_LOCAL_DIGITS="From=/\d{11}\S*\@/iH";