VMに構築したPowerCMS環境から送信したメールをsmtp4devで受け取る

投稿日: 更新日:

久々にVMからの送信メールを確認できる環境を作ったが、少し手間取ったのでメモ。

前提

  • ホストOSはWindows11、仮想マシンのOSはRocky Linux 9。
  • PowerCMS 6を仮想マシン側にインストール済み。

目標

SMTPサーバーとして、ホストOSにsmtp4devをインストールして、CMS側から送信されたメールをsmtp4dev側でキャッチしてメール内容を閲覧できるようにする。

手順

smtp4devのインストール

今回インストールするのは、smtp4devのWindows x64 binary standalone - Server edition。
Releases · rnwood/smtp4dev

上述からアーカイブをDL・解凍し、含まれるRnwood.Smtp4dev.exeを実行する。

その後、次のURLをウェブブラウザで開き、smtp4devの管理画面が表示される事を確認する。

http://localhost:5000/

CMS側の設定

PowerCMSのインストール時にメール送信設定プログラムを「SMTPサーバー」に指定して設定を行うと、mt-config.cgiに次のように書き込まれる。

EmailAddressMain hoge@fuga.com
MailTransfer smtp
SMTPServer xxx.xxx.xx.xx
SMTPPort 25
SMTPServer

smtp4devはホストOSにインストールされるので、SMTPServer の値には、コマンドプロンプトにてipconfigコマンドを実行して出力されたネットワークアダプタから、該当するアダプタのIPを指定する。ipconfigコマンド実行時のイメージとしては、次の通り。
※ホストOSを載せてるマシンの仕様によって、出力内容やIPアドレスの取得元ネットワークアダプタが異なる場合想定されるので注意。

C:\hoge\fuga>ipconfig
...
(中略)
...
Wireless LAN adapter Wi-Fi:

   接続固有の DNS サフィックス . . . . .:
   IPv6 アドレス . . . . . . . . . . . .: xxxx:xxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx
   一時 IPv6 アドレス. . . . . . . . . .: xxxx:xxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx
   リンクローカル IPv6 アドレス. . . . .: xxxx::xxxx:xxxx:xxxx:xxxxx
 IPv4 アドレス . . . . . . . . . . . .: 192.168.xxx.xxx ←ここのIPを指定する。
   サブネット マスク . . . . . . . . . .: 255.255.255.0
   デフォルト ゲートウェイ . . . . . . .: xxxx::xxxx:xxxx:xxxx:xxxxx
                                          192.168.xxx.xxx

メールエンコーディングの設定

前述で、CMSをインストールする際にmt-config.cgiに自動設定される内容を展開したが、これだけだとCMSから送信されるメールが受信側で文字化けする場合がある。この場合、CMS側と受信側の文字エンコーディングが一致しないのが原因の可能性高いので、例えば次のように、環境変数MailEncodingで文字エンコーディングを指定する。

MailEncoding  UTF-8

動作確認

CMS管理画面の全般設定画面からテストメールを送るなどして、CMSからメールを送信する。

その後、前述のsmtp4devの管理画面上より次を確認する。

  • CMSより送信したメールが受信されリストアップされている。
  • 内容が文字化けしてない。

上記をクリアすれば、導入完了。

参考

ダミーSMTPサーバ(smtp4dev) #C# - Qiita

MailEncoding | 環境変数リファレンス | PowerCMS - カスタマイズする CMS

関連するタグ

PowerCMS 6, smtp4dev