最新更新日 '99.04.28.


ssh と、fetchmail でポートフォワード;-)
 私の所にはホームページ検索があるのですが、その中で割と多い検索に fetchmail があります。今回はいよいよ fetchmail に付いて書いて見たいと思います。ただしっ!!普通の使い方ではありません。ssh を利用して passwd と 本文をセキュアに転送してきます。ふふふふ。

 と、言う事で今まではどうしていたか?と言うと、popclient を使って

----------------
% popclient -3 -u takachan -p PASSWD mail.running-dog.net
----------------
みたいな事していたんですね。ま、これでも Xemacs+mew で十分に読めるのですが、passwd とメールの本文がテキストでインターネット上に垂れ流し。と、言う状態なのでちと不安です。そんなこんなで ssh と、fetchmail を利用します。fetchmail は使い方が沢山あります。私は全部把握していません。あしからず御了承ください。自分で調べてみてください。

 では、まず最初に ssh です。インストールに付いては モートアクセスする人には ssh;-)。 を参考にしてください。今回は、サーバ側に sshd が、クライアント側には slogin が必要になります。あ、今の ssh のバージョンは 1 系では、ssh-1.2.26.tar.gzです。2 系では、ssh-2.0.5 が出ています。この二つ、結構別モノなので、「2 系の方が最新だからこっち使おう。」と、思った方、頑張ってください。私には使いこなせませんでした(^^;;。

 と、言う事で ssh のインストールは無事に終りましたか?クライアント側では OK ですね。サーバ側は?あ、プロパイダの POP サーバには入っていない? 残念でしたねぇぇ・・。しくしく。

●では、続いて fetchmail に移ります。
 packages に fetchmail-4.7.0 があるのでこれを pkg_add します。準備はこれでおしまいです;-)。

 基本的な使い方は、

----------------
% fetchmail  mail.running-dog.net -u takachan -p POP3  localhost
Enter password for takachan@mail.running-dog.net: 
----------------
こんな風になると思います。mail.running-dog.net から POP3 で UserID takachan からメールを取って来て、localhost の SMTP にぶんなげます。と、言う事で自分のマシンに MTA が動いていないとダメですね。FreeBSD の場合は sendmail が動いていると思います。

 標準的な使い方の場合、私はこれしか私は知りません(^^;;。後はマュアルを読んで頑張ってください。へへへf(^^;;。

● ssh でセキュア経路の確保。
 続いて SSL を利用します。ネットワーク構成図はこんな感じでしょうか・・。

             +------------+
-------------| POP Server |--------------- InterNet
             +-----+------+ mail.running-dog.net
                   |POP3 Port:110
                   |  ↑
                   |SSH Port:22 (sshd)
       +-----------+
       |
       |SSH Port:22 (slogin)
       |
  +----+----+ Dummy Port:1110             
  | FreeBSD |      ↑           
  +---------+      +---------POP3 Port:110		     
  HostName:pochi

 なんか、うまく書けないな(^^;;。以下理屈です。

 pochi からの POP3 は 1110 番ポートを利用しますが slogin(ssh) でポートフォワードしてもらいます。slogin でセキュアな経路を確保するのでその中をパケットが飛んでいきます。

 サーバ側は 22 番ポートで飛んで来たパケットを 110 番ポートに接続して、POP 出来る様になります。

と、まぁ、理屈はこんな感じなのですが、判ってもらえたかな・・(^^;;。では、実際に slogin する所からやってみましょう

----------------
% slogin -l takachan -L 1110:boyo:110 mail.running-dog.net
Enter password for takachan@mail.running-dog.net: 
% fetchmail -u takachan -k -p POP3 -P 1110 localhost
Enter password for takachan@mail.running-dog.net: 
----------------
と、まぁ、こんな感じです。一行目は slogin により ssh の経路確保です。1110 番ポートを slogin(ssh) でポートホワードする様にします。二行目は、fetchmail で 1110 番ポートにコネクションをはりに行きます。これで 1110 番ポートへのアクセスは mail.running-dog.net に行く様になります。

 これで、passwd と メール本文は暗号化されクライアント側で受け取る事が 出来る様になります。あぁめでたしめでたし\(^^)/。

● え?毎回 passwd 打つの面倒なの?
 確かにねぇぇ。面倒だ・・。slogin の場合は、ssh-addkey と ssh-agent を利用すれば毎回パスワードは聞かれない様になるみたいです。がっ!!しかし・・。私はいっくら格闘しても ssh-addkey がちぃーとも有効にならんかった・・・。しくしく・・。助けてください。> 佐田さん;-)
#実はこの辺りは SD 5 月号で 佐田さん と言う方が書かれているんです;-)。

 と、言う事で今回は ssh の passwd 入力の省き設定は無し。知っている人居たら教えてください。そんじゃまぁ、しょーがないんで fetchmail の設定の方に移りましょう。

 fetchmail には設定ファイルと言うのが存在していて、~/.fetchmailrc に fetchmail のオプションをつらつらと書いて行けばそれで OK です。簡単です。以下は、~/.fetchmailrc の中身のサンプルです。

--- ~/.fetchmailrc
poll   localhost  port 1110 proto pop3:user takachan pass PASSWD keep smtp localhost
#poll  mail.running-dog.net proto pop3:user takachan pass PASSWD keep smtp localhost
----------------
一行目は localhost の port 1110 に対し、pop3 で、user takachan 、passPASSWD で接続して、持って来たメールは smtp localhost に配信する。と、言う意味です。
二行目は mail.running-dog.net に対し、pop3 で、user takachan 、pass PASSWD で接続して、持って来たメールは smtp localhost に配信する。と、言う意味です。

 解ると思いますが、一行目は ssh を利用した port ホワードの設定。二行目は普通の時の設定です。あ、keep はサーバにメールを残す。と、言う設定です。これで利用する時、は以下のコマンドでおしまい。あ、当然 fetchmail コマンドを叩く前に slogin して ssh のコネクションを確立しておいてくださいね。

----------------
% fetchmail
----------------
 ね。ずいぶんと簡単になったでしょぉぉ。あ、~/.fetchmailrc は chmod 600 しといてくださいね。そして、これをそのまま cron に設定すれば以下の様になります。
----------------
01,11,21,31,41,51 23,0,1,2,3,4,5,6,7  * * *  /usr/local/bin/fetchmail > /dev/null 2>&1
----------------
 ふふふ。テレホーダイの時間帯はさくさくメールを取りに行く様になります。しかも安全に;-)。すごいですねぇぇ。この時、tcpdump を取ってみるとやはりちゃんと ssh で接続している事が解り、「あ、せきゅあなんだぁ。」ってのが実感出来ます;-)。

 話が全然違うのですが、tcpdump を取る為には kernel に以下の一行を追加して作り直します。その後、root で tcpdump と叩くとパケットの流れを監視出来る様になるでしょう。

----------------
pseudo-device   bpfilter 4              #Berkeley packet filter. exec tcpdump
----------------
 と、まぁ、駆け足でお話してきましたが、これでまた一つセキュレティがアップしした。良かった。え? 「APOP 使えばえーやんっ!!」って?ふふふ(^^;;。その通りで。そっちの方が多分楽でしょうね。けど、私は qpopper で APOP のサーバを作る事が出来なかったんです(^^;;。しくしく。

 後、APOP は実は、 passwd は暗号化するけど、メール本文は生テキストのままなんですね。なのでどっちが重要か?と聞かれた時、私は ssh のポートホワードを利用します。ただし、何度も言う様ですが、環境が整っていた場合に限り有効です;-)。


Copyright (c) 1997-2004 takachan@running-dog.net All Rights Reserved.