ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

728x90
๋ฐ˜์‘ํ˜•
SMTP๋Š” ์ด๋ฉ”์ผ์„ ๋ณด๋‚ด๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ํ”„๋กœํ† ์ฝœ์ด๋‹ค. ์ด๋Š” Postfix๋ฅผ ํ†ตํ•ด ๊ฐ„๋‹จํžˆ ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, SASL๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์— ์ƒ์„ธํ•œ ๊ตฌ์ถ•๋ฒ•์ด ์—†์–ด ์ด์— ๋Œ€ํ•ด ๋ช…ํ™•ํžˆ ์ •๋ฆฌํ•˜๊ณ  ๊ธฐ๋กํ•ด๋‘๊ณ ์ž ํ•œ๋‹ค.

 

SMTP?

 SMTP(Simple Mail Transfer Protocol)๋Š” ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ e-mail ์ „์†ก์— ์‚ฌ์šฉ๋˜๋Š” ํ”„๋กœํ† ์ฝœ์ด๋‹ค. HTTP, SIP์™€ ๊ฐ™์€ ์—ฌ๋Ÿฌ ํ”„๋กœํ† ์ฝœ์˜ ๋””์ž์ธ์„ ์ƒ์†ํ•˜๋ฉฐ, ์ „์†ก ๊ณ„์ธต์œผ๋กœ๋Š” TCP๋ฅผ ์ƒ์šฉํ•œ๋‹ค.

 

 ํŠน์ • ๋ฉ”์ผ ์„œ๋ฒ„๋กœ ๋ฉ”์ผ์„ ๋ณด๋‚ผ ๊ฒฝ์šฐ, SMTP๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ํ•˜์ง€๋งŒ ๋ฉ”์ผ ์„œ๋ฒ„์™€ ๋ฉ”์ผ ์„œ๋ฒ„ ์ฆ‰, relay host๋กœ ๋ฉ”์ผ์„ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” SMTP๋ณด๋‹ค๋Š” ์ฃผ๋กœ POP, IMAP, HTTP๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ”์ผ์„ ์ „์†กํ•œ๋‹ค.  SMTP์˜ `foramt`์€ `Header - Blank Line - Body`๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๊ณ , `Header`์—๋Š” From, to , Body format ๋“ฑ๊ณผ ๊ฐ™์€ ์ฃผ์š” ์ •๋ณด๊ฐ€ ๋“ค์–ด ์žˆ์œผ๋ฉฐ, `Body`๋Š” ๋ฉ”์ผ์˜ ๋‚ด์šฉ์ด๋‹ค.

 

Commands

  • HELO localhost
    • localhost์™€ handshaking
  • MAIL FROM : <test1@test.com>
    • ๋ฉ”์ผ์˜ ๋ณด๋‚ธ ์‚ฌ๋žŒ์˜ ์ฃผ์†Œ
    • ๋‚˜์˜ ๋ฉ”์ผ ์ฃผ์†Œ
  • RCPT TO : <test2@test.com>
    • ๋ฉ”์ผ ๋ฐ›๋Š” ์‚ฌ๋žŒ์˜ ์ฃผ์†Œ 
  • DATA : Start of body
  • . : Message End
  • QUIT : Close Connection
  • NOOP : No operation
  • RSET : Reset inputs

 ์ฆ‰, ์œ„์™€ ๊ฐ™์€ ์ปค๋งจ๋“œ๋ฅผ ํ†ตํ•ด `MAIL FROM`, `RCPT TO`, `DATA`, `.`์„ ํ†ตํ•ด ํ•˜๋‚˜์˜ ๋ฉ”์ผ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

 

Status codes

  • 1XX : ์ •๋ณด
  • 2XX : ์ž‘์—… ์„ฑ๊ณต๊ณผ ๊ด€๋ จ ์žˆ๋‹ค.
  • 3XX : ์‹คํ–‰ ์ค‘์ž„์„ ์˜๋ฏธํ•œ๋‹ค.
  • 4XX : ์ผ์‹œ์ ์ธ ์—๋Ÿฌ
  • 5XX : ๋ช…๋ฐฑํ•œ ์—๋Ÿฌ

 

Install

์•„๋ž˜์˜ ์„ค์น˜ ๋ฐ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์€ `ubuntu 16.04`์—์„œ ์ง„ํ–‰ํ•˜์˜€๋‹ค. (๋‹ค๋ฅธ ํ™˜๊ฒฝ์—์„œ๋Š” ๋‹ค์†Œ ์ฐจ์ด๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.) ๋˜ํ•œ, ์‹ค์ œ ์šด์˜์„ ์œ„ํ•œ ์„ค์น˜๋ณด๋‹ค๋Š” Postfix์—์„œ SASL๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ™˜๊ฒฝ์„ ๋‹จ์ˆœํžˆ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋”ฐ๋ผ์„œ, `๋„คํŠธ์›Œํฌ ์ ‘๊ทผ์— ๊ด€ํ•œ ์„ค์ •`, `๋ฉ”์ผ ๋‚ด์šฉ์˜ ์•”ํ˜ธํ™” (TLS)`๋Š” ์ƒ๋žตํ•˜์˜€๋‹ค.

 

Postfix

$ sudo apt install postfix

 ์œ„์™€ ๊ฐ™์ด ๋ช…๋ น์–ด ํ•œ ์ค„๋กœ, postfix๋ฅผ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ์„ค์น˜ ํŒŒ์ผ์„ ๋ฐ›์€ ํ›„์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด Configure ์ฐฝ์ด ๋œจ๊ฒŒ ๋œ๋‹ค. ์ด๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์ง„ํ–‰ํ•˜๋ฉด ๋œ๋‹ค.

์˜ค๋ฅธ์ชฝ ๋ฐฉํ–ฅํ‚ค๋ฅผ ๋ˆ„๋ฅด๋ฉด ์œ„์™€ ๊ฐ™์ด Ok๊ฐ€ ์„ ํƒ๋œ๋‹ค. (์—”ํ„ฐ)
Internet Site ์„ ํƒ
๋ณดํ†ต /etc/hosts์— ์„ค์ •๋œ ๊ฐ’์„ ์ง€์ •ํ•œ๋‹ค

 ์œ„์˜ ์„ค์ • ๊ฐ’๋“ค์€ `dpkg-reconfigure postfix`๋ฅผ ํ†ตํ•ด ์žฌ์„ค์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ์„ค์น˜ ์‹œ ์™„๋ฒฝํžˆ ์„ค์ •ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

 

$ vim /etc/postfix/main.cf

smtpd_sasl_local_domain =
smtpd_sasl_auth_enable = yes 
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes 
smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination

 sasl๋ฅผ ์œ„ํ•œ ์„ค์ • ๊ฐ’๋“ค์„ `/etc/postfix/main.cf`์˜ ํ•˜๋‹จ์— ์ถ”๊ฐ€ํ•œ๋‹ค. ํŒŒ์ผ์„ ์—ด์–ด ๋ณด๋ฉด ์•Œ๊ฒ ์ง€๋งŒ, `dpkg-reconfigure postfix`๋ฅผ ํ†ตํ•ด ์„ค์ •ํ•œ ๊ฐ’๋“ค์ด ์—ฌ๊ธฐ์— ์ €์žฅ๋จ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ, ๋‹ค์–‘ํ•œ ์˜ต์…˜์„ ์ง์ ‘ ์ˆ˜์ •ํ•ด์ฃผ์–ด๋„ ๋œ๋‹ค.

 

$ sudo vim /etc/postfix/sasl/smtpd.conf

pwcheck_method: saslauthd
mech_list: plain login

  smtpd.conf๋Š” ๊ธฐ์กด์— ์กด์žฌํ•˜์ง€ ์•Š๋Š” ํŒŒ์ผ์ด๋ฏ€๋กœ vim์„ ์œ„์˜ ๊ฐ’๋“ค์„ ์ €์žฅํ•˜์—ฌ ๋งŒ๋“ค์–ด์ค€๋‹ค. 2๊ฐ€์ง€ configure ํŒŒ์ผ์˜ ๊ฐ’์„ ์ •์ƒ์ ์„ ์ˆ˜์ •ํ•˜์˜€๋‹ค๋ฉด, `sudo service postfix reload`๋ฅผ ํ†ตํ•ด ๋ฐ˜์˜๋  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.

 

SASL

$ sudo apt install libsasl2-2 libsasl2-modules sasl2-bin

 sasl๋„ postfix์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ฐ„ํŽธํ•˜๊ฒŒ install ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

$ sudo vim /etc/default/saslauthd

START=yes
PWDIR="/var/spool/postfix/var/run/saslauthd"
PARAMS="-m ${PWDIR}"
PIDFILE="${PWDIR}/saslauthd.pid"

OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"

 ํ•ด๋‹น configure ํŒŒ์ผ์—์„œ, START๋ฅผ yes๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  `PWDIR`, `PARAMS`, `PIDFILE`๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค. ๋˜ํ•œ ๊ธฐ์กด ์˜ต์…˜์„ ์ฃผ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์œ„์™€ ๊ฐ™์€ ์˜ต์…˜์œผ๋กœ ๋ณ€๊ฒฝํ•œ๋‹ค. ๊ธฐ์กด `/var/spool/postfix`์—๋Š” `var` ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋”ฐ๋ผ์„œ ์•„๋ž˜์™€ ๊ฐ™์ด ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ์ด ํ•„์š”ํ•˜๋‹ค.

 

$ cd /var/spool/postfix
$ sudo mkdir -p var/run/saslauthd
$ sudo dpkg-statoverride --force --update --add root sasl 755 /var/spool/postfix/var/run/saslauthd

 ์ •์ƒ์ ์œผ๋กœ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜์˜€๋‹ค๋ฉด, `dpkg-statoverride`๋ฅผ ํ†ตํ•ด ํ•ด๋‹น ๊ฒฝ๋กœ๋ฅผ dpkg๋กœ ๊ฐฑ์‹ ํ•œ๋‹ค.

 

์ •์ƒ์ ์œผ๋กœ ์„ค์น˜ ๋œ ์ƒํƒœ๋ผ๋ฉด, ์œ„์™€ ๊ฐ™์ด sasl ํ”„๋กœ์„ธ์Šค 5๊ฐœ์™€ postfix ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰์ค‘์ด์–ด์•ผ ํ•œ๋‹ค.

 ๊ฒฝ์šฐ์— ๋”ฐ๋ผ, ๋‹ค๋ฅธ ๊ฐ€์ƒ ๋จธ์‹ ์—์„œ ์„ค์น˜ํ•˜์˜€์„ ๋•Œ, sasl๋ฅผ ์‹คํ–‰์„ ํ•˜๋ฉด `active (exited)` ์ƒํƒœ๊ฐ€ ๋˜๋ฉด์„œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋˜์ง€ ์•Š์•˜๋‹ค. ์ด ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” systemctl์„ ์‚ฌ์šฉํ•ด `reload`, `stop`, `start`๋ฅผ ํ•˜๋‹ˆ ์œ„์˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ ๊ฐ€๋Šฅํ•œ ์ƒํƒœ๊ฐ€ ๋˜์—ˆ๋‹ค.

 

 ์–ด๋–ค ์ด์œ ์ธ์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์œผ๋‚˜ saslauthd๋ฅผ `/var/spool/postfix/var/run/saslatuhd`๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ์˜ต์…˜์„ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ์ •์ƒ์ ์œผ๋กœ ์ธ์ฆ์ด ๋˜์ง€ ์•Š๋Š”๋‹ค. ์ด ๋ถ€๋ถ„์„ ์ž˜ ๋ชฐ๋ผ์„œ ํ•˜๋ฃจ ์ •๋„ ์‹œ๊ฐ„์„ ๋ณด๋ƒˆ๋‹ค.๐Ÿ˜… ๋˜ํ•œ, ํ•ด๋‹น ์˜ต์…˜์„ ์ง€์ • ํ›„ ์ •์ƒ์ ์œผ๋กœ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์˜ฌ๋ผ์˜ค์ง€ ์•Š์•„ ํ•œ๋ฒˆ ๋” ์‚ฝ์งˆ์„ ํ–ˆ๋‹ค...

 

๋™์ž‘ ํ™•์ธ

host ์ •๋ณด์™€, ํŒจ์Šค์›Œ๋“œ ์ •๋ณด๋Š” ๊ฐ€๋ ค์„œ ๋นˆ ๋ถ€๋ถ„์ด ์žˆ๋‹ค.

 ์ •์ƒ์ ์œผ๋กœ ์„ค์น˜๊ฐ€ ๋˜์—ˆ๋‹ค๋ฉด `telnet localhost 25`๋ฅผ ํ†ตํ•ด sasl๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ…Œ์Šคํ‹€ ํ•  ์ˆ˜ ์žˆ๋‹ค. AUTH ์™ธ์— ๋‚˜๋จธ์ง€ ํ…Œ์ŠคํŠธ๋Š” sasl์™€ ์—ฐ๋™๋˜์ง€ ์•Š๊ธฐ์— ๋‹น์—ฐํžˆ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•œ๋‹ค๋ฉด ๋ฉ”์ผ์„ ๋ฐ›๊ณ  ๋ณด๋‚ผ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

 

 sasl๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” base64๋กœ ์ธ์ฝ”๋”ฉํ•˜์—ฌ์•ผ ํ•˜๋Š”๋ฐ, ๊ฐ„๋‹จํžˆ `echo -ne <Plain Text> | base64`๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

728x90
๋ฐ˜์‘ํ˜•
๋Œ“๊ธ€
๊ธ€ ๋ณด๊ด€ํ•จ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€