こんにちは。鈴木教郎です。

> From: SHIBATA Takao <lilia / pop21.odn.ne.jp>
> Date: Thu, 11 Nov 1999 00:08:37 +0900
>> Message-ID: <14377.35634.451666.82332B / belldandy.local.net>

> Socket#getpeername
> でいかがでしょうか。

これだと、sockaddr 構造体を pack した文字列が得られますよね。私は、
pack と unpack が苦手なので、IPSocket#peeraddr を使っています。

server = TCPserver.open(config["pop_port"])

として port を開いておいて、

pop = server.accept
remote_name = pop.peeraddr[2]
remote_address = pop.peeraddr[3]

これで、相手の IP アドレスと、可能ならば host name を得ています。逆引
ができないときには、remote_name は、IP アドレスが入っています。

自作 POP サーバは、これで得られた結果を使ってアクセス制御をしています
が、今のところ問題なく知らない相手を拒否できています。
-- 
鈴木教郎
E-Mail: nosuzuki / e-mail.ne.jp