ローカル環境でのメール送受信テストについてです。
実際に送信して確認ということも可能ではありますが、まかり間違って違うメールアドレスに送信してしまうというような配信事故を防ぐためには、ローカル環境ではダミーのSMTPサーバを使用した方が間違いがないと思います。
ローカル環境で使用できるSMTPサーバですが、調べてみると結構色々あるようです。
【GUIベースのツール】
【Webサービス】
私はMailtrapを使用していたりしましたが、Webサービスの場合はやはりネットに出て行くことになるので、可能であればローカル環境内で留めたいと思っていました。あと、ネットで調べてみるとMailpitの評判がいいのと、Laravel sailの場合はMailpitが選択可能となっているようです。
ですので、今回はちょっとニッチかもしれないのですが、以下環境でMailpitを使用できるようにしてみました。
【動作環境】
Webmin + Virtualmin
OS:Ubuntu22.04(vagrant box)
DB:MariaDB 10.6.18
PHP:8.1(PHP-FPM)
EC-CUBE:4.3
例によって、Webmin + VirtualminのインストールとEC-CUBEのインストールは割愛します。(笑)
まずはMailpitをサーバにインストールします。公式ページにあります通り、linuxの場合は以下コマンドを実行することで /usr/local/bin にmailpitがインストールされます。(自分はrootで実行しました。)
# bash < <(curl -sL https://raw.githubusercontent.com/axllent/mailpit/develop/install.sh)
起動するときは、そのまま以下で起動されます。
mailpit
ただターミナルで起動すると上の画像の通りプロンプトが帰ってこない(ちなみに停止するときは Ctrl + C)ので、これは後ほどサービス登録するようにします。
次に使用ポートの解放を行います。Mailpitは公式ページのドキュメントにもある通り、Web UI用に8025、SMTP用に1025番ポートを使用します。ですのでWebminのFirewalldの設定で使用ポートを追加します。追加後は有効化を忘れずに。
先程Mailpitをターミナルで起動していますので、以下URLでWeb UIが表示されると思います。
http://ローカル環境のIPアドレスあるいはドメイン:8025
このような画面が表示されます。
ではメールを受信するかの確認を行います。
その前に、今回のEC-CUBE側でMailpitがメールを受けられるように設定をする必要があります。.env にある
MAILER_DSN
こちらに記述する必要があります。少々余談になりますが、EC-CUBEをインストールした直後の状態だとメールが送信されませんでした。その時の設定は以下の通りです。
MAILER_DSN=smtp://localhost:25
その後調べたところ、まずEC-CUBE4.2からメール送信ライブラリがSwiftMailerからSymfonyMailerに変わったので以下のように変わったということがあります。
MAILER_URL → MAILER_DSN
あとは、フォーラムの方にも記述がありましたが、
MAILER_DSN=sendmail+smtp://default
または
MAILER_DSN=sendmail://default
としないと、自分のローカル環境ではメール送信ができませんでした・・・。
ということで、.env に以下設定を行いました。
MAILER_DSN=smtp://127.0.0.1:1025
最初はlocalhostとして、ポート番号をMailpitのポートにしていたのですが、全く受信されませんでしたので、127.0.0.1としましたところ、Mailpitでの受信ができました!実際の画面を以下に添付します。
ちょっと小さいですが・・・、受信するとお知らせ用にタブに赤いバッジが付きます。受信したメールをクリックすると以下のように詳細が表示されます。
情報表示用にタブがいろいろあることや、HTMLメールでのレスポンシブ表示の確認もできたりします。個人的な使用感だと軽いのではないかという気がしました。今回は行っていませんが、SMTP認証設定などもあるようです。
最後になりますが、前段で書いた、Mailpitのサービス登録です。
Webminの システム > 起動とシャットダウン と表示させると「新しいsystemdサービスを作成します。」というボタンがあるので、それを押下します。
サービス名:mailpit
サービスの説明:Mailpit(適宜)
起動時に実行するコマンド:/usr/local/bin/maipit
起動時に起動しますか?:はい
としてサービスを作成しておくと、仮想環境起動時にMailpitも立ち上がるようになります。