レンタルサーバ + Webシステム開発 = E-business

■レンタルサーバご利用参考資料
サーバご利用の参考にJF Project によるJF (Japanese FAQ)を掲載しています。

Linux JF(Japanese FAQ)Project.
JF は, Linux に関する解説文書・FAQ などを作成・収集・配布するプロジェクトです.

グリーンネット・トップページへ戻る


一覧に戻る

poppassd のインストール方法

田中啓

pegira@po.jah.ne.jp

1999/01/27

Linux がインストールされているマシンに poppassd をインストールする方法
を記述します。ただし、「NIS」を使用していない場合に限定します。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Table of Contents
1. poppassd ってなに?
2. poppassd のプロトコル
3. 試した環境
4. poppassd のソースの入手
5. poppassd のインストール方法
6. make でエラーが出る場合
7. インストールに成功して、テストの結果にも問題無いが、パスワードが変更
    されない場合
    7.1. /usr/sbin/newusers のインストールの方法
    7.2. インストールします
   
   
8. poppassd のテスト方法
9. poppassd 関連のリンク
10. 筆者メールアドレス等

1. poppassd ってなに?

メールサーバのパスワードを変更する事ができる「電子メールクライアントソ
フト」があります (Eudora , NUPOP , P ちゃん , p-chng , POPパスワード ,
POPパスワードチェンジャ等)。しかし、サーバ側で対応したデーモン(サービ
ス)が動作していないと「電子メールクライアントソフト」からパスワードを変
更することはできません。ちなみにメールをサーバに送信できるのは、サーバ
で「SMTP デーモン」が動いているからです。同じくメールをサーバから受信で
きるのは、サーバで「POP3 デーモン」が動いているからです。よって、パスワ
ードを変更するデーモンをサーバにインストールしておくと、サーバに telnet
して、 /usr/bin/passwd コマンドを使用してパスワードを変更するといった面
倒な操作をしなくても、パスワードを変更できるようになります。

poppassd とは unix 用のパスワードを変更するデーモンまたはそのプロトコル
の名前です。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

2. poppassd のプロトコル

単純なプロトコルです。 FTP サーバーが応答するように、サーバーの応答が必
ずあるはずです。サーバの応答の先頭の数字が意味を持ってます。

  100番台:前進                                                        
  200番台:成功                                                        
  300番台:さらに情報が必要                                            
  400番台:一時的な失敗                                                
  500番台:永久的な失敗                                                

サンプルを以下に示します。

  S: 200 hello\r\n                                                     
  E: user yourloginname\r\n                                            
  S: 300 please send your password now\r\n                             
  E: pass yourcurrentpassword\r\n                                      
  S: 200 My, that was tasty\r\n                                        
  E: newpass yournewpassword\r\n                                       
  S: 200 Happy to oblige\r\n                                           
  E: quit\r\n                                                          
  S: 200 Bye-bye\r\n                                                   
  S:                                                
  E:                                                
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

3. 試した環境

  Machine    : CPU=Pentium200 Memory=40MB HDD=1GB                      
  OS         : linux kernel 2.0.35 (Slackware3.6)                      
  C-Compiler : gcc version 2.7.2.3                                     
  Library    : libc 5.4.46                                             

ディストリビューション Slackware3.6 でインストールした「Linux マシン
(BOX)」なので、パスワードシステムは「shadow パスワード」システムになっ
ています。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

4. poppassd のソースの入手

poppassd は Eudora というメールクライアントソフトに添付されています。
Eudora を販売している会社である Qualcomm 社の FTP サイト ftp://
ftp.qualcomm.com/eudora/servers/unix/password/ にもソースが置いてありま
す。 Linux 用のソースは ftp://ftp.qualcomm.com/eudora/servers/unix/
password/linux.tar のファイルです。ただし、この Qualcomm 社の poppassd
は「shadow パスワード」に対応していません。

しかし、世の中には「shadow パスワード」に対応した poppassd を作っている
人がいます。 Roy Smith さんと Daniel L. Leavitt さんの作った poppasd を
改良した John Norstad さんです。 1993/8/31 にリリースされたバージョン
1.2 が最新バージョンです。 John Norstad さんの poppassd は sunsite 等に
収録されています。 ftp://sunsite.sut.ac.jp/pub/archives/linux/system/
mail/pop/poppassd-src.tar.gz

その後、John Norstad さんのバージョン 1.2 を元にして Christoph Lameter
さんが改良しました。改良版のバージョン 1.2-8 が 1997/11/13 にリリースさ
れました。主な変更内容はパスワードの変更方法を /usr/bin/passwd コマンド
から /usr/sbin/newusers コマンドへ変更した事です。

この変更により、/usr/bin/passwd コマンドが受け付けない短いパスワードや
、アルファベットだけのシンプルなパスワードが入力された場合に poppassd
がハングアップするバグ等が修正されています。 Christoph Lameter さんは
Debian (Linux のディストリビューションの一つ)のメンテナーでもあります
。バージョン 1.2-8 は Debian のパッケージ等に収録されています。

結論 Debian のパッケージに入っているソースを使用します。 Debian JP
Project のサイト等からソースファイルをダウンロードします。 ftp://
ftp.jp.debian.org/debian/dists/stable/main/source/mail/ 等から ftp://
ftp.jp.debian.org/debian/dists/stable/main/source/mail/
poppassd_1.2.orig.tar.gz と ftp://ftp.jp.debian.org/debian/dists/stable
/main/source/mail/poppassd_1.2-8.diff.gz をダウンロードします。または
Debian の CD-ROM のソースディレクトリからコピーしても良いでしょう。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

5. poppassd のインストール方法

 1. 適当な作業ディレクトリに poppassd_1.2.orig.tar.gz をコピーします。ま
    たは ftp で Get します。
   
 2. poppassd_1.2.orig.tar.gz を展開します。
   
      tar zxvf poppassd_1.2.orig.tar.gz                         
   
    poppassd-1.2.orig/ ディレクトリに以下のファイルが展開されます。
   
      -rw-r--r--   1 hogehoge users         363 May  7  1995 Makefile                
      -rw-r--r--   1 hogehoge users         138 May  7  1995 README                  
      -rw-r--r--   1 hogehoge users        4817 May  7  1995 info                    
      -r--r--r--   1 hogehoge users         685 Sep 16  1996 poppassd-src.tar.gz.lsm 
      -rw-r--r--   1 hogehoge users       21102 May  7  1995 poppassd.c              
   
 3. バージョン 1.2 から 1.2-8 にバージョンアップするためのパッチファイル
    (poppassd_1.2-8.diff)を作成します。
   
    poppassd_1.2-8.diff.gz を gzip で展開すればパッチファイルを作成する
    事ができます。
   
      gzip -d poppassd_1.2-8.diff.gz                            
   
    poppassd_1.2-8.diff パッチファイルができました。
   
      -rw-r--r--   1 hogehoge users       21211 Jan 11 12:09 poppassd_1.2-8.diff
   
 4. poppassd-1.2.orig/ にパッチファイルをコピーします。
   
      cp poppassd_1.2-8.diff poppassd-1.2.orig/                 
   
 5. カレントディレクトリを poppassd-1.2.orig/ に移動します。
   
      cd poppassd-1.2.orig/                                     
   
 6. パッチをあてます。
   
    patch コマンドを使ってパッチをあてました。
   
      patch -p1 < poppassd_1.2-8.diff                           
   
    パッチが正常にあたると以下のようにファイルが変更されるはずです。
   
      -rw-r--r--   1 hogehoge users         375 Jan 11 12:12 Makefile                
      -rw-r--r--   1 hogehoge users         363 May  7  1995 Makefile.orig           
      -rw-r--r--   1 hogehoge users         138 May  7  1995 README                  
      drwxr-xr-x   2 hogehoge users        1024 Jan 11 12:12 debian/                 
      -rw-r--r--   1 hogehoge users        4817 May  7  1995 info                    
      -r--r--r--   1 hogehoge users         685 Sep 16  1996 poppassd-src.tar.gz.lsm 
      -rw-r--r--   1 hogehoge users       11888 Jan 11 12:12 poppassd.c              
      -rw-r--r--   1 hogehoge users       21102 May  7  1995 poppassd.c.orig         
   
 7. メイクします。
   
    make コマンドでメイクします。
   
      make                                                      
   
    メイクすると実行ファイル poppassd ができます (エラーが出てメイクに
    失敗した場合は「make でエラーが出る場合」を参照してください)。
   
 8. インストールします。
   
     
   
     a. su コマンドでスーパーユーザになります (root のパスワードを入れる
        のを忘れないように)。
       
          su                                                    
       
     b. make install で poppassd を /usr/sbin/ にインストールします。
       
          make install                                          
       
     c. /etc/services を変更します。
       
        /etc/services ファイルに
       
          poppassd     106/tcp                                  
       
        の 1 行を追加します(TCP ポート 106 番のサービスが poppassd であ
        るという意味です)。
       
     d. /etc/inetd.conf を変更します。
       
        /etc/inetd.conf ファイルに
       
          poppassd stream tcp nowait root /usr/sbin/poppassd poppassd
       
        の一行を追加します。 6 番めの「/usr/sbin/poppassd」はあなたが
        poppassd をインストールしたパスを書く必要があります(/usr/sbin/
        poppassd で poppassd サービスを起動するという設定です)。
       
        tcpd を使用している場合は
       
          poppassd stream tcp nowait root /usr/sbin/tcpd /usr/sbin/poppassd
       
        の方が望ましいです(Slackware3.6 の場合は tcpd を使用するのが一
        般的です)。
       
     e. inetd デーモンに設定が変更された事を通知します (reboot すれば新
        しい設定で動作します)。
       
          kill -HUP               
       
        または
       
          reboot                                                
       
   
 9. manpage をインストールします。
   
    debian/ ディレクトリに Christoph Lameter さんが書いた poppassd.8 が
    あるのでインストールしましょう (英語のマニュアルが必要でない場合は
    インストールしなくても良いです)。
   
     
   
     a. su コマンドでスーパーユーザになります。
       
          su                                                    
       
     b. install コマンドでインストールします。
       
        カレントディレクトリを debian/ ディレクトリに移動してから下記の
        様なコマンドでインストールしましょう。
       
          install -c -m 644 poppassd.8 /usr/man/man8            
       
     c. man コマンドを使用して poppassd のマニュアルを読めるかをテストし
        ます。
       
          man poppassd                                          
       
        マニュアルが表示されれば poppassd の manpage のインストールに成
        功です。
       
     

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

6. make でエラーが出る場合

筆者の環境では make でエラーが出ました。エラーメッセージは

  poppassd.c:146: conflicting types for `crypt'                        
  /usr/include/unistd.h:639: previous declaration of `crypt'           

でした。「poppassd.c をコンパイルしようとしたんだけど 146 行で宣言して
いる `crypt' が以前に宣言された型と違います」というエラーです。
poppassd.c ファイルの 146 行の内容は

  char *crypt (char *, char *);   /* To permit long shadow passwords */

です。

crypt() 関数の宣言は unistd.h に含まれています。poppassd.c では
unistd.h をインクルードしています。よって、冗長なので削除したりコメント
アウトしても問題ありません。 poppassd.c ファイルの 146 行を削除しましょ
う。コメントアウトするためには以下の様に変更します。

  C 言語の /* */ でコメントアウトする場合                                    
                                                                             
  /* char *crypt (char *, char *);*/   /* To permit long shadow passwords */ 
                                                                             
  C++ 言語の // でコメントアウトする場合                                     
                                                                             
  // char *crypt (char *, char *);   /* To permit long shadow passwords */   

変更したら、また make コマンドでメイクします。

すると、またエラーが出ました。エラーメッセージは

  cc -o poppassd  poppassd.o -lcrypt                                    
  /usr/i486-linux/bin/ld: cannot open -lcrypt: No such file or directory

でした。「リンクしようとしたけど crypt というライブラリファイルが無い」
というエラーです。crypt ライブラリに含まれていそうで poppassd が使用し
ている関数は crypt() だと推測されます (ソースを読んで推測しました)。
crypt() 関数は libc.so (libc.so の実体は libc.so.5.4.46) に含まれている
ので -lcrypt 指定は必要ありません。よって Makefile ファイルの 6 行目の
ライブラリの指定をコメントアウトします。メイクファイルのコメントマーク
は # です。

  LIBS    = -lcrypt # -lshadow                                         

の一行を

  LIBS    = # -lcrypt # -lshadow                                       

に変更しました。

変更したら、また make コマンドでメイクします。筆者は上記の 2 ヶ所の変更
でメイクに成功しました。

注意)libc.so に含まれている関数はライブラリのバージョンによって違う場
合があります。libc.so.5.4.46 以外のライブラリを使用している場合は
libcrypt.so 等が必要な場合があります。例えば、ライブラリが glibc2 の場
合は libc.so.6 に crypt() 関数が入っていませんので libcrypt をリンクす
る必要があります。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

7. インストールに成功して、テストの結果にも問題無いが、パスワードが変更
されない場合

poppassd は /usr/sbin/newusers コマンドを使用してパスワードを変更してい
ます。/usr/sbin/newusers コマンドがインストールされてない場合、 syslog
に下記の様なエラーメッセージを出力しているはずです。

  poppassd[695]: can't exec /usr/sbin/newusers: No such file or directory

上記に該当する場合は /usr/sbin/newusers コマンドをインストールする事に
より問題が解決します。

/usr/sbin/newusers コマンドは「shadow パスワード」パッケージに入ってい
ます。Slackware3.6 に含まれている「shadow パスワード」パッケージのファ
イル名は shadow-980724.tar.gz です。あなたのシステムのパスワードシステ
ムが「shadow パスワード」でない場合でも、「shadow パスワード」に対応し
ていない /usr/sbin/newusers をインストールすれば問題を解決できます。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

7.1. /usr/sbin/newusers のインストールの方法

 1. 適当なディレクトリに shadow-980724.tar.gz をコピーします。または ftp
    で Get します。
   
 2. shadow-980724.tar.gz を展開します。
   
      tar -zxvf shadow-980724.tar.gz                            
   
 3. configure で Makefile 等を作成します。
   
    configure が正常に動作すれば、あなたのマシンのパスワードシステムに
    対応したバイナリを作成するように Makefile を作成します。
   
      configure                                                 
   
 4. メイクします。
   
      make                                                      
   
    メイクに成功したら src/ ディレクトリに newusers ができあがっている
    はずです。
   
      -rwxr-xr-x   1 hogehoge users        2837 Jan 20 21:46 newusers
   

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

7.2. インストールします

 1. スーパーユーザモードになってから
   
      su                                                        
   
 2. install コマンドでインストールします。
   
    カレントディレクトリを src/ ディレクトリに移動してから下記の様なコ
    マンドでインストールしましょう。
   
      install -o root -g bin -m 500 newusers /usr/sbin          
   

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

8. poppassd のテスト方法

サーバで

  telnet localhost 106                                                 

して poppassd に接続します。あとはプロトコルを手で入力して確かめましょ
う。

成功例です。

  trying 127.0.0.1...                                                  
  Connected to localhost.                                              
  Escape character is '^]'.                                            
  200 kiwi poppassd v1.2 hello, who are you?                           
  user hogehoge                                                        
  200 your password please.                                            
  pass pswd1234                                                        
  200 your new password please.                                        
  newpass newpass0                                                     
  200 Password changed, thank-you.                                     
  quit                                                                 
  200 Bye.                                                             
  Connection closed by foreign host.                                   

現在のパスワードが正しくない場合の例。

  Trying 127.0.0.1...                                                  
  Connected to localhost.                                              
  Escape character is '^]'.                                            
  200 kiwi poppassd v1.2 hello, who are you?                           
  user hogehoge                                                        
  200 your password please.                                            
  pass pswd1233(正しくないパスワード)                                
  200 your new password please.                                        
  newpass newpass0                                                     
  500 Invalid user or password                                         
  Connection closed by foreign host.                                   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

9. poppassd 関連のリンク

 ・ 本家 Qualcomm: http://www.qualcomm.com/
   
 ・ Debian: http://www.debian.org/
   
 ・ DebianJP: http://www.jp.debian.org/
   

poppassd のクライアントソフト
    p-chng: http://www.nets.or.jp/~chaya/
   
    POPパスワード: http://member.nifty.ne.jp/nya-n/
   
    POPパスワードチェンジャ: http://www.vector.co.jp/soft/win95/net/
    se054124.html
   

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

10. 筆者メールアドレス等

名前    :田中 啓(たなか ひらく)
電子メール :pegira@po.jah.ne.jp
ウェブページ:http://www.jah.ne.jp/~pegira/
校正    :中野武雄、長谷川靖
配布条件  :GPL

(SGML conversion: yuji senda, 2001/03/12)
一覧に戻る
グリーンネット・トップページへ戻る

http://www.green.ne.jp/