2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MailDevでモックSMTPサーバーを立てる

Last updated at Posted at 2024-05-09

はじめに

開発中に安心して使えるメールサーバーのモックを探していたら、MailDevという良さげなツールを見つけたので使ってみました。
今回は公式のDockerイメージをdocker-composeで動かしています。

MailDevとは

開発中にメール機能をテストするためのツールで、以下のような特徴を持っています。

  • ローカルマシン上にモックSMTPサーバーを構築できる
    • 公式のDocker imageがある
    • npmでもインストール可能(参照)
  • あくまでモックなので、外の世界にメールが送信されることはない
  • モックSMTPサーバーから送信したメールの内容を、ブラウザで確認することができる

モックサーバーの構築

以下の手順で構築および動作確認していきます。

  1. docker-compose.yamlを記述する
  2. Dockerコンテナを起動する
  3. ブラウザでlocalhost:1080を開きサーバーが立ち上がっていることを確認する
  4. telnetでモックサーバーにメールを送信する
  5. ブラウザでメールが届いたことを確認する

今回はDocker Composeで構築していますが、dockerコマンドでも実行できます。
(詳細は公式参照)

docker-compose.yaml

docker-compose.yaml
services:
  maildev:
    image: maildev/maildev
    ports:
      - "1080:1080"
      - "1025:1025"

1080ポートでWebサーバーが、1025ポートでSMTPサーバーが起動しているので、それらを公開しています。

動作確認

docker-compose upでDockerコンテナを起動し動作確認をしていきます。

モックサーバー起動確認

コンテナが起動した状態でhttp://localhost:1080にアクセスすると以下が表示されます。
スクリーンショット 2024-05-09 12.58.21.png

メール送信

モックサーバーの起動が確認できたので、実際にメールを送ってみましょう。
telnetコマンドを使うと簡単に送ることができます。
(telnetコマンドはWindowsならWSLにデフォルトでインストールされていますが、Macの場合ないのでbrew install telnetでインストールしてください。)

telnetコマンド実行

telnet localhost 1025 

上記を実行するとコンソールに以下のようなレスポンスが返ってきます。

Trying ::1...
Connected to localhost.
Escape character is '^]'.
220 1bd612940a79 ESMTP

これでモックサーバーとの接続が確立されました。

SMTPセッション開始

まず最初にHELOコマンドでクライアントのホスト名をサーバに伝えます。
今回はモックサーバー相手なので、クライアントのホスト名はなんでも大丈夫です。
接続を確立したコンソールでそのまま以下を打ち込み、エンターしてください。

HELO test.com

すると以下のようなレスポンスが返ってきます。

250 1bd612940a79 Nice to meet you, [192.168.65.1]

メール送信

次に以下を続けざまに入力します(レスポンスは省略)。

MAIL FROM: <test@test.com>
RCPT TO: <target-address@test.com>
DATA
Subject: this is mail title

this is mail content
.

これでモックSMTPサーバーを使って、test@test.comというアドレスから、target-address@test.comというアドレスに対して、メールが送信されました。

ちなみにDATAの後に入力しているものはメールの件名とメール本文なのですが、Macで日本語入力すると、telnetの問題で文字化けするのでアルファベットのみにしたほうが賢明です。
(WSLは日本語でも大丈夫でした)

メール送信確認

ではどんなメールが送信されたか確認してみましょう。
http://localhost:1080に再度アクセスすると、以下のような内容が確認できるはずです。
スクリーンショット 2024-05-09 21.58.05.png

まとめ

MailDevを使うことで、外部にうっかりメール送信してセキュリティ事故になるといったことが防げるようになります。
環境変数で開発環境はローカルのモックSMTPサーバー、本番環境はAWS SESなどのSMTPサーバーを向くようにしておけば、安心して開発することができますね。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?