MoeMail

使い捨てメール判定

ドメインを入力すると、使い捨てメールサービスのものかどうかが分かります。無料・登録不要。自社のドメインも隠さず判定対象にしています。

メールアドレス全体(name@example.com)を貼り付けても構いません。ドメイン部分だけを使い、保存はしません。

主要 20 ドメインの判定結果

この表の判定はチェッカーと同じデータから生成しているため、両者の結果が食い違うことはありません。「内容」の列はそのサービスが何であるかの説明で、「判定」の列はブロックリストがそのドメインをどう扱っているかを示します。

ドメイン判定内容
gmail.com登録されていませんGoogle の個人向けメールサービス。
outlook.com登録されていませんMicrosoft の個人向けメールサービス。
yahoo.com登録されていませんYahoo メール。
icloud.com登録されていませんApple のメールサービス。Apple ID に紐づきます。
proton.me登録されていませんプライバシー重視のメール事業者。無料・有料プランあり。
qq.com登録されていませんTencent QQ メール。中国で最も使われているサービスの一つ。
163.com登録されていませんNetEase メール。中国で広く使われています。
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これは当サービスのドメインです当サービスです。使い捨てメール事業者 —— 下記の説明をご覧ください。

なぜ「はい/いいえ」ではなく 2 段階なのか

多くの無料チェッカーは true か false だけを返します。しかしそれでは、本当に知りたいこと —— その答えがどれだけ確かなのか —— が分かりません。当サービスは審査基準の異なる 2 つのリストを使い、どちらに一致したのかをお伝えします。

登録済み

厳格に審査されたブロックリストに含まれています。項目は人の目で確認されており、誤検知はまれです。自動でブロックや警告を出すなら、このレベルを基準にしてください。

可能性あり

収録範囲を優先し精度を犠牲にしたリストにのみ含まれています。複数ある判断材料の一つとして有用です。このレベルだけでブロックすると、正当な利用者を時々拒否してしまいます。

未登録

どちらにも含まれていません。この結果が意味すること、しないことに注意してください。完全なブロックリストは存在せず、新しい使い捨てドメインは一定期間この判定を通過し続けます。

リストへの一致は証拠であって証明ではありません。実際に影響のある判断には、自分で確認できる情報 —— MX レコード、ドメインの登録時期、アカウントの挙動、確認メールなど —— を組み合わせてください。

エイリアスサービスは使い捨てメールとは違います

SimpleLogin、DuckDuckGo Email Protection、そして Gmail のプラスアドレスは、いずれも長く使う受信箱へ転送されるアドレスを提供します。アドレスは捨てられても、その先の受信箱は残ります。利用者はメールを読み、返信し、後からアカウントを復旧することもできます。

これらの扱いはリストによって異なるため、エイリアスのドメインが登録済みと表示されることもあります。ブロックを決める前に知っておく価値があります。エイリアス利用者を拒否すると、プライバシーを重視するだけの実在する顧客を追い返すことになります。使い捨て受信箱は数分で捨てられますが、エイリアスはそのために作られたアカウントより長く使われることもあります。

データ自体に矛盾があり、それを知っておく価値があります。addy.io は登録されているのに、同じ会社の旧ドメイン anonaddy.com は登録されていません。relay.firefox.com は登録されていますが、Firefox Relay が実際に発行するアドレスのドメインは mozmail.com で、そちらはまったく登録されていません。これらはいずれも「登録済み」ではなく「可能性あり」に分類されます。まさにこの区分が存在する理由です。

当サービスのドメインも使い捨てとして扱っています

MoeMail は使い捨てメールサービスです。当サービスのドメインはブロックリストが説明している通りの動作をするため、正直な答えはこうなります —— それらは元々リストに載るべきものであり、このチェッカーもそう表示します。

自社だけ黙って除外することもできましたが、しませんでした。理由は単純です。自分のドメインを試せば 5 秒で分かることであり、身内をかばうと分かったツールには何の価値もありません。サイトを運営していて使い捨ての登録を防ぎたいなら、このツールで当サービスもブロックできるべきです。

サイトは実際どのように使い捨てメールを見分けているのか

このようなリスト照合は最初の一層にすぎません。実際のシステムは複数の検査を重ねます。公開リストや商用リストとの照合、MX レコードを解決して実際にメールを受け取るかの確認、ドメインの登録時期、そして登録後のアカウントの挙動です。

だからこそ、どのリストにも無いアドレスが拒否されることもあり、使い捨てアドレスがすんなり通ることもあります。詳しくは別の記事にまとめています。

なぜサイトは使い捨てメールをブロックするのか

データの出典

このチェッカーはコミュニティが管理する 2 つのオープンなブロックリストを照会します。2 つめは集約ツールなので、それに流れ込んでいるリポジトリも下記で併せて明記し、いずれも出典へリンクしています。項目を手作業で編集するのではなく上流から再構築しているため、ここで得られる結果は公開されているものと一致します。

これはデータの出典を網羅したものではありません。集約ツールは使い捨てメールのウェブサイトも直接収集しており、そちらにはリポジトリもライセンスも存在しません。ソースは公開されているので、全体はご自身で確認できます: generator.py

リストをダウンロード

統合・重複除去したリストをテキストファイルで提供しています。1 行 1 ドメイン、キー不要、レート制限なし。ご自身のプロジェクトでお使いください。

disposable-domains.txt

どちらのリストも最新であるとも網羅的であるとも主張していません。管理者自身がそう明言しています。ドメインは持ち主が変わり、サービスは終了し、新しいものが毎日生まれます。ここで得られる結果は、リアルタイムの権威ではなくコミュニティが維持しているスナップショットとして扱ってください。

無料の使い捨てメール判定 API

このページが実行しているのと同じ判定を、JSON エンドポイントとして提供します。API キーも登録も不要、追加購入するクォータもありません —— 登録フォームから、Worker から、シェルスクリプトからそのまま呼べます。上で説明しているのと同じ 2 つのリストを読むので、API が返す答えはこのページで見える答えとまったく同じです。

試す
curl "https://moemail.app/api/tools/v1/disposable-email/check?domain=mailinator.com"

エンドポイント

GEThttps://moemail.app/api/tools/v1/disposable-email/check?domain=…

ドメイン 1 件、またはメールアドレス全体を判定します(ローカル部は捨てられます)。正規化後のドメインに対する判定を返します。

GEThttps://moemail.app/api/tools/v1/disposable-email/dataset

いま回答しているのがリストのどのスナップショットかを返します:各層の件数、ビルド時刻、そして各上流ファイルをダウンロードした時点の SHA-256。どのデータがある判断を生んだのかを記録したい場合は、起動時に一度呼べば十分です。

レスポンスのフィールド

domainstring
判定の対象となる正規化済みドメイン。小文字化し、ローカル部と末尾のドットを除去したものです。送った文字列ではなく、こちらと比較してください。
disposableboolean
いずれかのリストに載っていれば true(当社自身のドメインも含みます)。これは粗い答えです —— これで登録を弾く前に、下の警告を読んでください。
verdict"high" | "medium" | "none" | "ours"
どの層に一致したか。high は人手で厳格に管理されたリスト。medium は広範な集約リストにのみ存在。none はどちらにもありません。ours は MoeMail 自身の受信ドメインで、実際に使い捨てであり、どのサードパーティのリストにも載っていません。

disposable だけで弾かないこと

把握している約 75,000 件のうち、medium が約 66,000 件を占めます。しかもそれは人手による確認を経ていない広範な集約リスト由来です。全部を弾けば、実在するユーザーを確実に巻き込みます。誤判定 1 件が顧客 1 人の損失になるなら、verdict === "high" だけを拒否対象にし、medium は「追加認証を求める理由」として扱ってください。「拒否する理由」ではありません。disposable があるのは、真偽値だけを返す API からそのまま乗り換えられるようにするためで、真偽値が正しい判断境界だからではありません。

エラー

どのエラーも、人間向けの error と並んで機械可読な code を持ちます。分岐は code で書いてください。文面はいつ書き換わるかわかりませんが、code は API のバージョンが変わらないかぎり変わりません。

400missing_domaindomain パラメータが無い、または空でした。
400invalid_domainドメインとして成立していません。domain が重複して渡された場合、および Unicode ドメインの場合もこれを返します —— Unicode ドメインは先に punycode(xn--…)へ変換してください。
400input_too_longパラメータが 320 文字を超えました。これは実在するアドレスが取り得る最大長です。

レート制限・キャッシュ・安定性

IP アドレスごとに 10 秒あたり 17 リクエスト。この API の内部ではなく、Cloudflare のエッジで適用されます。上限を引き上げるキーはなく、有料プランもありません —— これを超える量が必要な場合は、全量リストをダウンロードしてローカルで引いてください。

これを超えると Cloudflare がエッジでリクエストを遮断し、この API には届きません:429Retry-After: 10、そして短い text/plain の本文 —— 上に示した JSON の形ではありません。想定しておくべき帰結が 2 つあります。遮断レスポンスは Access-Control-Allow-Origin を**持たない**ので、ブラウザからは読み取れる 429 ではなく不透明なネットワークエラーとして見えます。そしてリクエストがここに到達しないため、分岐に使える code フィールドもありません。バースト直後に即座に失敗したリクエストは、レート制限として扱ってください。

レスポンスは 1 日キャッシュ可能で(s-maxage=86400)、上流ファイルのハッシュから導いた ETag を持つので、データが変わらないあいだの条件付きリクエストはほぼ無償です。リストはビルド時にコンパイルされるため、次のデプロイまで答えは変わりません。知っておく価値のある帰結が 1 つ:キャッシュに当たったリクエストはレートリミッタに届かないので、この上限はトラフィックを整えるものであって、保証ではありません。

すべてのレスポンスが Access-Control-Allow-Origin: * を返すので、ブラウザから登録フォーム内で直接呼べます。プロキシは要りません。

v1 が約束するのは形であって、データではありません:パスに新しいバージョン区間が入らないかぎり、フィールドが削除・改名されることも、ステータスコードの意味が変わることもありません。判定そのものは、上流リストが変われば変わります。

コード例

どの例も真偽値ではなく verdict で分岐しています。実際に下したい判断はそちらだからです。

cURL
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",…}
Node.js
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"
Python
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
<?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
}
Cloudflare Worker
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 が違う点 —— そして、できることが少ない点です。

項目MoeMailKickbox OpenDeBounce Freevalidator.pizza
API キー・登録が不要ありありありあり
ブラウザから直接呼べる(CORS)ありなしありあり
確度の粒度2 層、さらに自社ドメイン真偽値ひとつ真偽値ひとつ、ただし文字列で返る真偽値ひとつ
データ源を明示し、チェックサムも公開ありなしなしなし
全量リストをダウンロード可能ありなしなしなし
データのバージョンを問い合わせ可能ありなしなしなし
MX / ドメイン年齢のリアルタイム参照なしなしなしあり
明示されたレート制限10 秒あたり 17、ドキュメントあり明示なし明示なしx-ratelimit-limit: 1

表の各セルは 2026-08-22 に実際に各エンドポイントを呼んで確認しました。リクエストの形は上の cURL 例と同じなので、ご自身で再実行できます。ベンダーの宣伝ページから採ったものは 1 つもありません:Kickbox のエンドポイントは CORS に対応しているという検索結果がありましたが、実際には対応していません。

4 つはいずれもブロックリスト参照です。答えるのは「このドメインが使い捨てとして知られているか」だけで、それ以上ではありません。この API を含め、どれもメールボックスが実在するかは判定できません。validator.pizza が最も踏み込んでおり、MX レコードとドメイン年齢をリアルタイムに解決します —— それが必要なら、そちらを使ってください。

有料の検証サービス —— ZeroBounce、Kickbox 自身の検証 API、Bouncer —— は、ここにあるどれよりもはるかに多くのことを行い(メールボックスの実在確認、catch-all 検出など)、1 件ごとに課金します。表に入れていないのは、無料のブロックリストが自分で選んだ軸で測るのは不公平な比較になるからです。

よくある質問

いいえ。Gmail は Google の個人向けメールサービスで、使い捨てメールのブロックリストには含まれていません。そのアドレスは継続して使われるアカウントに属するため、使い捨てではありません。Gmail のプラスアドレス(name+tag@gmail.com)は使い捨てのように見えますが、メールは同じ受信箱に届きます。

いいえ。判定はビルド時にサイトへ組み込まれたリストに対して行われ、入力されたドメインが当サービスのログやデータベースに書き込まれることはありません。

はい。アドレス全体を貼り付けても、使われるのは @ より後ろの部分だけです。@ より前の部分は直ちに破棄され、リクエストの外に出ることはありません。

ブロックリストは現実に遅れて追従します。新しい使い捨てドメインは次々に登場し、報告と確認には時間がかかります。「未登録」は、まだどのリストにも収録されていないという意味であり、そのドメインが信頼できるという意味ではありません。

使い捨ての登録を排除したいなら「登録済み」のレベルでブロックするのが妥当です。「可能性あり」は慎重に扱ってください。そのリストは精度より収録範囲を優先しているため、これだけでブロックすると実在する顧客を時々拒否してしまいます。エイリアス転送サービスは特に注意が必要です。

定期的に上流から再構築しています。リクエスト時に取得するのではなくサイトと共に配信されるため、参照されるのは直近のデプロイ時点のリストです。

あります —— キーも登録も不要な無料の JSON エンドポイントです:GET /api/tools/v1/disposable-email/check?domain=example.com。IP アドレスごとに 10 秒あたり 17 リクエストまでで、Access-Control-Allow-Origin: * を返すのでブラウザから直接呼べます。詳細なリファレンスと、Node・Python・PHP・Cloudflare Worker のコード例は、上の API セクションにあります。

無料のままです。私たちの側でほとんどコストがかからないからです:リストはビルド時にコンパイルされ、レスポンスはエッジで 1 日キャッシュされるため、大半の呼び出しはサーバーに届きません。購入するキーも、上位プランもありません。上限を超えるスループットが必要なら、全量リストをダウンロードしてローカルで引いてください —— そのために公開しているものですし、ローカル参照はどんなネットワーク呼び出しよりも高速です。

使い捨てアドレスが必要ですか?

MoeMail なら有効期限を選べる一時メールボックスを作成できます。10 分から 3 日まで。期限が切れるとメールごと削除されます。