powershell

PowerShellでメールを受信してみる

とあるソフトウェアの試験で対象の装置からSMTPサーバへログが記載されたメールが飛ぶかどうか確認する必要がありました。フリーのSMTPサーバを使えれば良いのですが、試験環境にはインターネットから切り離されたWindowsのPCしか無い状況。しかも勝手にソフトは入れられない。

どうしようかと悩んでいた時、前にPowerShellでSyslogを受信して確認した事があったのを思いだしメールの受信もできるはず、ということでPowerShellで動く簡易的なSMTPサーバを作ってみました。

SMTPサーバのスクリプト

動けば良いやで作ったのでアホみたいな実装ですがご容赦ください。

動作確認用のMail送信スクリプト

結果

キャプチャして確認

f:id:segmentation-fault:20170927233903p:plain
f:id:segmentation-fault:20170927233913p:plain

キャプチャを見ると無事にメールを受信できていました。
ただ、このSMTPサーバはクライアントから受信した内容はガン無視してシーケンスを進めるので少しでも想定と違うパケットを受信するとアウトです。

今回はちょっとした確認用途なので、これ以上は頑張りません。

まとめ

Google先生に聞いても、PowerShellからMailを送信するサンプルコードは沢山ありますが、受信する例は中々見つからなくて苦戦しました。(私がWindows系のプログラミングに疎いというのもありますが…)

あまり必要になるケースが無いの仕方ないですね(^-^;)

参考

下記を参考にさせていただきました。

Simple TCP Listener – Null Payload

Powershellでメールを送信する最も簡単な方法 | いろんなサーバー設定研究所