기술 · 출처 기반 답변
ESMTP 확장이란? Extended Simple Mail Transfer Protocol
ESMTP 확장은 클라이언트와 서버가 초기 핸드셰이크 중에 기능을 협상할 수 있도록 원래의 Simple Mail Transfer Protocol을 개선한 것입니다. 클라이언트는 HELO 대신 EHLO 명령을 사용해 지원되는 확장 목록을 요청하며, 하위 호환성을 깨지 않고 암호화, 인증, 더 큰 메시지 크기 같은 기능을 사용할 수 있습니다.
동작 원리
클라이언트가 서버에 EHLO 명령을 보내면 과정이 시작됩니다. 서버는 250 OK 코드와 함께 SIZE, STARTTLS, AUTH 같은 지원되는 확장 목록으로 응답합니다. 이 협상 단계 덕분에 실제 메일 전송이 이루어지기 전에 양측이 세션의 기능에 합의할 수 있습니다. 서버가 ESMTP를 지원하지 않으면 500 또는 502 오류를 반환하고, 클라이언트는 기본 HELO 명령으로 폴백합니다.
발신자에게 중요한 이유
ESMTP는 최신 이메일 보안과 효율성에 매우 중요합니다. 이러한 확장이 없으면 발신자는 STARTTLS로 연결을 암호화하거나 SMTP AUTH로 릴레이에 자신의 신원을 증명할 수 없습니다. ESMTP는 자격 증명이 평문으로 전송되는 것을 막고 이메일 스트림의 무결성을 보호합니다. SendHQ 도구를 사용하는 발신자는 DNS와 인증 설정을 확인해 자신의 인프라가 이러한 필수 확장을 지원하는지 검증할 수 있습니다.
일반적인 운영 참고 사항
흔한 실수는 EHLO에서 HELO로의 폴백을 처리하지 않는 것으로, 이 경우 레거시 시스템과의 연결이 실패할 수 있습니다. 또한 일부 방화벽이나 보안 어플라이언스는 SMTP 검사를 수행하면서 EHLO 확장을 제거해 STARTTLS를 사실상 비활성화하고 연결을 안전하지 않은 상태로 만들 수 있습니다. 관리자는 네트워크 중간 장치가 확장 협상 과정에 간섭하지 않도록 해야 합니다.
구체적인 예시
일반적인 세션에서 클라이언트는 EHLO mail.example.com을 보냅니다. 서버는 250-smtp.provider.com Hello, 250-SIZE 52428800, 250-STARTTLS, 250-AUTH PLAIN LOGIN으로 응답합니다. 클라이언트는 목록에서 STARTTLS를 확인하고, 자격 증명을 제공하는 AUTH 명령을 보내기 전에 즉시 STARTTLS 명령을 실행해 연결을 TLS로 업그레이드합니다.
호환성과 표준
ESMTP는 원래의 SMTP 사양과 엄격한 하위 호환성을 유지합니다. 클라이언트가 너무 오래되어 EHLO를 이해하지 못하면 서버는 기본 SMTP 명령으로 계속 동작합니다. 이런 계층적 접근 방식 덕분에 전 세계 이메일 생태계는 새로운 보안 표준을 도입하며 발전하면서도, 세대가 다른 다양한 인프라 사이에서 메일을 계속 전달할 수 있습니다.
팀에서 자주 묻는 질문
HELO와 EHLO의 차이는 무엇인가요?
HELO는 기본 SMTP에서 사용하며 클라이언트를 식별하기만 합니다. EHLO는 ESMTP에서 사용하며 클라이언트를 식별하고 서버가 지원하는 확장 목록을 요청합니다.
ESMTP가 SMTP를 대체하나요?
아니요. ESMTP는 SMTP의 확장입니다. 레거시 지원을 위해 원래 프로토콜과의 호환성을 유지하면서 새로운 기능을 추가합니다.
오늘날 가장 흔한 확장은 무엇인가요?
가장 중요한 확장은 암호화를 위한 STARTTLS, 클라이언트 인증을 위한 AUTH, 최대 메시지 크기 지정을 위한 SIZE입니다.
1차 출처
- RFC 5321: 단순 메일 전송 프로토콜(SMTP) — RFC Editor
- RFC 3207: 전송 계층 보안(TLS) 기반 보안 SMTP를 위한 SMTP 서비스 확장 — RFC Editor
- RFC 4954: 인증을 위한 SMTP 서비스 확장 — RFC Editor