메일 프로토콜

임종혁·2024년 12월 22일

면접때 BusyBee 메일 자동 처리 시스템에 대해 메일 서비스는 어떻게 구축 하였으며 메일 프로토콜은 뭐가 있냐는 질문을 받아 쓰는 글 입니다.

smtp 는 무엇일까?


smtp는 인터넷에서 이메일을 전송하는데 사용하는 주요 프로토콜 이 프로토콜은 서로 다른 이메일 시스템 간의 메시지 전달 및 중계를 해주며, TCP/IP 기반으로 동작 일반적으로 25번 포트를 이요앟며 전자 우편 서버간 통신을 위한 핵심 프로토콜

동작 원리


  • 메일 사용자 에이전트(MUA) : 사용자의 이메일 클라이언트로, 메시지를 작성하고 받은 메일을 읽을 수 있음
  • 메일 전송 에이전트(MTA) : 메시지를 수신하고 전달하는 서버로 , SMTP를 사용해 메시지 전송
  • 메일 전달 에이전트(MDA) : 메시지를 최종 수신자의 메일박스에 배달

  1. 사용자가 MUA(메일 사용자 에이전트) 를 통해 메시지를 작성하고 발송 요처
  2. MUA(메일 사용자 에이전트는) MTA(메일 전송 에이전트) 로 전송
  3. 발신자의 MTA (메일 전송 에이전트)는 DNS를 사용하여 수신자의 메일 서버 주소 확인
  4. 발신자의 MTA는 SMTP를 사용하여 수신자의 MTA 로 전달
  5. 수신자의 MTA는 MDA(메일 전달 에이전트) 로 전달
  6. MDA는 이메일을 수신자 메일박스로 전달
  7. 수신자가 자신의 MUA를 통해 메일 박스를 확인하고 이메일 읽음

SMTP와 POP3/ IMAP 차이


SMTP는 이메일을 전송하는 프로토콜로 사용되지만 이메일을 수신하고 메일 박스와 동기화 하는데에는 POP3 및 IMAP 프로토콜이 사용

  • POP3: 이메일 서버로 부터 메시지를 다운로드 하여 로컬 저장소에 저장하며 일반적으로 서버의 메시지를 삭제 로컬에서만 이메일을 관리하므로 다중 기기에서 동일한 메일박스를 도익화 하는데 제한

  • IMAP : 서버에서 메시지를 관리하며, 클라이언트는 서버 메시지를 동기화하여 볼수 있음 다중 기기 메일박스를 동기화하기에 적합하며 서버에서 메시지를 관리하기 때문에 메일 삭제 같은 작업도 실시간 반영

  • MUA(발신자) → MTA(발신자)

    • 발신자가 이메일 작성 후 발신자의 MUA가 SMTP를 통해 발신자의 MTA로 이메일 전송.
  • MTA(발신자) → MTA(수신자)

    • 발신자의 MTA가 SMTP를 사용하여 인터넷을 통해 수신자의 MTA로 이메일 전송.
  • MTA(수신자) → MDA(수신자)

    • 수신자의 MTA가 이메일을 수신한 뒤, MDA로 전달하여 이메일을 저장.
  • MUA(수신자) → MDA(수신자)

    • 수신자의 MUA가 POP3 또는 IMAP을 사용하여 MDA에서 이메일을 가져옴.
      • POP3: 이메일을 다운로드 후 서버에서 삭제.
      • IMAP: 이메일을 서버에 유지하며 동기화.
  • SMTP: 발신 단계에서 MUA → MTA → 상대방 MTA 간의 이메일 전송.

  • POP3/IMAP: 수신 단계에서 MUA → MDA 간의 이메일 읽기 방식.

AWS SES 수신 과정


  1. MUA(발신자) → MTA(발신자)
    • 발신자의 클라이언트(MUA)가 이메일을 작성하고, SMTP를 통해 발신자의 MTA로 전송.
  2. MTA(발신자) → SES(MTA 역할)
    • 발신자의 MTA가 이메일을 AWS SES로 전송.
    • 여기서 AWS SES는 수신자의 MTA 역할을 수행.
  3. SES(MTA 역할) → SES(MDA 역할)
    • AWS SES가 이메일을 수신한 뒤, 이를 MDA 역할로 처리:
      • 이메일을 S3 버킷에 저장.
      • SNS를 통해 알림 전송.
      • Lambda 함수를 트리거하여 추가 처리.
  4. Lambda 함수 또는 애플리케이션(MUA처럼 동작)
    • 사용자가 이메일 데이터를 S3나 Lambda로 가져와 필요한 작업을 수행.
    • 예: 이메일 본문 읽기, 첨부 파일 처리, 자동 응답 등.

0개의 댓글