From: Wakou Aoyama Date: 1999-04-09T06:15:08+09:00 Subject: [ruby-list:13517] Re: pop3 via firewall 青山です。 Thu, Apr 08, 1999 at 12:09:07PM +0900 において kikutani@sprintmail.com さん曰く: > しかし、今日気付きました。プロバイダのPOPサーバにtelnet > できるんですね。直接はもちろんできませんが、proxyサーバに > telnetするとプロンプトが出て、そこから外部にtelnetできるのです。 > そこで、短いrubyを書き、inet client風のインターフェースを書いて > popサーバからfetchできるようにしました。 > > が、ここで疑問が。もしかして、そんなことしなくても簡単に > POPって通るんですか? Firewall-FAQとか読んでもftpとかtelnet > については記述あるけど、POPはないからできないと思ってたけど。 > たとえば SMTP_PROXY という環境変数にproxyサーバの名前をセット > しとくと勝手にやってくれるとか? > > # もちろんproxyサーバの種類によるんでしょうが ちょうど似たような話がわりと最近 [ruby-list:12940] で出ました。 一応 telnet.rb に proxy 対応を含めたので、これを利用して書かれたツール ならば個々の proxy サーバー用のスクリプトを用意する事で、簡単に対応で きます。(例えば nif.rb) [ruby-list:12956] を引用すると、FWTK への対応はこんな感じのようです。 def fw_telnet(host) ENV['TELNET_GATEWAY'] or raise "please setenv TELNET_GATEWAY." fw = Telnet.new('Host'=>ENV['TELNET_GATEWAY']) fw.waitfor(/>\Z/){|c| print c } fw.print "connect #{host}" fw end というようなのを用意しておいて、 host = Telnet.new('Proxy'=>fw_telnet('foo.bar.co.jp')) とか、 nif.rb ではこんな感じです。 nif = Nifty.new({'id' => 'ID', 'password' => 'PASSWORD', 'log' => Time.now.strftime("%Y%m%d.log"), 'Proxy' => fw_telnet('r2.nifty.ne.jp')}) nif.rb の方は、単に telnet.rb へそっくり引き渡すようにしただけですが。 どちらも、'Proxy' => fw_telnet('r2.nifty.ne.jp') の部分を 'Host' => 'r2.nifty.ne.jp' のようにするだけで通常のアクセスと使い分け られます。 -- 青山 和光 Wakou Aoyama