스프링부트 이메일인증 1 - 메일 시스템 동작 원리

Yu Seong Kim·2024년 9월 11일
0
post-thumbnail

이번 포스팅은 스프링부트 이메일인증 첫 번째 메일 시스템 동작 원리 입니다.
프로젝트를 진행하면서 이메일 인증을 이용하여 회원가입을 진행하였습니다. 구글링을 해보시면 알겠지만 이메일인증 구현과 관련된 많은 글들이 있고, 참고하면 충분히 이메일인증을 도입할 수 있습니다. 그러나 저는 메일 시스템 동작 원리를 먼저 알아야 구현하는데 더 쉽고, 기억에 오래 남을 것이라고 판단하였습니다.
그래서 이번에는 메일 시스템 동작 원리를 공부한 내용들을 공유하고자 합니다.

여러분들은 메일을 누군가에게 보낼 때, 보통은 어떠한 방식으로 메일이 보내지는지에 대한 궁금증은 잠시 내려두게 됩니다. 그렇다면 이메일을 상대방에게 보낸다면 어떤 식으로 이동하는지 알아보겠습니다.

동작 과정

구글 이메일을 사용하는 A사용자는 네이버 이메일을 사용하는 B사용자에게 메일을 보내려합니다. 한 번 그림으로 만들어 보았습니다.

-메일 발신-

위 그림에서 SMTP란? 이메일 전송 시 사용하는 프로토콜입니다.

  1. 메일 작성 및 발송 (Gmail 클라이언트)

    • 사용자는 Gmail 클라이언트(브라우저)에서 메일을 작성하고 발송합니다.
    • 발송된 메일은 SMTP 프로토콜을 사용해 Gmail 서버로 전달됩니다.

  2. Gmail 서버에서 Naver 서버로 전송 (SMTP)

    • Gmail 서버는 수신자의 이메일 주소를 확인하여 메일을 전달할 메일 서버를 찾습니다.
    • DNS를 이용해 Naver 메일 서버의 MX 레코드를 조회한 뒤, 해당 메일 서버로 이메일을 전달합니다.
    • 이때, 이메일은 여전히 SMTP 프로토콜을 사용하여 Naver 메일 서버로 전송됩니다.

  3. Naver 서버에 이메일 저장 및 전달

    • Naver 서버는 받은 이메일을 수신자의 메일함에 저장합니다.
    • 수신자는 Naver 메일 클라이언트(브라우저 또는 메일 프로그램)를 통해 해당 메일을 확인하게 됩니다.

DNS (Domain Name System)
->DNS는 도메인 이름 시스템으로, 인터넷에서 사람이 쉽게 기억할 수 있는 도메인 이름을 숫자로 된 IP 주소로 변환해주는 시스템

MX 레코드 (Mail Exchange Record)
->MX 레코드는 DNS 레코드 중 하나이며, 간단히 말하면 메일을 어디로 보낼지를 지정하는 레코드입니다. 이메일을 보내기 위해서는 해당 도메인이 어떤 메일 서버로 이메일을 처리하는지를 알아야 하는데, 이 정보를 제공하는 것이 바로 MX 레코드입니다.

-메일 수신-

  1. 메일 서버에서 클라이언트로 메일 다운로드
    • 사용자는 Gmail 클라이언트(브라우저)를 사용하여 Gmail 서버에서 메일을 확인하려고 합니다.
    • 사용자가 메일 클라이언트를 통해 서버에 접속하면, Gmail 서버에서 사용자의 이메일을 가져오게 됩니다.

POP3와 IMAP의 차이

POP3 (Post Office Protocol 3)

  • POP3는 이메일을 서버에서 클라이언트로 다운로드한 후, 기본적으로 서버에서 메일을 삭제합니다.
  • 즉, 이메일을 클라이언트에서만 관리하게 되며, 서버에서는 더 이상 메일이 남아 있지 않습니다.
  • 만약 사용자가 다른 기기에서 메일을 확인하면, 이전에 다운로드된 메일은 보이지 않습니다.

IMAP (Internet Message Access Protocol)

  • IMAP은 메일을 서버에 저장하면서 클라이언트에서 메일을 동기화합니다.
  • 메일은 서버에 그대로 남아 있어, 여러 장치에서 동일한 메일함을 관리할 수 있습니다.
  • 사용자가 클라이언트에서 메일을 읽거나 삭제하면, 그 동작이 서버에도 반영됩니다.
  • IMAP은 특히 여러 장치에서 메일을 관리할 때 유리합니다.

이렇게 간단하게 주요 용어들과 송수신 동작원리에 대해서 살펴보았습니다.
다음 포스팅에서는 스프링부트에서 회원가입에 들어갈 이메일 인증을 구현해보겠습니다.

profile
인생을 코딩하는 남자.

0개의 댓글