일회용 이메일 검사
도메인을 입력하면 일회용 이메일 서비스인지 알려드립니다. 무료이고 가입도 필요 없으며, 저희 도메인도 숨기지 않고 함께 표시합니다.
주요 20개 도메인 검사 결과
이 표의 결과는 검사기와 같은 데이터로 생성되므로 둘의 판정이 서로 어긋날 수 없습니다. 설명 열은 그 서비스가 무엇인지를, 판정 열은 차단 목록이 그 도메인을 어떻게 보는지를 나타냅니다.
| 도메인 | 판정 | 어떤 서비스인가 |
|---|---|---|
| gmail.com | 등록되지 않음 | 구글의 개인용 메일 서비스. |
| outlook.com | 등록되지 않음 | 마이크로소프트의 개인용 메일 서비스. |
| yahoo.com | 등록되지 않음 | 야후 메일. |
| icloud.com | 등록되지 않음 | 애플의 메일 서비스. Apple 계정과 연결됩니다. |
| proton.me | 등록되지 않음 | 프라이버시 중심 메일 제공업체. 무료·유료 요금제가 있습니다. |
| qq.com | 등록되지 않음 | 텐센트 QQ 메일. 중국에서 가장 많이 쓰이는 서비스 중 하나. |
| 163.com | 등록되지 않음 | 넷이즈 메일. 중국에서 널리 쓰입니다. |
| gmx.com | 등록되지 않음 | GMX. 오래 운영되어 온 무료 메일 제공업체. |
| zoho.com | 등록되지 않음 | Zoho Mail. 기업과 자체 도메인용. |
| simplelogin.io | 등록되지 않음 | 실제 받은편지함으로 전달해 주는 별칭 서비스. |
| duck.com | 등록되지 않음 | DuckDuckGo Email Protection. 별칭 전달 서비스. |
| mailinator.com | 일회용으로 등록됨 | 가입 없이 누구나 열 수 있는 공개 일회용 받은편지함. |
| yopmail.com | 일회용으로 등록됨 | 일회용 받은편지함 서비스. |
| guerrillamail.com | 일회용으로 등록됨 | 일회용 받은편지함 서비스. 지금까지 운영되는 가장 오래된 곳 중 하나. |
| sharklasers.com | 일회용으로 등록됨 | Guerrilla Mail의 대체 도메인 중 하나. |
| 10minutemail.com | 일회용으로 등록됨 | 짧은 시간 뒤 만료되는 일회용 받은편지함. |
| temp-mail.org | 일회용으로 등록됨 | 여러 지역 도메인을 가진 일회용 받은편지함 서비스. |
| 1secmail.com | 일회용으로 등록됨 | 공개 API도 제공하는 일회용 받은편지함 서비스. |
| trashmail.com | 일회용으로 등록됨 | 전달 방식이며 유효기간이 있는 일회용 주소. |
| moemail.app | 저희 도메인입니다 | 이 서비스입니다. 일회용 이메일 제공업체 —— 아래 설명을 보세요. |
예·아니오가 아니라 두 단계로 나눈 이유
대부분의 무료 검사기는 true 또는 false만 알려줍니다. 그런데 그 방식은 정작 알아야 할 것, 즉 그 답이 얼마나 확실한지를 가려버립니다. 저희는 검수 기준이 다른 두 목록을 사용하고, 어느 쪽에 걸렸는지를 함께 알려드립니다.
등록됨
엄격하게 검수된 차단 목록에 있습니다. 항목이 사람 손으로 확인되어 오탐이 드뭅니다. 자동으로 차단하거나 표시할 거라면 이 단계를 기준으로 삼으세요.
가능성
정확도보다 범위를 택한 목록에만 있습니다. 여러 판단 근거 중 하나로 쓸 만합니다. 이 단계만으로 차단하면 실제 사용자를 이따금 거부하게 됩니다.
미등록
두 목록 모두에 없습니다. 이 결과가 무엇을 뜻하고 무엇을 뜻하지 않는지 유의하세요. 완전한 차단 목록은 존재하지 않으며, 갓 만들어진 일회용 도메인은 한동안 이 검사를 계속 통과합니다.
목록에 걸린 것은 근거이지 증명이 아닙니다. 실제로 영향이 있는 판단이라면 직접 확인할 수 있는 신호 —— MX 레코드, 도메인 등록 시점, 계정 행동, 확인 메일 —— 를 함께 쓰세요.
별칭 서비스는 일회용 이메일과 다릅니다
SimpleLogin, DuckDuckGo Email Protection, 그리고 Gmail의 플러스 주소는 모두 오래 쓰는 받은편지함으로 전달되는 주소를 줍니다. 주소는 버릴 수 있지만 그 뒤의 받은편지함은 남습니다. 사용자는 여전히 메일을 읽고, 답장하고, 나중에 계정을 복구할 수도 있습니다.
목록마다 이들을 다루는 방식이 달라서 별칭 도메인이 등록됨으로 표시될 수 있습니다. 차단을 결정하기 전에 알아둘 만한 점입니다. 별칭 사용자를 거부하면 프라이버시를 중시할 뿐 실제로 존재하는 고객을 돌려보내게 됩니다. 일회용 받은편지함은 몇 분 만에 버려지지만, 별칭은 그것을 만든 계정보다 더 오래 쓰이기도 합니다.
데이터 자체에 모순이 있고, 이는 알아둘 만합니다. addy.io는 등록되어 있지만 같은 회사의 이전 도메인인 anonaddy.com은 없습니다. relay.firefox.com은 등록되어 있는데, Firefox Relay가 실제로 발급하는 주소의 도메인은 mozmail.com이고 그쪽은 아예 없습니다. 이 두 건은 모두 '등록됨'이 아니라 '가능성' 단계로 분류됩니다. 바로 그 단계가 존재하는 이유입니다.
저희 도메인도 일회용으로 표시합니다
MoeMail은 일회용 이메일 서비스입니다. 저희 도메인은 차단 목록이 설명하는 것과 똑같이 동작하므로, 정직한 답은 이렇습니다 —— 애초에 그 목록에 들어가야 하는 도메인이고, 이 검사기도 그렇게 표시합니다.
저희만 조용히 빼둘 수도 있었지만 그러지 않았습니다. 이유는 간단합니다. 자기 도메인을 넣어보면 5초 만에 드러나는 일이고, 만든 쪽을 감싸는 것이 들통난 도구는 아무 가치가 없습니다. 사이트를 운영하면서 일회용 가입을 막고 싶다면, 이 도구로 저희도 막을 수 있어야 합니다.
사이트는 실제로 일회용 이메일을 어떻게 걸러내는가
이런 목록 조회는 첫 번째 층일 뿐입니다. 실제 시스템은 여러 검사를 겹쳐 씁니다. 공개·상업용 목록과 대조하고, MX 레코드를 조회해 메일을 실제로 받는지 확인하고, 도메인이 언제 등록됐는지 보고, 가입 후 계정이 어떻게 행동하는지 관찰합니다.
그래서 어느 목록에도 없는 주소가 거부되기도 하고, 일회용 주소가 무난히 통과하기도 합니다. 더 자세한 내용은 따로 정리해 두었습니다.
데이터 출처
이 검사기는 커뮤니티가 관리하는 두 개의 공개 차단 목록을 조회합니다. 두 번째는 집계 도구이므로 거기에 들어가는 저장소들도 아래에 함께 표기하고, 각각 원본으로 연결해 두었습니다. 항목을 직접 손보지 않고 상위 저장소에서 다시 만들기 때문에, 여기서 얻는 결과는 관리자들이 공개한 것과 일치합니다.
- disposable-email-domains/disposable-email-domainsCC0 1.0 Universal
- disposable/disposable-email-domainsMIT
- 7c/fakefilterBSD-3-Clause
- daisy1754/jp-disposable-emailsMIT
- disposable/static-disposable-listsMIT
- FGRibreau/mailcheckerMIT
- flotwig/disposable-email-addressesMIT
- GeroldSetz/emailondeck.com-domainsCC-BY-4.0
- GeroldSetz/Mailinator-DomainsCC-BY-4.0
- martenson/disposable-email-domainsno licence declared
- wesbos/burner-email-providersMIT
이것이 데이터 출처의 전부는 아닙니다. 집계 도구는 일회용 메일 웹사이트를 직접 수집하기도 하는데, 그쪽에는 표기할 저장소도 라이선스도 없습니다. 소스가 공개되어 있으니 전체는 직접 확인할 수 있습니다: generator.py
목록 다운로드
합치고 중복을 없앤 목록을 텍스트 파일로 제공합니다. 한 줄에 도메인 하나, 키 불필요, 요청 제한 없음. 직접 만드는 프로젝트에 쓰셔도 됩니다.
disposable-domains.txt두 목록 모두 최신이거나 완전하다고 주장하지 않으며, 관리자들도 그렇게 밝히고 있습니다. 도메인은 주인이 바뀌고, 서비스는 문을 닫고, 새로운 것이 매일 생깁니다. 여기서 얻는 결과는 실시간 권위가 아니라 커뮤니티가 유지하는 스냅샷으로 다루세요.
무료 일회용 이메일 검사 API
이 페이지가 수행하는 것과 같은 조회를 JSON 엔드포인트로 제공합니다. API 키도, 가입도, 충전할 쿼터도 없습니다 —— 가입 폼에서, Worker에서, 셸 스크립트에서 바로 호출하면 됩니다. 위에 설명한 것과 같은 두 목록을 읽으므로, API가 주는 답은 이 페이지에서 보는 답과 완전히 같습니다.
curl "https://moemail.app/api/tools/v1/disposable-email/check?domain=mailinator.com"엔드포인트
https://moemail.app/api/tools/v1/disposable-email/check?domain=…도메인 하나, 또는 전체 이메일 주소를 검사합니다(로컬 파트는 버려집니다). 정규화된 도메인에 대한 판정을 반환합니다.
https://moemail.app/api/tools/v1/disposable-email/dataset지금 답하고 있는 목록이 어느 스냅샷인지 알려줍니다: 각 등급의 규모, 빌드 시각, 그리고 각 상위 파일을 내려받은 시점의 SHA-256. 어떤 데이터가 어떤 판단을 만들었는지 기록하려면 시작할 때 한 번만 호출하면 됩니다.
응답 필드
domainstring- 판정이 적용되는 정규화된 도메인입니다. 소문자로 바꾸고 로컬 파트와 끝의 점을 제거한 값입니다. 보낸 문자열이 아니라 이 값과 비교하세요.
disposableboolean- 어느 한 목록에라도 있으면 true입니다(우리 자신의 도메인도 포함). 이것은 거친 답입니다 —— 이 값으로 가입을 막기 전에 아래 경고를 읽어보세요.
verdict"high" | "medium" | "none" | "ours"- 어느 등급에 걸렸는지입니다.
high는 사람이 엄격하게 관리하는 목록입니다.medium은 넓게 취합된 목록에만 있습니다.none은 둘 다 아닙니다.ours는 MoeMail 자신의 수신 도메인이며, 실제로 일회용이고 어떤 제3자 목록에도 실려 있지 않습니다.
disposable 하나만 보고 막지 마세요
우리가 아는 약 75,000개 도메인 중 medium이 약 66,000개를 차지하며, 그것은 사람이 손으로 검토하지 않는 넓은 취합 목록에서 옵니다. 그 전부를 막으면 실제 사용자를 반드시 걸러냅니다. 오탐 한 번이 고객 하나를 잃는 비용이라면, verdict === "high"만 차단하고 medium은 「추가 인증을 요구할 근거」로 다루세요. 「거절할 근거」가 아닙니다. disposable이 있는 이유는 불리언만 주는 API에서 그대로 옮겨올 수 있게 하려는 것이지, 불리언이 올바른 판단 경계여서가 아닙니다.
오류
모든 오류는 사람이 읽는 error와 함께 기계가 읽는 code를 담습니다. 분기는 code로 하세요. 문구는 언제든 다시 쓸 수 있지만, code는 API 버전이 바뀌지 않는 한 바뀌지 않습니다.
| 400 | missing_domain | domain 파라미터가 없거나 비어 있었습니다. |
| 400 | invalid_domain | 도메인으로 성립하지 않습니다. domain이 중복으로 전달된 경우와 유니코드 도메인의 경우에도 이것을 반환합니다 —— 유니코드 도메인은 먼저 punycode(xn--…)로 변환하세요. |
| 400 | input_too_long | 파라미터가 320자를 넘었습니다. 이것은 실제 주소가 가질 수 있는 최대 길이입니다. |
제한, 캐싱, 안정성
IP 주소당 10초에 17회이며, 이 API 내부가 아니라 Cloudflare 엣지에서 적용됩니다. 상한을 올려주는 키도, 유료 등급도 없습니다 —— 그보다 많은 양이 필요하면 전체 목록을 내려받아 로컬에서 조회하세요.
이를 넘기면 Cloudflare가 엣지에서 요청을 차단하며, 이 API에는 닿지 않습니다: 429, Retry-After: 10, 그리고 짧은 text/plain 본문 —— 위에 있는 JSON 모양이 아닙니다. 대비해야 할 결과가 두 가지 있습니다. 차단 응답에는 Access-Control-Allow-Origin이 **없으므로**, 브라우저에서는 읽을 수 있는 429가 아니라 불투명한 네트워크 오류로 보입니다. 그리고 요청이 여기까지 오지 않으므로 분기에 쓸 code 필드도 없습니다. 버스트 직후 즉시 실패한 요청은 레이트 리밋으로 취급하세요.
응답은 하루 동안 캐시 가능하며(s-maxage=86400), 상위 파일 해시에서 파생된 ETag를 담으므로 데이터가 그대로인 동안의 조건부 요청은 사실상 무료입니다. 목록은 빌드 시점에 컴파일되므로 다음 배포까지 답이 바뀔 수 없습니다. 알아둘 만한 결과가 하나 있습니다: 캐시에 적중한 요청은 레이트 리미터에 도달하지 않으므로, 이 제한은 트래픽을 다듬는 것이지 보장이 아닙니다.
모든 응답이 Access-Control-Allow-Origin: *를 보내므로, 브라우저에서 가입 폼에서 바로 호출할 수 있습니다. 중간에 프록시가 필요 없습니다.
v1이 약속하는 것은 모양이지 데이터가 아닙니다: 경로에 새 버전 구간이 들어가지 않는 한, 필드가 삭제되거나 이름이 바뀌지 않고 상태 코드의 의미도 바뀌지 않습니다. 판정 자체는 상위 목록이 바뀌면 바뀝니다.
코드 예제
모든 예제가 불리언이 아니라 verdict로 분기합니다. 실제로 내리고 싶은 판단이 그쪽이기 때문입니다.
curl "https://moemail.app/api/tools/v1/disposable-email/check?domain=mailinator.com"
# {"domain":"mailinator.com","disposable":true,"verdict":"high"}
curl "https://moemail.app/api/tools/v1/disposable-email/dataset"
# {"high":8742,"medium":66885,"total":75627,"builtAt":"…","status":"upstream",…}const ENDPOINT = "https://moemail.app/api/tools/v1/disposable-email/check"
async function verdictFor(domain) {
const res = await fetch(`${ENDPOINT}?domain=${encodeURIComponent(domain)}`)
const body = await res.json()
if (!res.ok) throw new Error(body.code) // branch on `code`, never on `error`
return body.verdict
}
// "medium" means "only in the broad aggregator list" — a signal, not a verdict.
// Gate signups on the tier you are willing to defend to a real user.
const verdict = await verdictFor("mailinator.com")
const reject = verdict === "high" || verdict === "ours"import requests
ENDPOINT = "https://moemail.app/api/tools/v1/disposable-email/check"
def verdict_for(domain: str) -> str:
r = requests.get(ENDPOINT, params={"domain": domain}, timeout=5)
r.raise_for_status()
return r.json()["verdict"]
# Note: use requests (or set an explicit User-Agent). Cloudflare's managed bot
# rules block the default "Python-urllib/3.x" agent with a 403 before the
# request ever reaches this API.
if verdict_for("mailinator.com") in ("high", "ours"):
... # reject the signup<?php
function verdict_for(string $domain): string {
$url = 'https://moemail.app/api/tools/v1/disposable-email/check?domain=' . urlencode($domain);
$ctx = stream_context_create(['http' => [
'timeout' => 5,
// Send a real User-Agent: identify your app, and stay clear of any
// bot rule that keys on a default library agent.
'header' => "User-Agent: my-app/1.0\r\n",
]]);
$body = json_decode(file_get_contents($url, false, $ctx), true);
return $body['verdict'];
}
if (in_array(verdict_for('mailinator.com'), ['high', 'ours'], true)) {
// reject the signup
}export default {
async fetch(request) {
const email = new URL(request.url).searchParams.get("email") ?? ""
const domain = email.split("@").pop()
// Responses are cacheable (s-maxage=86400), so the Cache API turns a
// repeated lookup into zero subrequests.
const res = await fetch(
`https://moemail.app/api/tools/v1/disposable-email/check?domain=${encodeURIComponent(domain)}`,
{ cf: { cacheTtl: 86400, cacheEverything: true } },
)
const { verdict } = await res.json()
return Response.json({ allow: verdict !== "high" && verdict !== "ours" })
},
}이 목록들은 공개된 상위 데이터로 구성되며, 그중 일부 라이선스는 고지가 데이터와 함께 따라가도록 요구합니다. 그래서 모든 응답에 위의 출처 목록을 가리키는 Link: rel="license" 헤더를 담고, 라이선스 전문은 내려받을 수 있는 데이터셋의 헤더에 함께 실려 있습니다.
다른 무료 조회 API와의 비교
키 없이 쓸 수 있는 무료 일회용 도메인 조회는 몇 개 있습니다. 아래는 이 API가 다른 점 —— 그리고 더 적게 하는 점입니다.
| 항목 | MoeMail | Kickbox Open | DeBounce Free | validator.pizza |
|---|---|---|---|---|
| API 키·가입 불필요 | 있음 | 있음 | 있음 | 있음 |
| 브라우저에서 직접 호출 가능(CORS) | 있음 | 없음 | 있음 | 있음 |
| 확신도 세분화 | 2단계, 그리고 자체 도메인 | 불리언 하나 | 불리언 하나, 다만 문자열로 반환 | 불리언 하나 |
| 데이터 출처 명시 + 체크섬 공개 | 있음 | 없음 | 없음 | 없음 |
| 전체 목록 내려받기 가능 | 있음 | 없음 | 없음 | 없음 |
| 데이터 버전 조회 가능 | 있음 | 없음 | 없음 | 없음 |
| 실시간 MX / 도메인 연령 조회 | 없음 | 없음 | 없음 | 있음 |
| 명시된 요청 제한 | 10초에 17회, 문서화됨 | 명시 없음 | 명시 없음 | x-ratelimit-limit: 1 |
표의 모든 칸은 2026-08-22에 각 엔드포인트를 실제로 호출해 확인했습니다. 요청 모양은 위 cURL 예제와 같으니 직접 다시 실행해 볼 수 있습니다. 여기에 업체 홍보 페이지에서 가져온 것은 하나도 없습니다: Kickbox 엔드포인트가 CORS를 지원한다는 검색 결과가 있었지만, 실제로는 지원하지 않습니다.
넷 모두 차단 목록 조회입니다. 「이 도메인이 일회용으로 알려져 있는가」에만 답하고 그 이상은 아닙니다. 이 API를 포함해 어느 것도 메일함이 실제로 존재하는지는 알려주지 못합니다. validator.pizza가 가장 멀리 가서, MX 레코드와 도메인 연령을 실시간으로 확인합니다 —— 그것이 필요하다면 그쪽을 쓰세요.
유료 검증 서비스 —— ZeroBounce, Kickbox 자체 검증 API, Bouncer —— 는 여기 있는 어느 것보다 훨씬 많은 일을 하며(메일함 실존 확인, catch-all 탐지 등), 건당 과금합니다. 표에 넣지 않은 이유는, 무료 차단 목록이 스스로 고른 기준으로 그들을 재는 것은 불공정한 비교이기 때문입니다.