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をやるを見てください。


debian Valid HTML 4.01 Strict [VALID RSS!]