昨日、自宅で24時間運用しているFreeBSDサーバをメンテしてて思ったんですが、本当に、常時動かしておく必要があるのか・・・?
このFreeBSDでやってる仕事は
- imap-uw (IMAP)
- SpamAssassin (迷惑メールフィルタ)
- apache httpd + WebDAV
- samba
- vtund
- NFS server
などなど。
とりあえず、ハードディスクの代わりに、CF(コンパクトフラッシュ)にしてもいいのではないかと思ってたのですが(実際に、以前、CFで動かしていたときもあった)、必要なファイルの容量と、書き換え頻度などの点で、ちょっと不安な点もあります。
そこでふと思い出したのが、買って、しばらく遊んで、すぐ飽きて、すっかり忘れていた、玄箱。
こいつで、IMAPサーバなどが動けば、けっこういいんじゃないかな?と。
今日、半日くらいいろいろやってて、結論としては、一応、IMAPサーバは動きました。
■ imap-uwのコンパイル
IMAPサーバは何種類かありますが、今まで使っていたのは、imap-uwというものだったので、これをインストールすることにしました。
ファイルを展開
# tar zxvf /usr/ports/distfiles/imap-2004g.tar.Z
# cd imap-2004g/
makeを実行(きっとRedHat Linuxに似てるだろう、ということでlrhを指定)
# make lrh
しばらくすると、コンパイルエラーが発生。
make[2]: Entering directory `/mnt/share/200707/imap-2004g/mtest'
`cat ../c-client/CCTYPE` -I../c-client `cat ../c-client/CFLAGS` -c -o mtest.o mtest.c
`cat ../c-client/CCTYPE` -I../c-client `cat ../c-client/CFLAGS` -o mtest mtest.o ../c-client/c-client.a `cat ../c-client/LDFLAGS`
/usr/powerpc-hardhat-linux/bin/ld: cannot find -lpam
collect2: ld returned 1 exit status
make[2]: *** [mtest] Error 1
make[2]: Leaving directory `/mnt/share/200707/imap-2004g/mtest'
make[1]: *** [bundled] Error 2
make[1]: Leaving directory `/mnt/share/200707/imap-2004g'
make: *** [lrh] Error 2
原因は、「libpam.so」がないということらしく、ファイル名が微妙に違うためのようです。
root@KURO-BOX:/mnt/share/200707/imap-2004g# ls /lib/libpam*
/lib/libpam.so.0 /lib/libpam_misc.so.0 /lib/libpamc.so.0
/lib/libpam.so.0.72 /lib/libpam_misc.so.0.72 /lib/libpamc.so.0.72
とりあえず、ってことで、ファイル名を強制的に指定しちゃいます。
上記の実行コマンドを見ると、c-client/LDFLAGSというファイルで指定されているようなので、そのファイルをムリヤリ書き換え。
root@KURO-BOX:/mnt/share/200707/imap-2004g# vi c-client/LDFLAGS
-lpam -ldl
-L/usr/lib -lssl -lcrypto
となっているので、以下のように書き換え。
/lib/libpam.so.0 -ldl
-L/usr/lib -lssl -lcrypto
これでいいかと思いきや、またエラー。
cd mtest;make
make[2]: Entering directory `/mnt/share/200707/imap-2004g/mtest'
`cat ../c-client/CCTYPE` -I../c-client `cat ../c-client/CFLAGS` -o mtest mtest.o ../c-client/c-client.a `cat ../c-client/LDFLAGS`
/usr/powerpc-hardhat-linux/bin/ld: cannot find -lssl
collect2: ld returned 1 exit status
make[2]: *** [mtest] Error 1
make[2]: Leaving directory `/mnt/share/200707/imap-2004g/mtest'
make[1]: *** [bundled] Error 2
make[1]: Leaving directory `/mnt/share/200707/imap-2004g'
make: *** [lrh] Error 2
今度は、opensslがインストールされていない、ってことらしいです。なぜかopensslのヘッダファイルだけはインストールされていたのですが、肝心のライブラリがありません。
玄箱のCD-ROMに入ってたバイナリを展開します。なぜか、opensslは2つはいってます。
% ls -l openssl*
-rwxrwxrwx 1 99 99 1682667 2 9 2004 openssl-0.9.6e.tar.gz*
-rwxrwxrwx 1 99 99 1682600 3 18 2004 openssl.tar.gz*
どっちがいいのかわかりませんが、タイムスタンプの新しいopenssl.tar.gzを展開してみました。
バージョンを見ると
root@KURO-BOX:/# openssl version
OpenSSL 0.9.6e 30 Jul 2002
どっちも同じ?
これで、imap-uwはコンパイルできるようになりました。
できあがったimapd。
root@KURO-BOX:/mnt/share/200707/imap-2004g# ls -l imapd/imapd
-rwxr-xr-x 1 root root 1636598 Jul 22 14:21 imapd/imapd
root@KURO-BOX:/mnt/share/200707/imap-2004g# ldd imapd/imapd
libpam.so.0 => /lib/libpam.so.0 (0x0ffd7000)
libdl.so.2 => /lib/libdl.so.2 (0x0ffb4000)
libssl.so.0.9.6 => /usr/lib/libssl.so.0.9.6 (0x0ff61000)
libcrypto.so.0.9.6 => /usr/lib/libcrypto.so.0.9.6 (0x0fe57000)
libc.so.6 => /lib/libc.so.6 (0x0fd07000)
libcrypt.so.1 => /lib/libcrypt.so.1 (0x0fcba000)
/lib/ld.so.1 => /lib/ld.so.1 (0x30000000)
POPデーモンなどもコンパイルされますが、個人的な好みで、
IMAP以外使う気にはなれない!
ため、imapdだけ/usr/sbin/imapdとして、インストールします。
root@KURO-BOX:/mnt/share/200707/imap-2004g# cp imapd/imapd /usr/sbin/
■ imapdが起動できるようにするための設定
imapdは、inetdから起動されます。
まずは、/etc/servicesに、imapがあるか確認。
root@KURO-BOX:/mnt/share/200707/imap-2004g# grep imap /etc/services
imap2 143/tcp imap # Interim Mail Access Proto v2
imap2 143/udp imap
imap3 220/tcp # Interactive Mail Access
imap3 220/udp # Protocol v3
imaps 993/tcp # IMAP over SSL
imaps 993/udp # IMAP over SSL
ポート番号143が「imap」でいけそうなので、大丈夫そうです。
/etc/inetd.confを編集して、imapとimapsを追加。
root@KURO-BOX:/mnt/share/200707/imap-2004g# vi /etc/inetd.conf
# Pop et al
#
# pop2 stream tcp nowait root /usr/sbin/tcpd in.pop2d
# pop3 stream tcp nowait root /usr/sbin/tcpd /usr/sbin/popper -s
#
# Imapd - Interactive Mail Access Protocol server
# Attention: This service is very insecure
# imap2 stream tcp nowait root /usr/sbin/tcpd imapd
#
imap stream tcp nowait root /usr/sbin/imapd imapd
imaps stream tcp nowait root /usr/sbin/imapd imapd
#
inetdにシグナルをおくって、編集後のinetd.confを反映させます。
root@KURO-BOX:/# kill -HUP `cat /var/run/inetd.pid `
動作確認。telnetコマンドを使って、ポート番号143にアクセスして、imapdにアクセスできるかを試してみます。
% telnet kuro-box imap
Trying 192.168.0.41...
Connected to kuro-box.local.
Escape character is '^]'.
* OK [CAPABILITY IMAP4REV1 LITERAL+ SASL-IR LOGIN-REFERRALS STARTTLS LOGINDISABLED] KURO-BOX IMAP4rev1 2004.357 at Sun, 22 Jul 2007 14:46:00 +0900 (JST)
大丈夫そうです。
終了するには、Escape character is '^]'.と表示されているように、controlキーを押しながら「 ] 」を押すと、telnet>というプロンプトがでるので、そこでcloseと入力します。
■ 玄箱にユーザーアカウントを作成
パスワードファイルを編集します。
root@KURO-BOX:/# vi /etc/passwd
nhh:*:2001:2001:Nyo Ho Ho:/home/nhh:/bin/bash
というような行を追加します。
パスワードを設定します。
root@KURO-BOX:/# passwd nhh
Enter new UNIX password: パスワードを入力
Retype new UNIX password: もう一度入力
passwd: password updated successfully
確認。
root@KURO-BOX:/# grep nhh /etc/passwd
nhh:ハッシュされたパスワード:2001:2001:Nyo Ho Ho:/home/nhh:/bin/bash
/etc/groupファイルを編集して、グループを登録します。こんな感じ。
root@KURO-BOX:/# grep nhh /etc/group
nhh:*:2001:
ホームディレクトリを作成。
root@KURO-BOX:/# mkdir /home/nhh
root@KURO-BOX:/# chown nhh:nhh /home/nhh
root@KURO-BOX:/# ls -l /home
total 4
drwxr-xr-x 2 nhh nhh 4096 Jul 22 14:42 nhh
一応、ログインできるか確認してみます。
% telnet -l nhh kuro
Trying 192.168.0.41...
Connected to kuro-box.local.
Escape character is '^]'.
Password: パスワード
Linux (none) 2.4.17_kuro-box #2 2004年 3月 18日 木曜日 11:39:47 JST ppc unknown
nhh@KURO-BOX:~$
■ imap-uw用のパスワードファイルを作成
CRAM-MD5という認証が使えるようにするため、/etc/cram-md5.pwdというファイルを作成します。ユーザー名(nhh)、タブ、パスワードと、1行で書きます。
こんなかんじです。
root@KURO-BOX:/# cat /etc/cram-md5.pwd
# CRAM-MD5 authentication database
# Entries are in form <user><tab><password>
# Lines starting with "#" are comments
nhh パスワード
パスワードが書かれたファイルなので、一般ユーザーに見られないように、ファイルのパーミッションを適切に設定します。
root@KURO-BOX:/# chmod 400 /etc/cram-md5.pwd
root@KURO-BOX:/# ls -l /etc/cram-md5.pwd
-r-------- 1 root root 53 Jul 22 17:43 /etc/cram-md5.pwd
■ IMAPフォルダのファイルが$HOME/Mail以下に作成されるようにする“おまじない”
デフォルトでは、IMAPフォルダのファイルが、ホームディレクトリ($HOME)直下に作られてしまいます。個人的には、それは好きではないので、$HOME/Mail以下になるようにしています。
なんだか謎のおまじないですが、/etc/c-client.cfに、以下のようなことを書いておいてから・・・
root@KURO-BOX:/# cat /etc/c-client.cf
I accept the risk
set allow-user-config 1
ユーザーのホームディレクトリ以下に「.imaprc」というファイルを作成し、そこにもおまじないを書き込んでおきます。
root@KURO-BOX:/# cat /home/nhh/.imaprc
I accept the risk
set mail-subdirectory Mail
これで、Mozilla ThunderbirdなどのメールソフトのほうでHogeというフォルダを作成すると、それに対応する、$HOME/Mail/Hogeというファイルができるはずです。
つづく・・・
明日は、fetchmailのインストールを予定しています。
■ 過去記事
- 玄人志向 玄箱 KURO-BOXX (限定版)
- 玄箱 (限定版)の感想
- 玄箱で遊ぶ
- FreeBSDと玄箱との間でNFS
- FreeBSD+amd+NFS+玄箱
- FreeBSDに玄箱のクロス開発環境を構築
- FreeBSD上で玄箱用tcshをクロスコンパイル
0 件のコメント:
コメントを投稿