開発でメールを利用する際に知っておくべきこと
目次
はじめに
ウェブシステムの開発において、開発者だけでなくテスト担当者もシステムを使用する際にメールアドレスを頻繁に入力します。これは主にユーザー登録の検証プロセスで利用されます。しかし、開発段階でメールアドレスを扱う際には、いくつか注意すべきポイントがあります。
本記事では、そのようなポイントを解説し、開発中にメール機能を安全かつ効率的に利用するための方法を説明します。
ポイント1. 勝手なメールアドレスの使用を避ける
ウェブシステム開発において、実在する可能性のあるメールアドレスを無闇に使用することは避けるべきです。例えば、以下のようなメールアドレスを利用している環境を見かけます。
※スパムの自動送信の対象外とするため画像化しています。
開発中にテスト目的でメールアドレスを使用する際、実際のドメインが指定されてしまうと、そのアドレス宛にテストメールが送信されてしまう可能性があります。これは、ただ迷惑をかけるだけでなく、テスト内容によっては機密情報が漏れるリスクも伴います。
これを防ぐためには、テストで利用可能なメールアドレスを正しく利用する必要があります。 自身が内容を確認できるメールアドレス(自分が所有するものや自社管理のドメインのもの)や、RFC 2606 や RFC 6761 にて例示用ドメインとして規定されている example.com などのドメインのメールアドレスを利用するようにすべきです。これらの例示用ドメインの MX レコードは Null MX として設定されており、明示的にメールを受け取らないことが宣言されています。 Null MX については RFC 7505 をご確認ください。
テストに利用可能な安全なメールアドレスを利用することで、無害なテスト環境を維持しつつ、開発プロセスを安全に進行させることができます。
ポイント2. メールエイリアスを利用する
多くのシステムではメールアドレスの重複登録はできなくなっています。 そのため、テスト用に複数のメールアドレスを準備する必要があります。 そのような場合、メールサービスの提供するエイリアス機能を利用すると便利です。
エイリアス機能を提供するサービスはいくつかありますが、その中でも Gmail のエイリアス機能が非常に便利です。Gmail アドレスに ‘@’ の前に ‘+xxxx’ を追加することで異なるメールアドレスとして機能しますが、すべてのメールは元のアドレスに届きます。 例えば、以下の3つのアドレスは異なるメールアドレスですが、メール受信は全て同じアカウントで行われます。 この方法を使用することで、複数のユーザーを登録するテストを行う際に、1つのメールアカウントで多くのバリエーションをカバーできます。
同様のエイリアス機能は Outlook や Apple Mail (iCloud) など他のメールサービスでも提供されていますが、機能に制約がある場合もあります。 しかし1つのアカウントで複数のメールアドレスを取り扱えるため、利用可能であればこれらのエイリアス機能を活用すると良いでしょう。
ポイント3. メール送信のモック機能を有効にする(開発者向け)
ウェブアプリケーションの開発中にメール送信機能のテストも実施します。 しかし、テストの都度実際のメールアドレスにメールを送信するとメールの確認の手間がかかります。 また、それだけではなく、開発サーバーから送信したメールは SPF や DKIM などのチェックをパスできずに迷惑メールとして取り扱われてしまうこともあります。 そのため、必要なタイミングだけで正しくメールを送信して、通常の開発の時にはメールを実際に送信しない仕組み(メール送信のモック機能)をアプリケーションで実現可能な作りにしておくべきです。 開発時にメール送信のモック機能を有効にすることで、メール関連の機能を効率的にテストすることが可能です。
モック機能の実装例としては以下のようなものがあります。
Dryrun 機能の On/Off
アプリケーションの設定でメール送信の Dryrun 機能を有効/無効を設定できるようにしておきます。 Dryrun が有効な場合、アプリケーションでメールを送信するロジックを呼び出しても実際にはメールを送信せず、送信ログだけを生成するようにします。 このようにすることで、実際にメールを送信せずに開発中のアプリケーションがどのようにメールを処理しているかを確認できます。
msmtp を利用したメール送信のモック
msmtp は軽量なSMTPクライアントで、設定によりメールサーバーに接続する代わりに、メール内容をファイルに出力するように設定することができます。この方法を利用することで、実際のメール送信サーバーを使用せずに、アプリケーションが生成するメールの内容を確認することが可能となります。msmtp の設定ファイルには、出力先のファイルパスを指定することで、全ての送信メールをこのファイルにリダイレクトさせることができます。 PHP で msmtp を利用する場合、sendmail_path の値を変更することで利用可能です。
おわりに
本記事ではウェブシステムの開発中にメールアドレスを利用する際の重要なポイントを説明しました。 開発者やテスト担当者がこれらの知識を身につけることで、メールに関連する一般的な問題を回避し、知らない内に他のメール利用者に迷惑をかけることなく、安全な開発プロセスを確立できます。