- blogs:
- cles::blog
2018/07/15

SMTP Auth /w STARTSSL のデバッグを行うスクリプト


仕事場のメールサーバが Office 365 に切り替わったのですが、なぜか SMTP だけ認証が効かなかったので状況を調査するための簡単なスクリプトを書いてみました。
昔は通信が平文だったので、SMTP のデバッグも telnet コマンドでイケましたが、今は TLS で暗号化されているのが標準という時代なので、openssl を使う必要が出てきます。今回は SMTP Auth の部分も必要だったので、なるべくマニュアル作業が少なくなるように Perl でスクリプトを書いてみました。
Perl はしばらく触れていなかったので、すっかり時代に取り残されてしまっている感じですが、標準の Net::SMTP ライブラリでも SMTP Auth とか、STARTSSL なんかに対応しているんですね。
smtpStartsslDebug.pl
#!/usr/bin/env perl
use strict;
use warnings;
use utf8;
use Net::SMTP 3.0;
use Authen::SASL qw(Perl);
my ($mailserver, $port, $user, $password) = @ARGV;
my $smtp = Net::SMTP->new(
$mailserver,
Port => $port,
Timeout => 10,
Debug => 1,
);
die "ERROR: smtp connection failed.$!" if !defined $smtp;
$smtp->starttls();
$smtp->auth( $user, $password) or die "ERROR: Authentication failed.\n";
$smtp->quit();
コマンドラインの引数として、サーバ名、ポート番号、ユーザー名、パスワードの4つを取ります。
実際に実行してみると、以下のような感じで接続の様子が表示されます。
# 実際のパスワード等についてはダミーに書き換えてあります。
$ perl smtpStartsslDebug.pl smtp.office365.com 587 user@example.jp 'password'
Net::SMTP>>> Net::SMTP(3.11)
Net::SMTP>>> Net::Cmd(3.11)
Net::SMTP>>> Exporter(5.73)
Net::SMTP>>> IO::Socket::IP(0.39)
Net::SMTP>>> IO::Socket(1.39)
Net::SMTP>>> IO::Handle(1.39)
Net::SMTP=GLOB(0x2829750)<<< 220 TYAPR01CA0017.outlook.office365.com Microsoft ESMTP MAIL Service ready at Sun, 15 Jul 2018 12:41:09 +0000
Net::SMTP=GLOB(0x2829750)>>> EHLO localhost.localdomain
Net::SMTP=GLOB(0x2829750)<<< 250-TYAPR01CA0017.outlook.office365.com Hello [160.16.198.140]
Net::SMTP=GLOB(0x2829750)<<< 250-SIZE 157286400
Net::SMTP=GLOB(0x2829750)<<< 250-PIPELINING
Net::SMTP=GLOB(0x2829750)<<< 250-DSN
Net::SMTP=GLOB(0x2829750)<<< 250-ENHANCEDSTATUSCODES
Net::SMTP=GLOB(0x2829750)<<< 250-STARTTLS
Net::SMTP=GLOB(0x2829750)<<< 250-8BITMIME
Net::SMTP=GLOB(0x2829750)<<< 250-BINARYMIME
Net::SMTP=GLOB(0x2829750)<<< 250-CHUNKING
Net::SMTP=GLOB(0x2829750)<<< 250 SMTPUTF8
Net::SMTP=GLOB(0x2829750)>>> STARTTLS
Net::SMTP=GLOB(0x2829750)<<< 220 2.0.0 SMTP server ready
Net::SMTP::_SSL=GLOB(0x2829750)>>> EHLO localhost.localdomain
Net::SMTP::_SSL=GLOB(0x2829750)<<< 250-TYAPR01CA0017.outlook.office365.com Hello [160.16.198.140]
Net::SMTP::_SSL=GLOB(0x2829750)<<< 250-SIZE 157286400
Net::SMTP::_SSL=GLOB(0x2829750)<<< 250-PIPELINING
Net::SMTP::_SSL=GLOB(0x2829750)<<< 250-DSN
Net::SMTP::_SSL=GLOB(0x2829750)<<< 250-ENHANCEDSTATUSCODES
Net::SMTP::_SSL=GLOB(0x2829750)<<< 250-AUTH LOGIN XOAUTH2
Net::SMTP::_SSL=GLOB(0x2829750)<<< 250-8BITMIME
Net::SMTP::_SSL=GLOB(0x2829750)<<< 250-BINARYMIME
Net::SMTP::_SSL=GLOB(0x2829750)<<< 250-CHUNKING
Net::SMTP::_SSL=GLOB(0x2829750)<<< 250 SMTPUTF8
Net::SMTP::_SSL=GLOB(0x2829750)>>> AUTH LOGIN
Net::SMTP::_SSL=GLOB(0x2829750)<<< 334 VXNlcm5hbWU6
Net::SMTP::_SSL=GLOB(0x2829750)<<< (decoded) Username:
Net::SMTP::_SSL=GLOB(0x2829750)>>> (decoded) user@example.jp
Net::SMTP::_SSL=GLOB(0x2829750)>>> ************************
Net::SMTP::_SSL=GLOB(0x2829750)<<< 334 UGFzc3dvcmQ6
Net::SMTP::_SSL=GLOB(0x2829750)<<< (decoded) Password:
Net::SMTP::_SSL=GLOB(0x2829750)>>> (decoded) ********
Net::SMTP::_SSL=GLOB(0x2829750)>>> ********************
Net::SMTP::_SSL=GLOB(0x2829750)<<< 235 2.7.0 Authentication successful target host TYAPR01MB2608.jpnprd01.prod.outlook.com
Net::SMTP::_SSL=GLOB(0x2829750)>>> QUIT
Net::SMTP::_SSL=GLOB(0x2829750)<<< 221 2.0.0 Service closing transmission channel
トラックバックについて
Trackback URL:
お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/10300
Trackbacks
このエントリにトラックバックはありません
Comments
愛のあるツッコミをお気軽にどうぞ。[policy]
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントはありません
Comments Form
コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。
OpenID を使ってログインすることができます。
サイト内検索
検索ワードランキング
へぇが多いエントリ
閲覧数が多いエントリ
1 . Thunderbird のメッセージをスレッド化しないようにする(4546)
2 . Word で数式がグレーアウトされていて挿入できないときは(3387)
3 . Windows 10 で勝手にログアウトされないようにする(3007)
4 . Firefox でパスワードが保存されるページとされないページの違い(2543)
5 . シャープの空気清浄加湿器のキュルキュル音は PTFE スプレーで(2348)
2 . Word で数式がグレーアウトされていて挿入できないときは(3387)
3 . Windows 10 で勝手にログアウトされないようにする(3007)
4 . Firefox でパスワードが保存されるページとされないページの違い(2543)
5 . シャープの空気清浄加湿器のキュルキュル音は PTFE スプレーで(2348)
cles::blogについて
Referrers