今回はDocker上にmailhogを使ってSMTPのローカルテストサーバを構築する手順を自分用にメモします。
実はローカルのSMTPサーバ構築については既に以下の記事がTechRachoにあるのですが、長い記事なので今回はローカルSMTPテストサーバーの構築に絞り込みました。
mailhogについて
ちなみにmailhogとは、Go言語で書かれたメール送信テスト専用のメールサーバーです。
動作確認環境
- ruby 2.5.3
- mail(gem) 2.7.1
構築手順
まずdocker-compose.ymlを下記のように作成します。
docker-compose.yml
# https://qiita.com/k8uwall/items/e3e19937f7749f5c2a32 より
version: "3"
services:
mail:
image: mailhog/mailhog:latest
ports:
- "8025:8025"
- "1025:1025"
参考: MailHogでテスト用メールサーバーを立てる - Qiitaより
Dockerを起動
docker-compose up -d
メール送信用ミニマムスクリプト(ruby)
gem install mail
でmail gemをインストールする必要があります。
# mail.rb
require 'mail'
mail = Mail.new do
from 'from@example.net'
to 'to@example.net'
subject 'This is Test Mail'
body 'Body.'
end
mail.delivery_method :smtp, { address: 'localhost', port: 1025 }
mail.deliver!
実行
ruby ./mail.rb
8025番ポートでWebメールの画面を確認できます。ブラウザで下記のURLにアクセスします。
http://localhost:8025/
ポートの使い分け
使用するポートは下記の2種類になります。
- 8025番ポート: Webメール確認用
- 1025番ポート: SMTPサーバのポート
どちらも、SMTPのポート番号25番を踏襲したポート番号です。
以上、簡単でしたがローカルでメールサーバを動作させるのに便利に使えると思います。