qmail(SMTPサーバー)を導入してみる
Modified: 23 June 2002
このページでは基本的な設定が書いてありますが、さまざまな設定をするには、「qmailの小技」をご覧ください。
参考資料
@ 秀和システム 「qmailで作る快適メールサーバー」
A 「UNIX USER 2002年7月」では、daemontoolsを使う方法が紹介されています。
B アットマークIT: 「http://www.atmarkit.co.jp/flinux/rensai/qmail01/qmail01a.html」
qmail導入の準備
qmailのコンパイルからインストール
qmailの基本設定と動作テスト
qmailを正式起動するための設定
tcpserverのインストールと設定
smtpをtcpserverで起動するために、「tcpserverのダウンロードからインストール」を参照し、tcpserverのインストールを行います。
qmailのディレクトリを作成する
# mkdir /var/qmail
DNSサーバーにMXレコードを追加する
qmail用のUID/GIDを登録する
GIDを2つ登録します
# /usr/sbin/groupadd qmail
# /usr/sbin/groupadd nofilesUIDを7つ登録します
# /usr/sbin/useradd -g nofiles -d /var/qmail/alias -s /bin/true alias
# /usr/sbin/useradd -g nofiles -d /var/qmail -s /bin/true qmaild
# /usr/sbin/useradd -g nofiles -d /var/qmail -s /bin/true qmaill
# /usr/sbin/useradd -g nofiles -d /var/qmail -s /bin/true qmailp
# /usr/sbin/useradd -g qmail -d /var/qmail -s /bin/true qmailq
# /usr/sbin/useradd -g qmail -d /var/qmail -s /bin/true qmailr
# /usr/sbin/useradd -g qmail -d /var/qmail -s /bin/true qmails
qmailを ダウンロードする
以下からダウンロードできます。
2002年6月17日に、”qmail-1.03.tar.gz”がダウンロードできました。
このソフトは、1997年以降、更新が行われていないそうです。メンテナンスしていないということではなく、最初から必要機能は備わっているし、バグもないので、更新されていないのだそうです。そのこともこのソフトの信頼性が高いということのようです。
解凍からインストールまで
# tar zxvf qmail-1.03.tar.gz
# cd qmail-1.03
# make setup check
:
#
設定ファイルを作成する
# ./config
Your hostname is rh73-93-mail.
hard error
Sorry, I couldn't find your host's canonical name in DNS.
You will have to set up control/me yourself.
#通常、上記のようにエラーがでるので、以下のように、"config-fast"に、ホスト名を付加して実行します。
# ./config-fast rh73-93-mail.tomo.lint.ne.jp
Your fully qualified host name is rh73-93-mail.tomo.lint.ne.jp.
Putting rh73-93-mail.tomo.lint.ne.jp into control/me...
Putting tomo.lint.ne.jp into control/defaultdomain...
Putting ne.jp into control/plusdomain...
Putting rh73-93-mail.tomo.lint.ne.jp into control/locals...
Putting rh73-93-mail.tomo.lint.ne.jp into control/rcpthosts...
Now qmail will refuse to accept SMTP messages except to rh73-93-mail.tomo.lint.ne.jp.
Make sure to change rcpthosts if you add hosts to locals or virtualdomains!
#実行の結果、"/var/qmail/control"の下に、"me","locals"など、5つの設定ファイルが作られます。
設定ファイルを変更します
以下の5つのファイルを編集します。
"me"の作成
内容は、メールサーバーのホスト名を、1行だけ記述します。
rh73-93-mail.tomo.lint.ne.jp
"locals"の作成
ローカル配送するドメイン名を列挙します。
localhost
localhost.tomo.lint.ne.jp
tomo.lint.ne.jp
.tomo.lint.ne.jp
"rcpthost"の作成
セキュリティ上、メールの受信を受理するドメインを列挙します。
localhostを除いて、"locals"の内容はすべてここに書くのが普通です。
tomo.lint.ne.jp
.tomo.lint.ne.jp
"defaultdomain"の作成
送信者名のドメイン部に、"."がないとき、自動的に付加されるドメイン名を記述します。
tomo.lint.ne.jp
"plusdomain"の作成
あて先のドメインが、"+"で終わっているとき付加するドメイン名を記述します。
tomo.lint.ne.jp
起動テストする
起動用スクリプトをコピーする
# cp /var/qmail/boot/home /var/qmail/rc psコマンドで確認する
# ps ax
:
9292 pts/0 S 0:00 qmail-send
9293 pts/0 S 0:00 splogger qmail
9294 pts/0 S 0:00 qmail-lspawn ./Mailbox
9295 pts/0 S 0:00 qmail-rspawn
9296 pts/0 S 0:00 qmail-clean
:
#上記5つのプロセスができておればOKです。
qmailの仮起動
# /var/qmail/rc &
メール送信テスト
以下のコマンドで、メールクライアントソフトを起動します。
# /var/qmail/bin/qmail-inject 起動すると、入力待ちになるので、以下を打ち込みます。
"tomo"は、ユーザー名。
To: tomo
Subject: testtest
入力が終わると、<Ctrl>+"d" で、終了&送信を実行します。
受信の確認
ユーザー名、"tomo"のホームディレクトリに、"Mailbox"というファイル名ができていています。
"Mailbox"の内容がメールのないようです。
ログの確認
メール送信の実行の様子は、"/var/log/maillog" に記録されています。
別の端末で、以下のコマンドを実行すると、メール処理の様子を確認できます。
# tail -f /var/log/maillog
Jun 22 10:53:35 rh73-93-mail qmail: 1024710815.487335 new msg 852957
Jun 22 10:53:35 rh73-93-mail qmail: 1024710815.488931 info msg 852957: bytes 271 from <tomo@rh73-93-mail.tomo.lint.ne.jp> qp 9401 uid 0
Jun 22 10:53:35 rh73-93-mail qmail: 1024710815.520320 starting delivery 2: msg 8 52957 to local tomo@rh73-93-mail.tomo.lint.ne.jp
Jun 22 10:53:35 rh73-93-mail qmail: 1024710815.520565 status: local 1/10 remote 0/20
Jun 22 10:53:35 rh73-93-mail qmail: 1024710815.582827 delivery 2: success: did_1+0+0/
Jun 22 10:53:35 rh73-93-mail qmail: 1024710815.583097 status: local 0/10 remote 0/20
Jun 22 10:53:35 rh73-93-mail qmail: 1024710815.583140 end msg 852957
qmailの停止
# kill 9292 "9292"は、qmailのプロセスIDです。
semdmailコマンドを入れ替えます
以下の手順で入れ替えます。
# cd /usr/sbin
# mv sendmail sendmail.org
# ln -s /var/qmail/bin/datemail sendmail
アドレス アイリアス を定義します
# cd /var/qmail/alias
# echo root@tomo.lint.ne.jp > .qmail-postmaster
# echo root@tomo.lint.ne.jp > .qmail-mailer-daemon
# echo root@tomo.lint.ne.jp > .qmail-root
# chmod 644 .qmail*"root@tomo.lint.ne.jp"は、システム関連のエラーメールを受け取る人(管理者)のメールアドレスを書きます。
smtpをテスト起動する
# /usr/local/bin/tcpserver -HR -u 501 -g 502 0 smtp /var/qmail/bin/qmail-smtpd &
- "-u 501"は、"qmaild"のユーザID
- "-g 502"は、"qmaild"のグループID
smtpの接続をテストする
別のWindowsPCから、telnet(smtpのポート指定)をして応答があればOKです。
C:\Documents and Settings\tomo.AXP1900> telnet 192.168.0.93 smtp 220 rh73-93-mail.tomo.lint.ne.jp ESMTP
QUIT
221 rh73-93-mail.tomo.lint.ne.jp
ホストとの接続が切断されました。
C:\Documents and Settings\tomo.AXP1900>smtpがうまく起動していない場合は、以下のようになります。
C:\Documents and Settings\tomo.AXP1900> telnet 192.168.0.93 smtp
接続中: 192.168.0.93...ホストへ接続できませんでした。 ポート番号 25.
対象のコンピュータによって拒否されたため、接続できませんでした。
C:\Documents and Settings\tomo.AXP1900>
smtpを停止する
# kill 10023 "10023"は、smtpのプロセスIDです。
tcpserverでリレーの設定をする
"/etc/tcp.smtp"を作成します。
利用を許可するアドレスを書きます。
192.168.0.:allow,RELAYCLIENT=""
127.:allow,RELAYCLIENT=""以下のコマンドで、"/etc/tcp.smtp.cdb" を作成します。
# /usr/local/bin/tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
smtpを起動する
以下のコマンドで正式起動します
# nohup /usr/local/bin/tcpserver -vHR -x /etc/tcp.smtp.cdb -u 501 -g 502 0 smtp /var/qmail/bin/qmail-smtpd 2>&1 | /var/qmail/bin/splogger smtpd &
daemontoolsのインストール
daemontoolsで起動させるために、「daemontoolsを起動する」を参照してインストールしてください。
管理ディレクトリを作成する
以下のコマンドで、管理ディレクトリを作成します。
# mkdir -p /var/qmail/svc/qmail-send/log
qmail-sendの起動用スクリプトを作成する
# cd /var/qmail/svc/qmail-send 以下のスクリプトファイルを作成し、"run"のファイル名で保存します。
#!/bin/sh
exec /var/qmail/bin/qmail-start ./Maildir/終了保存後、実行権を付加します。
# chmod +x run
qmail-sendのログ取得用スクリプトを作成する
# cd /var/qmail/svc/qmail-send/log 以下のスクリプトファイルを作成し、"run"のファイル名で保存します。
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill \
/usr/local/bin/multilog t s1000000 /var/log/qmail-send終了保存後、実行権を付加します。
# chmod +x run
qmail- smtpの起動用スクリプトを作成する
以下のコマンドで、管理ディレクトリを作成します。
# mkdir -p /var/qmail/svc/qmail-smtp
# cd /var/qmail/svc/qmail-smtp
以下のスクリプトファイルを作成し、"run"のファイル名で保存します。
#!/bin/sh
exec /usr/local/bin/tcpserver -v -x /etc/tcp.smtp.cdb -u 502 -g 502 0 smtp \
/var/qmail/bin/qmail-smtpd終了保存後、実行権を付加します。
# chmod +x run
qmail- smtpのログ取得用スクリプトを作成する
以下のコマンドで、ログディレクトリを作成します。
# mkdir -p /var/log/qmail-smtp
# chown qmaill:nofiles /var/log/qmail-smtp
# chmod 700 /var/log/qmail-smtp
# mkdir -p /var/qmail/svc/qmail-smtp/log
# cd /var/qmail/svc/qmail-smtp/log以下のスクリプトファイルを作成し、"run"のファイル名で保存します。
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill \
/usr/local/bin/multilog t s1000000 /var/log/qmail-smtp終了保存後、実行権を付加します。
# chmod +x run
自動起動させる
daemontoolsでは、"/service"に、"run"スクリプトがあるディレクトリに、ロジカルリンクを張れば、自動的に"run"を実行します。
# ln -s /var/qmail/svc/qmail-send /service
# ln -s /var/qmail/svc/qmail-smtp /service