피드로 돌아가기
Dev.toBackend
원문 읽기
SMTP 프로토콜 제약을 극복한 고신뢰도 Email Verification 시스템 설계
There's no clean way to verify an email address. Here's what works anyway.
AI 요약
Context
단순 Syntax Check와 MX Record 확인만으로는 실제 Mailbox 존재 여부를 판별할 수 없는 프로토콜적 한계 존재. 특히 Catch-all 설정과 대형 Provider의 Anti-probe 동작으로 인해 단순 SMTP Handshake 기반의 검증은 높은 False Positive 발생률을 유발함.
Technical Solution
- RFC 5322 기반 Parser 도입을 통한 단순 Regex의 한계 극복 및 정확한 Syntax Validation 수행
- MX Record 존재 여부 확인을 통해 Domain 수준의 메일 수신 가능성 1차 필터링
- SMTP RCPT TO 응답 신호를 분석하되, 가상의 무작위 주소를 선제 전송하여 Catch-all Domain 여부를 판별하는 검증 로직 설계
- Gmail, Outlook 등 Anti-probe를 적용한 대형 Provider 리스트를 유지하고 SMTP 응답 대신 별도 신호 기반의 Fallback 전략 적용
- IP Reputation 관리를 위한 rDNS 설정 및 Domain별 Pacing 제어를 통해 Tarpitting 및 Block 위험 최소화
- Binary 결과(True/False)가 아닌 Confidence Score 모델을 도입하여 리스크 수준에 따른 가변적 Threshold 적용 구조 설계
실천 포인트
1. 단순 Regex 대신 RFC 표준 파서를 사용하여 Syntax Check 정밀도 향상
2. Catch-all Domain 판별을 위해 무작위 주소로 Probe를 먼저 수행하는 절차 추가
3. 대형 메일 서비스 제공자의 특수 응답 패턴을 정의한 Provider Map 구축
4. 전송 IP의 rDNS 설정 및 도메인별 요청 속도 제어(Pacing) 로직 구현
5. 검증 결과에 Confidence Score를 부여하여 비즈니스 케이스별 임계치 차등 적용