PC가 보급되면서 일반 사용자는 메일 서버에 로그인하지 않고, PC에서 메일을 관리하기를 원했다. POP 서비스는 이러한 환경을 지원하려고 고안된 프로토콜이다.
POP과 SMTP
SMTP는 전자 메일을 송수신하는 호스트가 메일을 직접 교환하려고 개발되었다. 그러나 오늘날의 메일 환경은 특정 서버에 메일 주소를 개설하고, 이 주소로 수신된 메일을 PC나 스마트폰에서 다운로드하는 형식을 많이 사용한다.
POP 서비스의 필요성
호스트 사이의 메일 교환 프로토콜인 SMTP와 별도로 SMTP 서버와 PC/스마트폰을 연동하기 위해 POP(Post Office Protocol) 서비스를 사용한다.
- 수신자에게 전송된 메일은 우측 하단의 POP 서버에 도착한다.
- 메일을 다운로드한 POP 클라이언트는 대부분 그래픽 환경이 제공되는 PC이므로, 사용자는 PC로 메일을 관리한다.
POP과 SMTP와의 비교
- POP 서비스를 수행하는 프로토콜은 기능적으로 SMTP와 동작이 유사하지만 다른 특징이 있다.
- 클라이언트와 서버 사이의 동작은 SMTP처럼 명령과 응답으로 이루어진다. POP 서버는 자신에게 할당된 Well-Known 포트에서 POP 클라이언트의 TCP 연결을 기다린다. SMTP는 25번 포트이고, POP 서비스는 110번 포트이다.
- 일반적으로 메일을 송신하는 과정은 수신자로부터 사전 인증 허가를 받지 않고도 가능하다. 그러나 수신된 메일을 읽을 때는 로그인 절차에 의한 인증 과정이 반드시 필요하다. 마찬가지로 SMTP 클라이언트가 서버와 연결하는 과정에서 인증 절차가 필요 없지만, POP 클라이언트가 POP 서버와 연결할 때는 로그인 이름과 암호를 입력하는 인증 절차를 거친다.
- PC에서는 인증에 필요한 로그인, 암호 정보가 메일 프로그램을 설치하는 과정에서 초기화되기 때문에 자동으로 처리된다.
POP 명령과 응답
- POP 서비스의 동작은 POP 클라이언트가 POP 서버에 전송하는 명령에 의해 시작된다.
- POP 서버가 명령을 실행하고, 결과를 응답 형식으로 만들어 클라이언트에 회신한다.
- POP3 서비스에서 규정한 주요 POP 명령 중 앞의 2개는 인증 정보를 전송하는 목적으로 사용되며, 나머지는 메일을 다운로드하는 관리 작업을 한다.
명령 | 의미 |
USER + <POP3 서버의 로그인 이름> | 사용자 인증 절차에 필요한 정보를 전송한다. (메일 주소의 로그인 이름) |
PASS + <POP3 서버의 로그인 암호> | 사용자 인증 절차에 필요한 정보를 전송한다. (로그인 이름의 암호) |
STAT | 로그인 사용자에게 POP3 서버에 보관된 메일 개수를 회신한다. |
LIST + <일련번호> | 일련번호를 생략하면 도착한 메일 정보를 일련번호와 함께 출력하고, 일련번호가 주어지면 해당 메일의 정보만 출력한다. |
RETR + <일련번호> | 일련번호에 해당하는 메일을 POP 서버로부터 읽어 들인다. |
DELE + <일련번호> | RETR 명령으로 읽어 들여 POP 서버에 그대로 보관된 메일을 삭제한다. |
QUIT | POP 세션을 종료한다. |
- POP 클라이언트 명령을 요청받은 POP 서버는 결과를 POP 응답(Pop Response)형식으로 회신한다.
- SMTP 서버의 응답이 2~5로 시작하는 세 자리의 응답 코드로 구성되지만, PO은 성공과 실패를 의미하는 _OJ와 -ERR라는 두 가지 응답 코드만 사용한다. 그만큼 POP이 SMTP보다 간단하다는 의미이다.
응답 코드 | 의미 |
+OK | 요구한 명령을 성공적으로 처리했음을 의미한다. |
-ERR | 요구한 명령의 처리가 실패하였음을 의미한다. |
POP 동작 시나리오
POP의 동작도 SMTP처럼 POP 세션의 연결 설정 단계를 거쳐서 시작되고, 세션 연결의 해제에 의해 종료된다. 중간에 STAT, LIST, RETR, DELE등의 명령을 사용해 메일을 다운로드한다.
TCP 연결의 설정과 인증
POP클라이언트로부터 TCP 연결 요청이 이루어지고 POP 서버로부터 +OK의 긍정 응답이 회신되면 사용자 인증 절차에 들어간다.
- 인증 절차는 USER 명령으로 시작한다. 매개변수로 POP 서버에 등록된 로그인 이름을 전달하고, 서버에서는 정식으로 등록된 사용자인지 확인하여 결과를 회신한다. USER 명령을 성공적으로 처리하면 PASS 명령을 이용해 사용자의 로그인 암호를 전달한다. POP 서버는 암호가 올바른지 확인하여 성공, 실패 여부를 클라이언트에 회신한다.
- 두 단계의 인증 작업을 성공적으로 완료하면, STAT, LIST, RETR, DELE 등의 명령을 사용해 메일을 다운로드할 수 있다. 마지막으로 POP 세션을 종료할 때는 QUIT 명령을 사용한다.
시뮬레이션
- 110번 포트에서 대기하던 POP 서버는 '+OK Qpopper (version 4.0.5) .....'의 응답을 회신하여 POP 세션이 정상적으로 진행됨을 통지한다.
- 이후 USER 명령으로 로그인 이름 'kihyun'을 전송한다. (인증절차)
- PASS 명령으로 로그인 암호 'kihyun0'을 전송한다. (인증절차)
- 성공적으로 인증되어 '+OK' 응답을 받았다.
- STAT 명령으로 총 35개의 메일이 있음을 알 수 있다.
Reference
쉽게 배우는 데이터 통신과 컴퓨터 네트워크
https://soso-hyeon.tistory.com/113
[쉽게 배우는 데이터 통신과 네트워크] CH15. 전자 메일
01 전자 메일 사용자 환경메일 편집: 메시지를 새로 작성하거나, 수신 메일에 대해 회신하거나 수신 메일을 제3자에게 전달할 때 필요하다.메일 내용 읽기: 수신한 메일의 내용이 일반 텍스트로
soso-hyeon.tistory.com
'CS > Network' 카테고리의 다른 글
[Chapter 16] 파일 전송 (FTP 원리) (0) | 2025.02.19 |
---|---|
[Chapter 16] 파일 전송 (파일 전송을 위한 사용자 환경) (0) | 2025.02.19 |
[Chapter 15] 전자 메일 (SMTP) (0) | 2025.02.19 |
[Chapter 15] 전자 메일 (전자 메일 시스템 구조) (0) | 2025.02.19 |
[Chapter 15] 전자 메일 (메일 처리) (0) | 2025.02.19 |