次のページ 前のページ 目次へ

3. sendmail の設定

3.1 主な設定ファイル

sendmail の設定には、とても複雑なルールを使用する必要があります。 それだけいろいろ工夫をこらした設定を行うことが可能ですが、普通は 一からsendmail.cf を書くようなことは行いません。それは時間 の無駄です。書き上げること自体に興味を持っているなら、このドキュ メントを読むことを即刻止めて、かわりに O'Reilly から出版されている 「コウモリ本」を読むことをお薦めします。

これらのルールを手書きするかわりに、m4 マクロ・プロセッサ のお世話になることにしましょう。そうすれば sendmail 付属の雛形 のファイルから設定ファイルを生成できます。

まず sendmail.mc ファイルのはじめの部分を見ましょう。


include(/usr/lib/sendmail.cf/m4/cf.m4)
VERSIONID(`sendmail.mc - roessler@guug.de')
OSTYPE(debian)
define(`ALIAS_FILE',`/etc/mail/aliases')

最初に cf.m4 を include しています。この m4 マクロの ファイルにはこの後で利用することになるマクロが数多く定義 されています。指定しているパスが正しいかチェックしてくだ さい。なおここであげているのは、Debian GNU/Linux での例 です。OSTYPE はいろいろなデフォルトの設定値をセット するのに便利なマクロです。Debian を使っていないなら、 「debian」を「linux」に置き換えてください。ALIAS_FILE によって sendmail が参照するエイリアスのリストを決めています。

下記の行は sendmail の機能である genericstable を 使用する指定しています。またそれを使用するために必要な 設定ファイルがどこにあるのかも指定しています。


FEATURE(masquerade_envelope) FEATURE(genericstable, `hash
-o /etc/mail/genericstable')
GENERICS_DOMAIN_FILE(`/etc/mail/genericsdomain')

masquerade_envelope 機能は、sendmail がメッセージに 書かれているエンベロープの送信者(Sender)の部分を書き換え ます。外部のメール配送システムがメールを配送できなかった 場合や、何らかの警告メッセージを送信者に知らせる場合に このアドレスを使用します。generics* ファイルについて は後で説明します。

それではここで、スマートホストと呼ばれている、外部にメールを 配送する役目を負うマシンについて説明しておきましょう。 このマシンが ISP の POP、IMAP サーバとは違う役割を果たして いるということに注意してください。本当かな、とお思いなら、 ISP に電話して聞いてみてください。主な設定ファイルの内容 は下記の通りです。


define(`SMART_HOST',`mail-out.your.provider')

mail-out.your.provider の部分を ISP のホスト名に 置き換えてください。この名前はインターネット上で一意に 識別できる名前である必要があります。

「mailer」の記述がある最後の 2 行は sendmail がいろいろ な種類のメールをどのように処理するかを決定するために必要 です。


MAILER(local)
MAILER(smtp)

この sendmail.mc から sendmail.cf を生成するには、 下記のコマンドを root で実行してください。


# m4 sendmail.mc > _sendmail.cf
# mv -f _sendmail.cf sendmail.cf

m4 による処理結果をテンポラリファイルにいったん 書いてから、正式の名前に変更してください。こうすることに よって、sendmail がまだきちんと設定していないファイルを 使用してしまうことを防ぐことができます。

3.2 アドレスの書き換え

まず sendmail にどれがローカルなアドレス(つまり書き換えの対象 になる)なのかを判断させる必要があります。 このやり方はとても単純です。マシンについているインターネット で一意に識別できるホスト名を /etc/mail/genericsdomain に書くだけです。 そのホスト名を調べるには下記のコマンドを入力してください。


 $ hostname -f 

それではアドレスの書き換え方を決めるテーブルである /etc/mail/genericstableをきちんと書いてみ ましょう。このファイルは、スペースで区切られた 2 つのカラム から構成されています。左側のカラムがローカルで使われるアド レスで、右側がその代わりに使用されるアドレスです。 下記のような形になります。


harry   harryx@your.isp
maude   maudey@her.isp
root    fredx@your.isp
news    fredx@your.isp

1 つの指定ごとにローカルにあるマシンのそれぞれの アカウントを指定してください。そうするとローカルなシステム から自動的に出されたメールに正しいヘッダー情報がつけられる ことになります。

パフォーマンスを上げるため、sendmail はテキストで書かれたこの ファイルを直接利用しません。その代わりに「ハッシュ済み」のファイル を使います。そのファイルを作るには、下記の通りに入力します。


# makemap -r hash genericstable.db < genericstable

genericstable にある書き換えのルールはローカルでのやり 取りや外部から配送されるメールには適用されません。 この書き換えはローカルなシステムから ISP のスマートホスト に送る場合にだけ行われます。

3.3 Aliases

aliases ファイルには、ローカルでやりとりするメールが使用する 名前を定義してあります。root のように、自動的にシステム からのメールを送られる、何かを管理するためのアカウントにとっ ては便利な機能です。

/etc/mail/aliases の正しい例は下記のような 内容のファイルになるでしょう。


root: fred
news: root
postmaster: root
mail: root
www: root

nobody: /dev/null
MAILER-DAEMON: nobody

この例ですと、rootnewspostmastermailwww ユーザ宛のメールは fred に送られ、nobodyMAILER-DAEMON 宛のメールは /dev/null 行きに なります。

aliasesgenericstable と同様に多くのエントリを含みます。したがって、genericstable と同じ 理由で sendmail がこのファイルをテキストで扱うのは得策では ありません。genericstable と同じ仕組みである ハッシュ されたデータベースが aliases にも利用されています。 ただ makemap を直接使用せずに、newaliases という コマンドを使ってもかまいません。このコマンドが必要な処理を すべて自動的に行ってくれます。


次のページ 前のページ 目次へ