์ด ๋ฌธ์์ ์๋ณธ์ ์ธ๋ถ ์ํค์์ ๊ฐ์ ธ์์ต๋๋ค.
1. ๊ฐ์
1. ๊ฐ์[ํธ์ง]
๊ฐ์ด ์ฐํธ ์ ์ก ํ๋กํ ์ฝ(Simple Mail Transfer Protocol)์ ์ฝ์. ์ด๋ฉ์ผ ์ ์ก์ ์ฌ์ฉ๋๋ ๋คํธ์ํฌ ํ๋กํ ์ฝ์ด๋ค.
์ธํฐ๋ท์์ ๋ฉ์ผ ์ ์ก์ ์ฌ์ฉ๋๋ ํ์ค์ด๋ค. 1982๋ RFC821์์ ํ์คํ๋์ด ํ์ฌ๋ RFC5321์์ ์ ์๋ ESMTP(Extended SMTP; ํ์ฅ SMTP)๋ก 2008๋ ๊ฐฑ์ ๋์๋ค. SMTP๋ ๋ณด์๊ณผ ํธํ์ฑ์ ๋ฌธ์ ๋ก ๊ทธ๋๋ก๋ ์ฌ์ฉํ์ง ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ฐ์ด๋ ํ์ฅ ํ๋ก๊ทธ๋จ์ SMTP-AUTH(์ก์ ์ ์ธ์ฆ ์๋น์ค), ESMTP(SASL์ ์ด์ฉํ ๋ณด์ ์ฐ๊ฒฐ), MIME(non-ascii ๋ฐ์ดํฐ ์ ์ก ํฌ๋งท)๊ฐ ์๋ค.
SMTP๋ 25/tcp์ 587/tcp ํฌํธ๋ฅผ ์ฌ์ฉํ๋ฉฐ SMPTS๋ 465/tcp ํฌํธ๋ฅผ ์ฌ์ฉํ๋ค.
SMTP๋ ์ฐ๊ฒฐ์งํฅ์ ์ด๊ณ ํ ์คํธ ๊ธฐ๋ฐ์ผ๋ก ์๋ํ๋ ํ๋กํ ์ฝ์ด๋ค. SMTP ํด๋ผ์ด์ธํธ์ SMTP ์๋ฒ ์ฌ์ด์ SMTP ์ธ์ ์ด ์์ฑ๋๋ฉฐ, ๋ช ๋ นํ์ ์ด์ฉํด ๋ฉ์ผ์ ์ก์์ ํ๋ค. SMTP ๊ตํ์ ๋ค์์ ์ธ ๋ช ๋ น์ด๋ฅผ ํตํด ์ด๋ฃจ์ด์ง๋ค.
์ธํฐ๋ท์์ ๋ฉ์ผ ์ ์ก์ ์ฌ์ฉ๋๋ ํ์ค์ด๋ค. 1982๋ RFC821์์ ํ์คํ๋์ด ํ์ฌ๋ RFC5321์์ ์ ์๋ ESMTP(Extended SMTP; ํ์ฅ SMTP)๋ก 2008๋ ๊ฐฑ์ ๋์๋ค. SMTP๋ ๋ณด์๊ณผ ํธํ์ฑ์ ๋ฌธ์ ๋ก ๊ทธ๋๋ก๋ ์ฌ์ฉํ์ง ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ฐ์ด๋ ํ์ฅ ํ๋ก๊ทธ๋จ์ SMTP-AUTH(์ก์ ์ ์ธ์ฆ ์๋น์ค), ESMTP(SASL์ ์ด์ฉํ ๋ณด์ ์ฐ๊ฒฐ), MIME(non-ascii ๋ฐ์ดํฐ ์ ์ก ํฌ๋งท)๊ฐ ์๋ค.
SMTP๋ 25/tcp์ 587/tcp ํฌํธ๋ฅผ ์ฌ์ฉํ๋ฉฐ SMPTS๋ 465/tcp ํฌํธ๋ฅผ ์ฌ์ฉํ๋ค.
SMTP๋ ์ฐ๊ฒฐ์งํฅ์ ์ด๊ณ ํ ์คํธ ๊ธฐ๋ฐ์ผ๋ก ์๋ํ๋ ํ๋กํ ์ฝ์ด๋ค. SMTP ํด๋ผ์ด์ธํธ์ SMTP ์๋ฒ ์ฌ์ด์ SMTP ์ธ์ ์ด ์์ฑ๋๋ฉฐ, ๋ช ๋ นํ์ ์ด์ฉํด ๋ฉ์ผ์ ์ก์์ ํ๋ค. SMTP ๊ตํ์ ๋ค์์ ์ธ ๋ช ๋ น์ด๋ฅผ ํตํด ์ด๋ฃจ์ด์ง๋ค.
- MAIL ๋ช ๋ น์ด: ์์ ์ ์ง์
2. RCPT ๋ช ๋ น์ด: ์ก์ ์ ์ง์
3. DATA ๋ช ๋ น์ด: ๋ฉ์์ง ๋ด์ฉ์ ์์์ด ๋๋ ๋ถ๋ถ์ด๋ค. ๋ฉ์์ง ํค๋์ ๋ฐ๋๋ก ๊ตฌ์ฑ๋๋ค.
S: 220 smtp.example.com ESMTP Postfix
C: HELO relay.example.org
S: 250 Hello relay.example.org, I am glad to meet you
C: MAIL FROM:๏ผ[email protected]๏ผ
S: 250 Ok
C: RCPT TO:๏ผ[email protected]๏ผ
S: 250 Ok
C: RCPT TO:๏ผ[email protected]๏ผ
S: 250 Ok
C: DATA
S: 354 End data with ๏ผCR๏ผ๏ผLF๏ผ.๏ผCR๏ผ๏ผLF๏ผ
C: From: "Bob Example" ๏ผ[email protected]๏ผ
C: To: "Alice Example" ๏ผ[email protected]๏ผ
C: Cc: [email protected]
C: Date: Tue, 15 January 2008 16:02:43 -0500
C: Subject: Test message
C:
C: Hello Alice.
C: This is a test message with 5 header fields and 4 lines in the message body.
C: Your friend,
C: Bob
C: .
S: 250 Ok: queued as 12345
C: QUIT
S: 221 Bye
{The server closes the connection}
๊ฐ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ง๋ค smtp ์ฌ์ฉ์ ์ํ lib๋ฅผ ์ง์ํ๋ค. Python ๊ฒฝ์ฐ์๋ smtplib๊ฐ ๊ธฐ๋ณธ ๋ด์ฅ๋์ด ์์ผ๋ฉฐ SSL/TLS ์ธ์ฆ์ ์ง์ํ์ฌ gmail ์ด๋ ๋ค์ด๋ฒ ๋ฉ์ผ์ ์ฌ์ฉ๊ฐ๋ฅํ๋ค. ๋จ ๋ฌธ์ ๋ script ์์์ ๊ณ์ ์ ๋ณด์ ํจ์ค์๋๊ฐ ๋ ธ์ถ๋๊ธฐ ๋๋ฌธ์ ๋ณด์์ ์ ์ํด์ผ ํ๋ค์์ ์ฝ๋.
[1] telnet ์ผ๋ก ํฌํธ25์ ์ ์ํด๋ณด์