Solaris 道をゆく(15) - qmailを使ったメールサーバー

コラム: Maildir 形式

今回の記事では、利用しませんでしたが、qmailは/var/mail/<ユーザ名 >というファイルにメールを直積する従来の方式ではなく、より堅牢な Maildirという新しい形式のメールボックスを提唱しています(注16)。Maildir 形式のメールボックスを利用したい場合は、

注16: 筆者も現在はMaildir形式で運用しています。


% /var/qmail/bin/maildirmake ~/Maildir

のようにしてMaildir形式のメールボックスを作成した上で、.qmail中等で

/home/monyo/Maildir/

のように指定します(注17)。なおMaildir形式のメールボックスが存在しないにも関わらず、Maildir形式でメールを蓄積しようとするとエラーが発生してしまいますので注意してください。

注17: もちろんシステムのデフォルトをMaildir形式にすることも可能です。

ただし、Maildir 形式を利用する場合は、POP や IMAP サーバなどを Maildir 形式対応のものに変更する必要があります。また Mew などを利用し て直接メールスプールを参照してメールを読んでいる場合は、メーラーも Maildir 形式に対応させた上、既存のメールを Maildir 形式に変換する必要 があります。

これらについても解説したいのですが、紙面の関係もあるため、ここでは Maildir 形式への変更する場合の手順などについては残念ですが割愛します。 興味のある方は、2001年4月号の特集やWebサイトなどを参照して Maildir 形式 への移行を行なってください。

fastforward の設定

このように、qmail でのエイリアス機能は、伝統的な sendmail の /etc/aliases ファイルを利用する方式とはかなり異なります。大規模な /etc/aliases ファイルを利用している場合など、qmail形式への移行が困難な 場合は、先程インストールした fastforward というパッケージを利用するこ とで従来の/etc/aliasesファイルの利用を継続することが可能です。
/var/qmail/alias/.qmail-default を図13のように修正してください。

図13: .qmail-default の修正

| /var/qmail/bin/fastforward -p -d /etc/aliases.cdb
/var/mail/alias ← /etc/aliasesに設定がないアカウント宛のメールはaliasユーザのメールボックスに蓄積する。

.qmail-defaultファイルに設定を行なうことで、他のエイリアス機能にマッチしなかった宛先のメールがfastforwardの提供する/etc/aliases ファイルの設定に従って、処理されることになります。
最後に図14のようにしてnewaliasesコマンドを置き換えることで、newaliasesコマンドを実行すると、/etc/aliases.cdbというfastforwardの設定ファイルが更新されるようにします。
ただしfastforwardにはファイルへの転送ができないなど一部機能制限があります。

図14: newaliasesコマンドの置き換え

# cd /usr/bin
# mv newaliases newaliases.org
# chmod 0 newaliases.org
# ln -s /var/qmail/bin/newaliases .

デフォルトの/etc/aliasesファイルをそのまま利用しようとすると

#newaliases
newaliases: fatal: file delivery /dev/null not supported

というエラーメッセージが出力されますので、この行はコメントしておいてください(注18)。

注18: 必要であれば、~alias/.qmail-nobodyファイルに
/dev/null
という設定を行います。

.forward ファイルの移行と注意点

/etc/aliases同様、各ユーザ単位での転送機能を実現する~/.forwardもsendmailの機能ですので、~/.qmailへの置き換えが必要です。~/.qmailの記述方式は/etc/aliasesの項で説明した通りで、各種の設定が可能です。

個人エイリアスの管理

エイリアスの移行の項の説明と関連しますが、qmailでは、~/.qmail-<エイリアス名> というファイルを作成することで、管理者の手を煩わせることなく個人で多数のメールアドレスを利用することが可能になっています。例えばユーザmonyoが~/.qmail-test1という.qmail形式のファイルを作成すれば、monyo-test1というメールアドレスのメールを受信することが可能になります。このように.qmail-からはじまるファイルを作成することで、図15のようにmonyo-から始まるメールアドレスがいくらでも作成できます。またホームディレクトリに.qmail-defaultという名前の.qmail形式のファイルを作成することで、エイリアスの項で説明したように、その他の.qmail-からはじまるファイルで受け取れなかったメールを受けとることも可能です。
この機能を利用することで、管理者の手を煩わせることなくメーリングリスト などを簡単に構築することが可能です。

図15: ファイル名とエイリアスの関係

/home/monyo/.qmail <-- monyo
.qmail-phs <-- monyo-phs
.qmail-tako <-- monyo-tako
.qmail-default <-- その他全ての monyo- から始まるメールアドレス

メールサーバの構築

最後に部門内のメールサーバ等として qmail を利用する場合の設定について 解説します。
ここでは2001年2月、3月号で sendmail の設定を扱った際に利用した図16のネッ トワークを例にとって説明していきましょう。

図16: 今回想定する環境

                     || <--- To: monyo@home.local
              部門メールサーバ ---+--- メールゲートウェイ (インターネット)
               mail.home.local    |    gw.home.local 
               (192.168.1.65)     | ||  From: monyo@home.local -->
                                  | ||
              部門サーバ  --------+ ||-- Firewall (fw.home.local)
              sv1.home.local      | || 
                                  | ||
                192.168.1.0/24    |

外部に送るメールは、セキュリティの関係上すべてgw.home.local(以下gw)に 一度送られ、gwがそれを改めて宛先に中継するようになっています。

qmailの設定ファイル

qmailでは/var/qmail/control以下に表1のような各種設定ファイルを配置します。個々のファイルの形式は、バグを極力防止するため、図17のように文字列が1行もしくは複数行入った簡単な形式になっています。
meというファイルにはホストのFQDN名を正しく設定する必要がありますが、最低限設定が必要なのはこのファイルだけです。

表1: qmailの設定ファイル

制御ファイル 既定値 参照コマンド
me なし(要設定) 全て
databytes 0 qmail-smtpd 受信データ量上限
defaultdomain me qmail-inject 省略時ドメイン名
defaulthost me qmail-inject 省略時ホスト名
localiphost me qmail-smtpd IPアドレス対応ホスト
locals me qmail-send ローカルドメイン名一覧
rcpthosts (none) qmail-smtpd 受信ドメイン一覧
smtproutes (none) qmail-remote SMTP経路指定
virtualdomains (none) qmail-send 仮想ドメイン名一覧

ここでは一般的に設定が必要なもののみを抽出しました。全ファイルのリ ストは http://www.jp.qmail.org/q103/jman5/qmail-control.html を参照してください。
既定値がmeとなっているものは、meファイルから自動的に値が生成されているものです。
パラメータ毎に別ファイルとなっているためファイル数は多いのですが、実際に設定する必要があるのは極く少数です。以下解説しますが、sendmailに慣れていると設定項目の少なさには驚く方も多いと思います。
なお、設定を行なったら /var/qmail/bin/qmail-showctl コマンドを実行して現在の設定を確認するようにしておきましょう。

部門メールサーバの設定

部門メールサーバといっても、sendmailと違い設定は簡単です。
まず home.local というアドレスのメールも受信できる必要があるので、実行例13のようにしてhome.local宛のメールを受信するようにしておきます。またsmtproutesファイルでは実行例14のようにfw.home.localを指定しておきましょう。

# echo home.local >> /var/qmail/control/locals
# echo home.local >> /var/qmail/control/rcpthosts

実行例13:

# echo :fw.home.local > /var/qmail/control/smtproutes

実行例14:

更に、defaultdomainファイルの内容がhome.localになっていることも念のため確認しておきましょう。基本的な設定はこれで完了ですが、一点だけ、注意が必要な設定箇所が残っています。

特定のホストからだけは全ての中継を許可する設定

この時点でメールサーバが受信可能なメールの宛先が記述されたのrcpthosts の内容は図17のようになっていると思います。

図17: 設定ファイルの例(rcpthosts)

# cat rcpthosts
localhost
anduin.home.local
home.local

しかしこのままでは一般ホストから受け取ったメールの「宛先」が図15に含まれるドメイン(ホスト)以外の場合に中継が拒否されてしまいますので、事実上インターネットへのメールの送信ができません。
そのため、rcpthostsを読み込む qmail-smtpd プロセスは、起動時にRELAYCLIENTという環境変数が設定されていると全ての宛先への中継を許可するようになっています。qmail-smtpdプロセスを起動する前に、この環境変数を設定しておけばよいのですが、単純に設定してしまうと全てのホストからの中継要求を受け付けるため、企業内の部門メールサーバとはいえ好ましい設定とはいえないでしょう(注19)。

注19: もちろんインターネット向けのメールサーバでこのような設定を行なうことは論外です。

従って、TCP Wrappersや先月号でインストールucspi-tcpに含まれるtcpserverを利用して、特定のIPアドレスから接続されたときのみRELAYCLIENT環境変数を設定してqmail-smtpdを起動するように設定を行ないます。ここではtcpserverを利用する方法を解説します(注20)。

注20: TCP Wrappersを利用する方法は、4月号の特集を参照してください。

まず、適当な名前(ここでは/var/qmail/tcp.smtpにします)で、以下のような内容のファイルを作成します。

192.168.1.:allow,RELAYCLIENT=""
127.:allow,RELAYCLIENT=""
:allow

次にtcprulesを以下のように実行して、cdb形式のファイルを作成します。

# tcprules /var/qmail/tcp.smtp.cdb /var/qmail/tcp.smtp.tmp < /var/qmail/tcp.smtp

最後に、qmail-smtpdを起動させるtcpserverのコマンド行に -x /var/qmail/tcp.smtp.cdb を追加します。図11の ### からはじまっている行の例などを参考にしてください。設定を行なったら、xxxx年x月号の連載などを参考にして不正な中継が行なわれないようになっていることを確認しておいてください。

メールゲートウェイの設定

最後にメールゲートウェイ(fw.home.local)の設定についても簡単に触れて おきましょう。基本的にはメールサーバの場合と同様に、受信するメールアド レスの設定や、RELAYCLIENT 関連の設定を行ないます。
ただし、メールゲートウェイは内部と外部で別々のホスト名を持ちますので、 localsやrcpthostsファイルに両方のホスト名を追加しておく必要があります。 またdefaultdomainやdefaulthostを内部と外部のどちらの名前で設定するかも 確認しておいた方がよいでしょう。
更にメールゲートウェイでは home.localという宛先アドレスのメールは「受 け取らず」に「中継」だけを行なうため、rcpthostsファイルに home.local を追加しますが、localsファイルには追加しません。また、内部から外部宛メー ルの中継については/var/qmail/tcp.smtpを図18のように設定して、メール サーバと自分自身からのアクセス時のみRELAYCLIENT変数を設定するようにし ておけばよいでしょう。

図18: tcp.smtp の設定

192.168.1.65:allow,RELAYCLIENT=""
127.:allow,RELAYCLIENT=""
:allow

以上、簡単ですが本格的なメールサーバの設定について記述しました。適切な設定を行なうためにはメールシステム自体の理解が必要不可欠なため、難しい箇所もあると思いますが、必要な設定自体はほんの少しで、sendmailと比べるとその簡単さがよく分かると思います。

次回は

今回はqmailについて取り上げました。余分な機能をそぎ落とすことで非常にシンプルな作りになっていますので、本文中で紹介したサイト上の情報などを参照することで、すぐに使えるようになるでしょう。
次回はwu-ftpdに代わるftpサーバとして設定の柔軟性等が売りのproftpdを取り上げようと思います。


<- 前へ 3/3 戻る

Copyright (C) 1998-2009 TAKAHASHI, Motonobu
Last update: 2005-02-23 14:46:43 JST
webmaster@monyo.com