qpopper

最終更新日:  98年09月02日 11時19分


Macintosh や AT 互換機等にはメールを受け取る機能がありません (サーバにで きる OS などにはそういった機能はあります)。しかし、UNIX に送られてきたメー ルを扱えるようになればインターネット上の電子メールを利用することができる ようになります。具体的には UNIX 上で POP サーバを動かし、PC で POP 対応のメーラー (例えば Eudora や AL-Mail など) を動作させるこ とです。POP3 (Post Office Protocol Version3: RFC1460) とはサーバ上 のメールスプールをリモートホストからアクセスするためのプロトコルのことで す。この POP サーバプログラムにはいろいろなものがありますが、私た ちの研究室では qpopper を使うことにしました。

最近は POP のパスワードをそのままネットワークに流すため、セキュリ ティが甘いと指摘されています。そのため、APOP でユーザの認証を行う ことができるメールサーバが増えてきました。

2.5 以前の qpopper をインストールし ている場合はセキュリティホールがありますので、最新の 2.53 をイン ストールするようにしてください。2.5 がリリースされてからそれほど 時間がたってないのに、これだけバージョンがあがると不安だ。


用意したもの (ホームページ)
手順
  1. ソースの展開を行なってから作業ディレクトリにうつり、さらに configure スクリプトを走らせます。
    % gunzip < qpopper2.53.tar.Z | tar xvf -
    % cd qpopper2.53
    % ./configure  (IRIX 6.x の場合は % env CC=cc ./configure)
    
  2. Makefile の編集を行います。/etc/authfile により POP を利用でき るユーザを制限するために O_DEFS に以下の部分を付け加え、さらに APOP 認証対応にした。Solaris 2.x では、bind-8.1.2 をイ ンストールしているため、-lresolv は利用しないように、また、 gdbm-1.7.3 をインストールしていたため、DBM_LIBS は如何 のようにしている。

  3. さらに、ユーザ数に見合うだけの数値を popper.h に記述する。普 通は 1000 も要らないだろうが...
    #define BLOCK_UID 1000
    
    と変更した。

  4. コンパイルは make 一発でできるはずです。
    % make
    
  5. コンパイルができればインストールです。その前に、pop というユー ザアカウントおよびグループも作っておきます。
    % su root
    # cp popper /usr/local/lib
    # cp popauth /usr/local/bin
    # chmod 6755 /usr/local/bin/popauth
    # chown pop /usr/local/bin/popauth
    # chgrp pop /usr/local/bin/popauth
    # cp *.8 /usr/local/man/man8
    # exit
    
  6. /etc/inetd.conf に次の一行を付け加えます。-d を付け加 えることでログが残ります。
    pop3    stream  tcp     nowait  root    /usr/local/lib/popper   /usr/local/lib/popper -s -d
    
  7. /etc/services にも次の一行を付け加えます。
    pop3            110/tcp                         # Post Office
    
  8. inetdをrestartします。
    # kill -HUP inetdpid
    # exit
    
  9. 最後にテストを行います。
    % telnet popserver 110
    Trying 133.30.xxx.yyy...
    Connected to popserver. Escape character is '^]'. +OK QPOP (version 2.53) at popserver starting. (5238.847423943@popserver) user hatano +OK Password required for hatano. pass xxxxxxxx <-- 実際は打ち込んだパスワードが見えます +OK hatano has 0 messages (0 octets). quit +OK Pop server at popserver signing off. Connection closed by foreign host.
    ここで popserver というのは、popper をインストールしたマシン名、 hatano というのはユーザ名です。

  10. ここで、POP3 の認証はユーザ名とパスワードがプレーンな形でネッ トワーク上を流れてしまうということを考えなければなりません。ローカル ネットワーク内には、悪意を持ってパケットをモニターしている人はいない だろうと信じられますが、インターネットを経由するとそうもいきません。 インターネットを流れるパケットを監視してパスワードを奪うのは、クラッ カーたちの得意技です。そこで、うちの研究室では APOP 認証機構 を利用します。APOP 認証は、MD5 を応用した一種の「使い 捨てパスワード」をユーザ認証に用いることで本物のパスワードの露出を避 けます。APOP 認証を使えば、インターネットを経由しても安全に POP サーバとの認証が行えます。ちなみに認証が安全なだけで、メー ル本文は暗号化されずに流れますので注意しなければなりません。

  11. 設定は簡単で popauth コマンドを使ってサーバ側の pop パスワー ドを管理します。
    % su
    # /usr/local/bin/popauth -init
    
    すると /etc/pop.auth ファイルができます。このファイルがユーザ pop 以外からは読めないことを確認すること。

  12. 次にユーザのパスワードを設定します。これは UNIX のパスワード と同じである必要はないので、出来ることなら異なるパスワードをつけるよ うにします。
    # /usr/local/bin/popauth -user hatano
    Changing POP password for hatano.          
    New password: *************
    Retype new password: **************
    # exit     
    
    ユーザの取消は、-delete オプションを使います。APOP 認証の 準備がしてあるユーザは、APOP でしか認証できなくなるので、メールク ライアントは APOP に対応しているものを使うようにします。研究室で 使っている Eudra Pro (Windows/Mac)APOP に対応していま すので、オプションメニューで APOP を利用するように変更してくださ い。その他のメールリーダについては大学院自然科学研究科の APOP のページを参考にしてください。

  13. 次に、tcp_wrappers と併用し て外部からのアクセスを APOP に制限する。つまり、 qpopperAPOP でのみ動作するようにコンパイルをやりな おす。

  14. ソースの展開を行なってから作業ディレクトリにうつり、さらに configure スクリプトを走らせます。
    % gunzip < qpopper2.53.tar.Z | tar xvf -
    % cd qpopper2.53
    % ./configure  (IRIX 6.x の場合は % env CC=cc ./configure)
    
  15. Makefile の編集を行います。

  16. popper.h を変更する。
    #define BLOCK_UID 1000
    
  17. コンパイルし、それができればインストールします。
    % make
    % su root
    # cp popper /usr/local/lib/popper.apop
    # exit
    
  18. /etc/hosts.allow を以下のように設定する。
    popper: ALL EXCEPT 133.30.xxx.0/255.255.255.0: \
            twist PATH=/usr/local/lib; exec popper.apop -s -d
    popper: 133.30.xxx.0/255.255.255.0
    
  19. /etc/inetd.conf を以下のように変更する。tcpd のインス トールされている部分に注意すること。以下のは IRIX
    pop3    stream  tcp     nowait  root    /usr/etc/tcpd   /usr/local/lib/popper -s -d
    
  20. inetd にを再起動する。

[目 次 ]
Last modified
CS16ADM <cs16adm@db.cs.kobe-uac.jp>