728x90
메일 서버 동작 구조
메일이 송신자를 떠나 최종 수신자에게 도달하는 대략적인 구조는 위 그림과 같다.
먼저, 송신자는 메일 송신 프로토콜인 SMTP를 통해 메일 데이터를 메일 발신 서버인 abc.com에 전송한다.
메일을 받은 abc.com은 메일 데이터에 포함된 수신자의 메일 서버의 IP를 DNS를 통해 조회하고, 동일하게 SMTP를 사용해 데이터를 해당 서버에 전송한다.
이렇게 전송된 데이터는 메일 수신 프로토콜인 POP3 혹은 IMAP를 사용해 최종 수신자에게 전달된다.
메일 송수신에 사용되는 프로토콜
1) SMTP (Simple Mail Transfer Protocol)
메일 송신을 위해 사용되는 프로토콜
사용 케이스
- 메일을 송신하고자 하는 사용자가 MTA(Mail Transfer Agent)를 통해 메일을 메일 발송 서버로 전달할 때
- 메일 발송 요청을 받은 메일 서버가 전달받은 데이터(메일)를 수신자의 메일 서버로 전달(Relay라고 표현)할 때
2) POP3 (Post Office Protocol 3)
메일 수신을 위해 사용되는 프로토콜
특징
- 메일 서버로부터 메일 수신자의 로컬 디바이스(PC 등)로 메일 데이터를 직접 다운로드 하는 방식
- 별도의 설정이 없다면 POP3를 통해 수신된 메일 데이터는 메일 송수신 작업이 완료된 후 서버에서 지워지게 되므로, 서버가 메일 데이터의 상태를 더 이상 관리할 수 없다.
- 메일을 수신한 로컬 디바이스에 데이터가 저장되는 방식이므로 해당 데이터를 따로 복사하지 않는 한, 여러 개의 디바이스에서 메일에 접근하는 것이 불가하다.
- POP3를 사용하는 메일 서버는 기본적으로 메일을 올바르게 전달하는 것에만 책임이 있으므로, 메일 데이터에 대한 관리 비용 부담이 적다.
3) IMAP (Internet Message Access Protocol)
메일 수신을 위해 사용되는 프로토콜
특징
- POP3와 다르게 메일 데이터를 서버에 저장해두고 해당 데이터를 응답값으로 내려주는 방식
- 메일 데이터를 서버와 동기화할 수 있고, 따라서 메일 송수신 작업이 완료된 후에도 해당 메일 데이터에 대한 상태 관리가 가능하다.
- 메일 데이터를 내려줄 때 다양한 전략이 가능하다.
- 사용자의 메일 조회 시, 메일의 헤더값을 우선적으로 보여주고 상세 데이터에 대한 요청이 이루어질 때에 본문 내용 및 첨부파일과 같은 무거운 데이터를 내려주도록 함으로써 서버의 부담을 줄일 수 있다.
- 메일 확인 때마다 클라이언트 - 서버 간 통신이 이루어지므로 POP3를 사용할 때와 비교해 트래픽 부담이 높다.
- 메일 데이터를 모두 서버 쪽에서 관리해주어야하기 때문에 관리 비용이 증가한다.
- 오프라인 상태에서 메일 확인이 불가하다.
'그 외 공부 > 기타' 카테고리의 다른 글
Static Method를 Mocking 하게 해줘야할까? (0) | 2024.10.24 |
---|---|
[Gradle] settings.gradle에 멀티 프로젝트 설정하기 (0) | 2023.06.09 |
리눅스 크론탭(crontab) 사용법 (0) | 2021.07.31 |