전자메일
  • 비 동기적인 통신 매체

  • 분배가 쉽고, 빠르고, 저렴

  • 첨부메시지, 하이퍼링크, HTML 포멧 텍스트, 내장된 사진등 강력한 특성을 지님

  • 사용자 에이전트

    • 사용자가 메시지를 읽고, 전달하고, 저장하고, 구성하게 해줌 (gmail, outlook등 메일 앱)
    • 메시지를 메일 서버로 보내고 메일 서버의 메일박스에서 메시지를 가져오는 역할
  • 메일 서버

    • 메일 서버 안 메일박스는 메시지를 유지하고 관리
    • 사용자 계정과 비밀번호를 이용해 사용자 인증
    • 만약 송신자의 서버가 수신자의 서버로 메일을 전달할 수 없다면 송신자의 서버에 메시지를 메시지 큐에 보관하고 나중에 그 메시지를 전달하기 위해 다시 시도
    • 전송에 실패하면 송신자에게 알림
  • SMTP

    • 인터넷 전자메일을 위한 주요 애플리케이션 계층 프로토콜
    • 메일을 전송할 때 TCP의 신뢰적인 데이터 전송 서비스 이용
    • 송신자 메일 서버에서 수행하는 클라이언트와 수신자 메일 서버에서 수행되는 서버를 가짐
    • 송신 : SMTP 클라이언트로 동작
    • 수신 : SMTP 서버로 동작

2.3.1 SMTP

송신자의 메일 서버로부터 수신자의 메일 서버로 메시지 전송한다

단점 : 송수신할때 7비트 ASCII > 원래 메시지로 변환해야 함 (HTTP는 변환 요구 X)

  1. 송신자 : 사용자 에이전트 수행, 전자메일 주소 제공, 메시지 작성, 사용자 에이전트에게 전송 명령
  2. 사용자 에이전트 : 메시지를 송신자 메일 서버에 전송, 메시지 큐에 저장
  3. 송신자 메일서버 SMTP 클라이언트 : 메시지 큐에 있는 메시지 확인, 수신자 메일서버 SMTP 서버에게 TCP 연결 설정
  4. SMTP 클라이언트 : SMTP 핸드셰이킹 후 송신자의 메시지를 TCP 연결로 전송
  5. 수신자의 메일서버 SMTP 서버 : 메시지 수신, 메일 박스에 저장
  6. 수신자 : 메시지를 읽기 위해 사용자 에이전트 시동
  • SMTP는 메일을 보낼 때 두 메일 서버가 먼 거리에 떨어져 있어도 중간 메일 서버를 사용하지 않음(직접연결)

  • 수신자의 메일 서버가 죽어있으면 중간 메일 서버에 저장되는것이 아닌 송신자의 메일 서버에 남아 새로운 시도를 위해 대기

  • SMTP가 메시지를 송신 메일 서버에서 수신 메일 서버로 전송하는 과정

  1. 클라이언트 SMTP(송신 메일 서버)는 서버 SMTP(수신 메일 서버)의 25번 포트로 TCP 연결 설정 (서버가 죽어있으면 나중에 다시 시도)
  2. 연결이 설정되면 서버와 클라이언트는 애플리케이션 계층 핸드셰이킹 수행, 이 과정에서 SMTP 클라이언트는 송신자의 전자메일 주소와 수신자의 전자메일 주소 제공
  3. 클라이언트가 메시지 전송 (오류없는 전달을 위해 TCP 데이터 전송 서비스에 의존)
  4. 전송 완료 후 연결 종료 c : SMTP 클라이언트 (crepes.fr) s : SMTP 서버 (hamburger.edu)

SMTP는 지속 연결을 사용하여 같은 수신 메일 서버로 보내는 여러개의 메시지를 갖고 있다면 같은 TCP 연결을 통해 모든 메시지를 전달

2.3.2 메일 메시지 포맷

전자메일을 보낼 때 주변 정보가 포함된 헤더가 메시지 몸체 앞으로 오게 됨 (주변정보 : 헤더라인에 포함, RFC 5322에 정의)

  • RFC 5322 : 메일 헤더 라인에 대한 정확한 포맷과 의미에 대한 해석 기술
  • 각 헤더 라인은 키워드, 콜론, 값의 순서로 구성되고 읽을수 있는 텍스트 포함
  • 모든 헤더는 From: 헤더라인과 To: 헤더라인을 반드시 포함

2.3.3 메일 접속 프로토콜

  • SMTP가 송신자의 메일 서버로 부터 수신자의 메일 서버로 메시지를 전달하면 메시지는 송신자의 메일 박스에 저장됨
  • 수신자가 자신의 호스트에서 사용자 에이전트를 수행한다면 메일 서버도 자신의 로컬 PC에 놓는것이 자연스럽지만 전자메일 수신을 위해 항상 켜져있어야 하며 인터넷에 연결되어있어야함
  • 사용자는 로컬 호스트에서 사용자 에이전트를 수행하고 늘 켜져있는 공유 메일 서버에 저장된 메일박스에 접근

메일 서버가 메일박스를 관리하고 SMTP의 클라이언트와 서버 측 모두를 수행

  1. 수신자의 사용자 에이전트는 수신자의 메일 서버로 전자메일 메시지를 SMTP or HTTP를 이용하여 전송
  2. 수신자의 메일 서버는 SMTP(client SMTP)를 사용하여 송신자의 메일 서버로 전자메일 메시지 중계

송신자의 메일 서버를 통해 중계하지 않으면 송신자의 사용자 에이전트는 목적지 메일 서버에 도달할 수 없음

수신자가 메일 서버로부터 자신의 전자메일을 확인하는 방법

  1. 사용자 에이전트가 수신자의 전자메일을 확인하기 위해 HTTP 사용 이 경우 수신자의 메일 서버는 송신자의 메일 서버와 통신하기 위해 SMTP 인터페이스와 HTTP 인터페이스를 갖고 있어야 함
  2. 메일 클라이언트 사용 인터넷 메일 접근 프로토콜(IMAP) 사용

두 방법 모두 수신자의 메일 서버에 의해 유지되는 폴더 관리