<!doctype linuxdoctr system>

<article>

<titlepag>
<title>Secure POP via SSH mini-HOWTO</title>
<author>Manish Singh, <tt><htmlurl url="mailto:yosh@gimp.org"
                         name="&lt;yosh@gimp.org&gt;"></tt></author>
<date>v1.0, 30 September 1998</date>
<trans>高城 正平,<tt><htmlurl url="mailto:takavoid@palette.plala.or.jp"
                      name="&lt;takavoid@palette.plala.or.jp&gt;"></tt>
</trans>
<tdate>14 September 1999</tdate>

<!--
<abstract>
This document explains how to set up secure POP connections using ssh.
</abstract>
-->

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

</titlepag>

<toc>

<!-- <sect>Introduction -->
<sect>導入
<p>

<!--
Normal POP mail sessions, by their very nature, are insecure. The password goes
across the network in cleartext for everyone to see. Now, this may be perfectly
acceptable in a trusted or firewalled environment. But on a public network,
such as a university or your run-of-the-mill ISP, anyone armed with a simple
network sniffer can grab your password right off the wire. This is compounded
by the fact that many people set their computers to check for mail at regular
intervals, so the password is sent out quite frequently, which makes it easy to
sniff.
-->

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

<!--
With this password, an attacker can now access your email account, which may
have sensitive or private information. It is also quite common that this
password is the same as the user's shell account, so there is the possibility
for more damage.
-->

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

<!--
By doing all POP traffic using an encrypted channel, <bf/nothing/ goes in
cleartext over the network. We can use ssh's diverse methods of authentication,
instead of a simple plaintext password. That is the real point of using this
method: not because we get encrypted content (which is futile at this point,
since it's probably gone unencrypted over several networks already before
reaching your mailbox; securing those communications is the job of GNU Privacy
Guard or PGP, not ssh), but the secure authentication.
-->

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

<!--
There are other methods of achieving secure authentication already, such as
APOP, KPOP, and IMAP. However, using ssh has the advantage that it works with
normal POP configurations, without requiring special client (not all mail
clients support advanced protocols) or server support (except for sshd running
on the server). You mail provider may be unable or unwilling to use a more
secure protocol. Besides, by using ssh you can compress the traffic too, which
is a nice little extra for people with slow connections.
-->

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

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


<!-- <sect>The Basic Technique -->
<sect>基本的な使い方
<p>

<!--
This technique relies on a fundamental feature of ssh: <em/port forwarding/
-->

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

<!--
There are many variations on this theme, which depend on your desired mail
setup. They all require ssh, which is available from
<htmlurl url="http://www.ssh.fi/"
          name="http://www.ssh.fi/"> and mirrors.
RPMs are available at
<htmlurl url="ftp://ftp.replay.com/pub/crypto/"
          name="ftp://ftp.replay.com/pub/crypto/">
and Debian packages are available at
<htmlurl url="ftp://non-us.debian.org/debian-non-US/"
           name="ftp://non-us.debian.org/debian-non-US/">
(and their respective mirrors).
-->

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


<!-- <sect1>Setting up Port Forwarding -->
<sect1>ポート転送の設定
<p>

<!--
To start port forwarding, run the following command:
-->

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

<tscreen><verb>
ssh -C -f popserver -L 11110:popserver:110 sleep 5
</verb></tscreen>

<!--
Let's take a closer look at that command:
-->

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

<descrip>

<!--
<tag><tt/ssh/</tag>
The ssh binary itself, the magic program that does it all.
-->

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

<!--
<tag><tt/-C/</tag>
This enables compression of the datastream. It's optional, but usually useful,
especially for dialup users.
-->

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

<!-- <Tag><tt/-f/</tag>
Once ssh has done authentication and established port forwarding, fork to
background so other programs can be run. Since we're just using the port
forwarding features of ssh, we don't need a tty attached to it.
-->

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

<!--
<tag><tt/popserver/</tag>
The POP server we're connecting to.
-->

<tag><tt>popserver</tt></tag>
これから接続する POP サーバを指定します。

<!--
<tag><tt/-L 11110:popserver:110/</tag>
Forward local port 11110 to port 110 on the remote server <tt/popserver/. We
use a high local port (11110) so any user can create forwardings.
-->

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

<!--
<tag><tt/sleep 5/</tag>
After ssh has forked itself into the background, it runs a command. We use
<tt/sleep/ so that the connection is maintained for enough time for our mail
client to setup a connection to the server. 5 seconds is usually sufficient
time for this to happen.
-->

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

<!--
You can use most other options to ssh when appropriate. A common setting
may be a username, since it might be different on the POP server.
-->

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

<!--
This <em/requires/ sshd running on the remote server <tt/popserver/. However,
you do not need to have an active shell account there. The time it takes to
print a message ``You cannot telnet here'' is enough to setup a connection.
-->

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

<!-- <sect1>Testing it out -->
<sect1>外部へのテスト
<p>

<!--
Once you've figured out the details command to run to establish port
forwarding, you can try it. For example:
-->

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

<tscreen><verb>
$ ssh -C -f msingh@popserver -L 11110:popserver:110 sleep 1000
</verb></tscreen>

<!--
<tt/popserver/ is the ol' POP server. My username on my local machine is
<tt/manish/ so I need to explicitly specify the username <tt/msingh/. (If
your local and remote usernames are the same the <tt/msingh@/ part is
unnecessary.
-->

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

<!-- Then it prints: -->
するとこう表示されます:

<tscreen><verb>
msingh@popserver's password:
</verb></tscreen>

<!--
And I type in my POP password (you may have different shell and POP passwords
though, so use your shell one). Now we're done! So we can try:
-->

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

<tscreen><verb>
$ telnet localhost 11110
</verb></tscreen>

<!-- which should print something like: -->

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

<tscreen><verb>
QUALCOMM POP v3.33 ready.
</verb></tscreen>

<!--
Woohoo! It works! The data is sent out over the network encrypted, so the only
cleartext is over the loopback interfaces of my local box and the POP server.
-->

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

<!-- <sect>Using it With Your Mail Software -->
<sect>メーラーでやってみましょう
<p>

<!--
This section describes setting up your POP client software to use the ssh
forwarded connection. It's primary focus is fetchmail (ESR's excellent
mail-retrieval and forwarding utility), since that is the most flexible
software I have found for dealing with POP. fetchmail can be found at
<htmlurl url="http://www.tuxedo.org/~esr/fetchmail/"
         name="http://www.tuxedo.org/~esr/fetchmail/">.
It will do you a great service to read the excellent documentation that
comes with fetchmail.
-->

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

<!-- <sect1>Setting up fetchmail -->
<sect1>fetchmail の設定
<p>

<!-- The following is my <tt/.fetchmailrc/ -->
私は <tt>.fetchmailrc</tt> を以下のように設定しています。

<tscreen><code>
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;
</code></tscreen>

<!--
Pretty simple, huh? fetchmail has a wealth of commands, but the key ones are
the <tt/preconnect/ line and the <tt/poll/ option.
-->

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

<!--
We're not connecting directly to the POP server, but instead localhost and
port 11110. The <tt/preconnect/ does the forwarding each time fetchmail is run,
leaving open the connection for 5 seconds, so fetchmail can make it's own
connect. The rest fetchmail does itself.
-->

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

<!--
So each time you run fetchmail, you're prompted for your ssh password for
authentication. If you run fetchmail in the background (like I do), it's
inconvenient to have to do that. Which brings us to the next section.
-->

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

<!-- <sect1>Automating it all -->
<sect1>自動化の方法
<p>

<!--
ssh can authenticate using many methods. One of these is an RSA public/private
key pair. You can generate an authentication key for your account using
<tt/ssh-keygen/. An authetication key can have a passphrase associated with
it, or the passphase can be blank. Whether you want a passphrase depends on
how secure you think the account you are using locally is.
-->

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

<!--
If you think your machine is secure, go ahead and have a blank passpharase.
Then the above <tt/.fetchmailrc/ works just by running fetchmail. You can
then run fetchmail in daemon mode when you dial up and mail is fetched
automatically. You're done.
-->

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

<!--
However, if you think you need a passphrase, things get more complex. ssh
can run under control of an <bf/agent/, which can register keys and
authenticate whatever ssh connections are made under it. So I have this
script <tt/getmail.sh/:
-->

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

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

<!-- When I dialup, I run: -->
ダイアルアップしたときに、次のように打ちます。

<tscreen><verb>
$ ssh-agent getmail.sh
</verb></tscreen>

<!--
This prompts me for my passphrase once, then checks mail every 5 minutes. When
the dialup connection is closed, I terminate ssh-agent. (This is automated
in my ip-up and ip-down scripts)
-->

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

<!-- <sect1>Not using fetchmail -->
<sect1>fetchmail を使わない場合

<p>

<!--
What if I can't/don't want to use fetchmail? Pine, Netscape, and some other
clients have their own POP mechanisms. First, consider using fetchmail! It's
far more flexible, and mail clients shouldn't be doing that kind of stuff
anyway. Both Pine and Netscape can be configured to use local mail systems.
-->

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

<!--
But if you must, unless your client has a preconnect feature like fetchmail,
you're going to have to keep the ssh port forward active for the entire
time you're connected. Which means using <tt/sleep 100000000/ to keep the
connection alive. This might not go over well with your network admins.
-->

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

<!--
Secondly, some clients (like Netscape) have the port number hardcoded to 110.
So you need to be root to do port forwarding from privledged ports. This is
also annoying. But it should work.
-->

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

<!-- <sect>Miscellany -->

<sect>付録
<p>

<!-- <sect1>Disclaimer -->
<sect1>Disclaimer
<p>

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.

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


<!-- <sect1>Copyright -->
<sect1>著作権

<p>

This document is copyright &copy; 1998 Manish Singh
<htmlurl url="mailto:yosh@gimp.org" 
         name="&lt;yosh@gimp.org&gt;">

この文書は以下に著作権があります。&copy; 1998 Manish Singh
<htmlurl url="mailto:yosh@gimp.org" 
         name="&lt;yosh@gimp.org&gt;">

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.

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

<!-- <sect1>Acknowledgements -->
<sect1>感謝
<p>

<!--
Special thanks goes to Seth David Schoen
<htmlurl url="mailto:schoen@uclink4.berkeley.edu"
          name="&lt;schoen@uclink4.berkeley.edu&gt;">,
who enlightened me in the ways of ssh port forwarding.
-->

ssh のポート転送の方法について私に教えてくれた Seth David Schoen 
<htmlurl url="mailto:schoen@uclink4.berkeley.edu"
          name="&lt;schoen@uclink4.berkeley.edu&gt;">に感謝を捧げます。

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

<itemize>
<item>早川さん
<item>土屋さん
<item>幸田さん
<item>岡本さん
<item>Hiro Sugawara さん
<item>大西さん
<item>花高さん
<item>中野さん
<item>加茂さん
<item>武井さん
<item>佐野さん
</itemize>

どうもありがとうございました。)
</article>

