[Linux] CentOS5でメールサーバ構築(qmail + tcpserver + libev + vpopmail + qmail-conf + daemontools)

何度かqmailでメールサーバを構築している割には手順を理解していなかったので、まとめてみました。
構築手順の概要は以下です。

1.qmailのインストールと設定
2.tcpserverのインストールと設定
3.libevのインストール
4.vpopmailのインストールと設定
5.qmail-confのインストール
6.daemontoolsのインストールと設定
7.daemontoolsでのqmail運用

daemontoolsを使用しないなら4まで、更に複数ドメインで運用しないなら2まで設定します。


1.qmailのインストールと設定


・qmail用ディレクトリ作成、グループ作成、ユーザ作成

# mkdir /var/qmail

# groupadd nofiles
# useradd -g nofiles -d /var/qmail/alias -s /bin/false alias
# useradd -g nofiles -d /var/qmail -s /bin/false qmaild
# useradd -g nofiles -d /var/qmail -s /bin/false qmaill
# useradd -g nofiles -d /var/qmail -s /bin/false qmailp

# groupadd qmail
# useradd -g qmail -d /var/qmail -s /bin/false qmailq
# useradd -g qmail -d /var/qmail -s /bin/false qmailr
# useradd -g qmail -d /var/qmail -s /bin/false qmails

・qmail、パッチのダウンロード

# cd /usr/local/src/
# wget http://qmail.org/netqmail-1.06.tar.gz
# wget http://qmail.org/qmail-smtpd-relay-reject
# wget http://www.tymy.net/~matsu/blog/wp-content/uploads/2008/03/qmail-date-localtime.patch

・qmail解凍、パッチ適用、コンパイル、インストール

# tar xvfz netqmail-1.06.tar.gz
# cd netqmail-1.06
# patch -p1 < ../qmail-date-localtime.patch
# patch -p1 < ../qmail-smtpd-relay-reject
# make setup
# make check
# ./config-fast example.com

・コントロールファイルの編集、作成

# cd /var/qmail/control/
# vi locals

localhost
example.com

localhostを追加する。

# vi rcpthosts

localhost
example.com

localhostを追加する。

・重要エイリアスの作成と転送先の設定

# cd /var/qmail/alias
# touch .qmail-postmaster .qmail-mailer-daemon .qmail-root
# chown alias:qmail .qmail-postmaster .qmail-mailer-daemon .qmail-root
# echo root > .qmail-postmaster
# echo root > .qmail-mailer-daemon
# echo foo@example.com > .qmail-root

postmasterとmailer-daemon宛のメールはrootへ転送。root宛のメールは外部メールアドレスへ転送。

・sendmailの停止とラッパー

# /etc/rc.d/init.d/sendmail stop
# mv /etc/rc.d/rc2.d/S80sendmail /etc/rc.d/rc2.d/_S80sendmail
# mv /etc/rc.d/rc3.d/S80sendmail /etc/rc.d/rc3.d/_S80sendmail
# mv /etc/rc.d/rc5.d/S80sendmail /etc/rc.d/rc5.d/_S80sendmail
# cd /usr/sbin
# mv sendmail sendmail.dist
# chmod 0 sendmail.dist
# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail

他のsmtpサーバが起動しているとqmailでメールが送信できないので、sendmailが起動していたら停止させる。
また、sendmailが起動されたら、qmailが起動するように設定する。

・postfix(SMTPサーバの停止)

# /etc/rc.d/init.d/dovecot stop
# /sbin/chkconfig –list | grep dovecot
# /sbin/chkconfig –level 2345 dovecot off

他のsmtpサーバが起動しているとqmailでメールが送信できないので、postfixが起動していたら停止させる。

・dovecot(POP3サーバ等の停止)

# /etc/rc.d/init.d/postfix stop
# /sbin/chkconfig –list | grep postfix
# /sbin/chkconfig –level 2345 postfix off

他のpop3サーバが起動しているとqmailでメールが受信できないので、dovecotが起動していたら停止させる。

・Maildirディレクトリの作成

# /var/qmail/bin/maildirmake ~alias/Maildir
# chown -R alias /var/qmail/alias/Maildir
# /var/qmail/bin/maildirmake /etc/skel/Maildir

・qmail起動スクリプトの作成

# cp /var/qmail/boot/home /var/qmail/rc
# vi /var/qmail/rc

#!/bin/sh

# Using splogger to send the log through syslog.
# Using qmail-local to deliver messages to ~/Mailbox by default.

exec env – PATH=”/var/qmail/bin:$PATH” \
qmail-start ./Maildir/ splogger qmail

./Mailboxを./Maildir/に変更する。

・qmailの起動と動作確認

# /var/qmail/rc &
# echo to: root@example.com | /var/qmail/bin/qmail-inject
# kill [プロセス番号]


2.tcpserverのインストールと設定


・tcpserverのダウンロード

# cd /usr/local/src/
# wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz

・tcpserverのインストール(netqmail-1.06のソースが必要)

# tar xvfz ucspi-tcp-0.88.tar.gz
# cd ucspi-tcp-0.88
# patch -p1 < ../netqmail-1.06/other-patches/ucspi-tcp-0.88.errno.patch
# make setup check

・cdbの作成

# cd /etc
# echo ‘192.168.:allow,RELAYCLIENT=””‘ > tcp.smtp
# echo ‘127.:allow,RELAYCLIENT=””‘ >> tcp.smtp
# echo ‘xxx.xxx.xxx.xxx:allow,RELAYCLIENT=””‘ >> tcp.smtp
# echo ‘:allow’ >> tcp.smtp
# /usr/local/bin/tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp

・tcpserver起動スクリプトの作成

# id qmaild

uid=502(qmaild) gid=501(nofiles) 所属グループ=501(nofiles)

uidとgidの数値を確認する。上記の例ではuidが502、gidが501。

# vi /etc/rc.d/init.d/qmail

#!/bin/sh
#
# qmail: /var/qmail
PATH=/var/qmail/bin:/usr/local/bin:/bin:/usr/bin

[ -f /var/qmail/rc ] || exit 0

case “$1” in
start)
# Start daemons.
echo “Starting qmail.”
csh -cf ‘/var/qmail/rc &’
tcpserver -v -u 502 -g 501 -x /etc/tcp.smtp.cdb 0 smtp /var/qmail/bin/qmail-smtpd 2>&1 | /var/qmail/bin/splogger smtpd 3 &
echo
touch /var/lock/qmail
;;
stop)
# Stop daemons.
echo “Shutting down qmail.”
PID=`/bin/ps -aefw | grep qmail | awk ‘{print $2}’`
if [ ! -z “$PID” ] ; then
/bin/kill ${PID} 1> /dev/null 2>&1
fi
echo
rm -f /var/lock/qmail
;;
*)
echo “Usage: S99qmail {start|stop}”
exit 1
esac

exit 0

先程確認したuidとgidの数値を設定する。

・tcpserverの起動と動作確認

# chmod 755 /etc/rc.d/init.d/qmail
# ln -s /etc/rc.d/init.d/qmail /etc/rc.d/rc2.d/S99qmail
# ln -s /etc/rc.d/init.d/qmail /etc/rc.d/rc3.d/S99qmail
# ln -s /etc/rc.d/init.d/qmail /etc/rc.d/rc5.d/S99qmail
# /etc/rc.d/init.d/qmail start

外部からroot@example.com宛にメールを送信し、受信できるか確認する。


3.libevのインストール


vpopmail-5.5.0の./configureでの「WARNING:libev not found」を回避する。

・libevのダウンロード

# cd /usr/local/src/
# wget http://dist.schmorp.de/libev/libev-4.04.tar.gz

・libevをインストール

# tar xvfz libev-4.04.tar.gz
# cd libev-4.04
# ./configure && make && make install


4.vpopmailのインストールと設定


・vpopmail用グループ作成、ユーザ作成

# groupadd -g 89 vchkpw
# useradd -g vchkpw -u 89 vpopmail

・vpopmail用コントロールファイルの作成

# touch /var/qmail/control/virtualdomains

・vpopmailのダウンロード

# cd /usr/local/src/
# wget http://sourceforge.net/projects/vpopmail/files/vpopmail-devel/5.5.0/vpopmail-5.5.0.tar.bz2/download

・vpopmailの解凍、コンパイル、インストール

# cd /usr/local/src/
# tar xvfj vpopmail-5.5.0.tar.bz2
# cd /usr/local/src/vpopmail-5.5.0
# ./configure –prefix=/home/vpopmail –enable-roaming-users=y –enable-relay-clear-minutes=15 –disable-clear-passwd –enable-logging=y
# make
# make install-strip

・認証系モジュールのインストール

# cd vpopmail-5.5.0/backends/cdb
# ./configure && make && make install

./vadddomainでの「Error – no authentication module loaded.」を回避する。

・フォルダのアクセス権限の変更

# chmod 755 /home/vpopmail

「warning: dropping connection, unable to read /home/vpopmail/etc/tcp.smtp.cdb: access denied」を回避する。

・バーチャルドメインの追加

# cd /home/vpopmail/bin/
# ./vadddomain test.example.com
(パスワードを入力)
# ./vadduser info@test.example.com
(パスワードを入力)

・vpopmail用cdbの作成

# cd /home/vpopmail/etc
# echo ‘192.168.:allow,RELAYCLIENT=””‘ > tcp.smtp
# echo ‘127.:allow,RELAYCLIENT=””‘ >> tcp.smtp
# echo ‘xxx.xxx.xxx.xxx:allow,RELAYCLIENT=””‘ >> tcp.smtp
# echo ‘:allow’ >> tcp.smtp
# /usr/local/bin/tcprules tcp.smtp.cdb tcp.smtp.tmp < tcp.smtp
# chown -R vpopmail:vchkpw /home/vpopmail/etc

・cronの設定

# crontab -e

*/15 * * * * /home/vpopmail/bin/clearopensmtp 2>&1 > /dev/null

rootのcronに設定。15分毎にIPアドレスを整理する。

・vpopmail対応tcpserver起動スクリプトの作成

# /etc/rc.d/init.d/qmail stop
# mv /etc/rc.d/init.d/qmail /etc/rc.d/init.d/qmail.qmail
# chmod 0 /etc/rc.d/init.d/qmail.qmail
# vi /etc/rc.d/init.d/qmail

#!/bin/sh
#
# qmail: /var/qmail
PATH=/var/qmail/bin:/usr/local/bin:/bin:/usr/bin

[ -f /var/qmail/rc ] || exit 0

case “$1” in
start)
# Start daemons.
echo “Starting qmail.”
csh -cf ‘/var/qmail/rc &’

#Vsmtp
/usr/local/bin/tcpserver -H -R -l example.com -v -x /home/vpopmail/etc/tcp.smtp.cdb -u 502 -g 501 0 smtp /var/qmail/bin/qmail-smtpd 2>&1 | /var/qmail/bin/splogger smtpd 3 &

#Vpop
/usr/local/bin/tcpserver -H -R -l example.com -v 0 pop3 /var/qmail/bin/qmail-popup example.com /home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir 2>&1 | /var/qmail/bin/splogger pop3d 3 &

echo
touch /var/lock/qmail
;;
stop)
# Stop daemons.
echo “Shutting down qmail.”
PID=`/bin/ps -aefw | grep qmail | awk ‘{print $2}’`
if [ ! -z “$PID” ] ; then
/bin/kill ${PID} 1> /dev/null 2>&1
fi
echo
rm -f /var/lock/qmail
;;
*)
echo “Usage: S99qmail {start|stop}”
exit 1
esac

exit 0

・vpopmail対応tcpserverの起動と動作確認

# chmod 755 /etc/rc.d/init.d/qmail
# /etc/rc.d/init.d/qmail start

外部からinfo@test.example.com宛にメール送信してみる。

・メインドメインのバーチャルドメイン化

# cd /home/vpopmail/bin/
# ./vadddomain example.com
(パスワードを入力)
# ./vadduser info@example.com
(パスワードを入力)

・コントロールファイルの編集

# vi /var/qmail/control/locals

メインドメインが残っていたら削除し、中身をlocalhostのみに変更する。

# cp /var/qmail/alias/.qmail-* /home/vpopmail/var/vpopmail/example.com/
# chown vpopmail:vchkpw /home/vpopmail/var/vpopmail/example.com/.qmail-*


5.qmail-confのインストール


・qmail-conf、djbdnsのダウンロード

# cd /usr/local/src/
# wget http://www.din.or.jp/~ushijima/qmail-conf/qmail-conf-0.60.tar.gz
# wget http://cr.yp.to/djbdns/djbdns-1.05.tar.gz

・qmail-conf、djbdnsの解凍

# tar zxvf qmail-conf-0.60.tar.gz
# tar zxvf djbdns-1.05.tar.gz

・extern int errno; を #include に変更

# cd djbdns-1.05/
# vi error.h

extern int errno;

#include

・qmail-confのコンパイル、インストール

# cd /usr/local/src/qmail-conf-0.60
# make -f Makefile.ini djbdns=../djbdns-1.05
# make
# make setup check

daemontoolsでの起動設定を簡単にするtool。


6.daemontoolsのインストールと設定


・vpopmail対応tcpserverの停止

# /etc/rc.d/init.d/qmail stop
# mv /etc/rc.d/init.d/qmail /etc/rc.d/init.d/qmail.vpopmail
# chmod 0 /etc/rc.d/init.d/qmail.vpopmail

・daemontoolsのダウンロード

# cd /usr/local/src/
# wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz

・フォルダ作成、daemontools解凍、コンパイル、インストール(netqmail-1.06のソースが必要)

# mkdir /package
# chmod 1755 /package
# cd /package
# tar xpzf /usr/local/src/daemontools-0.76.tar.gz
# cd admin/daemontools-0.76
# patch -p1 < /usr/local/src/netqmail-1.06/other-patches/daemontools-0.76.errno.patch
# ./package/install

・svscan起動スクリプトの作成

# vi /etc/rc.d/init.d/svscan

#!/bin/sh
#
# svscan Start svscan.
#
# Author: TAKIZAWA Takashi
#
# chkconfig: 345 99 50
# description: svscan starts and monitors a collection of services.
# see http://cr.yp.to/daemontools.html
# processname: svscan
# service directory: /service

# Source function library.
. /etc/rc.d/init.d/functions

PATH=”/usr/local/bin:$PATH”
prog=svscan
SVDIR=/service
RETVAL=0
export PATH SVDIR

start() {
echo -n $”Starting $prog: “
daemon svscan $SVDIR &
RETVAL=$?
echo_success
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/svscan
}

stop() {
echo -n $”Stopping $prog: “
killproc svscan
RETVAL=$?
(cd $SVDIR && svc -dx $SVDIR/*)
(cd $SVDIR && svc -dx $SVDIR/*/log)
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/svscan
}

case “$1” in
start)
start
;;
stop)
stop
;;
status)
status svscan
RETVAL=$?
;;
restart|reload)
stop
start
;;
*)
echo $”Usage: $prog {start|stop|status|restart|reload}”
exit 1
esac

exit $RETVAL

・svscanの起動

# chmod 755 /etc/rc.d/init.d/svscan
# /etc/rc.d/init.d/svscan start

・svscanの自動起動設定

# /sbin/chkconfig –add svscan
# /sbin/chkconfig svscan on

・qmail起動スクリプトの変更

# vi /var/qmail/rc

#!/bin/sh

# Using splogger to send the log through syslog.
# Using qmail-local to deliver messages to ~/Mailbox by default.

exec env – PATH=”/var/qmail/bin:$PATH” \
qmail-start ./Maildir/

sploggerを使用しないように変更する。

・daemontools用起動スクリプトの作成

# cd /var/qmail/bin
# ./qmail-delivery-conf qmaill /var/qmail/service/qmail
# ./qmail-smtpd-conf qmaild qmaill /var/qmail/service/smtpd
# ./qmail-pop3d-conf /home/vpopmail/bin/vchkpw qmaill /var/qmail/service/pop3d

・daemontools用cdbの作成(smtpd)

# cd /var/qmail/service/smtpd
# ./add-relayclient 192.168.
# ./add-relayclient 127.
# ./add-relayclient xxx.xxx.xxx.xxx
# echo ‘:allow’ >> tcp
# make

・daemontools用cdbの作成(pop3d)

# cd /var/qmail/service/pop3d
# ./add-client 192.168.
# ./add-client xxx.xxx.xxx.xxx
# make

接続を許可するIPアドレスを追加する。

・エイリアスの作成

# ln -s /var/qmail/service/* /service


7.daemontoolsでのqmail運用


・全サービスの起動

# svc -u /service/*

・全サービスの一時停止

# svc -d /service/*

・全サービスの起動状況の確認

# svstat /service/*

・ログの確認

# /usr/local/bin/tai64nlocal < /service/qmail/log/main/current | more
# /usr/local/bin/tai64nlocal < /service/smtpd/log/main/current | more
# /usr/local/bin/tai64nlocal < /service/pop3d/log/main/current | more


備考.telnetでportの確認


・portが閉じている場合

# telnet example.com 110

Trying xxx.xxx.xxx.xxx…
telnet: connect to address xxx.xxx.xxx.xxx: Connection refused
telnet: Unable to connect to remote host: Connection refused

・portが開いていて、ユーザー名とパスワードも正しい場合

# telnet example.com 110

Trying xxx.xxx.xxx.xxx…
Connected to example.com (xxx.xxx.xxx.xxx).
Escape character is ‘^]’.
+OK <12345.1234567890@example.com>
user info@example.com
+OK
pass xxxxxxxxxx
+OK
quit
+OK
Connection closed by foreign host.


参考サイト


・実用qmailサーバ運用・管理術
http://www.atmarkit.co.jp/flinux/index/indexfiles/index-linux.html#qmail

・CentOS4 に qmail + vpopmail + qmailadmin
http://d.hatena.ne.jp/cat-o-ninetail/20080229

・サーバーを構築する(qmail + vpopmail)
http://www.mgfcompany.net/ufo/com/

・qmail-1.03の導入(CentOS5) – ORANGE BOX
http://orangebox.lbn.bz/index.php?qmail-1.03%A4%CE%C6%B3%C6%FE%A1%CACentOS5%A1%CB

・qmailのインストール及びその設定(daemontoolsを用いたプロセスの監視)
http://www.mm-labo.com/computer/linux/qmail/qmail-daemontools.html

・daemontools の勧め
http://www.emaillab.org/djb/daemontools/

・qmail-conf
http://www.y-min.or.jp/~nob/qmail/qmail-conf.html

[Windows] Outlook2007からOutlook2007への移行(データ+アカウント+仕分けルール+署名)

新しいパソコンに「Microsoft Office Outlook2007」のメールデータや設定を移行することになりました。
移行対象は以下です。

・メールデータ
・アカウント設定情報
・仕分けルール
・署名

ちなみに、メールデータだけを移行するなら、Microsoftサポート情報が参考になります。
Outlook 2007 のデータをバックアップ、復元、または移動する方法

なので、以下に当てはまるような人がオススメです。

・隠しファイル、隠しフォルダ、レジストリ操作は怖くない。
・メールデータが巨大なので、移行の時間を短縮したい。
・アカウント設定数が多くて、入力し直すのが面倒臭い。
・仕分けルールの設定が多くて、入力し直すのが面倒臭い。
・署名を作り直すのが面倒臭い。

それでは移行手順を説明しますが、まずは環境の説明。

・旧パソコンOS:Windows XP
・新パソコンOS:Windows 7
・Microsoft Office 2007を使用(ボリュームライセンス有り)
・新旧パソコンはLANで接続されており、共通で使用できる共有フォルダが存在する。

移行手順の概要は以下です。

1.[旧パソコン]Microsoft Officeプロダクトキーの確認
2.[新パソコン]Microsoft Officeをインストール
3.[新旧パソコン]隠しファイル、フォルダの表示
4.[新旧パソコン]レジストリのエクスポートとインポート
5.[新旧パソコン]メールデータの移行
6.[新旧パソコン]署名データの移行
7.[新パソコン]Microsoft Officeの起動
8.[新旧パソコン]パスワードの移行
9.[新旧パソコン]仕分けルールのエクスポートとインポート

1.[旧パソコン]Microsoft Officeプロダクトキーの確認

・普通の方法
CD-ROMケース裏側に貼られたオレンジ色のシールを確認する。

・別の方法
[NirSoft]ProduKeyをインストールし確認する。

・参考
社内のOSやアプリケーションのライセンスを調査せよ!

旧パソコンで使用していたOfficeのプロダクトキーを確認するのに、NirSoftのProduKeyを使用しました。
日本語化も可能です。

2.[新パソコン]Microsoft Officeをインストール
特に難しいところはないと思われますので、省略します。

3.[新旧パソコン]隠しファイル、フォルダの表示

・Windows XPの場合
[エクスプローラー]-[ツール]-[フォルダ オプション]-[表示]-[すべてのファイルとフォルダを表示する]を選択しOK。

・Windows 7の場合
[エクスプローラー]-[整理]-[フォルダーと検索のオプション]-[表示]-[隠しファイル、隠しフォルダー、および隠しドライブを表示する]を選択しOK。

Outlookのデータは隠しフォルダに保存されているので、まずは表示させるようにします。

4.[新旧パソコン]レジストリのエクスポートとインポート

(1).旧パソコンでレジストリ エディターを起動する。
・Windows XPの場合
[スタート]-[ファイル名を指定して実行]で「regedit」を入力しOK。

・Windows 7の場合
[スタート]-[プログラムとファイルの検索]で「regedit」を入力し、それを選択。

(2).以下キーを探し出し、右クリックしてファイルに保存する。
キー:「HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\Outlook」
保存ファイル例:outlook.reg

(3).(2)で保存したファイルを新パソコンでダブルクリックし、レジストリをインポートする。

・参考
How to backup and restore data and e-mail account settings in Outlook 2007

レジストリにOutlookのアカウント設定情報が保存されているので、旧パソコンからエクスポートし、新パソコンにインポートします。
ただし、パスワードは移行されないので、パスワードは手動で移行します。

5.[新旧パソコン]メールデータの移行

エクスプローラーで旧パソコンのデータフォルダから新パソコンのデータフォルダへ以下をコピーする。
・個人用フォルダ ファイル(Outlook.pst)
・保存フォルダ ファイル(archive.pst)

・Windows XPのデータフォルダ
C:\Documents and Settings\(ユーザー名)\Local Settings\Application Data\Microsoft\Outlook

・Windows 7のデータフォルダ
C:\Users\(ユーザー名)\AppData\Local\Microsoft\Outlook

6.[新旧パソコン]署名データの移行

エクスプローラーで旧パソコンの署名フォルダから新パソコンの署名フォルダへ全ファイルをコピーする。

・Windows XPの署名フォルダ
C:\Documents and Settings\(ユーザー名)\Application Data\Microsoft\Signatures

・Windows 7の署名フォルダ
C:\Users\(ユーザー名)\AppData\Roaming\Microsoft\Signatures

7.[新パソコン]Microsoft Officeの起動

4.でレジストリをインポートしたことにより、データフォルダのパスが旧パソコンのパスになっています。
新パソコンのパスが旧パソコンと変わっている場合は、6.のデータフォルダのパスを指定します。

8.[新旧パソコン]パスワードの移行

4.でレジストリをインポートしても、パスワードは移行できないので、パスワードだけは手動で移行します。
パスワードを忘れてしまった場合は「パスみえ2000」等を使って確認します。

9.[新旧パソコン]仕分けルールのエクスポートとインポート

仕分けルールが正しく移行できていなければ、エクスポートしてインポートします。

(1).[ツール]-[仕分けルールと通知]-[オプション]-[ルールをエクスポート]を選択する。

(2).適当な名前を付けて保存する。
保存ファイル例:仕分けルール.rwz

(3).[ツール]-[仕分けルールと通知]-[オプション]-[ルールをインポート]を選択し、(2)をインポートする。

・参考
ルールのバックアップを取る

仕分けルールにエラーがある場合はエクスポートできないので、まずはエラーを解消します。
vista,outlook2007です。振り分け先フォルダを何度設定しなおしても、しばらくして…

以上です。

「もっと簡単に移行できるツールが有りますよ」ってオチは無いものか…。

[linux] CentOS5 + Apache2にsubversionを導入

バックアップも兼ねて、subversionを導入することにした。
サーバ側は「CentOS5 + Apache2」でクライアント側は「TortoiseSVN」。

●RPMパッケージのインストール

# yum install subversion
# (yを入力)
# yum install mod_dav_svn
# (yを入力)

●リポジトリの作成

# mkdir -p /var/www/svn/
# cd /var/www/svn/
# svnadmin create repos01
# chown -R apache:apache repos01

httpでアクセスするので、web用フォルダ配下にリポジトリ用の親フォルダ「svn」を作成。
そして、svnadminコマンドでリポジトリを作成。
複数リポジトリを作成したければ、別のフォルダ名でsvnadminコマンドを実行。

●BASIC認証用ユーザの追加

# htpasswd -cm /somewhere/.htpasswd user01
# (パスワード01を入力)
# htpasswd -m /somewhere/.htpasswd user02
# (パスワード02を入力)

●subversion.confの設定
# vi /etc/httpd/conf.d/subversion.conf

<Location /svn>
     DAV svn
     SVNParentPath /var/www/svn

     # Basic Authentication
     AuthUserFile /somewhere/.htpasswd
     AuthName “Please Enter Password”
     AuthType Basic
     require valid-user

     # IP Address Authorization
     Order Deny,Allow
     Deny from all
     Allow from aaa.bbb.ccc.ddd
</Location>

SVNParentPathでリポジトリ用親フォルダを指定しておけば、リポジトリ追加での作業はsvnadminだけで済む。
BASIC認証でユーザーIDとパスワードを入力させることによって接続を規制。
また、接続元のIPアドレスでも接続を規制。

● apache設定の確認と再起動

# /etc/rc.d/init.d/httpd configtest
# /etc/rc.d/init.d/httpd graceful

●ブラウザでの動作確認

リポジトリのURL:http://domain01/svn/repos01
ユーザーID:user01
パスワード:(htpasswdコマンドで入力したパスワード)

●TortoiseSVNを使用してSVNチェックアウト

リポジトリのURL:http://domain01/svn/repos01
チェックアウトフォルダ:D:\svn\repos01
ユーザーID:user01
パスワード:(htpasswdコマンドで入力したパスワード)

●TortoiseSVNを使用してtrunk、tags、branchesを作成

1.チェックアウトフォルダで右クリックし、[TortoiseSVN]-[リポジトリブラウザ]を選択
2.右クリックで[フォルダの作成]を選び、順にtrunk、tags、branchesを作成

※2011/02/15追加
Windowsで上記フォルダを作成し、コミットしても可。

●コミットログをメール送信
1.メール送信プログラム(commit-email.pl)をフックプログラムフォルダにコピー

# cd /usr/share/doc/subversion-1.4.2/tools/hook-scripts/
# cp commit-email.pl /var/www/svn/repos01/hooks/
# cd /var/www/svn/repos01/hooks/
# chown apache:apache commit-email.pl

2.commit-email.plを編集
# vi commit-email.pl

#$sendmail = “/usr/sbin/sendmail”;
$smtp_server = “127.0.0.1”;

$sendmail = “/usr/sbin/sendmail”;
#$smtp_server = “127.0.0.1”;

push(@head, “Content-Type: text/plain; charset=UTF-8\n”);
push(@head, “Content-Transfer-Encoding: 8bit\n”);

push(@head, “Content-Type: text/plain; charset=ISO-2022-JP\n”);
push(@head, “Content-Transfer-Encoding: 7bit\n”);

my $command = “$sendmail -f’$mail_from’ $userlist”;

my $command = “nkf | $sendmail -f’$mail_from’ $userlist”;

全てのMTAが8bitに対応している訳ではないので、メールはISO-2022-JPで送信することに決定。
「SMTP server」使用では文字化けしてしまったので、nkfからsendmailに渡す。

3.commit-email.plの動作確認

# ./commit-email.pl /var/www/svn/repos01 1 –from svn@domain01 user01@domain02 -s “[repos01]”

fromを指定したり、subjectに文字列を追加するのは、メールクライアントでの振り分け用。

4.コミット後に動作するフックプログラム(post-commit)をコピー

# cp post-commit.tmpl post-commit
# chown apache:apache post-commit
# chmod 755 post-commit

5.post-commitを編集
# vi post-commit

commit-email.pl “$REPOS” “$REV” commit-watchers@example.org
log-commit.py –repository “$REPOS” –revision “$REV”

export LANG=ja_JP.UTF-8

PATH=”/var/www/svn/repos01/hooks”
FROM=”svn@domain01″
TO=”user01@domain02″
SUBJECT=”[repos01]”
$PATH/commit-email.pl “$REPOS” “$REV” –from $FROM $TO -s “$SUBJECT”
# commit-email.pl “$REPOS” “$REV” commit-watchers@example.org
# log-commit.py –repository “$REPOS” –revision “$REV”

6.動作確認
TortoiseSVNでコミットし、送信されてきたメールが文字化けしていないか?を確認する。
コミット対象が複数かつエンコードが複数ある場合は文字化けするのも止む無し?

●参考サイト

・Linux/Subversion/yumからインストール – MinacoWiki
http://wiki.minaco.net/index.php?Linux%2FSubversion%2Fyum%E3%81%8B%E3%82%89%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB

・Subversion – Linux Wiki
http://oku.edu.mie-u.ac.jp/~okumura/linux/?Subversion

・ごった煮 – CentOS4/CentOS5導入記(覚え書き) – subversionの導入
http://park1.wakwak.com/~ima/centos4_subversion0001.html

・Arakinの玄箱設定(SubVersion)
http://www.arakin.dyndns.org/kuro_svn.php

・svnのコミット時にメールを送信する方法のメモ: 月夜の散歩
http://sliver.cocolog-nifty.com/blog/2008/07/svn_7279.html

●はまりネタ
post-commit動作確認中に以下のエラーメッセージが表示された。

can’t convert string from native encoding to ‘UTF-8’

LANGに「ja_JP.UTF-8」は設定している。

export LANG=ja_JP.UTF-8

googleで「LC_ALLも設定する」記述があったので、i18nを編集し、サーバを再起動。
# vi etc/sysconfig/i18n

LANG=”ja_JP.UTF-8″
LC_ALL=”ja_JP.UTF-8″
SYSFONT=”latarcyrheb-sun16″

・サーバ再起動

# shutdown -r now

状況は変わらず。
しかし、ふとしたことから解決。
原因はパスの設定ミス。

./commit-email.pl “$REPOS” “$REV” –from $FROM $TO -s “$SUBJECT”

$PATH/commit-email.pl “$REPOS” “$REV” –from $FROM $TO -s “$SUBJECT”

相対パスで記述していたのがエラーの原因。
丸一日、悪戦苦闘したけど、解決出来て良かった。

[mobile] イーモバイルのIPアドレス帯域

某システムでイーモバイルからのアクセスを許可しようと思い、イーモバイルのIPアドレス帯域を調査。
調査してみると、公式の情報が無い?
以下が公式っぽいのですが、2008年2月26日更新…。
http://developer.emnet.ne.jp/ipaddress.html
とりあえず設定してみたのですが、アクセスできなかったりする…。
上記URLのIPアドレス帯域以外からアクセスされているようです。
更に調査を進め、ようやく辿り着いたのが以下の>>200。
http://qb5.2ch.net/sec2chd/kako/1245/12459/1245912459.html


適当なイーモバのIPアドレスをwhoisして出てきた技術連絡担当者のIDで
改めてwhoisしたらこれだけIPアドレス帯域あったよ
whois -h whois.nic.ad.jp ^NT5299JP
60.254.192.0/18
111.188.0.0/14
114.48.0.0/14
117.55.0.0/17
119.72.0.0/16

webからwhoisする場合は以下になります。
http://whois.nic.ad.jp/cgi-bin/whois_gw?key=^NT5299JP
検索結果から最上位のIPアドレス帯域だけを選ぶと以下になります。
# http://whois.nic.ad.jp/cgi-bin/whois_gw?key=60.254.192.0/18
# http://whois.nic.ad.jp/cgi-bin/whois_gw?key=111.188.0.0/14
# http://whois.nic.ad.jp/cgi-bin/whois_gw?key=114.48.0.0/14
# http://whois.nic.ad.jp/cgi-bin/whois_gw?key=117.55.0.0/17
# http://whois.nic.ad.jp/cgi-bin/whois_gw?key=119.72.0.0/16
これらの調査結果を元にhttpd.confに設定したのが以下になります。
Allow from 60.254.192.0/18 111.188.0.0/14 114.48.0.0/14 117.55.0.0/17 119.72.0.0/16
て言うか、公式でIPアドレス帯域を公開して下さい。>イーモバイル様

[PC] Windows7搭載ノートパソコン購入

先々週になりますが、10/18(日)にWindows7搭載ノートパソコンを購入しました。
購入したのはPanasonicのCF-S8HYEPDR
ノートパソコンを購入しようと思った理由は、今公開できる中では主に3つあります。
1つ目は家と会社で使用しているパソコンが古くなってきたから。
会社のパソコンを購入したのは2005年4月なので4年6カ月前。
家のパソコンを購入したのは1996年7月で13年3カ月前!!
会社はともかく、家のパソコンは、もう限界です。
2つ目は家と会社で同じメールを2回受信するのが時間の無駄だと思っていたから。
USBメモリでデータを共有する方法もありますが、パソコンも古くなっていることですし、ノートパソコンを購入し共有することを選択しました。
3つ目はWindows7が発売になるから。
過去を振り返れば、新OSに飛びついていた訳ではないですが、パソコンを欲しいと思っていたところなので、タイミングが良いです。
ノートパソコンを購入するに当たって、検討した条件は以下の通り。
・液晶サイズは12インチ
・Windows7 Professional
・Office Personal 2007 + with PowerPoint 2007
持ち運びするとなると重量は軽い方が良いですが、かと言って液晶が小さすぎるとメインマシンにはしづらい。
となると液晶サイズは12インチがバランスが取れているでしょうか。
OSのエディションは、会社で使用するとなるとドメイン参加が必須なのでProfessional。
Word、Excel、PowerPointも使いたい。
これらの条件を満たしていたのがCF-S8HYEPDRでした。
と言う訳で10/18(日)にビックカメラで購入してきました。
購入したと言ってもWindows7発売が10/22(木)なので、予約購入です。
実機が届いたのは10/24(土)。
1週間が経って、ようやくセットアップも落ち着いてきたかなぁと言う感じです。
まずまず満足していますが、以下3つのソフトの動作に問題がありました。
・Internet Explorer8
・ウイルスバスターcorp 7.3
・winscp 日本語化
IE8はBasic認証付きのページが見れなくなってしまいました。
IDとパスワードを入力しても、firefoxで見れるページが見れません。
おかしいと思い検索してみたら以下のページが出てきたので、設定してみました。
・IE8導入後、Basic認証付きのURLが利用できない
http://community.tabbrowser.jp/forum/viewtopic.php?t=3597
ダイアログからの入力では相変わらずダメですが、URLにIDとパスワードを埋め込んだら見れるようになりました。
ウイルスバスターcorp 7.3は、インストールできない気がします。
仕方がないので、現在は一時的に別のアンチウイルスソフトを使用しています。
WinSCPは日本語化が出来ません。
仕方がないので英語表記のまま使用しています。
英語が得意で良かったー(棒読み)。
ノートパソコンを購入した今は公開できない方の理由は、気が向いたら3ヶ月後に公開します。

[mixi] ひろとHT邸オフ

「ひろとHT」さんの日記にコメントを残したら罠が仕掛けられていて、ご自宅にご招待されてしまいました。
ご招待されたのは他に「みやび(・ω・)ノ」さんと「Booちゃん。」さんと「りえぞう」さん。
ボウリングで知り合った面々と何故か鍋パーティです。
ボウリング道具一式を持っていくべきか?最後まで悩みました(^_^;)
オフの集合場所は中央線の某駅。
初めて降りる駅で全てが新鮮。
キョロキョロしてたら、みやび(・ω・)ノさんに見つかってしまいました。
すぐに他のメンバーも合流し、ひろとHT号で買出しへ。
鍋つゆは「横綱ちゃんこ鍋(みそ味)」を選択。
何となく、それを選びたくなるメンバー構成だったので(^_^;)
鍋は美味しかったですよ♪
さすが、みやび(・ω・)ノ料理長!!
ご自宅は広かったぁ。
転勤だから仕方がないとは言え、引っ越しするのがもったいない。
「パターゴルフ」セットが置きっぱなしになっていても、全然問題なし。
もちろん記念に遊ばせてもらいましたよ。
二次会はボウリング…ではなくカラオケ。
歌うのは、いつ以来だろう?
アニソンとか歌いました。
歌う曲はもちろん…。
久々に楽しい一日でした。

[mobile] 905i/705iシリーズ23機種を開発

DoCoMoが最新機種の発売を発表しましたね。
905iシリーズの特徴は以下の通り。

世界で使える、最新機能を全て搭載注意1 した「ALL IN 世界ケータイ」
・「WORLD WING®(3G+GSM)」や「FOMA®ハイスピード(HSDPA)」、「ワンセグ」、「GPS」、「2in1®」、「DCMX®」、「iDTM」と、最新の機能を全て搭載注意1。
・動画番組に対応した「Music&VideoチャネルTM」や、音声入力に対応した「直感ゲームTM」などエンターテインメント機能を拡充。
・「地図アプリ」の搭載や「きせかえツール®」、「2in1」のバージョンアップなど、便利機能の充実。
・緊急速報「エリアメール®」や、「シンプルメニュー」、「拡大もじ」などのユーザビリティにも配慮したあんしん機能の充実。

905iシリーズ発売に合わせ、大量の専用コンテンツが投入されます。
コンテンツの詳細は「905iシリーズ★コンテンツリスト」に書いてあります。
そのうち、2つの開発に携わっています…。
盆と正月が終わったばかりだと言うのに、また盆と正月だよ orz