次のページ 前のページ 目次へ

3. メーラーでやってみましょう

このセクションでは ssh フォワードコネクションを使用するために POP クライ アントソフトウェアを設定する方法を説明します。まず私の知っている POP を 取り扱う最も柔軟なソフトウェアである fetchmail (ESR による優れたメールの 取得と転送のユーティリティ) を見ていきます。 fetchmail は http://www.tuxedo.org/~esr/fetchmail/ でみつけることができます。 fetchmail に付いてくる優れた文書を読むことに よって fetchmail は素晴しい働きをしてくれるでしょう。

3.1 fetchmail の設定

私は .fetchmailrc を以下のように設定しています。


defaults
        user msingh is manish
        no rewrite

poll localhost with protocol pop3 and port 11110:
        preconnect "ssh -C -f msingh@popserver -L 11110:popserver:110 sleep 5"
        password foobar;

とっても単純でしょう? fetchmail には多くのコマンドがありますが、重要な部 分は preconnect の行と、poll のオプションです。

私たちは POP サーバに直接的には接続しません。代わりに localhost の 11110 番のポートに接続しています。preconnect の部分は fetchmail が実行されるたびに 5 秒間コネクションを張っておくということを 表わしています。fetchmail はこの時間を使って自分のコネクションを張ります。 残りはfetchmail 自身の処理です。

fetchmail を起動するたびに、ssh のパスワードを要求されます。fetchmail を バックグラウンドで動かす時 (私はそうしています) にはそれは少々都合が良く ありません。その場合は次のセクションに進みましょう。

3.2 自動化の方法

ssh ではさまざまな方法で認証を行えます。そのうちの一つが RSA 公開鍵暗号 です。 ssh-keygen を用いることによってあなたのアカウント用の鍵 を作りだすことができます。鍵にはパスフレーズを設定することもできますが、 空のままにすることもできます。あなたがローカルで用いるアカウントがどのぐ らい安全だと思うかによって、パスフレーズが必要かどうかが決まります。

もしあなたのマシンが安全だと思うなら、パスフレーズ無しでも構わないでしょ う。その場合は .fetchmailrc は単なる fetchmail の起動だけに使わ れます。fetchmail をデーモンとして動かしておけば、ダイアルアップしたとき に自動的にメールは取り込まれます。それでおしまいです。(訳注 : fetchmail -d でデーモンとして動かせます。詳しくは fetchmail(1) の man ペー ジを参照して下さい。

ただし、もしパスフレーズが必要だと思った場合には、事態はいくぶん複雑にな ります。ssh は agent の管理下で実行することができます。agent は 鍵を登録し、ssh からのあらゆるコネクションを認証します。それで、 getmail.sh というスクリプトを用意しました。


#!/bin/sh
ssh-add
while true; do fetchmail --syslog --invisible; sleep 5m; done

ダイアルアップしたときに、次のように打ちます。

$ ssh-agent getmail.sh

パスフレーズを一度要求されますが、その後は 5 分毎にメールを確認してくれ ます。ダイアルアップ接続を切断するときは、ssh-agent を終了させます。(私 の場合は自分の ip-up と ip-down スクリプトの中で自動的にやっています)

3.3 fetchmail を使わない場合

もしも fetchmail を使えなかったり、使いたくなかったりしたらどうなるでしょ う。 Pine, Netscape やその他にも POP 機能を持ったクライアントがあります が、まずは fetchmail を使う事を考えましょう! その方が遥かに柔軟ですし、 メールクライアントにはこの種のことをたくさんやらせるべきではありません。 Pine と Netscape の両方ともローカルのメールシステムを使うように設定でき ます。

しかし、あなたのクライアントが fetchmail のような preconnect の機能を持 たない場合には ssh のポート転送をあなたが接続するまでの間ずっとアクティ ブにしておかないといけません。つまりそれはコネクションを保持しておくため に sleep 100000000 のような設定を使うことを意味します。これはお そらくあなたのネットワークの管理者には歓迎されないでしょう。

次に、クライアントの中には (Netscape のように) ポート番号を 110 番に強制 的に設定してあるものもあります。その場合 root になって固定なポートからポー ト転送する必要があります。これも悩ましいことです。でも動きます。


次のページ 前のページ 目次へ