こんにちは。nemoです。
エンジニアの皆さん。
突然ですが、最近は様々な企業でセキュリティに対する意識が高く、安易にメールを送信することが出来ない場合が珍しくないと思います。
こんな場合、ダミーSMTPサーバを構築するなどの対応方法が考えられますが、開発環境がWindowsだし、もっと簡単に構築が出来、かつ容易に送信内容を確認したいなー。
なんてことは御座いませんか?
そこでご紹介するのが「smtp4dev」。
導入する手順は簡単。
smtp4dvのサイト(http://smtp4dev.codeplex.com/)から、[Downloads]→[smtp4dev 2.0.9 standalone]
次にダウンロードした[smtp4dev-2.0.9-binaries.zip]を解凍し、解凍した[smtp4dev.exe]を実行するだけです。
最初の起動時に、セキュリティの重要な警告が表示されますが、[アクセスを許可する]を選択。

これだけで準備は完了。ダミーSMTPサーバは起動しています。

(画面左下に[Listening on port 25]と表示されています)
では早速、メール送信をしてみます。
(今回smtp4devが立ち上がっているWindows PCのIPアドレスは192.168.11.4です。)
$ telnet 192.168.11.4 25
Trying 192.168.11.4…
Connected to 192.168.11.4.
Escape character is ‘^]’.
220 localhost smtp4dev ready
次にehloコマンド
ehlo hogehoge.com
250-Nice to meet you.
250-8BITMIME
250-STARTTLS
250-AUTH=CRAM-MD5 PLAIN LOGIN ANONYMOUS
250-AUTH CRAM-MD5 PLAIN LOGIN ANONYMOUS
250 SIZE
続いてmailコマンドとrcptコマンド
mail from: <nemotx@opnetone.co.jp>
250 Okey dokey
rcpt to: <piyopiyo@opentone.co.jp>
250 Recipient accepted
最後に送信するデータを入力(dataコマンド)
data
354 End message with period
Subject: Hello SMTP World.
From: <nemotx@opentone.co.jp>
To: <piyopiyo@opentone.co.jp>
Let’s smtp command.
.
250 Mail accepted
これで送信完了です。
smtp4devを見てみましょう。
まずは[Messages]タグ。

送信したメールが届いていることが確認できます。
では[View]ボタンをクリックします。

普通にメーラが立ち上がってどのような内容かが確認できます。
次に、[Inspect]ボタンをクリックします。
この場合、[Mime Parts]や[Message Source]など詳細な情報を確認することができます。

ちなみにマルチパートの原稿を送信した場合にはどう表示されるかというと・・・。
以下の原稿を送信してみます。
Subject: Hello SMTP World.
From: <nemotx@opentone.co.jp>
To: <piyopiyo@opentone.co.jp>
Content-type: multipart/alternative; boundary=”boundary_xxxxxxxxxx”
Content-Transfer-Encoding: 7bit
–boundary_xxxxxxxxxx
Content-type: text/plain;
Content-Transfer-Encoding: 7bit
Hello Plain Content.
–boundary_xxxxxxxxxx
Content-type: text/html;
Content-Transfer-Encoding: 7bit
Hello Html Content.
–boundary_xxxxxxxxxx–
これを[Inspect]で確認します。



という感じでMultipartを分割した形式で確認することが可能です。
最後に[Sessions]タグを確認します。

表示されているのは、先ほど送信したMultipart形式メールの送信時間です。
ここで[View Log]をクリックします。

というようにテキストエディタで、送信した際のCommandを確認することが可能です。
また、今回はご紹介していませんが、
[Options]によって、ehloコマンドの拡張サービスを制御することも可能です。開発でメールの送信が必要な場合、是非使ってみては如何でしょうか?
またね。