サイトロゴ

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

著者画像
Toshihiko Arai

はじめに

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

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

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


MailHogのインストール

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

1. Goのインストール

sudo dnf install -y golang

2. MailHogのインストール

go install github.com/mailhog/MailHog@latest

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

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

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

4. MailHogを確認

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

MailHog

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

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

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

移動後、再確認します:

which MailHog

期待される結果:

/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. サービスファイルを作成

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

内容:

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

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

[Install]
WantedBy=multi-user.target

2. サービスを有効化

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

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

sudo systemctl status mailhog

4. テストと確認

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

トラブルシューティング

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

SELinuxの設定を確認

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

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

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

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

sudo setenforce 0

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

sudo systemctl restart mailhog
sudo systemctl status mailhog

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

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

5. SELinuxを元に戻す:

sudo setenforce 1

関連記事