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