How It Works
How email checker validates addresses: syntax check, domain verification, MX records, SMTP validation explained.
EmailVerify は、メールの配信可能性を正確に判定するためにマルチレイヤー検証アプローチを使用します。各メールは、可能な限り正確な結果を提供するために複数の検証段階を経ます。
検証プロセス
メール送信
↓
┌─────────────────┐
│ 1. 構文チェック │ → 無効なフォーマット? → 無効を返す
└────────┬────────┘
↓
┌─────────────────┐
│ 2. ドメインチェック │ → ドメインが存在しない? → 無効を返す
└────────┬────────┘
↓
┌─────────────────┐
│ 3. MX レコード │ → メールサーバーがない? → 無効を返す
│ 検証 │
└────────┬────────┘
↓
┌─────────────────┐
│ 4. 使い捨て │ → データベースと一致? → 使い捨てとしてフラグ
│ 検出 │
└────────┬────────┘
↓
┌─────────────────┐
│ 5. SMTP チェック │ → メールボックスが存在しない? → 無効を返す
│ (オプション) │
└────────┬────────┘
↓
┌─────────────────┐
│ 6. スコア │ → 信頼スコアを計算
│ 計算 │
└────────┬────────┘
↓
結果を返す検証段階の説明
段階 1: 構文バリデーション
まず、メールアドレスが有効な RFC 5322 フォーマットルールに従っているかをチェックします:
@記号が正確に1つ含まれている- ローカルパート(@より前)が命名規則に従っている
- ドメインパート(@より後)が正しくフォーマットされている
- 無効な文字が含まれていない
例:
user@example.com- 有効な構文user.name+tag@example.co.uk- 有効な構文user@- 無効(ドメインが欠落)@example.com- 無効(ローカルパートが欠落)
段階 2: ドメイン検証
ドメインが実際に存在し、適切に設定されているかを確認します:
- ドメインの DNS ルックアップ
- ドメイン登録ステータスの確認
- ドメインがブロックリストに載っていないかの確認
段階 3: MX レコードチェック
ドメインがメールを受信できることを確認するために、ドメインの MX(Mail Exchange)レコードを DNS に問い合わせます:
example.com → MX: mail.example.com (Priority: 10)
→ MX: backup.example.com (Priority: 20)MX レコードがないドメインはメールを受信できません。
段階 4: 使い捨てメール検出
5000 以上の既知の使い捨てメールドメインのデータベースを維持しています:
- 公開使い捨てサービス(Mailinator、10MinuteMail など)
- プライベート使い捨てドメイン
- 一時メールジェネレーター
- エイリアスサービス
データベースは毎日新しい使い捨てドメインで更新されます。
段階 5: SMTP 検証
最も正確ですが、最も複雑な検証ステップ。以下を行います:
- 受信者のメールサーバーに接続
- SMTP 会話を開始
- 特定のメールボックスが存在するかを確認
- 様々なサーバーレスポンスを適切に処理
HELO verify.emailverify.ai
MAIL FROM:<verify@emailverify.ai>
RCPT TO:<user@example.com>
→ 250 OK (mailbox exists)
→ 550 User unknown (mailbox doesn't exist)一部のメールサーバーは、すべてのアドレスを受け入れるキャッチオール設定を使用しています。このような場合、SMTP 検証では個々のメールボックスの存在を確認できません。
段階 6: スコア計算
すべての段階の結果を組み合わせて信頼スコア(0.0 - 1.0)を計算します:
| 要素 | 重み | 影響 |
|---|---|---|
| 有効な構文 | 10% | 基本要件 |
| ドメイン存在 | 15% | 配信に必要 |
| MX レコード有効 | 20% | メールサーバー設定済み |
| 使い捨てでない | 15% | 品質指標 |
| SMTP 確認 | 30% | 最も強いシグナル |
| ドメイン評判 | 10% | 履歴データ |
検証速度
異なる検証レベルには異なる速度プロファイルがあります:
| レベル | 実行されるチェック | 平均レスポンスタイム |
|---|---|---|
| 基本 | 構文、ドメイン、MX | < 100ms |
| 標準 | 基本 + 使い捨て | < 200ms |
| フル | 標準 + SMTP | 200ms - 2s |
エッジケースの処理
キャッチオールドメイン
一部のドメインは、メールボックスが存在するかどうかに関係なくすべてのメールを受け入れます。この場合:
- キャッチオール設定を検出
- 結果を
accept_allとしてフラグ - 中程度の信頼スコアを提供
- これらのアドレスの処理方法はお客様の判断に委ねる
グレーリスティング
一部のサーバーは初回の送信者を一時的に拒否します。この場合:
- グレーリスティングレスポンスを検出
- 自動リトライロジックを実装
- 効率化のために結果をキャッシュ
ターゲットサーバーによるレート制限
EmailVerify とターゲットメールサーバーの両方を保護するために:
- 検証リクエストを複数の IP に分散
- ドメインごとに適応型レート制限を実装
- サーバーが要求する遅延を尊重
インフラストラクチャ
グローバル検証ネットワーク
- 複数のデータセンター: 米国、EU、アジア太平洋
- 冗長システム: 99.9% アップタイム保証
- スマートルーティング: 各検証に最適なパス選択
セキュリティとコンプライアンス
- すべての接続は暗号化(TLS 1.3)
- メール内容は保存されない
- GDPR 準拠のデータ処理
- SOC 2 Type II 認証
ベストプラクティス
いつ検証するか
| シナリオ | 推奨アプローチ |
|---|---|
| ユーザー登録 | リアルタイム、フル検証 |
| フォーム送信 | リアルタイム、基本検証 |
| リストクリーニング | 一括検証 |
| キャンペーン前 | 一括検証 |
| データインポート | 一括検証 |
検証頻度
- アクティブリスト: 四半期ごとに検証
- 非アクティブリスト(90日以上): 送信前に検証
- 新規取得: 初回使用前に必ず検証