슬랙, 디스코드, 노션 등 여러 협업 툴이 잘 되어있다고 하더라도 이메일은 여전히 중요한 커뮤니케이션 수단 중 하나로 사용된다. 이메일은 개발자들한테도 중요한 커뮤니케이션 수단이자 개발할때 유용하게 사용되는 도구이다.
개발을 하며 이메일 설정창에서 SMTP
, POP3
, IMAP
의 용어들을 많이 본 적이 있을 것이다. 이들은 모두 이메일을 주고 받는 프로토콜
의 종류이다. 이번 포스팅에서는 해당 프로토콜들의 의미와 정의 등을 알아보려고 한다.
이메일 시스템은 서버-클라이언트 구조
로 구성된다. 즉, 메일 서버와 클라이언트로 시스템이 구성되는데, 그림에서 A, B, C로 구성된 것이 메일 서버
이다.
쉽게 이해를 하기위해 비유를 들어보자. 이메일을 편지라고 생각해보자. 편지를 주고 받기 위해서는 우체국이 필요하다. Sunny라는 사람이 Sally라는 사람에게 편지를 보내기 위해서는 우체국에 가서 편지를 부쳐야 한다. 우체국에서 편지를 부치면 우체국은 편지를 수신자인 Sally가 사는 아파트의 편지함으로 배달한다. 편지를 받은 Sally는 Sunny에게 답장을 작성한 뒤, 우체국으로 가 편지를 부친다. 그러면 Sunny가 사는 아파트 편지함으로 편지가 배달될 것이다.
위의 비유에서 우체국
은 SMTP 서버
로 치환되고, Sunny와 Sally의 아파트 편지함은 POP3 서버
로 치환된다. 즉 위에 예시에서는 발신자가 메일을 보내면 해당 메일은 SMTP 서버에 저장된 뒤, SMTP 서버에서 수신자의 POP3 서버로 전달됨을 알 수 있다.
그렇다면 각각 이메일 서버의 개념은 어떻게 될까?
SMTP는 Simple Main Transfer Protocol의 약자로, 이메일을 전송
할 떄 사용하는 프로토콜이다. RFC2821에 따라 규정한 사용 TCP 포트번호
는 25번
이다. 이러한 SMTP는 크게 2가지 경우에 사용된다.
메일을 서버로 전송
할 때서버 간 메일을 전송
할 때또한, SMTP는 텍스트 기반의 프로토콜로서 request/response 메시지 뿐만 아니라 모든 문자가 7bit ASCII
로 구성되어있어야 한다. 그러므로 문자 표현에 8bit 이상의 코드를 사용하는 언어나 첨부파일, 자주 사용되는 각종 바이너리는 마임(MIME)
이라고 불리는 방식의 7bit로 변환되어 전달된다.
❓ MIME이란?
Multi-purpose Internet Mail Extensions의 약자로, 메일을 보내기 위한표준 포맷
이다. SMTP가 7bit ASCII 문자만을 지원하므로 이외의 형태의 데이터를 가지는 데이터는 MIME 형식으로 변환되어 전달한다.
POP3는 Post Office Protocol 3의 약자로, 이메일을 수신
할 때 사용하는 프로토콜의 한 종류이다. 즉, 이메일 서버에 도착한 메일을 클라이언트로 가져올 때 사용
되는 서버이다. 현재 통용되는 Post Office 프로토콜의 버전이 3이므로 뒤에 3이 붙는다. TCP 포트번호
는 110번
으로, 클라이언트-서버 프로토콜이다.
POP3 프로토콜은 서버의 사서함으로부터 클라이언트 PC로 메일을 직접 다운로드
한다. POP3는 서버에서 메일을 받아오는 즉시 삭제되도록 설계되어 있지만 서버 저장 설정은 가능하다. 스토리지 용량에 제한이 있는 경우 유리하다.
POP과 같이 메일 서버 종류
중 하나로, TCP 포트번호
는 143번
이다. IMAP의 경우 이메일 서버와 동기화
되는 방식이므로 다양한 클라이언트 장치에서 동일하게 미리 설정한 받은 편지함, 보낸 편지함
을 확인할 수 있다. IMAP는 POP3와 달리 서버에 이메일이 그대로 남아있어 여러 클라이언트를 통해서도 반복적으로 이메일을 확인할 수 있다.