이메일 프로토콜(SMTP·POP3·IMAP) 완전정복

메일 앱 설정 화면에서 늘 마주치는 발신·수신 서버, 그 뒤에 숨은 프로토콜의 역사와 차이, 포트와 암호화 방식, 스팸 방지 인증까지 한 번에 이해합니다.

한눈에 보기

이메일은 하나의 프로토콜이 아니라 역할이 다른 프로토콜의 조합으로 움직입니다. 메일을 서버로 내보내고 서버끼리 전달하는 일은 SMTP(RFC 5321)가, 서버에 도착한 메일을 내 기기에서 읽는 일은 POP3(RFC 1939) 또는 IMAP(현행 RFC 9051)이 맡습니다. 그래서 메일 앱은 발신 서버와 수신 서버를 따로 묻습니다. 이 글에서는 각 프로토콜의 유래, 포트 번호와 암호화 방식(STARTTLS와 암시적 TLS), POP3와 IMAP의 선택 기준, 그리고 SPF·DKIM·DMARC가 왜 필요한지를 실제 사례와 함께 정리합니다.

어디서 왔을까: 프로토콜의 역사

SMTP의 뿌리는 1980년대 초 인터넷 표준 문서들에 있습니다. 위키백과 기준으로 1980년 포스텔(Postel)과 슬루저(Sluizer)가 메일 전송 프로토콜(RFC 772)을 제안했고, 1981년 RFC 788, 1982년 RFC 821로 이어졌으며, 현재 표준은 2008년의 RFC 5321입니다. 수신 쪽은 POP가 1984년(RFC 918)부터 버전을 거듭해 POP3가 되었고 현행 문서는 RFC 1939입니다. IMAP은 1986년 마크 크리스핀(Mark Crispin)이 "원격 메일함 접근" 프로토콜로 설계한 것에서 출발해, IMAP4rev1(RFC 3501)을 거쳐 현재는 IMAP4rev2(RFC 9051)가 최신입니다. 출발점부터 POP는 "가져오기", IMAP은 "서버의 메일함을 원격으로 다루기"라는 서로 다른 철학이었습니다.

↔️

메일을 "보내는" 과정과 "받는" 과정은 서로 다른 프로토콜을 씁니다

메일 앱을 설정할 때 발신 서버와 수신 서버를 따로 입력하는 이유는, 보내는 일과 받는(내려받는) 일을 서로 다른 프로토콜이 담당하기 때문입니다.

메일을 보낼 때는 SMTP(Simple Mail Transfer Protocol)가 담당하고, 이미 서버에 도착한 메일을 내 기기로 가져올 때는 POP3나 IMAP이 담당합니다. 그래서 메일 앱 설정 화면에는 항상 "발신(SMTP) 서버"와 "수신(POP·IMAP) 서버" 정보를 따로 입력하게 되어 있으며, 이 둘을 헷갈려 반대로 입력하면 메일이 아예 오가지 않습니다.

📤

SMTP: 메일을 전송하는 프로토콜

내 메일 앱이 메일 서버로 메일을 밀어 넣거나, 서버끼리 메일을 중계할 때 쓰는 발신 전용 프로토콜입니다.

SMTP는 메일을 "보내는" 방향으로만 쓰이는 프로토콜입니다. 내가 작성한 메일을 내 메일 서버에 전달할 때도, 그 서버가 받는 사람의 메일 서버로 다시 중계할 때도 모두 SMTP가 쓰입니다. 표준 포트는 상황에 따라 다른데, 25번은 전통적으로 서버 간 중계용으로 쓰였고, 587번(STARTTLS 방식)과 465번(암시적 TLS 방식)이 오늘날 메일 앱이 서버로 메일을 제출(submission)할 때 널리 쓰입니다. 많은 인터넷 서비스 제공업체(ISP)가 스팸 방지를 위해 25번 포트로 나가는 일반 사용자 트래픽을 막아두는 경우가 많아, 메일 앱 설정에서는 보통 587번이나 465번을 사용합니다.

📥

POP3: 내려받고 나면 서버에서 지우는 방식

메일을 내 기기로 통째로 내려받아 로컬에 저장하는 방식으로, 기본적으로 다운로드가 끝나면 서버의 원본을 삭제하도록 설계되어 있습니다.

POP3(Post Office Protocol version 3)는 메일을 내 컴퓨터나 스마트폰으로 내려받아 로컬 저장소에 보관하는 방식입니다. 기본 동작은 다운로드 완료 후 서버의 메일을 삭제하는 것이지만, 대부분의 메일 앱은 "서버에 사본 남기기" 옵션을 켤 수 있게 해줍니다. 표준 포트는 암호화하지 않는 110번과, TLS로 암호화하는 995번(POP3S)입니다. 한 기기에서만 메일을 확인하고 저장 공간을 서버가 아닌 내 기기에 두고 싶을 때 적합한 방식입니다.

🔄

IMAP: 서버의 원본을 여러 기기에서 동기화하는 방식

메일의 원본은 항상 서버에 두고, 읽음 표시나 폴더 이동 같은 상태 변화를 여러 기기가 실시간으로 함께 보는 방식입니다.

IMAP(Internet Message Access Protocol)은 메일 원본을 서버에 그대로 유지한 채, 내 기기는 서버 내용을 실시간으로 들여다보고 동기화하는 방식입니다. 스마트폰에서 메일을 읽고 삭제하면 컴퓨터의 메일 앱에서도 곧바로 같은 상태로 반영되는 이유가 바로 이것입니다. 표준 포트는 암호화하지 않는 143번과, TLS로 암호화하는 993번(IMAPS)입니다. 스마트폰·태블릿·컴퓨터 등 여러 기기에서 같은 메일함을 확인하는 요즘 사용 환경에는 IMAP이 사실상 표준으로 자리 잡았습니다.

⚖️

POP3와 IMAP, 무엇을 골라야 할까

여러 기기에서 같은 메일함을 확인한다면 IMAP이, 저장 공간을 서버가 아닌 내 기기에 두고 싶거나 오프라인 보관이 중요하다면 POP3가 더 맞습니다.

대부분의 웹메일 서비스(지메일, 네이버 메일 등)는 기본적으로 IMAP 사용을 권장하며, 실제로 스마트폰 기본 메일 앱과 아웃룩 같은 프로그램도 IMAP을 기본값으로 두는 경우가 많습니다. 다만 서버 저장 용량에 제한이 있거나, 인터넷 연결 없이도 지난 메일을 모두 열람하고 싶은 경우에는 POP3로 내려받아 로컬에 영구 보관하는 방식이 더 유리할 수 있습니다.

⚠️

메일 앱 수동 설정에서 자주 하는 실수

발신 서버와 수신 서버 주소를 바꿔 입력하거나, 암호화 방식에 맞지 않는 포트 번호를 넣으면 "인증 실패"나 "서버에 연결할 수 없음" 오류가 납니다.

수동으로 메일 계정을 설정할 때 가장 흔한 실수는 발신(SMTP) 서버 주소 칸에 수신 서버 주소를 넣거나 그 반대로 넣는 것입니다. 또한 587번 포트는 STARTTLS(평문으로 연결한 뒤 암호화로 전환) 방식을, 465번과 993·995번은 암시적 TLS(처음부터 암호화된 연결) 방식을 쓰는데, 앱의 보안 설정이 실제 포트의 암호화 방식과 맞지 않으면 연결 자체가 거부됩니다. 대부분의 메일 서비스는 설정 방법을 공식 고객센터 페이지에 정확히 안내하므로, 수동 설정 시 반드시 해당 안내의 서버 주소·포트·암호화 방식을 그대로 따르는 것이 안전합니다.

🔌

한눈에 보는 표준 포트 번호

SMTP는 25·587·465번, POP3는 110·995번, IMAP은 143·993번을 씁니다.

SMTP(발신): 25번(전통적인 서버 간 중계), 587번(STARTTLS 제출), 465번(암시적 TLS 제출, RFC 8314로 표준 제출 포트로 다시 권장됨). POP3(수신): 110번(평문), 995번(TLS 암호화). IMAP(수신): 143번(평문), 993번(TLS 암호화). 요즘은 보안을 위해 평문 포트(25·110·143) 대신 암호화가 적용된 포트를 쓰는 것이 원칙이며, 어떤 포트를 정확히 써야 하는지는 이용 중인 메일 서비스의 안내를 따르는 것이 가장 확실합니다.

세 프로토콜 한눈에 비교

구분SMTPPOP3IMAP
역할메일 제출과 서버 간 전달메일 내려받기서버의 메일함을 원격으로 다루기
현행 문서RFC 5321RFC 1939RFC 9051 (이전 RFC 3501)
평문 포트25(서버 간), 587(제출, STARTTLS로 전환)110143
처음부터 TLS465995993
읽음·폴더 상태해당 없음서버에 저장하지 않음서버에 저장되어 기기 간 동기화

표의 포트는 RFC 8314와 위키백과 정리에서 확인한 값입니다. 587은 제출(submission) 포트로 RFC 6409에 정리되어 있고, 465는 한때 폐기된 것으로 취급되다가 RFC 8314에서 "암시적 TLS 제출" 포트로 다시 인정되었습니다.

STARTTLS와 암시적 TLS, 무엇이 다른가

STARTTLS(RFC 3207)는 평문으로 연결한 뒤 "암호화로 전환하자"고 제안하는 방식입니다. 서버가 제안하고 클라이언트가 받아들여야 하므로, 중간의 공격자가 제안 부분을 지워 평문 연결로 몰아가는 STRIPTLS 공격이 가능하다는 점이 알려져 있습니다. 암시적 TLS는 연결 즉시 TLS를 시작하므로 이런 다운그레이드 여지가 적습니다. RFC 8314는 암시적 TLS를 STARTTLS보다 우선하라고 권고하되, 전환 기간에는 클라이언트와 서버가 587의 STARTTLS와 465의 암시적 TLS를 모두 구현하라고 말합니다. 그래서 "465는 구식, 587이 정답" 같은 단정은 현재 표준 문서와 맞지 않습니다.

실제 사례

사례 1. 465번 포트의 부활 (표준이 방향을 바꾼 사례)

465번은 암호화된 SMTP를 위해 일찍부터 쓰이던 포트였는데, STARTTLS 방식이 표준으로 자리 잡으면서 공식적으로는 폐기된 것으로 취급되었습니다(위키백과 기준 RFC 2487 이후). 그럼에도 현장에서는 계속 쓰였습니다. RFC 8314는 이 현실과 "처음부터 암호화하는 편이 안전하다"는 판단을 반영해 465를 제출용 암시적 TLS 포트로 다시 인정했고, 이미 널리 쓰이던 포트라 IANA가 이례적으로 한 번 예외 등록을 했다고 문서에 적혀 있습니다. 배울 점은 포트 번호의 "정답"이 고정불변이 아니라 보안 환경과 표준 개정에 따라 바뀐다는 것입니다. 설정은 서비스 제공자의 최신 안내를 기준으로 합니다.

사례 2. 지메일의 발신자 요건 강화 (인증이 사실상 의무가 된 사례)

구글의 공식 발신자 가이드에 따르면 2024년 2월 1일부터 개인 지메일 계정으로 보내는 모든 발신자에게 SPF 또는 DKIM 설정, 유효한 정방향·역방향 DNS, TLS 사용 등이 요구되고, 하루 5,000통을 넘게 보내는 대량 발신자에게는 SPF·DKIM·DMARC를 모두 설정하고(DMARC 정책은 none이어도 됨) 구독 메일에 원클릭 수신 거부를 제공하도록 요구합니다. 스팸 신고율은 0.3% 미만이어야 한다고 명시되어 있습니다. 이 규칙은 메일 프로토콜 표준이 아니라 대형 수신 사업자의 운영 정책이라는 점이 중요합니다. 표준(SMTP)은 "보낼 수 있게" 해 주지만, 받아 주느냐는 수신 측 정책이 정한다는 것을 보여 줍니다.

사례 3. 가상 예시: 메일 앱 수동 설정이 실패하는 이유

가상 예시입니다. 회사 도메인 메일을 새 스마트폰에 수동으로 등록하는 A씨가 수신 서버는 IMAP 993번(처음부터 TLS)으로 맞게 넣었지만, 발신 서버는 587번(STARTTLS)을 넣고 보안 설정을 "SSL/TLS"(처음부터 TLS)로 골랐다고 해 봅시다. 앱은 연결 즉시 TLS를 시도하지만 서버는 평문 인사말부터 보내므로 연결이 실패합니다. 받기는 되는데 보내기만 실패하는 전형적인 증상입니다. 이럴 때는 (1) 발신과 수신 설정이 따로라는 점, (2) 포트와 보안 방식이 짝이라는 점, (3) 서비스의 공식 안내를 먼저 확인하세요.

SPF·DKIM·DMARC: 보낸 사람이 진짜인가

SMTP 자체는 보낸 사람 주소를 강하게 검증하지 않습니다. 이를 보완하는 도메인 인증이 세 가지입니다. SPF(RFC 7208)는 도메인이 DNS에 "이 IP에서 우리 메일을 보낸다"고 게시하고 수신 서버가 대조하는 방식입니다. DKIM(RFC 6376)은 메일에 전자서명을 넣고 공개키를 DNS에 게시해 변조 여부를 확인합니다. DMARC(RFC 7489, 2015)는 SPF·DKIM 결과가 From 주소의 도메인과 맞는지(정렬)를 보고, 실패 시 none·quarantine·reject 중 어떻게 처리할지 도메인이 게시하며 보고서도 받게 합니다. 참고로 RFC Editor에는 RFC 9989가 RFC 7489를 대체하는 표준 트랙 문서로 올라와 있으므로, 구현할 때는 최신 문서를 확인하세요. 세부 설정은 이메일 인증 가이드에서 이어서 볼 수 있습니다.

직접 확인해 보기: 체크리스트

흔한 오해와 정정

한계와 더 알아볼 점

전송 구간 TLS는 "내 기기와 서버 사이"나 "서버와 서버 사이"를 보호할 뿐, 메일이 서버에 저장된 뒤의 내용까지 지켜 주지는 않습니다(종단 간 암호화와는 다른 개념). 또 메일 서버 간 TLS가 항상 적용되는지는 상대 서버 설정에 달려 있습니다. 이 글의 대량 발신 기준은 구글 공식 문서(2024년 2월 시행 기준)이며 사업자 정책은 바뀔 수 있습니다.

포트 번호 전체를 한눈에 보고 싶다면

웹·데이터베이스 포트까지 자주 쓰는 포트 번호를 모두 정리한포트 번호 총정리 페이지도 함께 확인해보세요.

메일 서버 이름을 도메인 설정에서 확인하려면

내가 관리하는 도메인의 메일 수신 서버가 어디로 지정되어 있는지는DNS 레코드 타입 완전정복의 MX 레코드 항목에서 확인할 수 있습니다. TLS가 어떻게 협상되는지는 TLS 핸드셰이크 가이드를 참고하세요.

자주 묻는 질문

지메일이나 네이버 메일도 이 프로토콜을 그대로 쓰나요?

네, 지메일·네이버 메일·아웃룩 같은 웹메일 서비스도 스마트폰 기본 메일 앱이나 아웃룩 프로그램에 계정을 등록할 때는 내부적으로 SMTP·IMAP(또는 POP3)를 그대로 사용합니다. 다만 웹 브라우저에서 직접 메일함에 접속할 때는 이 프로토콜 대신 일반적인 웹(HTTPS) 통신을 사용합니다.

465번과 587번 중 어떤 포트를 써야 하나요?

두 포트 모두 암호화된 발신에 널리 쓰이고 있어 어느 한쪽이 "구식"이라고 단정하기 어렵습니다. 587번은 STARTTLS 방식, 465번은 처음부터 암호화된 연결(암시적 TLS) 방식이라는 차이가 있으며, 정확히 어떤 포트를 지원하는지는 이용 중인 메일 서비스의 공식 설정 안내를 따르는 것이 가장 확실합니다.

메일은 받아지는데 보내기만 안 되는 이유는 무엇인가요?

수신(IMAP/POP3)과 발신(SMTP)은 서버 주소, 포트, 인증 설정이 따로입니다. 발신 서버 인증 여부, 포트와 보안 방식 불일치, 또는 사용 중인 네트워크가 25번 포트를 막은 경우가 흔한 원인이며, 서비스의 공식 설정 안내와 하나씩 대조해 보세요.

평문 포트(25·110·143)는 이제 쓰면 안 되나요?

25번은 서버 간 전달에서 여전히 쓰이지만, 사용자가 비밀번호를 보내는 접속에서는 암호화 포트나 STARTTLS를 쓰는 것이 원칙입니다. RFC 8314도 평문 접근을 가능한 한 빨리 없애는 방향을 권고합니다.

IMAP과 POP3를 동시에 쓸 수 있나요?

같은 계정에 둘 다 접속하는 것을 허용하는 서비스도 있지만, POP3 클라이언트가 서버에서 메일을 지우면 IMAP 쪽에서도 사라질 수 있어 혼용은 권하지 않습니다.