SMTP AUTHチェックスクリプトを書いてみた

 ちょっとした理由で特定のメールサーバのSMTP AUTHが機能してるかを確認する必要が出てきたのでちょっと書いてみました。
 半年くらい前に書いて以来Evernoteに入れて満足していたのですが、自分だけで保存しておくのはちょっともったいないくらい簡単にできたのでここに書き残しておくことにします。

 さて、問題のスクリプトですが……実はSMTP AUTH検証はNet::SMTPを使えばちょー楽に書けます。

#!/usr/local/bin/perl

use Net::SMTP;
use strict;
use warnings;

my ($mailserver, $user, $password) = @ARGV;
my $smtp = Net::SMTP->new($mailserver, Debug=>1);

$smtp->auth($user, $password);
$smtp->quit;

exit 0;

↓実行結果↓

# ./smtpauthchk.pl smtp.example.com hogehoge@example hogehoge
Net::SMTP>>> Net::SMTP(2.31)
Net::SMTP>>>   Net::Cmd(2.29)
Net::SMTP>>>     Exporter(5.58)
Net::SMTP>>>   IO::Socket::INET(1.29)
Net::SMTP>>>     IO::Socket(1.29)
Net::SMTP>>>       IO::Handle(1.25)
Net::SMTP=GLOB(0x81a9cc4)<<< 220 example.com ESMTP
Net::SMTP=GLOB(0x81a9cc4)>>> EHLO localhost.localdomain
Net::SMTP=GLOB(0x81a9cc4)<<< 250-example.com
Net::SMTP=GLOB(0x81a9cc4)<<< 250-STARTTLS
Net::SMTP=GLOB(0x81a9cc4)<<< 250-PIPELINING
Net::SMTP=GLOB(0x81a9cc4)<<< 250-8BITMIME
Net::SMTP=GLOB(0x81a9cc4)<<< 250-SIZE 31457280
Net::SMTP=GLOB(0x81a9cc4)<<< 250 AUTH LOGIN PLAIN CRAM-MD5
Net::SMTP=GLOB(0x81a9cc4)>>> AUTH CRAM-MD5
Net::SMTP=GLOB(0x81a9cc4)<<< 334 PDkxMzczLjEyNjg3MjA5NDlAa21teDAwcy5hZG1pcmFsLm5lLmpwPg==
Net::SMTP=GLOB(0x81a9cc4)>>> YXJhaUBrbS5hc2oubmUuanAgYTY3OTM0ZDMxOTA5NDJlOWE3Y2QwMzFmNDcwM2Y0NDc=
Net::SMTP=GLOB(0x81a9cc4)<<< 235 ok, go ahead (#2.0.0)
Net::SMTP=GLOB(0x81a9cc4)>>> QUIT
Net::SMTP=GLOB(0x81a9cc4)<<< 221 example.com

 上記ではSMTP AUTHによる認証が成功しました。これ「小ネタ」でも良かったなー。