【ぷろじぇくと64(ろくよん)】 ~第4日目:qmailの長い道・・・~

レンタルサーバー
BIG-server.com

簡単・はやい・大容量・どんな目的にもマッチするレンタルサーバー

HOME プライス お見積もり・プラン選択 お申し込み ユーザーサポート お問い合わせ

■ 【ぷろじぇくと64(ろくよん)】 ~T-Bananaサーバで64ビットOSを動かすぞっ!!の巻~

1日目 2日目 3日目 4日目 5日目 6日目 7日目
8日目 9日目 10日目 11日目 12日目 13日目 14日目
目次に戻る
第4日目:qmailの長い道・・・

前日までにApacheとPHPをインストールできたので、今日はメールサーバを
インストールしよう。

T-Bananaやbananaサーバではメールサーバシステムを以下のソフトウェアを
使用して構築しています。

・qmail (バージョンは 1.03)
・vpopmail (バージョンは 5.4.13)
・qmail-submission (中身は qmail 1.03にパッチを当てたもの)
・daemontools (バージョンは 0.76)
・ucspi-tcp (バージョンは 0.88)

ucspi-tcpっていうのはいわゆるtcpserverの事です。
daemontoolsとucspi-tcpを使うのは、万一pop3やsmtpのプロセスがダウンしても、
自動的に立ち上げなおしてくれる(プロセス監視してくれる)という便利な機能が
あるからです。
という事でqmailとvpopmailを一気にインストール。

・・・って、vpopmailのところでエラー。なんでだろう。

/usr/bin/install -c -o vpopmail -m 711 -g vchkpw dotqmail2valias
/var/vpopmai
l/bin/dotqmail2valias
Please enter password for postmaster:
enter password again:
could not open assign file
Error. Failed to add domain to assign file
Error: Could not update file
./setup.sh: cannot create /var/vpopmail/domains/w44.maido3.cc/.qmail-root:
No such file or directory
./setup.sh: cannot create
/var/vpopmail/domains/w44.maido3.cc/.qmail-postmaster:
No such file or directory
*** Error code 2

Stop in /root.
w44#

あれっ、qmailからのファイルが無いって言ってるなあ。
ちょっとqmailのインストール結果を見てみたら・・・・

./install
ELF interpreter /libexec/ld-elf32.so.1 not found *** Signal 6

Stop in /tmp/qmail-1.03-v3-p1-for6.2.


エラーかよっ!どうも固めたパッケージに32bit版のオブジェクトが入ってて
それが「共用ライブラリがないぞ」と言ってきた。

しょうがないので、make setup check の前に make clean を1行追加して
qmailを再インストールしたら、成功。
完全なソースからインストールするなら、こんな行は必要ないんだけどなあ・・・
まあ小手先で作業しているツケかなあ。
(qmailの構築時のパラメータはココを参照して下さい。)

そして再度vpopmailのディレクトリにできた拡張子 .o のファイルを
rm *.o で全部消して再インストール。結果は成功。
(vpopmailの構築時のパラメータはココを参照して下さい。)

んで、qmail-submission は何もエラーが出ずにインストール成功。
(qmail-submissionの構築時のパラメータはココを参照して下さい。)

これでメールシステムの主要部分はインストールできたけど、
動かす為にはucspi-tcpとdaemontoolsを入れないといけない。
今日はもう時間も無いし、、、、、明日にしようっと。


インストールの時にはいちいちコマンドをタイプするのは
大変なので、T-Bananaやbananaのインストールパッケージでは
各ソフトウェア毎に「setup.sh」というシェルスクリプトを作り
その中でパラメータとかを記述して実行しています。
(もう当たり前の話なのですが・・・・)

本当は1つずつのソフトウェア毎に「このコマンドはこういう意味で~」
ってな解説を入れた方が良いんだろうけど、とっても大変なので
今回は概要だけを説明します。

[qmail]
まずインストール先のディレクトリを作ります。

mkdir -p /var/qmail
mkdir -p /var/qmail/supervise
mkdir -p /var/qmail/supervise/pop3d
mkdir -p /var/qmail/supervise/smtpd
mkdir -p /var/qmail/supervise/qmail

次にqmailで使用するユーザやグループを登録します。

pw groupadd nofiles -g 81
pw groupadd qmail -g 201
pw useradd -n alias -u 81 -g nofiles -d /var/qmail/alias -s /sbin/nologin
pw useradd -n qmaild -u 82 -g nofiles -d /var/qmail -s /sbin/nologin
pw useradd -n qmaill -u 83 -g nofiles -d /var/qmail -s /sbin/nologin
pw useradd -n qmailp -u 84 -g nofiles -d /var/qmail -s /sbin/nologin
pw useradd -n qmailq -u 85 -g qmail -d /var/qmail -s /sbin/nologin
pw useradd -n qmailr -u 86 -g qmail -d /var/qmail -s /sbin/nologin
pw useradd -n qmails -u 87 -g qmail -d /var/qmail -s /sbin/nologin

そしてソースのコンパイル、できあがったオブジェクトのインストールを行ないます。

make setup check

mkdir -p /var/qmail/alias/Maildir

ここまでできたら、次にqmailの各設定ファイルを作成します。
またFreeBSDをインストールした時にいっしょに入ってきたsendmailを消して
qmail配下のものに置き換えます。

hostname > /var/qmail/control/me
hostname > /var/qmail/control/defaultdomain
hostname > /var/qmail/control/plusdomain
echo "104857600" > /var/qmail/control/databytes
echo "localhost" > /var/qmail/control/locals
echo "1" > /var/qmail/control/mfcheck

rm -rf /usr/sbin/sendmail*
ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail

mv /var/qmail/bin/qmail-smtpd /var/qmail/bin/qmail-smtpd2
echo '#!/bin/sh' > /var/qmail/bin/qmail-smtpd
echo 'ulimit -d 1024' >> /var/qmail/bin/qmail-smtpd
echo 'exec /var/qmail/bin/qmail-smtpd2 ${1+"$@"}' >> /var/qmail/bin/qmail-smtpd

touch /var/qmail/alias/.qmail-postmaster /var/qmail/alias/.qmail-mailer-daemon /var/qmail/alias/.qmail-root chmod 644 /var/qmail/alias/.qmail*

qmailをdaemontoolsとucspi-tcp(tcpserver)から起動されるように
必要なディレクトリ・設定ファイルを用意します。

echo '#!/bin/sh' > /var/qmail/supervise/pop3d/run
echo 'exec env - PATH="/var/qmail/bin:/var/vpopmail/bin:$PATH" \' >> /var/qmail/supervise/pop3d/run
echo 'tcpserver -R -H -l0 0 pop3 qmail-popup '`hostname`' \'
>> /var/qmail/supervise/pop3d/run
echo 'vchkpw qmail-pop3d Maildir 2>&1' >> /var/qmail/supervise/pop3d/run

echo '#!/bin/sh' > /var/qmail/supervise/qmail/run
echo 'exec env - PATH="/var/qmail/bin:$PATH" \' >> /var/qmail/supervise/qmail/run
echo 'qmail-start ./Maildir splogger qmail' >> /var/qmail/supervise/qmail/run

echo '#!/bin/sh' > /var/qmail/supervise/smtpd/run
echo 'exec env - PATH="/var/qmail/bin:/var/vpopmail/bin:$PATH" \' >> /var/qmail/supervise/smtpd/run
echo 'tcpserver -R -H -x /var/vpopmail/etc/tcp.smtp.cdb \' >> /var/qmail/supervise/smtpd/run
echo '-u 82 -g 81 -l0 0 smtp qmail-smtpd 2>&1' >> /var/qmail/supervise/smtpd/run

chmod 0755 /var/qmail/bin/qmail-smtpd /var/qmail/supervise/pop3d/run /var/qmail/supervise/qmail/run
/var/qmail/supervise/smtpd/run

mkdir -p /var/service
ln -s /var/qmail/supervise/pop3d /var/service/pop3d
ln -s /var/qmail/supervise/smtpd /var/service/smtpd
ln -s /var/qmail/supervise/qmail /var/service/qmail

最後にqmailで使われるツールをコピーして、終了です。

cp etc/qmHandle /var/qmail/binl
cp etc/badhelo /var/qmail/controll
cp etc/badmailfrom /var/qmail/controll
cp etc/badmailto /var/qmail/controll
cp etc/signatures /var/qmail/controll


[vpopmail]
乱数を生成するツール(rand)の呼び出しの準備をします。
(これはシェルスクリプト実行時に内部で取り扱える様にする記述です。)

_random=`rand`

インストール先のディレクトリ、vpopmailで使用するユーザやグループを作ります。

mkdir /var/vpopmail
pw groupadd vchkpw -g 89
pw useradd -n vpopmail -u 89 -g vchkpw -d /var/vpopmail -s /sbin/nologin

configureでソースをコンパイルし、makeで実行用モジュールを作り、
make install でディレクトリへのインストールを行ないます。

./configure --enable-roaming-users=y --enable-clear-passwd=n --enable-tcprules-prog=/usr/local/bin/tcprules --enable-tcpserver-file=/var/vpopmail/etc/tcp.smtp --enable-relay-clear-minutes=30 --enable-ip-alias-domains=n --enable-qmail-ext=n --enable-defaultquota=1073741824,10000C
make
make install

smtpサーバへのアクセスを制御するデータベースであるtcp.smtpを作成します。
このデータベースはpop before SMTPでメール受信時に認証された
IPアドレスを記録します。そして一定期間の間は送信時にこのデータベースで認証の確認が行なわれます。
(受信してから一定時間はメールが送信できるのは、このデータベースのおかげです。)

echo '127.0.0.1:allow,RELAYCLIENT=""' > /var/vpopmail/etc/tcp.smtp
echo "" >> /etc/crontab

次にpop before SMTPの機能で蓄積されたtcp.smtpのクリア処理をcronに登録します。

_check=`grep /var/vpopmail/bin/clearopensmtp /etc/crontab`
if [ ! -n "$_check" ] ; then
echo "15,45 * * * * root /var/vpopmail/bin/clearopensmtp 2>&1 > /dev/null" >> /etc/crontab
fi

最後にサーバに割り当てられているドメイン名(サーバアドレス)を
登録します。登録時にはパスワードが必要ですが、一番最初の所で割り当てした乱数

if [ ! -d /var/vpopmail/domains/`hostname` ] ; then
/var/vpopmail/bin/vadddomain `hostname` $_random
echo $_random >> /root/.`hostname -s`
fi

echo '&server@ml.ninki.net' > /var/vpopmail/domains/`hostname`/.qmail-root
echo '#' > /var/vpopmail/domains/`hostname`/.qmail-postmaster

[qmail-submission]
qmailのところで言い忘れたけど、パッチファイルを適用したい場合には、コンパイル
(configureとか)の前に実行します。
(パッチファイルは実は既に適用しています。まあ検索して出てくるものと同じですし
適用方法も同じ感じです。)
今回はまずmakeしてコンパイル・実行ファイルの作成をします。
make

出来上がった実行ファイルのうち、サブミッションポート用のSMTPの
モジュール(smtpdとsmtpd-submission)をコピーします。
そしてdaemontoolsから起動される様にリンクを貼ります。
cp -i ./qmail-smtpd /var/qmail/bin/qmail-smtpd-submission cp -r ./smtpd-submission /var/qmail/supervise/smtpd-submission/ ln -s /var/qmail/supervise/smtpd-submission /var/service/smtpd-submission

3日目に戻る。   5日目に続く。

1日目 2日目 3日目 4日目 5日目 6日目 7日目
8日目 9日目 10日目 11日目 12日目 13日目 14日目
目次に戻る


Copyright (C) 1997-2013, BIG-server.com. All Rights Reserved.
レンタルサーバー BIG-server.com
Powered By Maido3.com