使い捨てメールサービスの開発とレビュー
プロジェクト紹介
使い捨てメールは、自分のメールアドレスを公開したくないときに使用します。また、信頼できないサイトに登録する際にスパムメールから自分のメールを保護するためにも使用できます。私は開発テストをする際にこのようなサービスを知りました。テストのために多くのメールが必要でしたが、使い捨てのメールなのでGmailを複数作成するのは面倒でした。このサービスを利用すると、簡単にメールでの登録とメール認証ができ、必要がなくなれば思い切って新しいメールに切り替えることができました。
開始理由
個人プロジェクトで使い捨てメールサービスを選んだ理由は、メンテナンスの負担が少ないためです。メールの技術構造は何十年も変わっていません。そして今後も大きな変化はないと考えています。一度作成すれば、メンテナンスの負担なしに着実に収益化できるため、個人プロジェクトのテーマとして適切だと判断しました。
制作過程
-
使い捨てメールサービスをGoogleで検索すると、本当に多くのサービスがあることがわかります。一般的なサービスなので、誰かが作成したガイド記事があると思いました。AHEMサーバーの開発者であるOren Geva氏が作成したHow To Setup Your Own Disposable Email Serverガイドを見つけました。
-
ガイドの著者が作成したオープンソースAHEM (Ad-Hoc-Email-Server) serverは、node.jsで作成されたメールサーバーです。ガイドに従ってメールサーバーをAWS Lightsailに構築し、正常に動作するかSMTP Test Toolを使用して確認しました。
-
メールサーバーで使用するドメインを購入しました。使い捨てメールサービスは長くて1日、短い期間しかメールを使用しないため、ドメインを毎年変更しても問題ありません。そのため、それぞれ500円で1年間使用できるドメインを購入しました。1年後には1つに49,000円の費用を支払って延長する必要がありますが、元々延長する予定はありません。
-
ドメインアドレスをメールサーバーに接続する必要があるため、ドメインにDNS情報を設定しました。MXレコードを直接サーバーアドレスに接続したかったが、MXレコードはIPアドレスを許可しないため、途中にmail.redmail.shopを挿入しました。これにより、MXレコードはmail.redmail.shopアドレスを指し、このアドレスはサーバーアドレスである15.165.14.244を指すようになります。登録して半日が経過した後、Gmailからメールサーバーにメールが正常に送信されました。
-
メールサーバーとフロントを接続するAPIを作成する必要がありますが、AHEMサーバーの良い点は、Githubのreadmeファイルを見ればわかるように、既にAPIが作成されていることです。そのため、メールサーバーを接続するだけでバックエンドの構築が完了しました。
-
最後に、ウェブをNext.jsで構築しながら開発を完了しました。すでに初期設定がテンプレート化されており、デザインライブラリも自動的に接続されていたため、開発はすぐに終了しました。
使用技術
- Web: Next.js, Typescript, TailwindCSS
- 多言語化: next-i18next (翻訳), Googleシートを使用した翻訳テキスト管理
- デプロイ: Vercelを使用した自動デプロイ
- バックエンド: AWS Lightsail上のオープンソースAHEMサーバー
- DB: MongoDB
良かった点
- オープンソースを活用してバックエンドの構築を迅速に完了できたことが良かったです。また、難しく感じていたメールサーバーがコードを見ると思ったより単純だったので、次回は直接構築できるかもしれないと考えました。
- テーマの選定が良かったと思います。開発難易度は低いですが、メンテナンスの負担が少ないため、このサイズのプロジェクトを複数見つけてみたいと思います。
進行中に経験した失敗
- AHEMサーバーにはCORS処理がされていなかったため、コードを修正する必要がありました。cptkuk91氏のNode.js基本CORS問題解決記事を参考にしました。
- Linuxでは1024ポートまで管理者権限が必要です。私が使用するSMTPポートは25番なので、管理者権限を使用してメールサーバーサービスを実行しました。
- AHEMサーバーは非常に古いプロジェクトです。そのため、最新のNode.jsでは動作しません。Node.js 10.xバージョンをインストールして進めました。
- 費用を節約するためにAWS EC2ではなくAWS Lightsailを使用しました。Lightsailは基本的に料金が半額で、最初は3ヶ月間無料で使用できます。ただし、LightsailはAWSの他のサービスとの接続が難しいため、HTTPS証明書をLet's encryptを使用して直接設定する必要がありました。このLet's encryptは無料ですが、90日ごとに更新する必要があります。将来的には自動更新設定を行う予定で、完了しました。
最後に
オープンソースを適切に活用した事例なので、良いと思います。車輪を再び作り直すことなく、すでに作成された車輪をうまく活用して3日で開発を完了することができました。これまではフロントでウェブのみを使用していましたが、今後はアプリも作成してみたいと思います。すでにサーバーが作成されているため、アプリはより迅速に作成できると思います。サービスはhttps://tmpmail.danver.ioで確認できます。
参考資料
