SMTPサーバのテストをしたくなったのでDockerで環境を作った話。

SMTPサーバのテストをしたくなったので

ということ、ありませんか?
僕は最近試してみたいなぁと思いました。

なのでみんな大好きDockerで構築してみます。よくある動機ですね。

それで、調べてみるとDocker Hubに良さげなイメージがあったのでさくっと環境構築してみます。

なお、今回はDockerはインストール済みとしています。以下の環境で動かしています。

環境

Mac OS Catalina 10.15.7
Docker version 20.10.2

手順

1.イメージをビルドする

こちらのDocker Hubに記載されているようにすれば基本的には起動できます。

本編とは関係ないですが、よくみたら最後に更新されたのが5年前になっていますね。

 $ sudo docker pull catatnight/postfix

2.コンテナを起動する

sudo docker run -p 25:25 \
         -e maildomain=mail.example.com -e smtp_user=user:pwd \
         --name postfix -d catatnight/postfix

これでSMTPサーバが立ち上がりました。

一応docker psコマンドでコンテナが起動しているかを確認します。

CONTAINER ID IMAGE  COMMAND  CREATED STATUS PORTS  NAMES

********** catatnight/postfix "**/**/** '/**/**…" 3 minutes ago Up 3 minutes 0.0.0.0:25->25/tcp postfix

無事起動していますね。

3.telnetで接続する

telnetで起動したSMTPサーバに接続しましょう。

なお、今回はMac OSです。
Mac OSではtelnetはプリインストールされていないのでHomebrewを使ってインストールします。

$ brew install telnet

!! ここで以下のエラーが出ました。

Error: Permission denied @ apply2files - /usr/local/lib/node_modules/@aws-amplify/cli/node_modules/extglob/lib/.DS_Store

Permission deniedなので権限で弾かれていますね。

調べてみるとこちらの内容が参考になりました。

僕の場合は

$ sudo chown -R ${username}:staff /usr/local/lib/node_modules

${username}は自身のMacのユーザ名に置き換えてください。

これで弾かれることはなくなったので無事インストールできます。

そして以下のコマンドで

$ telnet localhost smtp

これで以下のメッセージが出れば接続完了です。

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

MAIL FROM:foo@gmail.com
250 2.1.0 Ok

QUIT

221 2.0.0 Bye

Connection closed by foreign host.221 2.0.0 Bye

Connection closed by foreign host.

あとは実際にSMTPサーバとしてテストをするだけです。
止める時は上記のようにQUITコマンドを打つと終了します。

コメント

このブログの人気の投稿

Braveブラウザの同期機能をiPhoneで設定した話。

JavaのindexOf関数はナイーブ法で実装されているらしい

C++のstd::lower_bound()とPythonでの話。