#!/usr/bin/perl
use Socket;
# URLを解釈する
$hostname = $ARGV[0] or die;
$port = 110; # ポート番号
$ipaddr = inet_aton($hostname);
# ソケット作成
socket(SOCK, PF_INET, SOCK_STREAM, getprotobyname('tcp')) or die;
# connectする(bindは省略してある)
connect(SOCK, sockaddr_in($port, $ipaddr)) or die;
# バッファリング無効
select(SOCK); $| = 1; select(STDOUT);
#######################################
# POPサーバーから送られてくる挨拶を受け取る
$reply = <SOCK>;
die $reply if $reply =~ /^-ERR/;
# ユーザー名を聞く
print "Username?\n";
chop($username = <STDIN>);
# ユーザー名をサーバーに確認を取る
print SOCK "USER $username\r\n";
$reply = <SOCK>;
die $reply if $reply =~ /^-ERR/;
# パスワードを聞く
print "Password?\n";
system("stty -echo"); # 画面にパスワードがでないよう工夫
chop($pass = <STDIN>);
system("stty echo"); # もとにもどす
# パスワードをサーバーに確認を取る
print SOCK "PASS $pass\r\n";
$reply = <SOCK>;
die $reply if $reply =~ /^-ERR/;
# 届いているメールを確認する
print SOCK "STAT\r\n";
$reply = <SOCK>;
die $reply if $reply =~ /^-ERR/;
($ok, $count, $byte) = split(/ /, $reply);
$byte = int($byte/1024); # キロバイトに直す
print "$usernameさん宛てに$count通($byteキロバイト)のメールが届いています\n";