Solaris で qpopper
 POPとは
POPは,sendmail を動かしてないマシンで,メイルを読むために, 要求に応じて,メイルスプールからメイルをそのマシンに配送する仕組みです. Becky, Eudora など,PC のメイルリーダは大抵これを使っています.
研究室の popper は qpopper を使ってます. qpopper のソースは,http://www.ring.gr.jp/ などにあります. 現在(2004年3月)のバージョンはqpopper4.0.9です. qpopper は APOP に対応しています.
- qpopper4.0.9.tar.gz
 
make と install
(旧バージョンの popper があるとき) 前のバージョンの大事なファイル
念のため /etc/pop.auth 等はバックアップしておく
cp /etc/pop.auth /etc/pop.auth.BAK chmod 600 pop.auth.BAK cp /usr/local/etc/popauth /usr/local/etc/popauth302 cp /usr/local/etc/popper /usr/local/etc/popper302
ちなみに、
cd /usr/local/etc ls -la pop* -rws--x--x 1 pop pop .... popauth -rwxr-xr-x 1 pop pop .... popper
という感じです。
インストールの前に必要な設定
pop ユーザ追加
/etc/passwd と /etc/group に pop ってユーザを追加します.
番号は両方とも 110 でいいと思う.
/etc/passwd に次の1行 pop:x:110:110:POP USER:/tmp/:/bin/sh /etc/group に次の1行 pop::110:
gdbm のインストール
gzip -d gdbm-1.8.3.tar.gz tar -xvf gdbm-1.8.3.tar.gz cd gdbm-1.8.3 ./configure make make install
インストール
# 「cp /usr/lib/libgcc_s.so.1 /usr/local/lib」でエラーが出て無視して下さい cp /usr/lib/libgcc_s.so.1 /usr/local/lib rm -f /usr/lib/libgcc_s.so.1 ln -s /usr/local/lib/libgcc_s.so.1 /usr/lib/libgcc_s.so.1 gzip -d < qpopper4.0.9.tar.gz | gtar -xvf cd qpopper4.0.9 ./configure --enable-specialauth --enable-apop=/etc/pop.auth --with-popuid=pop --with-openssl=/usr/local # または # ./configure --enable-specialauth --enable-apop=/etc/pop.auth --with-popuid=pop --with-openssl=/usr/sfw gmake gmake install cd /usr/local/sbin chown pop:pop popauth chown pop:pop popper chmod 4711 popauth cd /usr/sbin rm popauth popper ln -s /usr/local/sbin/popauth popauth ln -s /usr/local/sbin/popper popper chown pop:pop /etc/pop.auth
GNU の gdbm を前もってインストールしておいた方が良いみたいです。
--enable-apopではauthentication fileの場所を指定
--with-popuidではpopのadministering accountを指定
前もって、pop という user ID, group ID を設定しておくこと。
/etc/passwd では 「pop:x:110:110:POP:/tmp/:/bib/sh」 のように /etc/group では 「pop::110:」のように
インストールが終わると、インストール場所、pop.auth の場所が表示される ので、確認しておく。
Installed popauth as /usr/local/sbin/popauth with uid pop POP authentication DB not initialized (exists): /etc/pop.auth
 
設定
/etc/inetd.conf に以下のエントリを加える. /usr/local/sbin/popper の個所は,popper のインストール先に応じて変更してください.
pop3 stream tcp nowait root /usr/local/sbin/popper popper -s
また,/etc/servicesにも次の一行が入っていることを確認しておく。
pop3 110/tcp # Post Office Protocol - Version 3
Solaris 10 の場合
最後に 「inetconv」 を実行 (/etc/inet/inetd.conf をインポートするため)
inetconv
Solaris 9 あるいはそれ以前の場合
inetd を restart
kill -HUP `pgrep inetd`
 
テスト
POP サーバ上でテストします.
まず,テスト用のメールを送っておきます. hoge の個所は,送りたい相手先に読み替えてください.
echo popper test mail | /usr/ucb/Mail -s subject hoge
% telnet popple 110 rying 133.5.18.yyy... Connected to popserver. Escape character is '^]'. +OK Qpopper (version 4.0.5) at popserver starting. (xxxxxxxxxxxxx@popserver) APOP hoge <MD5 で作ったパスワード> +OK hoge has xxx visible message ... LIST <-- メールの一覧の表示 +ok 1 visilble messages (xxxx octets) 1 xxxx . `QUIT <-- POPサーバとさようなら +OK Pop server at popserver signing off. Connection closed by foreign host.
 
運用
次にユーザのパスワードを設定します. これはUNIXのパスワードとは異なるパスワードをつけるようにします.
# popauth -user hoge Changing POP password for hoge. New password: ************* Retype new password: **************
一般のユーザがパスワードを変更したいときは popper にログインしてから
hoge@popper[~]% popauth Changing only APOP password for hoge. Old password: ************* New password: ************** Retype new password: **************
ユーザの取消は,-delete オプションを使う. APOP 認証の準備がしてあるユーザは,APOP でしか認証できなくなるので, メールクライアントは APOP に対応しているものを使うようにします.
popper というプログラムが,たまにうまくセッ ションを終れなくて,固まってしまうことがあります.こういう時には, popper を終らせてやらないといけません.
この popper は,inetd により要求があった時だけ起こされて動いているので, 要求がない時には ps で見えません.一方,サーバが Busy だというメッセー ジを出す時には,ps で見るといるので殺します.殺してなくなっても大丈夫. 次の要求時には inetd が popper をまた起こしてくれます.