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.

102_multimap.robot 9.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344
  1. *** Settings ***
  2. Suite Setup Multimap Setup
  3. Suite Teardown Multimap Teardown
  4. Library ${TESTDIR}/lib/rspamd.py
  5. Resource ${TESTDIR}/lib/rspamd.robot
  6. Variables ${TESTDIR}/lib/vars.py
  7. *** Variables ***
  8. ${CONFIG} ${TESTDIR}/configs/plugins.conf
  9. ${MESSAGE} ${TESTDIR}/messages/spam_message.eml
  10. ${UTF_MESSAGE} ${TESTDIR}/messages/utf.eml
  11. ${REDIS_SCOPE} Suite
  12. ${RSPAMD_SCOPE} Suite
  13. ${RCVD1} ${TESTDIR}/messages/received1.eml
  14. ${RCVD2} ${TESTDIR}/messages/received2.eml
  15. ${RCVD3} ${TESTDIR}/messages/received3.eml
  16. ${RCVD4} ${TESTDIR}/messages/received4.eml
  17. ${URL1} ${TESTDIR}/messages/url1.eml
  18. ${URL2} ${TESTDIR}/messages/url2.eml
  19. ${URL3} ${TESTDIR}/messages/url3.eml
  20. ${URL4} ${TESTDIR}/messages/url4.eml
  21. ${URL5} ${TESTDIR}/messages/url5.eml
  22. ${URL_TLD} ${TESTDIR}/../lua/unit/test_tld.dat
  23. ${FREEMAIL_CC} ${TESTDIR}/messages/freemailcc.eml
  24. ${URL_ICS} ${TESTDIR}/messages/ics.eml
  25. *** Test Cases ***
  26. URL_ICS
  27. Scan File ${URL_ICS}
  28. Expect URL test.com
  29. MAP - DNSBL HIT
  30. Scan File ${MESSAGE} IP=127.0.0.2
  31. Expect Symbol DNSBL_MAP
  32. MAP - DNSBL MISS
  33. Scan File ${MESSAGE} IP=127.0.0.1
  34. Do Not Expect Symbol DNSBL_MAP
  35. MAP - IP HIT
  36. Scan File ${MESSAGE} IP=127.0.0.1
  37. Expect Symbol IP_MAP
  38. MAP - IP MISS
  39. Scan File ${MESSAGE} IP=127.0.0.2
  40. Do Not Expect Symbol IP_MAP
  41. MAP - IP MASK
  42. Scan File ${MESSAGE} IP=10.1.0.10
  43. Expect Symbol IP_MAP
  44. MAP - IP MASK MISS
  45. Scan File ${MESSAGE} IP=11.1.0.10
  46. Do Not Expect Symbol IP_MAP
  47. MAP - IP V6
  48. Scan File ${MESSAGE} IP=::1
  49. Expect Symbol IP_MAP
  50. MAP - IP V6 MISS
  51. Scan File ${MESSAGE} IP=fe80::1
  52. Do Not Expect Symbol IP_MAP
  53. MAP - FROM
  54. Scan File ${MESSAGE} From=user@example.com
  55. Expect Symbol FROM_MAP
  56. MAP - COMBINED IP MASK FROM
  57. Scan File ${MESSAGE} IP=10.1.0.10 From=user@example.com
  58. Expect Symbol With Score COMBINED_MAP_AND 10
  59. Expect Symbol COMBINED_MAP_OR
  60. MAP - COMBINED IP MASK ONLY
  61. Scan File ${MESSAGE} IP=10.1.0.10
  62. Do Not Expect Symbol COMBINED_MAP_AND
  63. Expect Symbol COMBINED_MAP_OR
  64. MAP - COMBINED FROM ONLY
  65. Scan File ${MESSAGE} From=user@example.com
  66. Do Not Expect Symbol COMBINED_MAP_AND
  67. Expect Symbol COMBINED_MAP_OR
  68. MAP - COMBINED MISS
  69. Scan File ${MESSAGE} IP=11.1.0.10 From=user@other.com
  70. Do Not Expect Symbol COMBINED_MAP_AND
  71. Do Not Expect Symbol COMBINED_MAP_OR
  72. MAP - FROM MISS
  73. Scan File ${MESSAGE} From=user@other.com
  74. Do Not Expect Symbol FROM_MAP
  75. MAP - FROM REGEXP
  76. Scan File ${MESSAGE} From=user123@test.com
  77. Expect Symbol REGEXP_MAP
  78. Scan File ${MESSAGE} From=somebody@example.com
  79. Expect Symbol REGEXP_MAP
  80. MAP - FROM REGEXP MISS
  81. Scan File ${MESSAGE} From=user@other.org
  82. Do Not Expect Symbol REGEXP_MAP
  83. MAP - RCPT DOMAIN HIT
  84. Scan File ${MESSAGE} Rcpt=user@example.com
  85. Expect Symbol RCPT_DOMAIN
  86. MAP - RCPT DOMAIN MISS
  87. Scan File ${MESSAGE} Rcpt=example.com@user
  88. Do Not Expect Symbol RCPT_DOMAIN
  89. MAP - RCPT USER HIT
  90. Scan File ${MESSAGE} Rcpt=bob@example.com
  91. Expect Symbol RCPT_USER
  92. MAP - RCPT USER MISS
  93. Scan File ${MESSAGE} From=example.com@bob
  94. Do Not Expect Symbol RCPT_USER
  95. MAP - DEPENDS HIT
  96. Scan File ${MESSAGE} IP=88.99.142.95 From=user123@rspamd.com
  97. Expect Symbol DEPS_MAP
  98. MAP - DEPENDS MISS
  99. Scan File ${MESSAGE} IP=1.2.3.4 From=user123@rspamd.com
  100. Do Not Expect Symbol DEPS_MAP
  101. MAP - MULSYM PLAIN
  102. Scan File ${MESSAGE} Rcpt=user1@example.com
  103. Expect Symbol RCPT_MAP
  104. MAP - MULSYM SCORE
  105. Scan File ${MESSAGE} Rcpt=user2@example.com
  106. Expect Symbol With Score RCPT_MAP 10.0
  107. MAP - MULSYM SYMBOL
  108. Scan File ${MESSAGE} Rcpt=user3@example.com
  109. Expect Symbol With Score SYM1 1.0
  110. MAP - MULSYM SYMBOL MISS
  111. Scan File ${MESSAGE} Rcpt=user4@example.com
  112. Expect Symbol With Score RCPT_MAP 1.0
  113. MAP - MULSYM SYMBOL + SCORE
  114. Scan File ${MESSAGE} Rcpt=user5@example.com
  115. Expect Symbol With Score SYM1 -10.1
  116. MAP - UTF
  117. Scan File ${UTF_MESSAGE}
  118. Expect Symbol HEADER_MAP
  119. MAP - UTF MISS
  120. Scan File ${MESSAGE}
  121. Do Not Expect Symbol HEADER_MAP
  122. MAP - HOSTNAME
  123. Scan File ${MESSAGE} IP=127.0.0.1 Hostname=example.com
  124. Expect Symbol HOSTNAME_MAP
  125. MAP - HOSTNAME MISS
  126. Scan File ${MESSAGE} IP=127.0.0.1 Hostname=rspamd.com
  127. Do Not Expect Symbol HOSTNAME_MAP
  128. MAP - TOP
  129. Scan File ${MESSAGE} IP=127.0.0.1 Hostname=example.com.au
  130. Expect Symbol HOSTNAME_TOP_MAP
  131. MAP - TOP MISS
  132. Scan File ${MESSAGE} IP=127.0.0.1 Hostname=example.com.bg
  133. Do Not Expect Symbol HOSTNAME_TOP_MAP
  134. MAP - CDB - HOSTNAME
  135. Scan File ${MESSAGE} IP=127.0.0.1 Hostname=example.com
  136. Expect Symbol CDB_HOSTNAME
  137. MAP - CDB - HOSTNAME MISS
  138. Scan File ${MESSAGE} IP=127.0.0.1 Hostname=rspamd.com
  139. Do Not Expect Symbol CDB_HOSTNAME
  140. MAP - REDIS - HOSTNAME
  141. Redis HSET hostname redistest.example.net ${EMPTY}
  142. Scan File ${MESSAGE} IP=127.0.0.1 Hostname=redistest.example.net
  143. Expect Symbol REDIS_HOSTNAME
  144. MAP - REDIS - HOSTNAME MISS
  145. Scan File ${MESSAGE} IP=127.0.0.1 Hostname=rspamd.com
  146. Do Not Expect Symbol REDIS_HOSTNAME
  147. MAP - REDIS - HOSTNAME - EXPANSION - HIT
  148. Redis HSET 127.0.0.1.foo.com redistest.example.net ${EMPTY}
  149. Scan File ${MESSAGE} IP=127.0.0.1 Hostname=redistest.example.net Rcpt=bob@foo.com
  150. Expect Symbol REDIS_HOSTNAME_EXPANSION
  151. MAP - REDIS - HOSTNAME - EXPANSION - MISS
  152. Scan File ${MESSAGE} IP=127.0.0.1 Hostname=redistest.example.net Rcpt=bob@bar.com
  153. Do Not Expect Symbol REDIS_HOSTNAME_EXPANSION
  154. MAP - REDIS - IP
  155. Redis HSET ipaddr 127.0.0.1 ${EMPTY}
  156. Scan File ${MESSAGE} IP=127.0.0.1
  157. Expect Symbol REDIS_IPADDR
  158. MAP - REDIS - IP - MISS
  159. Scan File ${MESSAGE} IP=8.8.8.8
  160. Do Not Expect Symbol REDIS_IPADDR
  161. MAP - REDIS - FROM
  162. Redis HSET emailaddr from@rspamd.tk ${EMPTY}
  163. Scan File ${MESSAGE} From=from@rspamd.tk
  164. Expect Symbol REDIS_FROMADDR
  165. MAP - REDIS - FROM MISS
  166. Scan File ${MESSAGE} From=user@other.com
  167. Do Not Expect Symbol REDIS_FROMADDR
  168. MAP - REDIS - URL TLD - HIT
  169. Redis HSET hostname example.com ${EMPTY}
  170. Scan File ${URL1}
  171. Expect Symbol REDIS_URL_TLD
  172. MAP - REDIS - URL TLD - MISS
  173. Scan File ${URL2}
  174. Do Not Expect Symbol REDIS_URL_TLD
  175. MAP - REDIS - URL RE FULL - HIT
  176. Redis HSET fullurlre html ${EMPTY}
  177. Scan File ${URL2}
  178. Expect Symbol REDIS_URL_RE_FULL
  179. MAP - REDIS - URL RE FULL - MISS
  180. Scan File ${URL1}
  181. Do Not Expect Symbol REDIS_URL_RE_FULL
  182. MAP - REDIS - URL FULL - HIT
  183. Redis HSET fullurl https://www.example.com/foo?a=b ${EMPTY}
  184. Scan File ${URL1}
  185. Expect Symbol REDIS_URL_FULL
  186. MAP - REDIS - URL FULL - MISS
  187. Scan File ${URL2}
  188. Do Not Expect Symbol REDIS_URL_FULL
  189. MAP - REDIS - URL PHISHED - HIT
  190. Redis HSET phishedurl www.rspamd.com ${EMPTY}
  191. Scan File ${URL3}
  192. Expect Symbol REDIS_URL_PHISHED
  193. MAP - REDIS - URL PHISHED - MISS
  194. Scan File ${URL4}
  195. Do Not Expect Symbol REDIS_URL_PHISHED
  196. MAP - REDIS - URL PLAIN REGEX - HIT
  197. Redis HSET urlre www ${EMPTY}
  198. Scan File ${URL3}
  199. Expect Symbol REDIS_URL_RE_PLAIN
  200. MAP - REDIS - URL PLAIN REGEX - MISS
  201. Scan File ${URL4}
  202. Do Not Expect Symbol REDIS_URL_RE_PLAIN
  203. MAP - REDIS - URL TLD REGEX - HIT
  204. Redis HSET tldre net ${EMPTY}
  205. Scan File ${URL5}
  206. Expect Symbol REDIS_URL_RE_TLD
  207. MAP - REDIS - URL TLD REGEX - MISS
  208. Scan File ${URL4}
  209. Do Not Expect Symbol REDIS_URL_RE_TLD
  210. MAP - REDIS - URL NOFILTER - HIT
  211. Redis HSET urlnofilter www.example.net ${EMPTY}
  212. Scan File ${URL5}
  213. Expect Symbol REDIS_URL_NOFILTER
  214. MAP - REDIS - URL NOFILTER - MISS
  215. Scan File ${URL4}
  216. Do Not Expect Symbol REDIS_URL_NOFILTER
  217. MAP - REDIS - ASN - HIT
  218. Redis HSET asn 15169 ${EMPTY}
  219. Scan File ${MESSAGE} IP=8.8.8.8
  220. Expect Symbol REDIS_ASN
  221. MAP - REDIS - ASN - MISS
  222. Scan File ${MESSAGE} IP=46.228.47.114
  223. Do Not Expect Symbol REDIS_ASN
  224. MAP - REDIS - CC - HIT
  225. Redis HSET cc US ${EMPTY}
  226. Scan File ${MESSAGE} IP=8.8.8.8
  227. Expect Symbol REDIS_COUNTRY
  228. MAP - REDIS - CC - MISS
  229. Scan File ${MESSAGE} IP=46.228.47.114
  230. Do Not Expect Symbol REDIS_COUNTRY
  231. MAP - REDIS - ASN FILTERED - HIT
  232. Redis HSET asn 1 ${EMPTY}
  233. Scan File ${MESSAGE} IP=8.8.8.8
  234. Expect Symbol REDIS_ASN_FILTERED
  235. MAP - REDIS - ASN FILTERED - MISS
  236. Scan File ${MESSAGE} IP=46.228.47.114
  237. Do Not Expect Symbol REDIS_ASN_FILTERED
  238. MAP - RECEIVED - IP MINMAX POS - ONE
  239. Scan File ${RCVD1}
  240. Expect Symbol RCVD_TEST_01
  241. Do Not Expect Symbol RCVD_TEST_02
  242. # Relies on parsing of shitty received
  243. #MAP - RECEIVED - IP MINMAX POS - TWO / RCVD_AUTHED_ONE HIT
  244. # Scan File ${RCVD2}
  245. # Expect Symbol RCVD_TEST_02
  246. # Do Not Expect Symbol RCVD_TEST_01
  247. # Expect Symbol RCVD_AUTHED_ONE
  248. MAP - RECEIVED - REDIS
  249. Redis HSET RCVD_TEST 2a01:7c8:aab6:26d:5054:ff:fed1:1da2 ${EMPTY}
  250. Scan File ${RCVD1}
  251. Expect Symbol RCVD_TEST_REDIS_01
  252. RCVD_AUTHED_ONE & RCVD_AUTHED_TWO - MISS
  253. Scan File ${RCVD3}
  254. Do Not Expect Symbol RCVD_AUTHED_ONE
  255. Do Not Expect Symbol RCVD_AUTHED_TWO
  256. RCVD_AUTHED_TWO HIT / RCVD_AUTHED_ONE MISS
  257. Scan File ${RCVD4}
  258. Expect Symbol RCVD_AUTHED_TWO
  259. Do Not Expect Symbol RCVD_AUTHED_ONE
  260. FREEMAIL_CC
  261. Scan File ${FREEMAIL_CC}
  262. Expect Symbol With Score And Exact Options FREEMAIL_CC 19.00 test.com test1.com test2.com test3.com test4.com test5.com test6.com test7.com test8.com test9.com test10.com test11.com test12.com test13.com test14.com
  263. *** Keywords ***
  264. Multimap Setup
  265. ${PLUGIN_CONFIG} = Get File ${TESTDIR}/configs/multimap.conf
  266. Set Suite Variable ${PLUGIN_CONFIG}
  267. Generic Setup PLUGIN_CONFIG
  268. Run Redis
  269. Multimap Teardown
  270. Normal Teardown
  271. Shutdown Process With Children ${REDIS_PID}