기술 · 출처 기반 답변
Message-ID 헤더란? 정의와 기능
Message-ID 헤더는 특정 이메일 메시지에 할당되는 고유 식별자입니다. RFC 5322 표준의 필수 필드로, 메일 서버와 클라이언트가 제목에 의존하지 않고 메시지를 추적하고 참조하며 대화로 묶을 수 있게 합니다.
동작 원리
Message-ID는 발신 메일 에이전트가 생성합니다. 보통 고유한 문자열 뒤에 발신자의 도메인 이름이 오고, 전체가 꺾쇠괄호로 묶입니다. 예를 들면 123456789@example.com 같은 형식입니다. 이렇게 하면 전 세계에서 발송되는 모든 이메일이 각각 고유한 신원을 가지므로, 수신 서버가 메시지를 저장하거나 색인할 때 충돌이 생기지 않습니다.
발신자에게 중요한 이유
이 헤더는 이메일 스레딩과 중복 제거에 매우 중요합니다. 사용자가 메시지에 답장하면 클라이언트는 In-Reply-To와 References 헤더를 사용해 원본 Message-ID를 가리킵니다. 유효하고 고유한 ID가 없으면 이메일 클라이언트는 메시지를 스레드로 묶을 수 없으며, 일부 스팸 필터는 인터넷 표준을 준수하지 않았다는 이유로 메시지를 의심스럽게 표시할 수 있습니다.
운영 참고 사항
흔한 실수는 대량 발송에서 여러 이메일에 고유하지 않거나 고정된 Message-ID를 사용하는 것입니다. 이 경우 수신 서버가 이후 메시지를 중복으로 보고 폐기할 수 있습니다. 개발자는 메일 라이브러리가 전송마다 암호학적으로 강력한 임의 문자열을 생성하도록 해야 합니다. SendHQ 무료 도구로 헤더 구조를 확인해 규정 준수 여부를 점검할 수 있습니다.
구체적인 예시
일반적인 헤더는 Message-ID: <CAH+zL1_XyZ123@mail.sendgrid.net> 같은 형태입니다. 이 경우 CAH+zL1_XyZ123은 고유 토큰이고 mail.sendgrid.net은 발신 시스템의 도메인입니다. 이 형식 덕분에 수신 서버는 어떤 시스템이 메시지를 생성했는지, 그리고 지금 처리하는 것이 메시지의 어느 인스턴스인지 정확히 식별할 수 있습니다.
전달성에 미치는 영향
Message-ID는 DKIM처럼 주된 인증 메커니즘은 아니지만, 없거나 형식이 잘못된 Message-ID는 메일 서버가 제대로 구성되지 않았다는 강력한 신호입니다. 많은 엔터프라이즈 필터는 유효한 Message-ID가 있는지를 기본적인 정상 여부 확인으로 사용합니다. ID가 없으면 RFC 5322 사양에서 벗어나므로 이메일이 스팸함으로 분류될 가능성이 높아집니다.
팀에서 자주 묻는 질문
Message-ID를 직접 지정할 수 있나요?
네. 대부분의 SMTP API와 라이브러리는 사용자 정의 Message-ID를 지정할 수 있게 하지만, 중복 제거 문제를 피하려면 전 세계적으로 고유해야 합니다.
Message-ID는 추적 ID와 같은 것인가요?
아니요. Message-ID는 메일 라우팅을 위한 표준 프로토콜 헤더이고, 추적 ID는 보통 ESP가 분석용으로 사용하는 독자적인 내부 ID입니다.
Message-ID가 없으면 어떻게 되나요?
수신 서버가 보통 자동으로 하나 생성하지만, 이로 인해 스레딩이 깨질 수 있고 이메일이 스팸으로 표시될 가능성이 높아질 수 있습니다.
1차 출처
- RFC 5322: 인터넷 메시지 형식 — RFC Editor
- RFC 5321: 단순 메일 전송 프로토콜(SMTP) — RFC Editor