일회용 이메일 데이터셋을 구축한 방법
가짜 계정을 차단할 때 첫 번째 단계는 보통 동일합니다: 이메일을 검증하는 것입니다. 그런데 일회용 이메일을 탐지하려면, 먼저 어떤 도메인이 일회용인지 알아야 합니다. GitHub의 공개 목록은 명백한 사례는 커버하지만, 거의 업데이트되지 않습니다. 매주 새로운 서비스가 새로운 도메인으로 등장하며 탐지망을 피합니다.
저희는 WebAPI에서 자체 데이터셋을 구축하기로 결정했습니다. 그 방법을 소개합니다.
가짜 계정이 실제 비즈니스 문제인 이유
가짜 계정은 단순한 기술적 문제가 아닙니다. 비즈니스에 직접적인 비용을 발생시킵니다.
-
CRM 노이즈 : 일회용 이메일로 생성된 모든 가짜 계정이 영업 파이프라인에 들어옵니다. 영업팀은 존재하지 않는 리드를 검증하는 데 시간을 낭비하고(Hubspot, Salesforce 등), 전환 지표가 왜곡되며, CRM의 신호 대 잡음 비율이 저하됩니다. 월 수천 건의 가입이 있는 SaaS라면, 이는 수십 시간의 낭비를 의미할 수 있습니다.
-
무료 체험 및 리소스 남용 : 일회용 이메일을 통해 단일 사용자가 반복적으로 계정을 생성하여 무료 체험을 무한정 남용하거나, 무료 크레딧을 쌓거나, 할당량을 우회할 수 있습니다. 저희와 같은 API 제품의 경우, 이는 전환 없는 리소스 소비입니다.
-
오염된 제품 지표 : 가짜 계정은 가입 수를 인위적으로 부풀리고 활성화 지표(예: Mixpanel이나 Metabase 대시보드), 유지율, 전환율을 왜곡합니다. 유령 계정으로 가득 찬 코호트로는 신뢰할 수 있는 제품 결정을 내릴 수 없습니다.
-
평판 및 전달성 위험 : 일회용 주소로 온보딩 이메일을 보내는 것은 허공에 보내는 것과 같습니다. 반송이 쌓이고, 전달성이 떨어지며, 이메일 제공업체에서 발신 도메인 평판이 타격을 받습니다.
문제: 빠르게 움직이는 제공업체들
임시 이메일 서비스는 모두 같은 방식으로 작동하지 않습니다. 일부는 드롭다운 메뉴에 고정 도메인 목록을 노출합니다. 다른 것들은 매 방문마다 도메인을 순환하며 임의의 주소를 생성합니다. 일부는 JavaScript를 통해 동적으로 도메인을 삽입하여 원시 HTML에서는 보이지 않습니다.
신뢰할 수 있는 데이터셋을 구축하려면 이러한 각 동작에 적응해야 합니다.
1단계: 다중 전략 수집
저희는 20개 이상의 일회용 이메일 제공업체를 대상으로 합니다. 각각에 대해 작동 방식에 가장 적합한 추출 전략을 배포합니다.
표준 HTTP 요청 : HTML에서 직접 도메인을 노출하는 사이트(드롭다운 메뉴, 목록, 미리 채워진 입력 필드)의 경우, 간단한 HTTP 호출로 충분합니다. DOM을 파싱하여 도메인을 추출합니다.
헤드리스 브라우저 : 많은 현대 제공업체들은 JavaScript를 통해 콘텐츠를 로드합니다. 정적 HTML에는 유용한 내용이 없습니다. JS를 실행하고, 전체 렌더링을 기다린 후, 최종 DOM에 접근하는 헤드리스 브라우저를 사용합니다.
스크린샷 + OCR : 일부 서비스는 더 나아가 도메인이 DOM 어디에도 존재하지 않고 캔버스나 이미지 내부에서만 렌더링됩니다. 이 경우 스크린샷을 찍고 OCR을 통해 텍스트를 추출합니다.
직접 API 호출 : 서비스가 주소를 생성하는 API(공개 또는 반공개)를 노출하는 경우, 직접 사용합니다.
2단계: 스마트 도메인 추출
HTML이나 스크린샷을 얻는 것만으로는 충분하지 않습니다. 여전히 도메인을 안정적으로 추출해야 합니다. 여러 추출 레이어를 순서대로 적용합니다:
- 입력 필드 : 미리 채워진 이메일 주소가 있는
<input>요소를 스캔하고 도메인을 추출합니다 - 드롭다운 메뉴 :
<select>요소에는 사용 가능한 도메인의 전체 목록이 자주 포함됩니다 - 링크와 원시 텍스트 : 마지막 수단으로, 모든 보이는 텍스트에서
@domain.tld패턴을 검색합니다
3단계: 오탐 필터링
이것이 가장 중요한 단계입니다. 적극적인 추출은 노이즈를 생성합니다: 실제로 일회용이 아닌 도메인들. 필터링 없이는 합법적인 사용자를 차단할 위험이 있으며, 이는 감당할 수 없는 일입니다.
파이프라인에는 여러 필터가 적용됩니다:
- 제외 목록 : 주요 합법적 도메인(gmail.com, outlook.com 등)과 인프라 도메인(googleapis.com, cloudflare.com 등)은 체계적으로 제외됩니다
- 구조적 검증 : 도메인이 유효한 형식, 인식된 TLD를 가지고 있으며 정적 자산(.js, .css, .png)처럼 보이지 않는지 확인합니다
- DNS 검증 : 도메인이 실제로 이메일을 수신할 수 있음을 확인하기 위해 MX 레코드의 존재를 검증합니다
- 신뢰도 점수 : 각 도메인은 보고한 모든 소스로 태그됩니다. 여러 독립적인 제공업체에서 발견된 도메인은 거의 확실히 일회용입니다
이 다층 필터링을 통해 적극적인 추출에도 불구하고 매우 낮은 오탐률을 유지할 수 있습니다.
4단계: 중복 제거 및 인덱싱
동일한 도메인이 여러 제공업체에 걸쳐 나타나는 경우가 많습니다. 데이터베이스를 보강하기 전에 결과를 병합합니다: 각 도메인은 정규화되고, 중복이 제거되며, 전체 소스 목록을 유지합니다.
결과는 실시간 쿼리에 최적화된 검색 엔진에 인덱싱됩니다. API가 검증 요청을 받으면 이 데이터셋에 대한 조회가 1밀리초 미만으로 완료됩니다.
5단계: 모니터링 및 지속적인 업데이트
일회용 이메일 환경은 끊임없이 변화합니다. 도메인이 사라지고 새로운 것들이 나타납니다. 이러한 변화를 포착하기 위해 파이프라인을 자동으로 정기적으로 실행합니다.
각 실행은 보고서를 생성합니다: 처리된 제공업체 수, 발견된 도메인, 오류 등. 제공업체가 인터페이스를 변경하거나 요청을 차단하면 즉시 알림을 받고 전략을 조정합니다.
수치
현재 저희 데이터셋에는 20개 이상의 다양한 제공업체에서 38만 개 이상의 검증된 일회용 도메인이 포함되어 있습니다. 이는 이메일 검증 API의 disposable 필드를 직접 구동합니다.
이것이 여러분에게 의미하는 바
주소로 GET /v1/intelligence/email을 호출하면, disposable 필드가 실시간으로 이 데이터셋과 대조 확인됩니다. 6개월 전에 다운로드된 정적 목록이 아닌: 자동화된 파이프라인에 의해 매일 업데이트되는 살아있는 데이터셋입니다.
import requests
response = requests.get(
"https://api.veille.io/v1/intelligence/email",
params={"query": "user@guerrillamail.com"},
headers={"x-api-key": "YOUR_API_KEY"},
)
data = response.json()
if data["disposable"]:
print(f"Disposable email detected (risk: {data['risk_score']})")
일회용 이메일을 차단하면 공격자가 대규모로 가짜 계정을 생성하는 데 사용하는 첫 번째 수단을 차단할 수 있습니다. 그리고 이는 견고한 데이터셋에서 시작됩니다.
관련 글
- 일회용 이메일 도메인 목록: 차단 방법 - 블록리스트 및 실시간 탐지에 관한 실용 가이드
- 일회용 이메일이 계정 사기에 사용되는 방법 - 이 데이터셋이 예방하는 사기 패턴
- Veille로 OpenClaw에서 일회용 이메일 차단하기 - Veille API를 사용한 노코드 워크플로우 설정