ํฐ์คํ ๋ฆฌ ๋ทฐ
๋คํธ์ํฌ: SMTP(Postfix) ์๋ฒ ๊ตฌ์ถ
dirmathfl 2021. 2. 28. 10:50SMTP๋ ์ด๋ฉ์ผ์ ๋ณด๋ด๊ธฐ ์ํด ์ฌ์ฉ๋๋ ํ๋กํ ์ฝ์ด๋ค. ์ด๋ 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 ์ฐฝ์ด ๋จ๊ฒ ๋๋ค. ์ด๋ ์๋์ ๊ฐ์ด ์งํํ๋ฉด ๋๋ค.
์์ ์ค์ ๊ฐ๋ค์ `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๋ฅผ ์คํ์ ํ๋ฉด `active (exited)` ์ํ๊ฐ ๋๋ฉด์ ํ๋ก์ธ์ค๊ฐ ์ ์์ ์ผ๋ก ์คํ๋์ง ์์๋ค. ์ด ๊ฐ์ ๊ฒฝ์ฐ๋ systemctl์ ์ฌ์ฉํด `reload`, `stop`, `start`๋ฅผ ํ๋ ์์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ ์์ ์ผ๋ก ๋์ ๊ฐ๋ฅํ ์ํ๊ฐ ๋์๋ค.
์ด๋ค ์ด์ ์ธ์ง๋ ๋ชจ๋ฅด๊ฒ ์ผ๋ saslauthd๋ฅผ `/var/spool/postfix/var/run/saslatuhd`๋ก ๋ณ๊ฒฝํ๋ ์ต์ ์ ์ง์ ํ์ง ์์ผ๋ฉด ์ ์์ ์ผ๋ก ์ธ์ฆ์ด ๋์ง ์๋๋ค. ์ด ๋ถ๋ถ์ ์ ๋ชฐ๋ผ์ ํ๋ฃจ ์ ๋ ์๊ฐ์ ๋ณด๋๋ค.๐ ๋ํ, ํด๋น ์ต์ ์ ์ง์ ํ ์ ์์ ์ผ๋ก ํ๋ก์ธ์ค๊ฐ ์ฌ๋ผ์ค์ง ์์ ํ๋ฒ ๋ ์ฝ์ง์ ํ๋ค...
๋์ ํ์ธ
์ ์์ ์ผ๋ก ์ค์น๊ฐ ๋์๋ค๋ฉด `telnet localhost 25`๋ฅผ ํตํด sasl๋ฅผ ์ฌ์ฉํ ์ ์๋์ง ํ ์คํ ํ ์ ์๋ค. AUTH ์ธ์ ๋๋จธ์ง ํ ์คํธ๋ sasl์ ์ฐ๋๋์ง ์๊ธฐ์ ๋น์ฐํ ์ ์์ ์ผ๋ก ์๋ํ๋ค๋ฉด ๋ฉ์ผ์ ๋ฐ๊ณ ๋ณด๋ผ ์ ์์ ๊ฒ์ด๋ค.
sasl๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ base64๋ก ์ธ์ฝ๋ฉํ์ฌ์ผ ํ๋๋ฐ, ๊ฐ๋จํ `echo -ne <Plain Text> | base64`๋ก ์คํํ ์ ์๋ค.
'๐๏ธโโ๏ธ ๊ธฐ๋ฐ ๋ค์ง๊ธฐ > ๋คํธ์ํฌ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋คํธ์ํฌ: Net-SNMP (0) | 2021.02.16 |
---|---|
๋คํธ์ํฌ: SNMP (0) | 2021.02.07 |
๋คํธ์ํฌ: ARP (0) | 2021.01.18 |
๋คํธ์ํฌ: ์ค์์น (0) | 2020.12.10 |
๋คํธ์ํฌ: ํ๋ธ (0) | 2020.12.09 |