출처: https://www.socketlabs.com/blog/smtp-or-imap
SMTP
시스템 구성 요소
- User Agent: 사용자 장치에서 메일 작성, 읽기, 관리 기능 수행
- Mail Server: 다수 사용자들의 메일박스 관리, 메일 송수신 제어
- SMTP: 메일 전송 프로토콜
Local part
@ Domain Name
- Local part = 사용자 메일박스의 이름
- Domain Name = 목적지 메일 서버의 도메인 이름
이메일 전송 과정
- 송신자 UA에서 메일 작성 후 메일 서버로 전달
- 송신자 메일 서버의 출력 메시지 큐(outgoin message queue)에 저장
- 수신자 메일 서버로 전송
- 전송 불가시 30분 단위로 재전송 시도, 정해진 기간 동안 전송 불가시 전송 준당 및 송신자에게 통보
- 수신자 메일 서버의 메일박스에 저장
- 수신자 UA에서 메일 서버의 메일박스의 메일 읽기 및 관리
클라이언트-서버 프로토콜
- 클라이언트: 송신 메일 서버/UA
- 서버: 수신 메일 서버/송신 메일 서버
- TCP 사용
- 서버 포트번호: 25
- ASCII 텍스트 프로토콜
Pull Protocol
SMTP는 Pull 프로토콜이므로 수신자 U/A가 메시지를 서버에서 수신할 때는 SMTP 프로토콜을 사용할 수 없다.
HTTP나 IMAP을 사용하여 수신한다.
프로토콜 동작
SMTP 메일은 두 메일 서버가 먼 거리에 떨어져 있더라도 중간 메일 서버를 사용하지 않는다.
연결 설정과 해제
TCP 연결과 SMTP handshaking 과정이 발생한다.
SMTP handshaking 과정 동안 SMTP 클라이언트는 송신자의 전자메일 주소와 수신자의 전자메일 주소를 제공한다.
메일 전송
메시지 포맷
- 모든 헤더는 From , To 헤더라인을 반드시 가져야 한다.
HTTP vs SMTP
- HTTP
- Pull Protocol
- Multi-media 객체 전송
- SMTP
- Push Protocol
- Text Only 메시지 전송
- 1 전송 메시지 - 멀티-파트 메시지