Advanced Email Validation
MXレコードと、無料・使い捨て・禁止メールドメインのリストを使用して、設定可能なルールでメールアドレスを検証します。
advanced_email_validation
インストール
composer require 'drupal/advanced_email_validation:^2.0'
composer require 'drupal/advanced_email_validation:^1.2'
概要
Advanced Email Validationは、Drupalの基本的な形式チェックを超えた堅牢なメールアドレス検証を提供します。オープンソースのstymiee/email-validatorライブラリを活用し、無料プロバイダー(Gmailなど)、使い捨てメールサービス(Mailinatorなど)、有効なMXレコードを持たないドメイン、またはカスタム禁止ドメインからのメールを検出して拒否できる設定可能な検証ルールを適用します。
このモジュールは、ユーザー登録時およびメールアドレス変更時に自動的にメールアドレスを検証します。また、開発者がプログラムで使用できるサービスを提供し、フォームごとの設定オーバーライドでWebformのメールフィールドにこれらの検証ルールを適用するためのWebformハンドラーも含まれています。
すべてのエラーメッセージはカスタマイズ可能で、DrupalのConfiguration Translationモジュールを使用して翻訳できるため、多言語サイトに適しています。
Features
- 設定可能なトリガーでユーザーアカウント登録時およびメール変更時にメールアドレスを検証
- MXレコードルックアップ検証により、メールドメインが実際に存在しメールを受信できることを確認
- 動的に取得されるリストを使用して使い捨て/一時メールプロバイダー(mailinator.comなど)をブロック
- 企業メールが必要な場合に無料公開メールプロバイダー(gmail.com、outlook.comなど)をブロック
- ワイルドカード対応のカスタム禁止ドメインリスト(例:*.example.org)
- 使い捨ておよび無料プロバイダーリストに追加のドメインを追加する機能、またはローカルのみのリストを使用する機能
- 各検証タイプに対して完全にカスタマイズ可能で翻訳可能なエラーメッセージ
- フォームごとにサイト全体の設定をオーバーライドできる検証ハンドラーによるWebform統合
- 設定オーバーライドでプログラムによりメールを検証するための開発者向けサービスを公開
Use Cases
スパム登録の防止
MXルックアップ検証を有効にして、存在しないドメインのメールを拒否します。これにより、偽のドメインでランダムに生成されたメールアドレスを使用する多くのスパムボットをブロックできます。使い捨てメールのブロックと組み合わせることで、偽のアカウント登録を大幅に削減できます。
勤務先メールを必要とする企業/エンタープライズサイト
「無料メールプロバイダー」ルールを有効にして、Gmail、Yahoo、Outlookなどの無料プロバイダーからの登録を拒否します。これにより、ユーザーは企業/組織のメールアドレスで登録することが保証され、B2Bサイト、イントラネット、または専門家コミュニティに役立ちます。
一時的/使い捨てメールのブロック
使い捨てメール検証を有効にして、Mailinator、Guerrilla Mail、10MinuteMailなどのサービスをブロックします。これらのサービスは、使い捨てアカウントの作成、メール認証のバイパス、またはトライアルオファーの悪用によく使用されます。
カスタムドメインのブロック
ワイルドカードをサポートする禁止ドメイン機能を使用して、特定の競合他社、既知の悪意あるアクター、または不要なメールプロバイダーをブロックします。たとえば、*.competitor.comをブロックして競合他社の従業員が登録できないようにしたり、悪用の原因となっている特定のドメインをブロックしたりできます。
メール検証付きWebformお問い合わせフォーム
お問い合わせフォームやリード獲得フォームにAdvanced Email Webform Validator Handlerを追加します。フォームごとのオーバーライドを設定して異なるルールを適用できます。たとえば、一般的なお問い合わせフォームでは無料メールを許可し、企業向け問い合わせフォームでは企業メールを必須にするなどです。
コンプライアンスのためのローカル専用ドメインリスト
「ローカルリストのみ」オプションを使用して、ブロックするドメインを完全に制御します。これは、コンプライアンス要件により、ブロックの決定が動的に取得される外部データではなく、監査可能な内部リストに基づく必要がある場合に役立ちます。
Tips
- より強力な保護のために複数の検証ルールを組み合わせてください。たとえば、MXルックアップと使い捨てメールブロックの両方を有効にします
- 禁止ドメインリストでワイルドカード(*.example.org)を使用して、すべてのサブドメインを一度にブロックできます
- エラーメッセージは完全なローカライゼーションをサポートしています。多言語サイトの場合はConfiguration Translationを使用して翻訳してください
- 本番環境に移行する前に、既知の使い捨てまたは無料メールアドレスで設定をテストしてください
- Webformでは、ハンドラー設定で「サイトのデフォルトをオーバーライド」を有効にすることで、フォームごとに異なる検証ルールを設定できます
Technical Details
Admin Pages 1
/admin/config/people/advanced-email-validation
ユーザーメールアドレスの検証に使用するルールを設定し、エラーメッセージをカスタマイズし、使い捨て・無料・カスタム禁止メールプロバイダーをブロックするためのドメインリストを管理します。
権限 1
Hooks 1
hook_entity_base_field_info_alter
'validate_account_on'設定に基づいて、UserエンティティのmailフィールドにAEVNewEmailおよびAEVChangedEmail制約を追加するために内部的に使用されます。
Troubleshooting 4
MXルックアップにはDNSクエリが必要で、フォーム送信にレイテンシが追加される可能性があります。これが問題になる場合は、MXルックアップを無効にして他の検証ルールに頼るか、サーバーに適切なDNSキャッシュが設定されていることを確認してください。
ドメインリストはstymiee/email-validatorライブラリによって管理され、インターネットから取得されます。特定のドメインを許可する必要がある場合は、問題のあるルールを無効にするか、独自に厳選したリストで「ローカルリストのみ」オプションを使用できます。
モジュールは設定保存時にEntity定義キャッシュをクリアします。検証が期待どおりに機能しない場合は、「drush cr」またはパフォーマンス設定ページからすべてのキャッシュをクリアしてみてください。
ハンドラーは「email」または「webform_email_confirm」タイプのフィールドのみを表示します。ハンドラーを追加する前に、フォームに少なくとも1つのemailフィールドがあることを確認してください。
Security Notes 4
- このモジュールは悪用を防ぐのに役立ちますが、唯一のスパム防止対策としてではなく、多層防御戦略の一部として使用する必要があります
- MXルックアップ検証にはネットワークアクセスが必要で、タイミング攻撃や内部インフラストラクチャに関する情報漏洩に使用される可能性があります
- ドメインリストは基盤となるライブラリによって外部ソースから取得されます。ブロックするドメインを正確に制御する必要がある場合は、「ローカルリストのみ」モードの使用を検討してください
- このモジュールはメールアドレスが実際に存在するか、ユーザーがそれを制御しているかは検証しません。ドメインのみを検証します