Docker テスト用メールサーバー
はじめに
ちょっと必要になってローカル開発やテスト用途にメールサーバーを立ててみました。
検索してみると「smtp4dev」とか「Radish」とか「BlackJumbo」とか出てきますが、
最近話題のコンテナdocker使ってみました。初めて←
環境
macOS 10.13.1
Docker version 17.09.0
Mailhog
https://hub.docker.com/r/mailhog/mailhog/
Dockerのインストール
一応公式ページでスペックを確認しておきます。
https://docs.docker.com/docker-for-mac/install/#install-and-run-docker-for-mac
ハードは新しいモデルとmacOSはELCapitan10.11より新しい、
4GM以上のメモリ、VirtualBox4.3.30以前はやめとけと。
公式のホームページからdocker.dmgをダウンロードします。
クリックしてドラッグ&ドロップでinstallします。
Mailhogのインストール
続いてMailhogをcommandからインストールします。
公式サイトはこちら
https://hub.docker.com/r/mailhog/mailhog/
$>docker pull mailhog/mailhog
設定と起動
docker-compose.ymlの設定をします。
$> mkdir docker $> cd docker $docker > vi docker-compose.yml
docker-compose.ymlの中身はこちら
mailhog: image: mailhog/mailhog ports: - "8025:8025" - "1025:1025"
8025はHTTPポート、1025はsmtpポートです。環境に合わせて変更してください。
mailhogを起動します
$> docker-compose up
起動後localhostへのアクセスを確認します。
http://localhost:8025/
メールテスト
動作テストします。pythonでスクリプト書いてテストしました。
telnetでも良いと思います。
import smtplib from email.mime.text import MIMEText def test_mail(from_addr, to_addr, subject, msg): m = MIMEText(msg) m['Subject'] = subject m['From'] = from_addr m['To'] = to_addr s = smtplib.SMTP(host="localhost", port=1025) s.sendmail(from_addr, to_addr, m.as_string()) s.close() return test_mail("from@addr.example.com","to@addr.example.com","test","test")