Rspamd 2.0 ์ŠคํŒธ ํ•„ํ„ฐ๋ง ์‹œ์Šคํ…œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

๋„์ž… ์ŠคํŒธ ํ•„ํ„ฐ๋ง ์‹œ์Šคํ…œ ์ถœ์‹œ RSํŒœ๋“œ 2.0๋Š” ์ฐจ๋‹จ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์ตœ์ข… ๋ฉ”์‹œ์ง€ ๊ฐ€์ค‘์น˜๊ฐ€ ํ˜•์„ฑ๋˜๋Š” ๊ทœ์น™, ํ†ต๊ณ„ ๋ฐฉ๋ฒ• ๋ฐ ๋ธ”๋ž™๋ฆฌ์ŠคํŠธ๋ฅผ ํฌํ•จํ•œ ๋‹ค์–‘ํ•œ ๊ธฐ์ค€์— ๋”ฐ๋ผ ๋ฉ”์‹œ์ง€๋ฅผ ํ‰๊ฐ€ํ•˜๋Š” ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Rspamd๋Š” SpamAssassin์— ๊ตฌํ˜„๋œ ๊ฑฐ์˜ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜๋ฉฐ SpamAssassin๋ณด๋‹ค ํ‰๊ท  10๋ฐฐ ๋น ๋ฅด๊ฒŒ ๋ฉ”์ผ์„ ํ•„ํ„ฐ๋งํ•  ์ˆ˜ ์žˆ์„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋” ๋‚˜์€ ํ•„ํ„ฐ๋ง ํ’ˆ์งˆ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ”๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ ์ฝ”๋“œ๋Š” C๋กœ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ ๋ฐฐํฌ์ž Apache 2.0์— ๋”ฐ๋ผ ๋ผ์ด์„ผ์Šค๊ฐ€ ๋ถ€์—ฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Rspamd๋Š” ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ์ถ•๋˜์—ˆ์œผ๋ฉฐ ์ฒ˜์Œ์—๋Š” ๋กœ๋“œ๊ฐ€ ๋งŽ์€ ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉํ•˜๋„๋ก ์„ค๊ณ„๋˜์–ด ์ดˆ๋‹น ์ˆ˜๋ฐฑ ๊ฐœ์˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ŠคํŒธ ์ง•ํ›„๋ฅผ ์‹๋ณ„ํ•˜๋Š” ๊ทœ์น™์€ ๋งค์šฐ ์œ ์—ฐํ•˜๋ฉฐ ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ํ˜•ํƒœ์—์„œ๋Š” ์ •๊ทœ ํ‘œํ˜„์‹์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ณด๋‹ค ๋ณต์žกํ•œ ์ƒํ™ฉ์—์„œ๋Š” Lua๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋Šฅ ํ™•์žฅ๊ณผ ์ƒˆ๋กœ์šด ์œ ํ˜•์˜ ๊ฒ€์‚ฌ ์ถ”๊ฐ€๋Š” C ๋ฐ Lua ์–ธ์–ด๋กœ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“ˆ์„ ํ†ตํ•ด ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด SPF๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณด๋‚ธ ์‚ฌ๋žŒ์„ ํ™•์ธํ•˜๊ณ , DKIM์„ ํ†ตํ•ด ๋ณด๋‚ธ ์‚ฌ๋žŒ์˜ ๋„๋ฉ”์ธ์„ ํ™•์ธํ•˜๊ณ , DNSBL ๋ชฉ๋ก์— ๋Œ€ํ•œ ์š”์ฒญ์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐ ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ตฌ์„ฑ์„ ๋‹จ์ˆœํ™”ํ•˜๊ณ , ๊ทœ์น™์„ ์ƒ์„ฑํ•˜๊ณ , ํ†ต๊ณ„๋ฅผ ์ถ”์ ํ•˜๊ธฐ ์œ„ํ•ด ๊ด€๋ฆฌ ์›น ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

์ฃผ์š” ํ˜์‹ :

  • ์ƒˆ๋กœ์šด ์ด์Šˆ ๋ฒˆํ˜ธ ์ฒด๊ณ„๋กœ ์ „ํ™˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฒ„์ „ ๋ฒˆํ˜ธ์˜ ์ฒซ ๋ฒˆ์งธ ์ˆซ์ž๋Š” ๋ช‡ ๋…„ ๋™์•ˆ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•˜๊ณ  ์‹ค์ œ ๋ฒ„์ „ ํ‘œ์‹œ๋Š” ๋‘ ๋ฒˆ์งธ ์ˆซ์ž์ด๋ฏ€๋กœ "xyz" ๊ตฌ์„ฑํ‘œ ๋Œ€์‹  "yz" ํ˜•์‹์œผ๋กœ ์ „ํ™˜ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๋Œ€์‹  ์ด๋ฒคํŠธ ๋ฃจํ”„์˜ ๊ฒฝ์šฐ ๋ฆฌ๋ฒ ๋ฒคํŠธ ๊ด€๋ จ๋œ ๋„์„œ๊ด€ ๋ฆฌ๋ฒ ํ”„, libevent์˜ ์ œํ•œ ์‚ฌํ•ญ ์ค‘ ์ผ๋ถ€๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ๋” ๋‚˜์€ ์„ฑ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์šฉ๋ฒ•
    libev๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ฝ”๋“œ๋ฅผ ๋‹จ์ˆœํ™”ํ•˜๊ณ , ์‹ ํ˜ธ ๋ฐ ์‹œ๊ฐ„ ์ดˆ๊ณผ ์ฒ˜๋ฆฌ๋ฅผ ๊ฐœ์„ ํ•˜๊ณ , inotify ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ ๋ณ€๊ฒฝ ์ถ”์ ์„ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์ง€์›๋˜๋Š” ํ”Œ๋žซํผ์šฉ์œผ๋กœ ์ถœ์‹œ๋œ ๋ชจ๋“  libevent ๋ฆด๋ฆฌ์Šค๊ฐ€ inotify์™€ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค).

  • Torch ๋”ฅ ๋จธ์‹  ๋Ÿฌ๋‹ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”์‹œ์ง€ ๋ถ„๋ฅ˜ ๋ชจ๋“ˆ์— ๋Œ€ํ•œ ์ง€์›์ด ์ค‘๋‹จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ธ์šฉ๋œ ์ด์œ ๋Š” Torch์˜ ๊ณผ๋„ํ•œ ๋ณต์žก์„ฑ๊ณผ ์ด๋ฅผ ์ตœ์‹  ์ƒํƒœ๋กœ ์œ ์ง€ํ•˜๋Š” ๋ฐ ๋”ฐ๋ฅธ ๋ณต์žก์„ฑ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ธฐ๊ณ„ ํ•™์Šต ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•œ ๋ถ„๋ฅ˜๋ฅผ ๋Œ€์ฒดํ•˜๊ธฐ ์œ„ํ•ด ์™„์ „ํžˆ ๋‹ค์‹œ ์ž‘์„ฑ๋œ ๋ชจ๋“ˆ์ด ์ œ์•ˆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์‹ ๊ฒฝ, ์‹ ๊ฒฝ๋ง์˜ ์ž‘๋™์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. kann, ์—ฌ๊ธฐ์—๋Š” 4000์ค„์˜ C ์ฝ”๋“œ๋งŒ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๊ตฌํ˜„์€ ํ›ˆ๋ จ ์ค‘ ๊ต์ฐฉ ์ƒํƒœ ๋ฐœ์ƒ๊ณผ ๊ด€๋ จ๋œ ๋งŽ์€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.
  • ๊ธฐ์ค€ ์น˜์ˆ˜ RBL SURBL ๋ฐ ์ด๋ฉ”์ผ ๋ชจ๋“ˆ์„ ๊ต์ฒดํ•˜์—ฌ ๋ชจ๋“  ๋ธ”๋ž™๋ฆฌ์ŠคํŠธ ํ™•์ธ ์ฒ˜๋ฆฌ๋ฅผ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. RBL์˜ ๊ธฐ๋Šฅ์€ ์„ ํƒ๊ธฐ์™€ ๊ฐ™์€ ์ถ”๊ฐ€ ์œ ํ˜•์— ๋Œ€ํ•œ ์ง€์›๊ณผ ๊ธฐ์กด ๊ทœ์น™์„ ์‰ฝ๊ฒŒ ํ™•์žฅํ•˜๊ธฐ ์œ„ํ•œ ๋„๊ตฌ๋ฅผ ํฌํ•จํ•˜๋„๋ก ํ™•์žฅ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. DNS RBL ๋Œ€์‹  ๋งต ๋ชฉ๋ก์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ์ด๋ฉ”์ผ ์ฐจ๋‹จ ๊ทœ์น™์€ ๋” ์ด์ƒ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  ์„ ํƒ๊ธฐ์™€ ํ•จ๊ป˜ ๋ฉ€ํ‹ฐ๋งต์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
  • ์ฝ˜ํ…์ธ ์— ๋”ฐ๋ผ ํŒŒ์ผ ํ˜•์‹์„ ๊ฒฐ์ •ํ•˜๊ธฐ ์œ„ํ•ด libmagic ๋Œ€์‹  Lua ๋ฐ Hyperscan์„ ์‚ฌ์šฉํ•˜๋Š” ์ƒˆ๋กœ์šด Lua Magic ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
    ์ž์‹ ๋งŒ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋งŒ๋“œ๋Š” ์ด์œ ์—๋Š” ๋” ๋†’์€ ์„ฑ๋Šฅ์„ ๋‹ฌ์„ฑํ•˜๊ณ , docx ํŒŒ์ผ์„ ์‹๋ณ„ํ•  ๋•Œ ์‹คํŒจ๋ฅผ ์—†์• ๊ณ , ๋ณด๋‹ค ์ ํ•ฉํ•œ API๋ฅผ ์–ป๊ณ , ์—„๊ฒฉํ•œ ๊ทœ์น™์— ์˜ํ•ด ์ œํ•œ๋˜์ง€ ์•Š๋Š” ์ƒˆ๋กœ์šด ์œ ํ˜•์˜ ๊ฒฝํ—˜์  ๋ฐฉ๋ฒ•์„ ์ถ”๊ฐ€ํ•˜๋ ค๋Š” ์š•๊ตฌ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

  • DBMS์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ชจ๋“ˆ ๊ฐœ์„  ํด๋ฆญํ•˜์šฐ์Šค. LowCardinality ํ•„๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋น„๋ฅผ ํฌ๊ฒŒ ์ตœ์ ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๋ชจ๋“ˆ ๊ธฐ๋Šฅ ํ™•์žฅ ๋ฉ€ํ‹ฐ ๋งต, ์ง€์›์ด ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. ๊ฒฐํ•ฉ ะธ ๋งค๋‹ฌ๋ฆฐ ๋น„๊ต;
  • Maillist ๋ชจ๋“ˆ์€ ๋ฉ”์ผ๋ง ๋ฆฌ์ŠคํŠธ์˜ ์ •์˜๋ฅผ ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์ด์ œ ์ž‘์—…์ž ํ”„๋กœ์„ธ์Šค๋Š” ํ•˜ํŠธ๋น„ํŠธ ๋ฉ”์‹œ์ง€๋ฅผ ๊ธฐ๋ณธ ํ”„๋กœ์„ธ์Šค๋กœ ๋ณด๋‚ด ์ •์ƒ ์ž‘๋™์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠน์ • ์‹œ๊ฐ„ ๋™์•ˆ ์ด๋Ÿฌํ•œ ๋ฉ”์‹œ์ง€๊ฐ€ ์—†์œผ๋ฉด ๊ธฐ๋ณธ ํ”„๋กœ์„ธ์Šค๋Š” ์ž‘์—…์ž ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ•์ œ ์ข…๋ฃŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์ด ๋ชจ๋“œ๋Š” ํ˜„์žฌ ๋น„ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • Lua ์–ธ์–ด์˜ ์ƒˆ๋กœ์šด ์Šค์บ๋„ˆ ์‹œ๋ฆฌ์ฆˆ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Kaspersky ScanEngine, Trend Micro IWSVA(icap์„ ํ†ตํ•ด) ๋ฐ
    F-Secure Internet Gatekeeper(icap์„ ํ†ตํ•ด), Razor, oletools ๋ฐ P0F์šฉ ์™ธ๋ถ€ ์Šค์บ๋„ˆ๋„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

  • Lua API๋ฅผ ํ†ตํ•ด ๋ฉ”์‹œ์ง€๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. MIME ๋ธ”๋ก์„ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•œ ๋ชจ๋“ˆ์ด ์ œ์•ˆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. lib_mime;
  • "Settings-Id:"๋ฅผ ํ†ตํ•ด ์„ค์ •๋œ ์„ค์ •์— ๋Œ€ํ•œ ๋ณ„๋„์˜ ์ฒ˜๋ฆฌ๊ฐ€ ์ œ๊ณต๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ด์ œ ํŠน์ • ์„ค์ • ์‹๋ณ„์ž์—๋งŒ ๊ทœ์น™์„ ๋ฐ”์ธ๋”ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Lua ์—”์ง„, base64 ๋””์ฝ”๋”ฉ ๋ฐ ํ…์ŠคํŠธ ์–ธ์–ด ๊ฐ์ง€ ์„ฑ๋Šฅ์ด ์ตœ์ ํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ณต์žกํ•œ ์ง€๋„ ์บ์‹ฑ์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ง€์› ๊ตฌํ˜„
    HTTP ์—ฐ๊ฒฐ ์œ ์ง€.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€