2007/08/06

Nexentaをファイル/IMAPサーバにする

OpenSolarisカーネルのNexentaOS Alpha 7をファイル(Samba・NFS)/IMAPサーバにすることにします。

つい先日Debian/GNU Linux 4.0に移行したばかりですが、Linux以外のも使っていた方が視野が広がるかな、と。
言い訳ですけど。

あいかわらずよく分からずにやっていますので、信用しないでください。


○ NFSの設定
/share/shareをNFS共有にします(参考)。
/share/shareはzfsコマンドで作成したZFSファイルシステムです。

zfsコマンドを使用して次のコマンドを叩いただけです。
/share/shareを共有ディレクトリにします。
root@julie:~# zfs set sharenfs=rw share/share


○ Sambaの設定
NexentaOS Alpha 7に用意されている3.0.24を使用することにしました。
$ dpkg -l|grep samba
ii samba 3.0.24-2nexenta2 a LanManager-like file and printer server fo
ii samba-common 3.0.24-2nexenta2 Samba common files used by both the server a
ii samba-doc 3.0.24-2nexenta2 Samba documentation


smb.confはDebian/GNU Linux 4.0のsmb.confをほぼそのまま使おうと思ったのですが、なぜかSambaがコアダンプしてしまいます。

コアダンプの件は後で調べるとして、取り急ぎNexentaに入っていたsmb.confを基に必要なところだけ修正して使用することにしました。
使用していないプリンタの設定が残っていたりしますので、後で見直します。
[global]
## Browsing/Identification ###
# Change this to the workgroup/NT-domain name your Samba server will part of
workgroup =
Windowsグループ名

# server string is the equivalent of the NT Description field
server string = %h server (CIFS, Nexenta)

unix charset = UTF-8
dos charset = CP932

# This will prevent nmbd to search for NetBIOS names through DNS.
dns proxy = no

#### Debugging/Accounting ####
# This tells Samba to use a separate log file for each machine
# that connects
log file = /var/log/samba/log.%m

# Put a capping on the size of the log files (in Kb).
max log size = 1000

# We want Samba to log a minimum amount of information to syslog. Everything
# should go to /var/log/samba/log.{smbd,nmbd} instead. If you want to log
# through syslog you should set the following parameter to something higher.
syslog = 0

# Do something sensible when Samba crashes: mail the admin a backtrace
panic action = /usr/share/samba/panic-action %d


####### Authentication #######

# "security = user" is always a good idea. This will require a Unix account
# in this server for every user accessing the server. See
# /usr/share/doc/samba-doc/htmldocs/Samba3-HOWTO/ServerType.html
# in the samba-doc package for details.
; security = user

# You may wish to use password encryption. See the section on
# 'encrypt passwords' in the smb.conf(5) manpage before enabling.
encrypt passwords = true

# If you are using encrypted passwords, Samba will need to know what
# password database type you are using.
passdb backend = tdbsam

obey pam restrictions = yes

; guest account = nobody
invalid users = root

# For Unix password sync to work on a Debian GNU/Linux system, the following
# parameters must be set (thanks to Ian Kahan < for
# sending the correct chat script for the passwd program in Debian Sarge).
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\sUNIX\spassword:* %n\n *Retype\snew\sUNIX\spassword:* %n\n *password\supdated\ssuccessfully* .


############ Misc ############
# Most people will find that this option gives better performance.
# See smb.conf(5) and /usr/share/doc/samba-doc/htmldocs/Samba3-HOWTO/speed.html
# for details
# You may want to add the following on a Linux system:
# SO_RCVBUF=8192 SO_SNDBUF=8192
socket options = TCP_NODELAY

#======================= Share Definitions =======================
[printers]
comment = All Printers
browseable = no
path = /var/spool/samba
printable = yes
public = no
writable = no
create mode = 0700

# Windows clients look for this share name as a source of downloadable
# printer drivers
[print$]
comment = Printer Drivers
path = /var/lib/samba/printers
browseable = yes
read only = yes
guest ok = no

[share]
comment = Julie share
path = /share/share
browseable = no

# By default, the home directories are exported read-only. Change next
# parameter to 'yes' if you want to be able to write to them.
; writable = no
writable = yes

一番のキモは
   unix charset = UTF-8
dos charset = CP932

でしょうか(参考記事)。


○ IMAPの設定
Nexentaにはcyrus-imapd-2.2というのがあり、使おうとして設定までしたのですが、今まで使っていたuw-imapdの方が私には分かりやすかったためこちらを使うことにしました。

ftp://ftp.cac.washington.edu/imap/からimap-2006j2.tar.Zをもらってきて展開しmakeしました。

make時にOpenSSL関係と思われるエラーが出てmakeに失敗しました。
$ make gso

〜 省略 〜

In file included from tcp_unix.c:29,
from osdep.c:63:
ip_unix.c: In function 'ip_nametoaddr':
ip_unix.c:165: warning: pointer targets in passing argument 1 of 'lcase' differ in signedness
ip_unix.c:165: warning: pointer targets in passing argument 1 of 'gethostbyname' differ in signedness
osdep.c:246:20: error: x509v3.h: No such file or directory
osdep.c:247:17: error: ssl.h: No such file or directory
osdep.c:248:17: error: err.h: No such file or directory
osdep.c:249:17: error: pem.h: No such file or directory
osdep.c:250:20: error: buffer.h: No such file or directory
osdep.c:251:17: error: bio.h: No such file or directory
osdep.c:252:20: error: crypto.h: No such file or directory
osdep.c:253:18: error: rand.h: No such file or directory

〜 省略 〜

sslstdio.c:163: error: request for member 'sslstream' in something not a structure or union
sslstdio.c:163: error: request for member 'obuf' in something not a structure or union
sslstdio.c:164: error: request for member 'octr' in something not a structure or union
sslstdio.c:166: error: request for member 'optr' in something not a structure or union
sslstdio.c:166: error: request for member 'obuf' in something not a structure or union
sslstdio.c:167: error: request for member 'octr' in something not a structure or union
make[3]: *** [osdep.o] Error 1
make[3]: Leaving directory `/export/home/xxx/Source/imap-2006j/c-client'
make[2]: *** [gso] Error 2
make[2]: Leaving directory `/export/home/xxx/Source/imap-2006j/c-client'
make[1]: *** [OSTYPE] Error 2
make[1]: Leaving directory `/export/home/xxx/Source/imap-2006j'
make: *** [gso] Error 2


OpenSSL関連のパスが正しくないようです。
Makefileでパスを指定している箇所はすぐ見付かりました。そもそも"gso"の指定が間違っているのかもしれません。

対処方法としてはSSLTYPE=noneを指定することにしました。
SSLは今のところ使う予定が無いためです。
$ make gso SSLTYPE=none

uw-imapdのインストールは、make後に出来たimapdを/usr/local/sbinの下にコピーしただけです。

c-client.cf, cram-md5.pwdの作成し/etc/inetd.confに記述を追加しました。
# cat /etc/c-client.cf
I accept the risk for IMAP toolkit 4.1.
set new-folder-format mbx
set mail-subdirectory Mail
set disable-plaintext 0

# cat /etc/cram-md5.pwd
ユーザ名 パスワード

# cat /etc/inetd.conf |grep imap
imap stream tcp nowait root /usr/sbin/tcpd /usr/local/sbin/imapd

そして、inetdを再起動しました。
# pkill -HUP inetd

0 件のコメント: