HELOコマンドが失敗する。
いつもお世話になっております。
Perlでメール送信をしたいのですが、
HELOコマンドを送信するのですが、接続に失敗します。
何故失敗するのが、原因が分かりません。
何を調査したらよいのか、
ご存知の方、ご教授を頂けますでしょうか。
(プログラム)
ファイル名:mail.cgi
一部抜粋
# ------------------------------------------------------- #
# SOCKETの作成
# ------------------------------------------------------- #
# PORT番号を取得します
$port = getservbyname('smtp','tcp');
# PORT、IPで構造体を作成する
$struct = sockaddr_in($port,inet_aton($server));
# ソケットの生成
socket(SH, PF_INET, SOCK_STREAM, 0)
|| die("ソケットの生成失敗 $!") ;
# 接続
connect(SH, $struct )
|| die("接続失敗 $!") ;
# ソケットのバッファリングは行わない
select(SH); $| = 1; select(STDOUT);
$respons = <SH> ;
unless($respons =~ /^220/) {
close(SH); die("接続失敗 $!") ;
}
# ------------------------------------------------------- #
# コマンドの送信
# ------------------------------------------------------- #
# -------- HELOコマンドの送信とレスポンスの確認 --------- #
# コマンドの作成、送信
$command = "HELO $server\n";
print SH $command ;
# レスポンスの受信、確認
$respons = <SH> ;
&decode(\$respons) ;
# レスポンスの確認
unless($respons =~ /^250/){
close(SH); die("HELOコマンド失敗 $!") ; ←ログをみる限りココに着ます。
}
(err_log)
[Wed Aug 27 12:25:33 2008] [error] [client XXX.XXX.XXX.XXX] HELOコマンド失敗 Illegal seek at /XXX/mail.cgi
line 149.,
プログラムの149行目は、die("HELOコマンド失敗 $!") の個所です。