✍️blog

技術系のこととか

開発用のメールサーバー(SMTP)を用意したい

メール送信を行う機能を開発しているときになかなか正式なメールサーバーは使えず(特に開発初期だと)、
環境の用意に苦しむわけですが、最近たまたまよさげなツールを見つけました。
もしかすると割とメジャーなツールなのかもしれませんけど。。。

その名も「smtp4dev」です。
まさに開発用と言わんばかりの命名に心打たれましたw
github.com

Windows以外にもmaclinuxでも使えるみたいです。

TL;DR

wikiページが割と充実しているので、使い方はこれ見れば十分ですw

github.com

インストール

リリースページからダウンロードできます。
試していませんが、dockerコンテナもあるらしい。

github.com

今回はWindowsのDesktop app版を使用します。

暗号化なしのSMTPサーバーとして起動

Rnwood.Smtp4dev.Desktop.exeを実行します。

こんな感じの画面が表示されるかと思います。
おめでとうございます。SMTPサーバーが起動しましたw

SMTP 25ポート、IMAP 143ポートで起動しています。

今回は試しにThunderbirdで送信を確認します。

Thunderbirdにはこんな感じでメールアドレスとかは適当に設定すればよいです。

別に特別なことは何もないですねw

メールを適当に作成して送信します。 パスワードとか聞かれた場合は適当な文字を入れてあげればよいです。

正しく送信できていれば、以下のような感じでメールがアプリの画面に表示されます。

もちろん開発用のサーバーなので、「Source」を選べば簡単にメールヘッダなど全体を確認できます。

TLSアリのSMTPメールサーバーとして起動

正直ただの暗号化なしの開発用のSMTPサーバーは探せば割とありますが、
TLSに対応しているものは少ないです。

STARTTLSとImplicit TLSに対応しているらしいです。
個人的にはSTARTTLSしか使用したことないので、STARTTLSを試してみたいと思います。

smtp4devはappsettings.jsonを変更、コマンドラインオプション、環境変数で設定を行います。

今回はappsettings.jsonを編集しますが、編集するファイルは %APPDATA%\smtp4dev\appsettings.jsonです。
(1回アプリを起動させるとこのファイルができるはずです。)

TlsModeの設定を以下のようにします。
TLSの証明書は設定されなければ勝手に自己証明書を作成してくれます。
開発用であればたいていの場合は自己証明書だと思うのでこれはありがたいですね。

{
  "ServerOptions": {
...
    "TlsMode": "StartTls",
....
  },
...
}

Thunderbirdの設定は以下のような感じでSMTPの方はSTARTTLSとします。

適当にメールを書いて送信しようとするとこんな感じで警告されます。
ちゃんとTLSが動いているということですね。

そのまま強引に送信しようとすると1回はエラーになりますが再度送信しようとするとちゃんと送信できているかと思います。

まとめ

こんな感じでSTARTTLSに対応したサーバーを構築できます。
(構築ってほど何かしているわけではないですけど。。。)

smtp4devはこのほかにもいろいろ機能があるような気がしますが、アプリ開発で使う分には
大抵TLSでメールが送れれば十分ですかね。

ちなみに、個人的にsmtp4devのデスクトップアプリ版の残念?なところとして
別にインストールアプリでもないのに一度アプリを起動するとスタートメニューにsmtp4devが追加されてしまいます。
まぁ、別にいいんだけど。。。

via GIPHY