docker-compose + mailhogでローカルSMTPテストサーバを手軽に構築する

今回はDocker上にmailhogを使ってSMTPのローカルテストサーバを構築する手順を自分用にメモします。
実はローカルのSMTPサーバ構築については既に以下の記事がTechRachoにあるのですが、長い記事なので今回はローカルSMTPテストサーバーの構築に絞り込みました。

Docker イメージを利用したローカル開発環境向けメールサーバ構築のすゝめ

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番を踏襲したポート番号です。

以上、簡単でしたがローカルでメールサーバを動作させるのに便利に使えると思います。

デザインも頼めるシステム開発会社をお探しならBPS株式会社までどうぞ 開発エンジニア積極採用中です! Ruby on Rails の開発なら実績豊富なBPS

夏のTechRachoフェア2019

週刊Railsウォッチ

インフラ

ActiveSupport探訪シリーズ