  Secure POP via SSH mini-HOWTO
  Manish Singh, <yosh@gimp.org>
  v1.0, 30 September 1998
  高城 正平,<takavoid@palette.plala.or.jp>
  14 September 1999

  この文書では ssh を用いた安全な POP 接続の設定方法について説明していま
  す。
  ______________________________________________________________________

  目次

  1. 導入
  2. 基本的な使い方
     2.1 ポート転送の設定
     2.2 外部へのテスト

  3. メーラーでやってみましょう
     3.1 fetchmail の設定
     3.2 自動化の方法
     3.3 fetchmail を使わない場合

  4. 付録
     4.1 Disclaimer
     4.2 著作権
     4.3 感謝

  ______________________________________________________________________

  1.  導入

  通常の POP メールセッションは、その性質上安全ではありません。パスワー
  ドは誰からでも読まれるクリアテキストとしてネットワークを通過します。信
  用できる環境やファイアウォールで守られた環境ならこのことはまったく問題
  にならないかもしれません。しかし大学や普通の ISP のような公共のネット
  ワークならどこでも、簡単なネットワーク盗聴ソフトを使用して、あなたのパ
  スワードを見ることができてしまいます。しかも、多くの人が定期的にメール
  をチェックするように設定しているために、かなり頻繁にパスワードが送られ
  て、盗聴するのはさらに容易になっています。

  アタッカーはこのパスワードを持っていれば、機密情報、あるいは私的な情報
  がつまっているかもしれないあなたの E-mail アカウントにアクセスすること
  ができます。たいていこのパスワードはシェルアカウントのパスワードと同じ
  になっているので、さらに被害が大きくなる可能性があります。

  POP 通信を行うときは常に暗号化されたチャネルを使うようにすれば、ネット
  ワーク越しのクリアテキストによる通信はなくなります。ssh の持つ多様な認
  証方法をプレーンテキストの代わりに利用することもできます。この方法を用
  いる真の意味は、メールを暗号化して送信することではなく (この時点で暗号
  化しても無駄です。メールボックスに届く前に通ったネットワーク上ではおそ
  らく暗号化しないまま通ってしまっているからです。通信内容の暗号化は GNU
  Privacy Guard や PGP の仕事であって、ssh の仕事ではありません)、安全な
  認証をすることにあります。

  その他にも APOP, KPOP そして IMAP のように安全な認証を成し遂げる方法が
  ありますが、 ssh を用いる利点はそれが通常の POP の設定で動くということ
  です。何も特別なクライアントを使う必要はありません (すべてのメールクラ
  イアントがAPOP, KPOP, IMAP のようなプロトコルをサポートしている訳では
  ありません ) 。そしてサーバ側でもサポートは不要です (サーバで sshd が
  動いていることを除けば) 。あなたのプロバイダはこれ以上安全なプロトコル
  を使うことができない、もしくは使う気がないかもしれません。その他にも
  ssh を用いることによってトラフィックを圧縮することもできます。低速な接
  続のユーザにとっては一石二鳥という訳です。

  (訳注 : この話題に関する情報は、SSH-FAQ の中にも見つけられます。日本語
  訳は http://www.vacia.is.tohoku.ac.jp/%7Es-yamane/FAQ/ssh/ にあります
  )

  2.  基本的な使い方

  この方法は ssh の基本的な機能である、ポート転送 (port forwarding) を
  使っています。

  このテーマについては、あなたのメールの設定の好みに依存してさまざまなバ
  リエーションがあります。とにかく ssh が必要です。次のところから入手で
  きます。 http://www.ssh.fi/ とそのミラーサイト。 RPM 版は
  ftp://ftp.replay.com/pub/crypto/ から。それから Debian 版は ftp://non-
  us.debian.org/debian-non-US/ から (そしてそれぞれのミラーサイトか
  ら)。(訳注 : 一般的にいって暗号関係のソフトウェアは国内からの入手の方
  が問題が少ないように思います。
  ftp://ftp.kyoto.wide.ad.jp/pub/security/ssh/ などから入手できることと
  思います)

  2.1.  ポート転送の設定

  ポート転送を始めるには次のコマンドを (訳注 : クライアント側で) 入力し
  てください。

       ssh -C -f popserver -L 11110:popserver:110 sleep 5

  さあ手にとってじっくりとコマンドを眺めていきましょう。

     ssh
        すべてをかなえてくれる魔法のプログラム ssh のバイナリ本体です。

     -C これはデータの圧縮機能を有効にします。これを使うかどうかはお任せ
        しますが、とりわけダイヤルアップのユーザは重宝するでしょう。

     -f 一度 ssh が認証し、ポート転送を確立すると、他のプログラムを動か
        せるようにバックグラウンドにフォークします。私たちは ssh のポー
        ト転送の機能を使いますので、 tty へのアタッチは必要ありません。

     popserver
        これから接続する POP サーバを指定します。

     -L 11110:popserver:110
        ローカルポートの 11110 をリモートサーバ popserver のポート 110
        に転送します。一般ユーザでも転送できるように大きいローカルポート
        (11110) を使用しています。(訳注 : 一般的に POP サーバのポート番
        号は 110 番です)

     sleep 5
        ssh は自分自身をバックグラウンドにフォークした後にコマンドを実行
        します。 sleep はメールクライアントがサーバとの接続を確立するの
        に十分な時間を稼ぐためのものです。これには 5 秒程もあれば十分で
        しょう。

  他にも必要とあれば、適切なオプションを付け加えてください。例えば POP
  サーバとローカルでユーザ名が異なる場合には、ユーザ名の設定が必要です。

  この為にはリモートサーバ popserver で sshd が動いている必要がありま
  す。しかし、そこにあなたのシェルアカウントは必要ありません。 ``You
  cannot telnet here'' と表示する時間だけで、コネクションを設定するには
  十分です。

  2.2.  外部へのテスト

  ポート転送するためのコマンドの詳細について理解したなら、以下のコマンド
  を試してみてください。

       $ ssh -C -f msingh@popserver -L 11110:popserver:110 sleep 1000

  popserver は POP サーバの名前です。 私のローカルマシン上でのユーザ名は
  manish なので、私は明示的に msingh と指定する必要があります。(ローカル
  マシン上のユーザー名がリモートマシン上のユーザ名と同じなら msingh@ の
  部分は必要ありません)

  するとこう表示されます:

       msingh@popserver's password:

  そして自分の POP パスワードを入力します (あなたのシェルのパスワードと
  POP のパスワードは違うかもしれませんが、その場合シェルのパスワードを
  使ってください)。できましたね。それではこれもできるはずです。

  $ telnet localhost 11110

  こんな感じに表示されればいいでしょう:

       QUALCOMM POP v3.33 ready.

  やりました。データは暗号化されてネットワークをこえて送られました。クリ
  アテキストでの通信は私のローカルマシン内と POP サーバ内のループバック
  インタフェース上だけです。

  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 になって固定なポートか
  らポート転送する必要があります。これも悩ましいことです。でも動きます。

  4.  付録

  4.1.  Disclaimer

  There is no guarantee that this document lives up to its intended
  purpose. This is simply provided as a free resource. As such, the
  author of the information provided within cannot make any guarentee
  that the information is even accurate. Use at your own risk.

  この文書が意図した目的に沿っているという保証はありません。そういうもの
  として、作者はここで提供した情報についていかなる保証も、情報が正しいと
  いう保証すら、できません。あなた自身の責任で使用してください。

  Cryptographic software such as ssh may be subject to certain
  restrictions, depending on where you live. In some countries, you must
  have a license to use such software. If you are unsure of your local
  laws, please consult someone who is familiar with your situation for
  more information.

  ssh のような暗号化ソフトウェアはあなたの居住している場所によっては特定
  の制限を受けるかもしれません。いくつかの国ではそのようなソフトウェアを
  使うためには許可が必要です。自分では判断がつかない場合には誰かあなたの
  状況をよく知っている詳しい人に相談してください。

  The use of the information provided in this document is most likely
  not anticipated by your mail service provider. The author does not
  encourage the abuse and misuse of network services, and provides this
  document for informational purposes only. If you are in doubt about
  whether the use of these techniques falls within the service agreement
  of your mail provider, please clear that up beforehand.

  この文書によって提供された情報の使い方があなたのメールサービスプロバイ
  ダーに予想される可能性は少ないでしょう。著者はネットワークサービスの悪
  口をいったり、誤用するのを勧めませんし、情報目的でこの文書を提供しただ
  けです。もしあなたが疑問をもったままこれらの技術を使う場合にはメールプ
  ロバイダーとの合意の上であろうと、あらかじめ明らかにしておいてくださ
  い。

  4.2.  著作権

  This document is copyright (C) 1998 Manish Singh <yosh@gimp.org>

  この文書は以下に著作権があります。(C) 1998 Manish Singh
  <yosh@gimp.org>

  Permission is granted to make and distribute verbatim copies of this
  manual provided the copyright notice and this permission notice are
  preserved on all copies.

  著作権表示とこの許可告知を付けることによって、この文書の文字通りのコピ
  ー、配布を許可します。

  Permission is granted to copy and distribute modified versions of this
  document under the conditions for verbatim copying, provided that this
  copyright notice is included exactly as in the original, and that the
  entire resulting derived work is distributed under the terms of a
  permission notice identical to this one.

  この著作権表示を完全に原文のまま含み、同様な許可告知の下で配布される場
  合この文書の修正版の配布を文字通りのコピーと同様の条件で許可します。

  Permission is granted to copy and distribute translations of this
  document into another language, under the above conditions for
  modified versions.

  この文書を他の言語に翻訳し、配布することを上記の修正版と同様の条件で許
  可します。

  Commercial redistribution is allowed and encouraged; however, the
  author would like to be notified of any such distributions.

  商用の再配布は奨励しますが、そのような配布をする場合には作者に連絡して
  もらえると嬉しいです。

  All trademarks used in this document are acknowledged as being owned
  by their respective owners.

  この文書の中のすべての商標は、それぞれの所有者に属します。

  4.3.  感謝

  ssh のポート転送の方法について私に教えてくれた Seth David Schoen
  <schoen@uclink4.berkeley.edu>に感謝を捧げます。

  (訳注 : 日本語訳をするのにあたっては以下の方々に大変お世話になりまし
  た。

  o  早川さん

  o  土屋さん

  o  幸田さん

  o  岡本さん

  o  Hiro Sugawara さん

  o  大西さん

  o  花高さん

  o  中野さん

  o  加茂さん

  o  武井さん

  o  佐野さん

  どうもありがとうございました。)

