이메일 ‘보내기’를 클릭하면 실제로 무슨 일이 일어날까?
출처: Dev.to
친구에게 보내는 짧은 메시지.
인턴십 지원서.
비밀번호 재설정 요청.
늦은 밤 “첨부 파일을 확인해 주세요” 이메일.
솔직히 말해서, 우리 대부분에게 이메일을 보내는 일은 믿을 수 없을 정도로 간단하게 느껴집니다:
- Gmail 열기
- 메시지 작성
- 수신자 추가
보내기 클릭 → 완료
하지만 한 번쯤은 멈춰서 생각해 본 적 있나요?
“보내기 버튼을 누른 뒤 실제로 무슨 일이 일어나는 걸까?”
몇 초 만에 이메일이 전 세계를 어떻게 여행하나요?
Gmail은 어떻게 내가 진짜 발신자임을 알 수 있나요?
Yahoo는 어떻게 이메일이 실제로 Gmail에서 온 것이고, 당신을 사칭한 해커가 보낸 것이 아니라는 것을 신뢰하나요?
그 작은 보내기 버튼 뒤에는 수 밀리초 안에 조용히 작동하는 전체 백엔드 생태계가 있습니다.
그리고 믿으세요—보이는 것보다 훨씬 흥미롭습니다.
실제 예시를 살펴보자
내가 다음 주소에서 이메일을 보낸다고 가정해 보겠습니다:
diksha@gmail.com
받는 사람은:
tom@yahoo.com
내 입장에서는 메시지를 입력하고 보내기를 클릭했을 뿐입니다.
실제로는 여러 시스템, 프로토콜, 보안 검사, DNS 서버, 메일 서버가 즉시 뒤에서 작동합니다.
그 이메일의 전체 여정을 단계별로 살펴보겠습니다.
Step 1 — Gmail이 나를 먼저 검증한다
Gmail이 내 이메일을 보내기 전에, Google은 내가 이미 Gmail 계정에 로그인했기 때문에 내가 누구인지 알고 있습니다. 로그인할 때 Google은 다음을 검증했습니다:
- 사용자 이름과 비밀번호
- 세션 토큰
- 인증 상태
그래서 보내기를 누르면 Gmail은 이미 다음을 알고 있습니다:
네, 이 사람은 실제로 Diksha입니다.
이것은 매우 중요합니다. 그렇지 않으면 누구든지 나인 척하고 내 주소로 이메일을 보낼 수 있기 때문입니다.
Step 2 — Gmail의 SMTP 서버가 인계받는다
보내기를 누르는 순간, Gmail은 내 이메일을 SMTP 서버에 넘깁니다:
smtp.gmail.com
SMTP는 Simple Mail Transfer Protocol(단순 메일 전송 프로토콜)의 약자로, 인터넷의 디지털 우체국이라고 생각하면 됩니다. 역할은 다음과 같습니다:
- 이메일 전송
- 이메일 라우팅
- 메일 서버 간 중계
이 시점에서 Gmail은 이메일을 전달하기 위해 준비를 시작합니다.
Step 3 — 숨겨진 이메일 헤더가 추가된다
Gmail은 이메일에 메타데이터를 비밀리에 추가합니다. 예를 들어:
- 발신자 주소
- 수신자 주소
- 타임스탬프
- 라우팅 정보
- 메시지 식별자
예시:
From: diksha@gmail.com
To: tom@yahoo.com
이 헤더들은 메일 서버가 이메일이 어디서 왔는지, 어디로 가야 하는지, 어떻게 처리해야 하는지를 이해하도록 돕습니다.
Step 4 — Gmail이 이메일에 디지털 서명을 한다
가장 멋진 부분 중 하나: Gmail은 DKIM 서명을 추가합니다.
DKIM(DomainKeys Identified Mail)은 암호화를 이용한 디지털 서명입니다. Google이 이메일에 “이 이메일은 정말 우리에게서 온 것입니다” 라는 변조 방지 스탬프를 찍는 것과 같습니다.
서명은 다음을 증명합니다:
- 이메일이 진본임
- 전송 중에 메시지가 수정되지 않았음
인터넷을 가로지르는 동안 단 한 단어라도 바뀌면 서명이 깨집니다.
Step 5 — Gmail이 Yahoo 메일 서버를 찾아야 한다
Gmail은 수신자 주소를 확인합니다:
tom@yahoo.com
그리고 도메인 부분을 추출합니다:
yahoo.com
컴퓨터는 인간이 읽는 이름이 아니라 IP 주소가 필요합니다. 그래서 Gmail은 DNS 조회를 수행합니다.
Step 6 — DNS와 MX 레코드가 등장한다
DNS는 인터넷 전화번호부입니다. Gmail은 DNS에 이렇게 묻습니다:
“yahoo.com에 대한 메일 서버는 어디인가요?”
DNS는 해당 도메인의 MX(메일 교환) 레코드를 확인하고 Yahoo 메일 서버 정보를 반환합니다. 예시:
yahoo.com. MX 10 mta5.am0.yahoodns.net.
이 줄은 “Yahoo 메일은 여기로 보내라”는 의미입니다. 이제 Gmail은 정확히 어디에 메시지를 전달해야 할지 알게 됩니다.
Step 7 — 이메일이 인터넷을 가로질러 이동한다
실제 여정이 시작됩니다:
- 이메일이 패킷으로 나뉩니다.
- 패킷은 라우터, ISP, 네트워크를 통해 이동합니다.
- 여러 시스템을 거쳐—모두 몇 초 안에—Yahoo 메일 서버에 도착합니다.
하지만 Yahoo는 무조건 이메일을 신뢰하지 않습니다. 여기서 사이버 보안이 중요한 역할을 합니다.
Step 8 — Yahoo가 이메일을 검증하기 시작한다
Yahoo는 “이 이메일이 정말 Gmail에서 온 건가?” 라고 묻습니다. 공격자는 끊임없이:
- 이메일 위장(spoof)
- 피싱 메일 전송
- 신뢰할 수 있는 도메인 사칭
을 시도합니다. 그래서 Yahoo는 여러 보안 검사를 수행합니다.
SPF 검증
먼저 Yahoo는 SPF(Sender Policy Framework) 를 확인합니다. SPF는 Yahoo에게 다음을 알려줍니다:
“gmail.com을 대신해 이메일을 보낼 수 있는 서버는 어디인가요?”
Yahoo는 DNS에서 Gmail의 SPF 레코드를 조회합니다. 발신 서버(smtp.gmail.com)가 허용된 경우 결과는 SPF PASS; 그렇지 않으면 SPF FAIL이 됩니다. 이는 가짜 메일 서버가 Gmail을 가장하는 것을 방지합니다.
DKIM 검증
다음으로 Yahoo는 앞서 추가된 DKIM 서명을 검증합니다:
- DNS에서 Gmail의 공개키를 가져옵니다.
- 이메일 내용과 서명을 비교해 검증합니다.
서명이 일치하면 DKIM PASS, 메시지가 변조되었으면 DKIM FAIL이 됩니다. 이는 이메일 무결성을 보장합니다.
DMARC — 최종 결정자
마지막으로 Yahoo는 DMARC(Domain‑Based Message Authentication, Reporting & Conformance) 를 확인합니다. DMARC는 SPF와 DKIM을 결합해, 어느 검증이 실패했을 때 Yahoo가 어떻게 행동해야 하는지(거부, 격리, 수락) 알려줍니다.
SPF와 DKIM이 모두 통과하고 도메인의 DMARC 정책과 일치하면, Yahoo는 Tom의 받은 편지함에 이메일을 전달합니다. 그렇지 않으면 이메일이 거부되거나 스팸 폴더로 이동될 수 있습니다.
요약
- 인증 – Gmail이 당신이 주장하는 사람임을 확인합니다.
- SMTP – Gmail이 메시지를 메일 서버에 넘깁니다.
- 헤더 – 라우팅을 위한 메타데이터가 첨부됩니다.
- DKIM – 암호화 서명이 추가됩니다.
- DNS 조회 – Gmail이 Yahoo의 MX 레코드를 찾습니다.
- 전송 – 메시지가 패킷으로 인터넷을 가로지릅니다.
- SPF/DKIM/DMARC – Yahoo가 발신자와 무결성을 검증합니다.
- 전달 – 이메일이 수신자의 받은 편지함(또는 스팸 폴더)으로 들어갑니다.
그 작은 보내기 버튼 하나가 일상적인 커뮤니케이션을 빠르고, 신뢰할 수 있으며, 안전하게 유지해 주는 복잡하고 다층적인 프로세스를 촉발합니다. 🚀
DMARC 정책 개요
“SPF 또는 DKIM이 실패하면 어떻게 해야 하나요?”
DMARC 정책은 인증되지 않은 메일에 대해 세 가지 행동 중 하나를 지정할 수 있습니다:
allow(허용)quarantine(격리)reject(거부)
예시
v=DMARC1; p=reject
해석: 인증되지 않은 이메일을 거부합니다.
샘플 프로모션 메일
오늘날 피싱과 스푸핑을 방지하는 가장 큰 방어 수단 중 하나입니다.
Step 9 — 스팸 및 악성코드 탐지
인증이 통과하더라도 Yahoo는 여전히 이메일을 다음 항목에 대해 검사합니다:
- 의
