まず,debian パッケージの imap を削除した.続いて,imap-4.5.tar.Z を取得,展開.imap-4.5/src/osdep/unix/env_unix.c を URL 2 の解説(以下に引用)に従って編集した.
このパッチが行っていることを具体的に説明します。まず、~userid/Mailbox を使うための方法を示します。imap-4.5.BETA/src/osdep/env_unix.c の関数 char *sysinbox () において
sprintf (tmp,"%s/%s",MAILSPOOL,myusername ());
を
sprintf (tmp,"%s/Mailbox",myhomedir ());
に書き換えます。次に、ホームディレクトリ直下のファイルを見せなくするための方法を示します。先と同じファイル env_unix.c の関数 char *mailboxdir (char *dst,char *dir,char *name) において
else strcpy (dst,myhomedir());/* no arguments, wants home directory */
を
else strcpy (dst,myhomedir()), strcat( dst, "/mail" );/* no arguments, wants home directory */
に書き換えます。さらに関数 char *mailboxfile (char *dst,char *name) において
sprintf (dst,"%s/%s",dir,name);
を
sprintf (dst,"%s/mail/%s",dir,name);
に書き換えます。
imap-4.5/README に従って,
$ cd imap-4.5/ $ make slxsu になって,
# cp imap-4.5/imapd/imapd /usr/local/sbin/imapd/etc/services に,
imap2 143/tcp # Interim Mail Access Proto v2
imap2 143/udp
があることを確認./etc/inetd.conf に以下の一行を加えた.余談:はじめ,imap-4.5/docs/BUILD に従ってプロトコル名を "imap" としていたのだが,うまく動作しなかった."imap2" に改めたのは,/etc/services にそう表記されていたため.
imap2 stream tcp nowait root /usr/local/sbin/imapd imapd
inetd を再起動した.
# kill -HUP xxxxxxxx: inetd のプロセス番号.
./Mailbox
これで,メールボックス形式のメールが,~/Mailbox へ配送されるようになった(確認した).