이메일 헤더 분석 도구 (メールヘッダー解析ツール)
수신한 이메일의 원본 헤더(Received:, Authentication-Results: 등)를 붙여넣으면 전송 경로를 홉 단위로 분석하고 SPF/DKIM/DMARC 인증 결과도 함께 표시합니다. 분석은 100% 브라우저 내에서 처리됩니다.
Received: 헤더 각 절(clause)의 의미
| 절(clause) | 의미 |
|---|---|
| from | 이 메일을 넘겨준 직전 서버의 호스트명/IP 주소로, 이 행을 쓴 수신 측 서버가 기록한 것입니다. 발신자는 가짜 Received 행을 얼마든지 덧붙일 수 있으므로 오래된 행일수록 위조되기 쉽습니다. 실제 발신 IP를 판단할 때는 내가 관리하는 수신 서버가 쓴 행 중 가장 오래된 행(이 도구의 목록에서는 by에 내 쪽 서버가 처음 나타나는 홉)의 from을 사용하세요. |
| by | 이 홉에서 메일을 수신한 서버(예: 자신의 메일 서버)의 호스트명. |
| with | 사용된 전송 프로토콜(예: ESMTP, ESMTPS, SMTP). ESMTPS는 해당 연결이 TLS로 암호화되었음을 의미합니다. |
| for | 메일이 전달된 수신자 주소. 메일링 리스트나 여러 수신자가 있는 경우 생략되는 경우가 많습니다. |
| timestamp | 이 홉이 메일을 수신한 일시입니다. 시각과 시간대를 기록하는 것은 이 행을 쓴 수신 측 서버입니다(RFC 5321 §4.4). 홉 간의 시간 차이는 전송 지연을 가늠하는 대략적인 지표가 됩니다. |
Authentication-Results: 각 필드의 의미
| 필드 | 의미 |
|---|---|
| SPF | SPF(Sender Policy Framework) 인증 결과. 발신 IP가 해당 도메인의 DNS 레코드에서 허용한 주소 목록에 포함되는지 검증합니다. |
| DKIM | DKIM(DomainKeys Identified Mail) 인증 결과. 메일 본문 및 주요 헤더에 대한 전자 서명이 발신 도메인의 공개키로 검증되었는지 나타냅니다. |
| DMARC | DMARC(Domain-based Message Authentication, Reporting & Conformance) 인증 결과. SPF·DKIM 결과와 From 헤더 도메인의 일치 여부(얼라인먼트)를 종합적으로 판정한 결과입니다. |
메일 헤더에서 배달 경로를 좇기
받은 메일의 날 헤더를 붙여 넣으면 이 도구가 Received:를 홉마다 갈라 배달 경로를 펼쳐 보이고, Authentication-Results:에 적힌 SPF·DKIM·DMARC의 판정도 함께 늘어놓습니다. 해석은 모두 브라우저 안에서 끝나므로 붙여 넣은 내용이 어디로도 보내지지 않습니다.
읽는 법에서 먼저 짚어야 할 것은, Received:를 아래에서 위로 읽는다는 점입니다. 서버는 메일을 받을 때마다 제 줄을 맨 위에 더해 가므로, 가장 오래된 구간이 맨 아래, 마지막으로 받은 서버가 맨 위가 됩니다. 더 중요한 것은, 이 헤더들을 누구나 꾸며 낼 수 있다는 점입니다. 보내는 쪽은 Received:를 얼마든지 지어내어 앞에 늘어놓을 수 있습니다. 믿어도 되는 것은 내 관할에 있는 서버가 적은 줄과 그 위쪽뿐이며, 그 아래는 「그렇게 주장했다」는 것 이상의 뜻이 없습니다. Authentication-Results:도 마찬가지여서, 어느 서버가 적은 판정인지를 보지 않으면 판정 자체가 가짜일 수 있습니다.
사용하는 방법
- 날 헤더를 붙여 넣습니다 메일 프로그램의 「원본 보기」나 「소스 보기」에서 얻을 수 있습니다.
- Received를 아래에서 위로 읽습니다 맨 아래가 처음 보낸 곳, 맨 위가 마지막으로 받은 서버입니다.
- 인증 결과를 확인합니다 SPF·DKIM·DMARC의 판정이 나란히 놓입니다.
- 어디부터 믿을 수 있는지를 가립니다 내 관할 서버가 적은 줄보다 아래는 꾸며졌을 수 있습니다.
더 잘 활용하기 위한 팁
- Gmail에서는 메일을 연 뒤 오른쪽 위의 점 세 개 메뉴에서 "원본 보기"를 선택하면 원본 헤더를 확인할 수 있습니다. Outlook에서는 파일 > 속성 > 인터넷 헤더에서 확인할 수 있습니다.
- Received: 헤더는 메일 본문에 최신 순(수신 측이 먼저)으로 추가되므로, 이 도구는 이를 발신자에서 수신자 순으로 시간순 정렬하여 표시합니다.
- 경로상의 메일 서버 시계가 약간 어긋나 있으면 "이전 홉으로부터의 지연"이 음수로 표시될 수 있습니다. 몇 초 수준의 음수 값은 대개 실제 지연이 아니라 단순한 시계 오차입니다.
- SPF, DKIM, DMARC가 모두 통과했다고 해서 사기 메일이 아니라는 보장은 되지 않습니다. 인증은 발신 도메인 소유자가 설정한 절차가 올바르게 이루어졌는지만 검증하며, 공격자가 합법적으로 소유한 유사 도메인은 탐지할 수 없습니다.
- 특정 두 홉 사이에서 지연이 급격히 늘어난다면 해당 구간의 메일 서버에서 전송 지연이나 스팸 필터에 의한 보류가 발생했을 가능성이 있습니다.
이럴 때 쓸 수 있습니다
스팸의 출처를 살필 때
참된 발신 주소는 믿을 수 있는 가장 아래의 Received:에 나타납니다.
사칭을 알아챌 때
표시 이름과 From은 손쉽게 꾸며지므로 인증 결과를 보고 판단합니다.
배달이 늦은 까닭을 좇을 때
홉마다의 시각을 보면 어디서 멈춰 있었는지 알 수 있습니다.
우리 메일이 인증을 통과하는지 확인할 때
자신에게 시험 메일을 보내 SPF·DKIM·DMARC가 모두 통과하는지 봅니다.
메일 헤더 용어
- Received
- 메일을 받은 서버가 제 줄을 맨 위에 더해 가는 헤더입니다. 경로는 아래에서 위로 읽습니다.
- Authentication-Results
- 받는 쪽이 내린 SPF·DKIM·DMARC의 판정을 적는 헤더입니다. 누가 적었는지가 중요합니다.
- Return-Path
- 배달이 실패했을 때 되돌아갈 곳입니다. SPF는 이 도메인을 두고 검사됩니다.
- From
- 보이는 보낸 이입니다. 여기는 마음대로 적을 수 있어 이것만으로는 보낸 이의 증명이 되지 않습니다.
- Message-ID
- 메일을 하나로 가려내는 문자열입니다. 같은 메일의 겹침을 가리는 데 쓰입니다.
- 홉
- 메일이 거쳐 간 서버 하나입니다. 홉마다
Received:한 줄을 남깁니다.
자주 묻는 질문
여담 ― 이메일 헤더는 "디지털 소인"의 모음
편지에 찍히는 소인이 어느 우체국이 언제 처리했는지를 기록하는 것처럼, 이메일의 Received: 헤더는 그 메일을 중계한 모든 서버가 자신의 타임스탬프를 남기는 "디지털 소인"의 모음입니다. SMTP 프로토콜(RFC 5321)은 메일을 중계하는 모든 서버가 자신의 정보를 헤더 맨 앞에 추가하도록 규정하고 있어, 메일 한 통마다 전송 경로의 완전한 기록이 자연스럽게 쌓이게 됩니다.
이 구조가 실무에서 가장 유용하게 쓰이는 곳은 스팸 발신원 조사입니다. 다만 주의할 점은 Received: 헤더도 발신자란(From 헤더)과 마찬가지로 발신자가 자유롭게 날조할 수 있다는 것입니다. 발신자는 메일을 보내기 전에 가짜 Received: 행을 얼마든지 덧붙일 수 있으므로, 가장 오래된(맨 아래) 행일수록 위조되었을 가능성이 높습니다. 확실히 믿을 수 있는 것은 내가 관리하는 수신 서버가 쓴 행뿐입니다. 그중 가장 오래된 행은 내 서버가 외부로부터 접속을 받았을 때 기록한 것으로, 그 from에 적힌 접속원 IP 주소는 발신자가 속일 수 없습니다. 스팸 대책 전문가가 가장 먼저 확인하는 것도 바로 이 "내 서버가 기록한 첫 접속원"입니다.
SPF·DKIM·DMARC라는 세 가지 인증 기술은 이 "소인"만으로는 막을 수 없는 위장 발신에 대응하기 위해 나중에 추가되었습니다. SPF는 발신 IP가 도메인의 허용 목록에 있는지, DKIM은 전자 서명으로 메일 내용이 변조되지 않았는지, DMARC는 이 둘과 From 헤더 도메인의 일치 여부를 종합적으로 판정합니다. 2024년 Google과 Yahoo가 대량 발신자에게 DMARC 적용을 사실상 의무화하면서, Authentication-Results 헤더는 일반 수신 메일에서도 흔히 볼 수 있게 되었습니다.
평소에는 거의 의식하지 않는 이메일 헤더이지만, 한 번 열어보면 그 메일 한 통이 지구상의 어떤 서버를 몇 초 만에 거쳐 왔는지, 눈에 보이지 않는 인터넷 여정이 세밀하게 기록되어 있음을 알 수 있습니다.