Maillog / Mail Developer(廃止予定)
サイトから送信されるすべてのメールをログに記録し、デバッグ目的でメール配信を抑制するオプションを提供する開発ユーティリティモジュールです。
maillog
インストール
composer require 'drupal/maillog:8.x-1.1'
概要
Maillogモジュールは、Drupalサイトから送信されるすべてのメールをキャプチャしてアーカイブするための包括的なソリューションを提供します。主に開発環境やステージング環境で、実際にメールを送信せずに送信メールを検査したい場合に使用されます。
このモジュールはDrupalのメールシステムを通じてすべてのメール操作をインターセプトし、ヘッダー、件名、本文、受信者、送信者情報を含む完全なメール詳細をデータベースに保存できます。Viewsベースのインターフェースを備えており、ログに記録されたメールを閲覧し、各メッセージの詳細を確認できます。
Maillogは開発中に実際のユーザーへの誤送信を防ぎながら、システムがメールを正しく生成していることを確認したい場合に特に便利です。
Features
- ヘッダー、件名、本文、送信元/送信先アドレス、タイムスタンプを含む完全な詳細とともに、すべての送信メールをデータベーステーブルにログ記録
- メール配信を抑制するオプション(開発/ステージング環境に最適)
- /admin/reports/maillogにViewsベースの概要ページを提供し、すべてのログ記録されたメールを閲覧可能
- すべてのヘッダーと完全なメッセージ本文を表示する個別メールの詳細ビュー
- 詳細モードでメッセージ送信時にメール内容をページ上に表示(権限を持つユーザー向け)
- データベースの肥大化を防ぐためにメール本文を512文字にトリミングするオプション
- ログ記録前にメール本文からBase64エンコードされたコンテンツを削除するオプション
- ログ数または期間で設定可能な保持期間によるCronでの自動クリーンアップ
- ログテーブルをパージするためのmaillog:clearコマンドによるDrush連携
- 高度なメールルーティング設定のためのMailSystemモジュールとの連携
- メールがログ記録された場合や配信が無効な場合に訪問者に通知するオプション
Use Cases
ローカル開発でのメールテスト
ローカル開発環境でMaillogを設定し、すべてのメールを送信せずにキャプチャします。「send」をFALSEに、「log」をTRUEに設定することで、実際のユーザーにメールが届くのを防ぎながら、メールの内容とフォーマットを確認できます。
ステージング環境でのメール確認
ステージングサーバーでMaillogを有効にしてすべてのメールをログ記録し、オプションで配信を無効にします。これにより、QAチームはテストメールを実際のアドレスに送信せずに、ユーザーアクションによって正しいメールがトリガーされていることを確認できます。
詳細出力によるメールデバッグ
詳細モードを有効にして、メール送信時にメール内容を直接ページ上で確認できます。これはメールテンプレートのデバッグや動的コンテンツが正しく挿入されていることを確認するのに便利です。
本番環境でのメール監査
メール監査が必要な本番環境では、配信を有効にしたままログ記録を有効にします。Cronクリーンアップ機能を使用して、設定した保持期間後に古いログを自動的にパージし、データベースサイズを管理します。
データベースサイズの管理
大きな本文を持つ多くのメール(画像付きニュースレターなど)を送信するサイトでは、本文のトリミングとBase64の削除を有効にして、基本的なメールメタデータをキャプチャしながらデータベースストレージ要件を大幅に削減できます。
Tips
- settings.phpのオーバーライドを使用して、Maillog設定が環境固有であり、UIで誤って変更されないようにしてください
- MailSystemモジュールと組み合わせて、どのメールタイプをログ記録するか、通常通り送信するかをより細かく制御できます
- Drushのmaillog:clearコマンドは、UIを経由せずにログをすばやくパージするのに便利です
- メールの問題をデバッグする際は、一時的に詳細モードを有効にして、生成されている正確な内容を確認してください
- ステージング環境では、「nosend_notify」オプションを有効にして、非管理者ユーザーが自分のアクションで実際のメールが送信されなかったことを知ることができるようにしてください
Technical Details
Admin Pages 4
/admin/config/development/maillog
Maillogモジュールのメイン設定ページ。メールのログ記録、配信、クリーンアップ設定を制御できます
/admin/reports/maillog
すべてのログ記録されたメールをテーブル形式で表示するViewsベースのレポートページ。詳細表示や削除へのリンク付き
/admin/reports/maillog/details/{maillog_id}
すべてのヘッダーと完全なメッセージ本文を表示する単一のログ記録されたメールの詳細ビュー
/admin/reports/maillog/delete/all
データベースからすべてのmaillogエントリをクリアする確認フォーム
権限 3
Hooks 2
hook_cron
設定された保持設定(数または期限)に基づいて古いmaillogエントリを自動的にクリーンアップするためにCronを実装しています。
hook_help
ヘルプページにモジュールのヘルプテキストを提供します。
Drush Commands 1
drush maillog:clear
データベースからすべてのmaillogエントリをクリアします。確認なしでmaillogテーブルをトランケートします。
Troubleshooting 4
サイトのメールシステムがMaillogを使用するように設定されていない可能性があります。settings.phpに$config['system.mail']['interface']['default'] = 'maillog';を追加するか、MailSystemモジュールを使用してメール処理を設定してください。
Maillog設定で「send」設定がFALSEに設定されていることを確認してください。settings.phpでハードコードすることもできます: $config['maillog.settings']['send'] = FALSE;
「verbose」設定が有効であり、ページを閲覧しているユーザーが「view maillog」権限を持っていることを確認してください。匿名ユーザーもこの権限があれば詳細出力を見ることができます。
Cronクリーンアップ機能を有効にし、適切な保持設定を構成してください。また、メールあたりのストレージを削減するために本文のトリミングとBase64の削除を有効にすることも検討してください。
Security Notes 4
- メールログには機密情報が含まれる可能性があるため、3つのMaillog権限すべてに「アクセス制限」のマークが付いています
- 本番環境で詳細出力を有効にすると、閲覧権限を持つユーザーにメール内容が公開される可能性があるため注意してください
- メールログには機密性の高い個人情報が含まれる場合があります - データベースのバックアップとアクセスが適切に保護されていることを確認してください
- すべてのメールをログ記録するデータ保持の影響を考慮し、適切なクリーンアップスケジュールを設定してください