uw-imapd with cram-md5 and apop の導入
○uw-imapd のインストール
ftp://ftp.cac.washington.edu/imap/ から uw-imapd をとってくる。
拾ってきたのは imap-2000a.tar.Z
#tar zxf imap2000a.tar.Z
#cd imap2000a
Makefile の中を見て make 時のオプションを探す。
#make slx
imapd と ipop3d のバイナリができるので /usr/local/sbin にコピーする。
#su
$cp imapd/imapd /usr/local/sbin/
$cp ipopd/ipop3d /usr/local/sbin/
○/etc/services の設定
/etc/services に以下のエントリを作成する。
pop3 110/tcp
imap 143/tcp
○/etc/inetd.conf の設定
/etc/inetd.conf に以下のエントリを作成する。
pop3 stream tcp nowait root /usr/sbin/tcpd /usr/local/sbin/ipop3d
imap stream tcp nowait root /usr/sbin/tcpd /usr/local/sbin/imapd
inetd を再起動する。
#kill -HUP [inetd の pid]
/etc/hosts.allow の設定も忘れずに。
ipop3d: ALL
imapd: ALL
など。
○/etc/c-client.cf の設定
imapd の設定ファイルです。書き方は docs/imaprc.txt にあります。
/etc/c-client.cf の設定。
I accept the risk for IMAP toolkit 4.1.
set empty-folder-format same-as-inbox
set black-box-directory /share/folders
一行目の I accept 〜 が無いと設定ファイルとして認識されないので注意。
uw-imapd のデフォルトではホームディレクトリがメールボックスになりますが、
この設定では black-box-directory を使用して /share/folders の下にメールボックスを作っています。
この設定の場合、管理者がメールボックスをまず作ります。
ついでに INBOX も作ってやる必要があります。
black-box-directory を使わない場合はこの作業は必要ありません。
#mkdir /share/folders/$USER
#chown $USER /share/folders/$USER
#chmod 700 /share/folders/$USER
#ln -s /var/spool/mail/$USER /share/folders/$USER/INBOX
$USER は各ユーザーのアカウント名です。
以上でとりあえずインストール&設定完了です。
この状態だとパスワードは shell アカウントのパスワードになります。
認証には LOGIN(imap)/POP が使えます。
/etc/cram-md5.pwd というファイルを作成すると認証にこのファイルを使うようになります。
cram-md5.pwd を使うと LOGIN/CRAM-MD5(imap) と POP/APOP が使えるようになります。
書式は plain text で
user1<TAB>password1
user2<TAB>password2
user3<TAB>password3
のように書きます。
○パスワード登録ツールの作成
uw-imapd/ipop3d を cram-md5/apop で使用するためには /etc/cram-md5.pwd にパスワードを登録しないといけませんが、uw-imapd にはそのためのツールは用意されていません。
このままでは管理者以外にパスワードの登録、変更ができないので不便です。不便ですし、他人のパスワードは見たくないのでパスワード登録コマンドを作りました。Apache httpd の htpasswd.c を修正して作成。
mailpasswd.c をコンパイルします。
#gcc mailpasswd.c -o mailpasswd
#su
$cp mailpasswd /usr/local/sbin/
$chmod 4755 /usr/local/sbin/mailpasswd
$touch /etc/cram-md5.pwd
$chmod 600 /etc/cram-md5.pwd
とします。
あとは一般ユーザから mailpasswd を実行すればパスワードを変更できます。
戻る