モック用のSMTPサービスMailHogをRocky Linuxに立ち上げる

WEBアプリ開発においてサクッとメールテストしたい時があると思います。本番のSMTPサーバーをまだ用意していない時に、モックテストで使えるSMTPサーバーがあると便利です。MailHogならそれを叶えてくれます。

MailHogは以下の特徴があります。

  • 軽量なSMTPサーバーモックで、メールの送受信をエミュレートできます。
  • ローカル環境で動作し、簡単にセットアップ可能。
  • メールはWeb UIやAPI経由で確認できます。

ただし、日本語はUTF-8で送信しないと文字化けするのでそこだけ注意が必要です。どうしても文字コードをJISなどに設定したい場合は、fakeSMTPを検討してみてください。

MailHogのインストール

Rocky LinuxにMailHogをインストールする手順を以下にまとめました。MailHogはGoで書かれているため、Goをインストールしてビルドします。

1. Goのインストール

bash
sudo dnf install -y golang

2. MailHogのインストール

bash
go install github.com/mailhog/MailHog@latest

3. PATHにGoのバイナリを追加

GoがインストールされるディレクトリをPATHに追加します:

bash
export PATH=$PATH:$(go env GOPATH)/bin

4. MailHogを確認

インストールが成功していれば、以下のコマンドで起動できます:

bash
MailHog

5. MailHogバイナリを /usr/local/bin に移動する

システム全体で使えるようにするために、MailHogのバイナリを一般的なディレクトリに移動します。

bash
sudo mv /root/go/bin/MailHog /usr/local/bin/

移動後、再確認します:

bash
which MailHog

期待される結果:

bash
/usr/local/bin/MailHog

6. MailHogのデフォルトポート

  • SMTPポート: 1025
  • Web UIポート: 8025

SMTPはデフォルトで1025ポートに設定されています。ユーザー名とパスワードはblankのままで大丈夫です。また、MailHogはWebアプリケーションを提供しており、Webブラウザで http://<サーバーIP>:8025 へアクセスすると受信メールを確認できます。

SMTP設定例

  • SMTPサーバー: localhost
  • ポート: 1025
  • 認証: 不要
  • 暗号化: なし (STARTTLS不要)

MailHogをサービスとして登録

MailHogをシステムサービスとして登録して自動起動するように設定します。

1. サービスファイルを作成

bash
sudo vi /etc/systemd/system/mailhog.service

内容:

ini
[Unit]
Description=MailHog Service
After=network.target

[Service]
ExecStart=/usr/local/bin/MailHog
Restart=always
User=root

[Install]
WantedBy=multi-user.target

2. サービスを有効化

bash
sudo systemctl daemon-reload
sudo systemctl enable mailhog
sudo systemctl start mailhog

3. サービスのステータス確認

bash
sudo systemctl status mailhog

4. テストと確認

Webブラウザで http://<サーバーIP>:8025 にアクセスし、MailHogのインターフェースが表示されることを確認します。これで、MailHogをRocky Linux上で正常に動作させることができます。

トラブルシューティング

環境によってはSELinuxやファイアーウォールを適宜解放しなければならいかもしれません。以下の手順を問題解決の参考になさってください。

SELinuxの設定を確認

Rocky LinuxではSELinuxが有効な場合があります。SELinuxの制限でPermission deniedが発生している可能性があります。

1. SELinuxのステータス確認:

bash
getenforce

  • 出力が Enforcing の場合はSELinuxが有効です。

2. SELinuxを一時的に無効化してテスト:

bash
sudo setenforce 0

3. サービスを再起動して動作確認:

bash
sudo systemctl restart mailhog
sudo systemctl status mailhog

4. 問題が解決した場合、SELinuxに永続的な許可を設定する:

bash
sudo chcon -t bin_t /usr/local/bin/MailHog

5. SELinuxを元に戻す:

bash
sudo setenforce 1

関連記事

最後までご覧いただきありがとうございます!

▼ 記事に関するご質問やお仕事のご相談は以下よりお願いいたします。
お問い合わせフォーム