qmail 1.03 インストール・設定
さあいよいよ恐怖のメールサーバーのインストールです。メールサーバーは今まで以上にネットワーク
関係のスキルが要求されるもので、なおかつ有名どころのSendmailなどを拒否してqmailなんかそりゃもう大変です、
が、やってやれないことはありません、がんばりましょう!
インストールの順番としては qmail > ucspi-tcp > vpopmail > ezmlm > autoresponder > qmailadmin となります。なるべくシンプルにインストールできるよう daemontools や relay-ctrl などのツールは省略しています。何度もインストールを繰り返してたどり着いた結果がこれとなりました。
※ダウンロードしたディレクトリ(私の場合はpackage) へ移動して解凍。その後パッチを当てます。
文中の緑文字「host.yourdomain.com」は 各自の設定に合わせて変更してください。
と入力すると以下のメッセージが表示されるはずです。
以下の設定でpostmaster、MAILER-DAEMON、rootあてのメールは/var/qmail/aliasに保存されます。
次にmaildirmakeコマンドを使って/var/qmail/aliasにMaildirを作成して、その後aliasディレクトリの属性を644に変更します。
qmailの起動スクリプトを/var/qmail に rcという名前でコピーします。
先ほどコピーした/var/qmail/rcファイルを少しだけ修正します。
Maildir形式に変更したら、次に新規ユーザー作成時に自動でMaildirがユーザーのホームディレクトリに作成されるように設定します。
ダウンロードしたディレクトリに移動していつものように解凍します。
グループ「vchkpw」を追加します。vchkpwという名前の由来はvpopmailの以前の名称らしいです。
POP Before SMTPに対応させるには、configureを次のように実行します。
※ --enable-roaming-users=y : POP before SMTP機能を使用
POP Before SMTPの仕組みでPOP認証の際に記録されたIPアドレスを40分毎に整理して3時間以上経過したアドレスをCRONによって削除するスクリプトです。
vadddomainコマンドにより、次のファイルに設定が追加されます。設定ファイルが存在しない場合は自動的に作成されます。
同時にvpopmailのホームディレクトリにも新しいディレクトリと設定ファイルが作成されます。
それぞれのランレベルで起動されるように、起動スクリプトとリンクを張ります。
qmailの起動と終了は以下のコマンドです。設定を変えるたびに再起動しておきましょう。
緑字の部分は htmldir=のところがapacheで設定されているドキュメントルートです。同じくcgibindir=はcgi-binのディレクトリです。 redhat8.0では以下のままでOKだと思いますが、変更済みの人は自分の環境に合わせてください。 ちなみにapacheを自分でインストールした場合のパスは /usr/local/apache2/htdocs/と /usr/local/apache2/cgi-bin/ になります。
早速ブラウザ下のURLを打ち込んでアクセスしましょう!
http://www.yourdomain/cgi-bin/qmailadmin
Vpopmailで作成したドメイン名とpostmasterのパスワードを入力すればログインできます。
その後の運用・不正中継対策など
インストール前に構成を考える
構成としてはqmailを使用してヴァーチャルドメインを使用します。それを最終的にはweb上で簡単にPOPアカウントの追加や削除などの設定ができるようにqmailadminを導入します。qmailadminを使用するためにメーリングリストのツールも一緒にインストールします。一応構成としてはメーリングリストの使用まで考えています。インストールの順番としては qmail > ucspi-tcp > vpopmail > ezmlm > autoresponder > qmailadmin となります。なるべくシンプルにインストールできるよう daemontools や relay-ctrl などのツールは省略しています。何度もインストールを繰り返してたどり着いた結果がこれとなりました。
まずはqmailと関連ツールのダウンロード
適当なディレクトリに以下のパッケージをダウンロードしてください。私の場合はrootディレクトリにpackageという名前のフォルダを作りそこにまとめて保存しています。- ■qmail 1.0.3
- ftp://ftp.ntnu.no/pub/unix/mail/qmail/qmail-1.03.tar.gz
- ■qmail-date-localtime.patch
- ftp://ftp.nlc.net.au/pub/unix/mail/qmail/qmail-date-localtime.patch
- ■ucspi-tcp 0.88
- http://tools.qmail.jp/ucspi-tcp/ucspi-tcp-0.88.tar.gz
- ■vpopmail 5.2.1
- http://www.inter7.com/vpopmail/vpopmail-5.2.1.tar.gz
- ■autoresponder 2.0.2
- http://www.inter7.com/devel/autorespond-2.0.2.tar.gz
- ■ezmlm 0.53
- http://cr.yp.to/software/ezmlm-0.53.tar.gz
qmail本体のインストール
qmail本体は小さくて構成はシンプルです。メールヘッダに記載される日付・時間情報を日本標準時間に合わせるためにインストール前にパッチを当てます。qmailをインストールする前にはqmail用のディレクトリとユーザー・グループを作っておく必要があります。# mkdir /var/qmail # groupadd -g 310 nofiles
# useradd -g nofiles -u 311 -s /bin/false -d /var/qmail/alias alias # useradd -g nofiles -u 312 -s /bin/false -d /var/qmail qmaild # useradd -g nofiles -u 313 -s /bin/false -d /var/qmail qmaill # useradd -g nofiles -u 314 -s /bin/false -d /var/qmail qmailp # groupadd -g 320 qmail # useradd -g qmail -u 321 -s /bin/false -d /var/qmail qmailq # useradd -g qmail -u 322 -s /bin/false -d /var/qmail qmailr # useradd -g qmail -u 323 -s /bin/false -d /var/qmail qmails
※ダウンロードしたディレクトリ(私の場合はpackage) へ移動して解凍。その後パッチを当てます。
# cd /package # tar xvfz qmail-1.03.tar.gz # cd qmail-1.03/ # patch -p1 < ../qmail-date-localtime.patch
文中の緑文字「host.yourdomain.com」は 各自の設定に合わせて変更してください。
# make setup check # ./config-fast host.yourdomain.com
と入力すると以下のメッセージが表示されるはずです。
Your fully qualified host name is host.yourdomain.com Putting host.yourdomain.com into control/me... Putting yourdomain.com into control/defaultdomain... Putting yourdomain.com into control/plusdomain... Putting host.yourdomain.com into control/locals... Putting host.yourdomain.com into control/rctphosts... Now qmail will refuse to accept SMTP message expect to host.yourdomain.com. Make sure to change rctphosts if you add hosts to locals or virtual damains!
以下の設定でpostmaster、MAILER-DAEMON、rootあてのメールは/var/qmail/aliasに保存されます。
# cd /var/qmail/alias # touch .qmail-postmaster .qmail-mailer-daemon .qmail-root # chmod 644 .qmail*
次にmaildirmakeコマンドを使って/var/qmail/aliasにMaildirを作成して、その後aliasディレクトリの属性を644に変更します。
# /var/qmail/bin/maildirmake ~alias/Maildir # chown -R alias /var/qmail/alias/Maildir
qmailの起動スクリプトを/var/qmail に rcという名前でコピーします。
# cp /var/qmail/boot/home /var/qmail/rc # /var/qmail/rc &
先ほどコピーした/var/qmail/rcファイルを少しだけ修正します。
qmail-start ./Mailbox splogger qmail 太字の部分を qmail-start ./Maildir/ splogger qmail このように修正します。 最後にスラッシュをつけるのを忘れないようにしましょう。
Maildir形式に変更したら、次に新規ユーザー作成時に自動でMaildirがユーザーのホームディレクトリに作成されるように設定します。
# /var/qmail/bin/maildirmake /etc/skel/Maildir
tcpserverのインストール
ucspi-tcpパッケージの一部としてインストールされるみたいです。実はよくわからないツールなのですが、qmailの起動を制御できるみたいですね。(/usr/local/binにtcpserverがインストールされます)# cd /package # tar xvfz ../ucspi-tcp-0.88.tar.gz # cd ucspi-tcp-0.88/ # make setup check
qmail の 「sendmail」 wrapper (ラッパー?)
qmailnihasendmail互換プログラムが/var/qmail/bin/sendmailという形で入っています。 このqmail の "sendmsil" wrapper を 通常のsendmailぱすにリンクを貼って使えるようにします。 これでおなじみのcgiからのsendmailパスが使用できるはずです。sendmailがインストール済みの場合はrpmコマンドで削除しちゃいましょう。 私はこの作業だけでCGIのメールフォームからqmailで送信可能になりました。# rpm -e sendmail (sendmailがインストール済みの状態) # ln -s /var/qmail/bin/sendmail /usr/lib/sendmail # ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
vpopmailのインストール
いよいよヴァーチャルドメイン対応POP Before SMTP機能付きvpopmailのインストールです。ちなみにqmailでもヴァーチャルドメイン化は出来るみたいですがここではvpopmailを使用した構成を考えているのでやってみたい人は@ITを参照してください。ダウンロードしたディレクトリに移動していつものように解凍します。
# cd /package # tar xvfz vpopmail-5.2.1.tar.gz # cd vpopmail-5.2.1
グループ「vchkpw」を追加します。vchkpwという名前の由来はvpopmailの以前の名称らしいです。
# groupadd -g 89 vchkpw # useradd -g vchkpw -u 89 vpopmail
POP Before SMTPに対応させるには、configureを次のように実行します。
※ --enable-roaming-users=y : POP before SMTP機能を使用
# ./configure --enable-roaming-users=y # make # make install-strip
POP Before SMTPの仕組みでPOP認証の際に記録されたIPアドレスを40分毎に整理して3時間以上経過したアドレスをCRONによって削除するスクリプトです。
# crontab -e 40 * * * * /home/vpopmail/bin/clearopensmtp 2>&1 > /dev/null
vpopmailでヴァーチャルドメインの追加
qmailadminで出来れば言うこと無いのですが、残念ながらコマンドでするしかありません。 まずはvpopmailのbinディレクトリに移動してコマンドを入力します。 ドメインを追加するとパスワードを2回聞いてきます。このパスワードが登録したドメインのpostmasterのパスワードとなります。# cd /home/vpopmail/bin # ./vadddomain yourdomain.com
vadddomainコマンドにより、次のファイルに設定が追加されます。設定ファイルが存在しない場合は自動的に作成されます。
/var/qmail/control/locals /var/qmail/control/rcpthosts (rcphostsが50行以上の場合は/var/qmail/control/morercpthostsになる) /var/qmail/control/virtualdomains /var/qmail/users/assign /var/qmail/users/cdb
同時にvpopmailのホームディレクトリにも新しいディレクトリと設定ファイルが作成されます。
/home/vpopmail/domains/yourdomain.com /home/vpopmail/domains/yourdomain.com/postmaster/Maildir /home/vpopmail/domains/yourdomain.com/vpasswd /home/vpopmail/domains/yourdomain.com/vpasswd.cdb
qmail起動スクリプトの作成
ここからが少しややこしいのですが、/etc/rc.d/init.d/にqmailという名前で起動ファイルを作成してやる必要があります。 スクリプトは以下のようになります。※これはvpopmailとtcpserverをインストールしていないと意味がありません。 途中で動作テストなども出来ません。が、あとで変更したりいろいろするファイルなので最終形態をここで作成しておきます。 下記のスクリプトをコピペするかもしくはこちらからダウンロードしてください。 スクリプト内の緑字部分は自分の環境に合わせて随時変更してください。#!/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 [host.yourdomain.com] -v -x /home/vpopmail/etc/tcp.smtp.cdb -u [qmaildのUID] -g [nofilesのGID] 0 smtp /var/qmail/bin/qmail-smtpd 2>&1 | /var/qmail/bin/splogger smtpd 3 & #Vpop 以下は改行せずに一行で... /usr/local/bin/tcpserver -H -R -l [host.yourdomain.com] -v 0 pop3 /var/qmail/bin/qmail-popup [host.yourdomain.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 if echo rm -f /var/lock/qmail ;; *) echo "Usage: S99qmail {start|stop}" exit 1 esac exit 0
それぞれのランレベルで起動されるように、起動スクリプトとリンクを張ります。
# 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
qmailの起動と終了は以下のコマンドです。設定を変えるたびに再起動しておきましょう。
# /etc/rc.d/init.d/qmail stop # /etc/rc.d/init.d/qmail start
ezmlmのインストール
qmailadminのインストールに必須なためメーリングリスト作成ツールezmlmをインストールしておきましょう。 ここでは解凍してインストールするだけしか解説していません。(/usr/local/bin/ezmlm下にezmlmがインストールされます)# cd /package # tar xvfz ezmlm-0.53.tar.gz # cd ezmlm-0.53 # make # make man # make setup
autoresponderのインストール
autoresponder名前の通り、自動応答機能を実現するqmailアドオンツールのようです。 どちらにしろqmailadminのインストールに必須なのでよくわからないものであろうが何であろうがここまできたら入れるしか道はありません。 このツールの使用方法としてはユーザーのホームディレクトリに「.qmail」ファイルを作成していろいろな設定が出来るようです。 詳しくは@ITを見てください。# cd /package # tar xvfz autorespond-2.0.2.tar.gz # cd autorespond-2.0.2/ # make # make install
いよいよ...qmailadminのインストール
すべてのインストールはうまくいきましたか?お疲れ様です。このインストールが終わったらあとは楽しい作業ばかりです、頑張りましょう。緑字の部分は htmldir=のところがapacheで設定されているドキュメントルートです。同じくcgibindir=はcgi-binのディレクトリです。 redhat8.0では以下のままでOKだと思いますが、変更済みの人は自分の環境に合わせてください。 ちなみにapacheを自分でインストールした場合のパスは /usr/local/apache2/htdocs/と /usr/local/apache2/cgi-bin/ になります。
# cd /package # tar xvfz qmailadmin-1.0.6.tar.gz # cd qmailadmin-1.0.6 以下は改行せずに一行で... # ./configure --enable-htmldir=/var/www/html/ --enable-cgibindir=/var/www/cgi-bin/ make make install-strip
早速ブラウザ下のURLを打ち込んでアクセスしましょう!
http://www.yourdomain/cgi-bin/qmailadmin
Vpopmailで作成したドメイン名とpostmasterのパスワードを入力すればログインできます。
その後の運用・不正中継対策など