PerlのNet::SMTPでメール送信テスト
テストメール送信
メールサーバ構築中にテストメールを送信することが多々あると思う。自分はよくtelnetでやるがsmtp-authになると、さすがエンコードやダイジェストの作成はできないので、perl君を使うことにしている。
Net::SMTP
Net::SMTPモジュールを使うとメール送信がかなり楽チンにできてしまう。便利なので機会があったら是非使ってほしい。
SMTP AUTH試験用
コード
auth試験用でメール送信はしません。authは暗号化強度が高い順で実行します。digest-md5、cram-md5、plain、login。指定はできないみたいなので、サーバ側で設定するしかないかな。
#!/usr/bin/perl use Net::SMTP; my ($host, $user, $passwd) = @ARGV; die '引き数が不足しています' if(!$host or !$user or !$passwd); my $smtp = Net::SMTP->new($host, Timeout=>60, Debug=>1); $smtp->auth($user, $passwd); $smtp->quit;
使い方
引数はホスト、ユーザ、パスワードです。
$perl smtp.pl localhost foge fogepass
結果
CRAM-MD5でやると、こんな結果になります。
;Net::SMTP>>> Net::SMTP(2.29) Net::SMTP>>> Net::Cmd(2.26) Net::SMTP>>> Exporter(5.58) Net::SMTP>>> IO::Socket::INET(1.27) Net::SMTP>>> IO::Socket(1.28) Net::SMTP>>> IO::Handle(1.24) Net::SMTP=GLOB(0x8166bb8)<<< 220 BANANA Net::SMTP=GLOB(0x8166bb8)>>> EHLO localhost.localdomain Net::SMTP=GLOB(0x8166bb8)<<< 250-nai.homelinux.net Net::SMTP=GLOB(0x8166bb8)<<< 250-PIPELINING Net::SMTP=GLOB(0x8166bb8)<<< 250-SIZE 10240000 Net::SMTP=GLOB(0x8166bb8)<<< 250-ETRN Net::SMTP=GLOB(0x8166bb8)<<< 250-STARTTLS Net::SMTP=GLOB(0x8166bb8)<<< 250-AUTH CRAM-MD5 Net::SMTP=GLOB(0x8166bb8)<<< 250-AUTH=CRAM-MD5 Net::SMTP=GLOB(0x8166bb8)<<< 250 8BITMIME Net::SMTP=GLOB(0x8166bb8)>>> AUTH CRAM-MD5 Net::SMTP=GLOB(0x8166bb8)<<< 334 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Net::SMTP=GLOB(0x8166bb8)>>> BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB Net::SMTP=GLOB(0x8166bb8)<<< 235 Authentication successful Net::SMTP=GLOB(0x8166bb8)>>> QUIT Net::SMTP=GLOB(0x8166bb8)<<< 221 Bye
各authの仕組みについてはtelnetでsmtp-authをやるを見てください。