System/네트워크

💻 인터넷 상 메일은 어떻게 전달되나? (feat. SMTP)

완자✨ 2022. 6. 24. 18:45

💻 인터넷 상 메일은 어떻게 전달되나? (feat. SMTP)

nodemailer와 구글 SMTP를 사용해서 메일 전송 코드를 구현해봤습니다. 참고

  • 구글SMTP를 테스트해보려면 앱 비밀번호를 등록하고 발급받은 비밀번호를 사용해야 합니다.
  • 앱 비밀번호 등록 방법

 

SMTP (Simple Mail Transfer Protocol)

SMTP (Simple Mail Transfer Protocol)는 간단한 메일을 주고받기 위한 약속입니다.
SMTP 서버는 각각의 SMTP 서버와 메일을 전송하는 역할을 합니다.

메일을 전달하기 위해서는 웹 서버와 마찬가지로 SMTP 약속을 따르는 SMTP 서버들이 필요합니다. 네이버, 구글, 카카오 등 각 기업 메일 시스템이 있고 이들의 SMTP 서버가 각각 존재한다. 이 때문에 동일 시스템이 아니어도 SMTP 서버를 통해서 서로 이메일을 주고받게 됩니다.

 

이메일 주소로 어떻게 SMTP 서버를 찾아갈까?

웹 도메인 https://www.google.com을 주소창에 치게되었을 때와 똑같이 DNS 서버 보낸 후 IP를 받아오게 되는데 이메일도 마찬가지로 주소를 DNS로 보내서 IP를 받아옵니다.

예를 들어 이메일 주소 abc@gmail.com가 있습니다. @이 뒤에 gmail.com을 DNS에 보내서 IP주소 받아오게 되는데 이 IP주소로 해당하는 SMTP 서버를 찾아 수 있게 됩니다.

 

POP3와 IMAP이란

우선, 두 용어는 모두 이메일 메시지를 읽어오기 위한 프로토콜이며, 서버에서 내용을 받아오는 방식을 의미합니다.

 

메일을 쓰게 되면 어떻게 동작되나?

우리는 메일을 쓸 때 From, To, subject, Text을 기본으로 작성해서 보냅니다. 첨부파일이나 여러 가지 데이터를 첨부할 수도 있습니다.

예를 들어 A 사람이 B에게 메일을 전송했다고 가정해보겠습니다.

from : A@gmail.com
to: B@naver.com
subject: hello B!
text: email test

위와 같이 메일을 보냈을 때

  1. 보내는 사람의 SMTP 서버는 메일 주소는 gmail.com이고 구글의 SMTP 서버를 통해서 메일이 전송된다.
  2. 받는 사람의 SMTP 서버는 네이버 SMTP 서버이다. 구글 SMTP 서버에서 전달된 메일을 네이버 SMTP 서버에서 받고 B@naver.com 주소에서 @앞에 있는 계정으로 SMTP 서버는 해당 계정이 있으면 success 메시지를, 계정이 없으면 잘못된 주소라는 reject된 메세지를 구글 STMP 서버에 response를 보냅니다.
  3. 전달된 메일들은 POP3, IMAP서버에 보관되게 됩니다.
  4. 유저가 메일에 로그인을 하면 메일 클라이언트는 유저 계정에 해당되는 메일들을 POP3, IMAP에서 받아옵니다.

즉, SMTP는 주소에 맞게 메일을 전달해주는 역할을 하고, POP3, IMAP서버는 메일을 저장해뒀다가 클라이언트가 요청을 하면 해당 메일을 넘겨주는 역할을 한다.


Reference