Dev/CS

[CS] 메일 헤더를 분석해보자

싹다배워 2026. 2. 9. 18:10
반응형

메일 헤더(Header)란 무엇인가?

메일 헤더는 "이 메일이 어디서, 누구에 의해, 어떤 방식으로 전달되었는지"를 기록한 메일의 이력서 같은 존재다.

 

본문은 사용자에게 보이는 영역이라면 헤더는 메일 서버와 보안 시스템을 위한 영역이다.

 

스팸 분석, 위·변조 판단, 발송 경로 추적 시 가장 먼저 확인하는 게 바로 이 메일 헤더다.


메일 헤더 분석 가이드 (예시 헤더 기반 정리)

/* ChatGPT를 통해 만든 샘플 메일 헤더입니다. */

Received: from mail.example-sender.com (203.0.113.10)
        by mail.example-receiver.com with ESMTP;
        Tue, 04 Feb 2026 15:20:11 +0900

Authentication-Results: mail.example-receiver.com;
        spf=pass smtp.mailfrom=mailer@example.com;
        dkim=pass header.d=example.com

Received-SPF: pass (mail.example-receiver.com: domain of mailer@example.com
        designates 203.0.113.10 as permitted sender)

DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=example.com; s=default;
        h=From:To:Subject:Date;
        bh=abcdefg123456=;
        b=ZYX987654321=

From: "Example Service" <no-reply@example.com>
To: user@example-receiver.com
Reply-To: support@example.com
Subject: [Example] Sample Mail Header Guide
Date: Tue, 04 Feb 2026 15:20:11 +0900

Precedence: bulk
List-Unsubscribe: <mailto:unsubscribe@example.com>,
        <https://example.com/unsubscribe>

Message-ID: <20260204152011.12345@mail.example-sender.com>
MIME-Version: 1.0
Content-Type: text/html; charset=UTF-8

1. Received - 메일 전달 경로

Received: from mail.example-sender.com (203.0.113.10)
by mail.example-receiver.com with ESMTP;
  • 역할: 메일이 어떤 서버에서 어떤 서버로 전달되었는지 기록 (여러 줄일 경우 아래에서 위 순서로 해석)
  • 체크 포인트: 발송 서버 IP, 중간 경유 서버 존재 여부

2. SPF (Sender Policy Framework)

Received-SPF: pass
spf=pass smtp.mailfrom=mailer@example.com
  • 역할: 발송 서버 IP가 해당 도메인에서 허용된 서버인지 검증 (DNS SPF 레코드 기반 검사)
  • 체크 포인트: pass(정상), fail(스푸핑 의심), softfail(정책 미흡)

3. DKIM (DomainKeys Identified Mail)

dkim=pass header.d=example.com
  • 역할: 메일 전송 중 본문/헤더 위변조 여부 검증
  • 체크 포인트: dkim=pass header.d → 서명 도메인

4. Authentication-Results

Authentication-Results:
spf=pass
dkim=pass
  • 역할: SPF, DKIM, DMARC 최종 인증 결과 요약
  • 체크 포인트: pass가 아닐 경우 의심 필요

5. From / Reply-To

From: no-reply@example.com
Reply-To: support@example.com
  • 역할
    - From=사용자에게 표시되는 발신자
    - Reply-To: 회신 시 실제 수신 주소
  • 체크 포인트
    - 외부 발송 서버 + 내부 도메인 From 구조 가능
    - SPF/DKIM 통과 여부가 핵심

6. Precedence - 메일 성격 구분

Precedence: bulk
  • bulk: 대량 발송 메일
  • list: 메일링 리스트
  • normal: 일반 메일

7. List-Unsubscribe

List-Unsubscribe:
<mailto:unsubscribe@example.com>,
<https://example.com/unsubscribe>
  • 역할: 수신 거부 경로 제공

8. Message-ID

Message-ID: <20260204152011.12345@mail.example-sender.com>
  • 역할: 메일 고유 식별자, 로그 추적, 발송 이력 확인 시 활용

9. MIME / Content-Type

Content-Type: text/html; charset=UTF-8
  • 메일 본문 형식, 문자셋(인코딩) 정보
  • 한글 깨짐 현상 발생 시 해당 헤더값과 연관됨

메일 헤더 분석 체크리스트

항목 확인 내용
Received 발송 경로 정상 여부
SPF pass 여부
DKIM pass 여부
From 도메인 정합성
Precedence 대량 메일 여부
List-Unsubscribe 수신 거부 제공
Message-ID 로그 추적 가능

메일 담당자이다보니, 잘 까먹는 나를 위해 정리해보았다.

반응형