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による認証が成功しました。これ「小ネタ」でも良かったなー。