2022年8月、ホームページを全面リニューアルしました! 情報を分かりやすくお伝えできるサイト作りを目指してまいります。

Solarisでqmailを使おう!

qmailのインストールは、既に説明したがSolaris8にインストールする場合、大まかの流れは既に説明した方法と同じだが、一部エラーがでたので対処方法とインストール全体を再度説明する。

インストール先のOSはSolaris8である。
メールサーバのホスト名は、仮にhoge.hogehoge.comとして説明する。


1.前準備

(1) Sendmailの削除

sendmailが動いてる場合、起動を停止させ、ランレベルを停止に設定する。
さらに、以下の処理を施す。

# mv /usr/lib/sendmail /usr/lib/sendmail.bak
# chmod 0 /usr/lib/sendmail.bak

(2) qmailのソースをゲット

ここ で入手できる。
小生のインストールソースは、qmail-1.03.tar.gzであった。

(3) qmailのパッチファイルのゲット

基本的には、パッチは必要ないが、qmailの生成するヘッダー内の日付をローカルタイムに修正するパッチをあてたので、これもダウンロードする。
qmail-date-localtime.patchここ でゲットできる。

(4) checkpassword

checkpasswordは、パスワードチェックプログラムでpop認証で使用する。
checkpassword-0.90.tar.gzここ でゲットできる。

(5) tcpserver

tcpserverは、inetdと同じくIPの接続要求を受け付け、指定されたプログラムを起動する。
ucspi-tcp-0.88.tar.gzここ でゲットできる。


2.インストール

ソースディレクトリは、/usr/local/srcで行うことを前提とする。

(1) qmailの解凍とパッチの適用

ルート権限で実行する。

# tar zxvf qmail-1.03.tar.gz
# cd qmail-1.03
# patch < qmail-date-localtime.patch

(2) qmailディレクトリの作成

ソースをコンパイルしても、qmailは自分のディレクトリを作らない。
したがって、あらかじめディレクトリを作っておく必要がある。

# mkdir /var/qmail

(3) ユーザとグループの登録

qmailで使用するユーザとグループを作成する。必要なユーザとグループを以下に示す。

● ユーザ

alias
qmaild
qmaill
qmailp
qmailq
qmailr
qmails

● グループ

qmail
nofiles

# groupadd nofiles
# adduser -g nofiles -s /bin/true -d /var/qmail/alias alias
# adduser -g nofiles -s /bin/true -d /var/qmail qmaild
# adduser -g nofiles -s /bin/true -d /var/qmail qmaill
# adduser -g nofiles -s /bin/true -d /var/qmail qmailp

# groupadd qmail
# adduser -g qmail -s /bin/true -d /var/qmail qmailq
# adduser -g qmail -s /bin/true -d /var/qmail qmailr
# adduser -g qmail -s /bin/true -d /var/qmail qmails

(4) qmailのコンパイル

qmailを展開したディレクトリで、

# make setup check

ここで、小生の場合は、エラーが発生した!以下のエラーがでた。

/usr/ucb/cc: language optional software package not installed

これは、単にgccを使え!と言うことなのでgccがインストールされてるなら以下のようシンボルリンクを張る(インストールされてなければインストールしてください)。

# mv /usr/ucb/cc /usr/ucb/cc.bak
# ln -s /usr/local/bin/gcc /usr/ucb/cc

これで、再度makeに挑戦する。

# make clean
# make setup check

これでコンパイルされ、/var/qmailに必要なファイルがインストールされる。

(5) qmailのイニシャライズ

次に、qmailのイニシャライズを行うコマンドラインから、

# ./config-fast hoge.hogehoge.com            ← 自ホストFQDN

これを行うことにより、/var/qmail/controlディレクトリに以下のファイルが出来ていることを確認する。

defaultdomain
defalthost
locals
me
plusdomain
rcpthosts

これらのファイルが有れば良い。

(6) エイリアスの登録

qmailが使用する最低限のエイリアスを登録する。登録は以下のようにする。

# cd /var/qmail/alias
# touch .qmail-postmaster
# touch .qmail-mailer-daemon
# touch .qmail-root

以上、全てのファイルにパーミッションを与える。

# chmod 644 .qmail*

(7) qmailの起動ファイルのコピー

qmailのブートファイルをrcファイルとしてコピーする。
/var/qmail/aliasがカレントディレクトリである場合、

# cd ../boot
# cp home ../rc

(8) rcファイルの編集

rcファイルを以下のように訂正する。

# cd ../
# vi 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

(9) /var/qmail/controlディレクトリへファイルの追加及び編集

/var/qmail/controlディレクトリのファイルを追加修正する。
現在のファイルは、以下である。

# ls -al
defaultdomain
defaulthost
locals
me
plusdomain
rcpthosts

taro@hogehoge.comのようにメール配送が出来るように以下のファイルを追加する。

# vi envnoathost
hogehoge.com

# vi plusdomain
hogehoge.com

さらに、以下のファイルを確認して以下のようになっていなければ編集すること。

# cat defaultdomain
hogehoge.com

# cat defaulthost
hoge.hogehoge.com

# cat locals
localhost
hoge.hogehoge.com
hogehoge.com

# cat me
hoge.hogehoge.com

# cat rcpthosts
localhost
hoge.hogehoge.com
hogehoge.com

(10) maildir形式の設定

qmailは配送形式が標準でmaildir形式を採用しているため、登録ユーザのHOMEディレクトリにMaildirディレクトリを
設置し、メールの配送先にする。
Solarisでは、/export/homeとなるので注意!

# /var/qmail/bin/maildirmake /export/home/<ユーザ名>/Maildir
# chown -R <ユーザ名>:<グループ名> /export/home/<ユーザ名>/Maildir
# echo “./Maildir/” > /export/home/<ユーザ名>/.qmail
# chown -R <ユーザ名>:<グループ名> /export/home/<ユーザ名>/.qmail


3.プロセスと動作確認

(1) qmailを動かしてみる

qmailのデーモンは、/var/qmail/rcを実行することにより動作する。したがって、以下のように実行する。

# csh -cf /var/qmail/rc &

(2) プロセスの確認

プロセスが起動しているか、psコマンドで確認する。

# ps axw | more

省略

-sh -cf /var/qmail/rc
qmail-send
splogger qmail
qmail-lspawn ./Maildir/
qmail-rspawn
qmail-clean

省略

以上が立ち上がっていれば良い。

(3) 動作確認

動作確認には、qmail-injectを使用する。

# /var/qmail/bin/qmail-inject
to: taro
TEST
ctrl+D
#

送信しているか確認。

# cat /var/log/maillog

省略

内容から判断して、メールを配送した形跡が有れば成功!


4.自動起動の設定

qmailを再起動したときに自動的に起動させるため、/etc/rc.d/rc.localファイルに以下の記述を追加する。

# vi /etc/rc.d/rc.local

# qmail boot-up

if [ -f /var/qmail/rc ] then
/bin/csh -cf /var/qmail/rc &
fi


5.tcpserverのインストール

(1) tcpserverをインストール

smtpサーバの起動設定を行う前に、tcpserverをインストールする。

# tar zxvf ucspi-tcp-0.88.tar.gz
# cd ucspi-tcp-0.88
# make setup check


6.smtpサーバの起動設定

(1) inetd.confの編集

smtpモジュールは、qmail-smtpを使用する。したがって、inetd.confに以下の記述を追加する。

# vi /etc/inetd.conf
 
省略
 
smtp stream tcp nowait qmaild /usr/sbin/tcpd /var/qmail/bin/tcp-env /var/qmail/bin/qmail-smtpd
 
省略

# killall -HUP inetd
 
(2) TCP Wapperによるセキュリティ(不正中継防止)

inetd.confにsmtpセクションを追加したので、当然Wapperでセキュリティ設定をしよう!
以下のように、hosts.allowに追加する。

#qmail RELAY
tcp-env: 192.168.255.6, 127.0.0.1 : setenv = RELAYCLIENT              ← 自ホストのIPとローカルホスト
tcp-env: 192.168.255. : setenv = RELAYCLIENT                      ← 中継を許可するクライアント
tcp-env: ALL                                           ← 外部からメールを受信する設定(リレーはしない)

(3) inetdデーモンの再起動

# killall -HUP inetd


7.popサーバの起動設定

(1) checkpasswordのインストール

popサーバは、qmail-pop3dを使用するが、その前にパスワードチェックプログラムをインストールする。

# tar zxvf checkpassword-0.90.tar.gz
# cd checkpassword-0.90
# make setup check

(2) inetd.confの編集

# vi /etc/inetd.conf

pop-3  stream  tcp  nowait  root  /var/qmail/bin/qmail-popup qmail-popup hoge.hogehoge.com /bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir  ← 一行に書く

(3) TCP Wapperに外部からの受信を許可する設定を追加する。

# vi /etc/hosts.allow

qmail-pop3d : ALL : allow

(4) inetdデーモンの再起動

# killall -HUP inetd


8.テスト

以上でqmailのセットアップは全て完了。実際に送受信テストを行ってください。うまく行くはずです。
その他、詳細情報は qmail公式サイト を参照してください。


9.qmailの管理

(1) 停滞キューの確認

# /var/qmail/bin/qmail-stat

(2) 停滞キュー詳細内容確認

# /var/qmail/bin/qmail-qread


10.メールリレーの設定

qmailの便利な機能でメールリレーの設定がある。例えば、hogehoge.com(192.168.0.0のネットワーク)ドメインに、既にメールサーバが存在してそこを中継してメール送信したい場合である。すでに、mail.hogehoge.com(192.168.0.10)と言うメールサーバが有るとしよう。
その場合、www.hogehoge.comのWebサーバからメールサーバを介してメールする設定を説明する。www.hogehoge.comには、説明してきた通りqmailをインストールする。そして、以下のファイルを追加する。

# cd /var/qmail/control
# vi smtproutes

 :[192.168.0.10]        ← メールサーバのアドレスを記述(先頭のコロンを見逃さないこと)

これで、リレー設定は終わりである。
一応、qmail-injectコマンドでメールサーバのユーザにrootからメールを投げて受け取れれば成功!

以上

コメント