Postfix 3.11.0 ๋ฉ”์ผ ์„œ๋ฒ„ ๊ฒŒ์‹œ

1๋…„๊ฐ„์˜ ๊ฐœ๋ฐœ ๋์— Postfix ๋ฉ”์ผ ์„œ๋ฒ„์˜ ์ƒˆ๋กœ์šด ์•ˆ์ • ๋ฒ„์ „์ธ 3.12.0์ด ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋™์‹œ์— 2022๋…„ ์ดˆ์— ์ถœ์‹œ๋œ Postfix 3.7์— ๋Œ€ํ•œ ์ง€์›์€ ์ค‘๋‹จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์ ํŠธ์˜ ์ฝ”๋“œ๋Š” C ์–ธ์–ด๋กœ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ EPL 2.0(Eclipse Public License) ๋ฐ IPL 1.0(IBM Public License)์— ๋”ฐ๋ผ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.

Postfix๋Š” ๋†’์€ ๋ณด์•ˆ์„ฑ, ์•ˆ์ •์„ฑ ๋ฐ ์„ฑ๋Šฅ์„ ๋™์‹œ์— ๊ฐ–์ถ˜ ๋ณด๊ธฐ ๋“œ๋ฌธ ํ”„๋กœ์ ํŠธ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๊ฐœ๋ณ„ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ๊ฒฉ๋ฆฌํ•˜๋Š” ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค ์•„ํ‚คํ…์ฒ˜์™€ ์—„๊ฒฉํ•œ ์ฝ”๋“œ ๊ตฌ์กฐ ๋ฐ ํŒจ์น˜ ๊ฐ์‚ฌ ์ •์ฑ…์„ ํ†ตํ•ด ๋‹ฌ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ์˜ค๋ฅ˜๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด Postfix ํ”„๋กœ์ ํŠธ๋Š” ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ๋ฐ ํ• ๋‹น ํ•ด์ œ ํ•จ์ˆ˜์˜ ๋ณดํ˜ธ๋œ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋ฉฐ, ๋ฒ„ํผ ๊ด€๋ฆฌ(๋ฒ„ํผ ์˜ค๋ฒ„๋Ÿฐ ๊ฒ€์‚ฌ ๋ฐ ํ•ด์ œ๋œ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ), ํŒŒ์ผ ์ž‘์—…, ์ถœ๋ ฅ ํ˜•์‹ ์ง€์ •, ๋ฒ„ํผ๋ง๋œ I/O ๋ฐ ๋ฌธ์ž์—ด ์กฐ์ž‘(์ž„์˜ ํฌ๊ธฐ ๋ฌธ์ž์—ด ์ฒ˜๋ฆฌ ๋ฐ ์ž๋™ ๋ฌธ์ž์—ด ํฌ๊ธฐ ์กฐ์ • ๊ธฐ๋Šฅ ํฌํ•จ)์„ ์œ„ํ•œ ์ถ”์ƒ ๋ž˜ํผ ํ•จ์ˆ˜ ์„ธํŠธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์•ฝ 500๋งŒ ๊ฑด์˜ ์šฐํŽธ๋ฌผ์„ ๋Œ€์ƒ์œผ๋กœ ์‹ค์‹œํ•œ ์ตœ์ข… ์ž๋™ ์กฐ์‚ฌ์— ๋”ฐ๋ฅด๋ฉด ์„œ๋ฒ„ (๋ณด๊ณ ์„œ ๋ฐœํ–‰์€ 2025๋…„ 7์›” ์ดํ›„ ์ค‘๋‹จ๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.) Postfix๋Š” ๋ฉ”์ผ ์„œ๋ฒ„์˜ 37.88%(1๋…„ ์ „ 36.81%)์—์„œ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์œผ๋ฉฐ, Exim์€ 55.59%(1๋…„ ์ „ 56.61%), Sendmail์€ 3.55%(3.60%), MailEnable์€ 1.81%(1.82%), MDaemon์€ 0.40%(0.40%), Microsoft Exchange๋Š” 0.20%(0.19%), OpenSMTPD๋Š” 0.12%(0.09%)๋ฅผ ์ฐจ์ง€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

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

  • ์ผ๋ถ€ Linux ๋ฐฐํฌํŒ์—์„œ BerkeleyDB ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ง€์›์ด ์ค‘๋‹จ๋จ์— ๋”ฐ๋ผ "hash:" ๋ฐ "btree:" ์กฐํšŒ ํ…Œ์ด๋ธ”์—์„œ "lmdb:" ๋˜๋Š” "cdb:"๋กœ์˜ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ๊ฐ„์†Œํ™”ํ•˜๋Š” ์ž‘์—…์ด ์ง„ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”์ผ๋ง ๋ฆฌ์ŠคํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•  ๋•Œ "postmap hash:/path/to/file" ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋Š” Mailman ๋„๊ตฌ์™€์˜ ํ˜ธํ™˜์„ฑ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด Postfix๋Š” ์ด์ œ ์ด๋Ÿฌํ•œ ๋ช…๋ น์„ ์ง€์›๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์œ ํ˜•์„ ์‚ฌ์šฉํ•˜๋Š” ๋ณ€ํ˜• ๋ช…๋ น์œผ๋กœ ์ž๋™ ๋ฆฌ๋””๋ ‰์…˜ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ธฐ๋ณธ์ ์œผ๋กœ TLS ์•”ํ˜ธํ™”๋ฅผ ์‚ฌ์šฉํ•˜๋Š” SMTP ์„œ๋ฒ„ ์—ฐ๊ฒฐ์€ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. Postfix๊ฐ€ TLS ์ง€์› ๊ธฐ๋Šฅ์„ ํฌํ•จํ•˜์—ฌ ๋นŒ๋“œ๋œ ๊ฒฝ์šฐ SMTP ํด๋ผ์ด์–ธํŠธ ์„ค์ •์—์„œ smtp_tls_security_level ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ "may"๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค. "may" ๊ฐ’์€ ์•”ํ˜ธํ™”๋ฅผ ์ง€์›ํ•˜๋Š” ์„œ๋ฒ„์— ๋Œ€ํ•ด TLS๋ฅผ ํ™œ์„ฑํ™”ํ•˜์ง€๋งŒ, ์„œ๋ฒ„๊ฐ€ TLS๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ํ‰๋ฌธ ๋ฐ์ดํ„ฐ ์ „์†ก์œผ๋กœ ๋Œ€์ฒด๋˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
  • ESMTP๋Š” ๋ฐœ์‹ ์ž๊ฐ€ ๋ฉ”์‹œ์ง€ ์ „๋‹ฌ ๊ฒฝ๋กœ ์ „์ฒด์— ๊ฑธ์ณ TLS ์•”ํ˜ธํ™”๋ฅผ ๋ณด์žฅํ•˜๋„๋ก ์š”์ฒญํ•  ์ˆ˜ ์žˆ๋Š” "REQUIRETLS" ํ™•์žฅ ๊ธฐ๋Šฅ(RFC 8689)์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ชจ๋“œ์—์„œ๋Š” ๋ฉ”์‹œ์ง€ ์ „๋‹ฌ์— ์ฐธ์—ฌํ•˜๋Š” ๋ชจ๋“  SMTP ๋˜๋Š” LMTP ์„œ๋ฒ„๊ฐ€ REQUIRETLS์™€ DANE ๋˜๋Š” STS๋ฅผ ํ†ตํ•œ ๊ฐ•๋ ฅํ•œ ์ธ์ฆ์„ ์ง€์›ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฉ”์‹œ์ง€๋ฅผ ๋‹ค๋ฅธ ์„œ๋ฒ„๋กœ ์ „๋‹ฌํ•  ๋•Œ๋„ REQUIRETLS๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์ด์ œ TLS ๋ณด์•ˆ ์ˆ˜์ค€์ด ๋กœ๊ทธ์— ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋ฉ”์‹œ์ง€ ์ „์†ก์— REQUIRETLS ์ˆ˜์ค€์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ REQUIRETLS ์‚ฌ์šฉ์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ๋กœ๊ทธ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
  • `smtp_tls_enforce_sts_mx_patterns` ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” Postfix SMTP ํด๋ผ์ด์–ธํŠธ์™€ STS ์†์„ฑ ๋ฆฌ๋””๋ ‰์…˜์„ ์œ„ํ•ด TLSRPT ์ง€์›์ด ํ•„์š”ํ•œ MTA-STS(MTA Strict Transport Security) ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ฐ„์˜ ํ˜ธํ™˜์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ™œ์„ฑํ™”๋˜๋ฉด Postfix SMTP ํด๋ผ์ด์–ธํŠธ๋Š” MX ์„œ๋ฒ„ ์ด๋ฆ„์ด STS ์ •์ฑ…์— ์ง€์ •๋œ ํŒจํ„ด๊ณผ ์ผ์น˜ํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ MX ์„œ๋ฒ„์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๊ธฐ์กด ๋™์ž‘ ๋ฐฉ์‹๋Œ€๋กœ ์„œ๋ฒ„ ์ธ์ฆ์„œ๊ฐ€ STS ์ •์ฑ…์„ ์ค€์ˆ˜ํ•˜๋Š” ๊ฒฝ์šฐ DNS MX ๋ ˆ์ฝ”๋“œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ MX ์„œ๋ฒ„์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. MTA-STS ๋ฉ”์ปค๋‹ˆ์ฆ˜์€ ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ์ฑ„๋„์„ ํ†ตํ•ด ์—ฐ๊ฒฐํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์•ˆ์ „ํ•œ TLS ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•๊ณผ ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ์ง€์›์€ `postfix-tlspol` ๋ฐ `postfix-mta-sts-resolver` ์œ ํ‹ธ๋ฆฌํ‹ฐ์—๋„ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • OpenSSL 3.5 ์ด์ƒ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜์—ฌ ๋นŒ๋“œํ•  ๋•Œ ์–‘์ž ๋‚ด์„ฑ ์•”ํ˜ธํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • 16๊ฐœ์˜ ๊ตฌ์„ฑ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์œผ๋ฉฐ, ํ•ด๋‹น ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ํ–ฅํ›„ ๋ฆด๋ฆฌ์Šค์—์„œ ์ œ๊ฑฐ๋  ์˜ˆ์ •์ž„์„ ์•Œ๋ฆฌ๋Š” ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€๊ฐ€ ๋กœ๊ทธ์— ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜์—๋Š” "virtual_maps", "fallback_relay", "postscreen_whitelist_interfaces" ๋ฐ "smtpd_client_connection_limit_exceptions"๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.
  • "postconf -j|-jM|-jF|-jP", "postalias -jq|-js", "postmap -jq|-js" ๋ฐ "postmulti -jl" ๋ช…๋ น์–ด์— ๋Œ€ํ•ด JSON ํ˜•์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์˜ค๋žœ ๊ธฐ๊ฐ„ ์œ ์ง€๋œ SMTP ์—ฐ๊ฒฐ์„ ํ†ตํ•ด ์ˆ˜์‹ ๋œ ๋ฉ”์‹œ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” Milter ํ•„ํ„ฐ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ์ด ๊ฐœ์„ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. #milter_default_action ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ "tempfail"์—์„œ "shutdown"์œผ๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ์œผ๋ฉฐ, ์ด๋Š” ํด๋ผ์ด์–ธํŠธ์™€์˜ ์—ฐ๊ฒฐ์„ ์ข…๋ฃŒํ•จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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