#!/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 "Mail Number?\n";
chop($mailno = <STDIN>);
# 届いているメールを取得する
print SOCK "RETR $mailno\r\n";
$reply = <SOCK>;
die $reply if $reply =~ /^-ERR/;
# [.]が来るまで表示
while(<SOCK>){
last if $_ eq ".\r\n";
print;
}