next up previous contents
Next: 5.3.2 Other Setting Up: 5.3 メイル環境の設計 Previous: 5.3 メイル環境の設計

5.3.1 ハブホストに集中、内側は直接配送の設定

MX レコードに指定されたドメイン・マスターへ全てのメイルが届き、 それを内部へ再配送する。内部から外部へメイルを送る場合は、 ドメイン・マスターへ送り、 ドメイン・マスターが外部へ配送を行う。内部配送の場合には直接 /etc/mail/aliases に従って配送を行う。
\epsfile{file=mail-relay}

この場合、ドメイン・マスターに届いたメイルは、ドメイン・マスターの Postfix がローカルの aliases map を参照して適切なスプール・ホストに 再配送することになる。 従って、ドメインマスターの /etc/aliases に各メンバーごとの aliases が 記述されていなければならない。

        # /etc/aliases
        #    中略
        member01:member01@pc2f001.summer00.wakhok.ac.jp
        member02:member02@pc2f002.summer00.wakhok.ac.jp
        member03:member03@pc2f003.summer00.wakhok.ac.jp
        member04:member04@pc2f004.summer00.wakhok.ac.jp
        ...

さて、ここで Postfix の具体的な設定を行うのであるが、Postfix は sendmail などと違い、main.cf を直接記述するだけで良い(主な設定は 全てmain.cf にあります)。main.cf は多くの場合、変数とその値の 定義という形で行う。sendmail と違って、定義ファイルからマクロファイル の生成のようなことはしなくても良いので、非常に簡単であり、 その上、定義しなければならない項目も非常に少ない。sendmail.cf を知っている人が見ると、簡単すぎて拍子抜けする程である。

main.cf は FreeBSD では、/usr/local/etc/postfix/ にある。まず、 現在のmain.cf のバックアップを取ってから、編集を行う。 (なお、/usr/local/etc/postfix/main.cf.default があるが、これは デフォルトを決めたもので、編集してはならない。)

   # cd /usr/local/etc/postfix
   # cp main.cf main.cf.org

Postfix では、多くの場合デフォルトで良いので、上記のように 直接オリジナルのmain.cf を編集すれば良いだろう。 (Postfixでは postconf というコマンドで編集をするようになっています が、少し面白くない点があるので、本テキストでは直接編集をお勧めします。)

以下では編集が必要な設定箇所のみを紹介する。

#ドメインマスターの編集箇所
myorigin = summer00.wakhok.ac.jp
mydestination = $myhostname, localhost.$mydomain, $mydomain, mail.$mydomain
mynetworks = 127.0.0.0/8, 202.11.97.16/28, 192.168.0.0/24
masquerade_domains = $mydomain
masquerade_exceptions = root

#その他のメイルシステム
#ドメインマスターの編集箇所に以下を加える
relayhost = pc2f001.summer00.wakhok.ac.jp

以下、必要な項目について解説する。

myhostname

自ホストの名前が自動的に設定されるので、通常は設定しなくても良いが、 別名にしたい場合などには設定しなければならない。
myhostname = alias.summer00.wakhok.ac.jp

mydomain

myhostname から 1word の名前を削除したものに自動的に設定される。 上の例では、summer00.wakhok.ac.jp となる。 通常は設定しなくて良い。

mydomain = summer00.wakhok.ac.jp

myorigin

このシステムで受信され、外に出て行くメイルの送信元アドレス表記を hoge@summer00.wakhok.ac.jp のようにドメイン名にしたい場合に、 上記のように設定する。何故ならば、外からの返信にマシン名がついた ものであると困る場合があり、返信先アドレスが MX を参照するようにしな ければならないからである。 デフォルトの設定は、
myorigin = $myhostname
となっている。

陽に指定せずに、以下のように変数を用いても同じである。

myorigin = $mydomain

mydestination

自分宛のメイルの解釈を行う際に、どういう宛先を受け取るべきかを指定する。 先の myorigin で指定した場合、返信は domain 宛に返って来る(つまりは、 hoge@summer00.wakhok.ac.jp 宛のように)。このメイルを受け取るために、 summer00.wakhok.ac.jp 宛は自分宛であると解釈させなければならない。 更に、Postfix では、別名などメイルの宛先に使われると思われる全ての 名前を列挙しておかなければならない(勿論、そのメイルを受け取りたい場合 には)。 特に、DNS に記載したホスト名は全てここに載せるようにする。 今の場合には $myhostname,localhost.$mydomain, $mydomain,mail.$mydomain 宛は全て受け取る設定になっている。

この部分の設定に洩れがあり、例えば、$mydomain が抜けていると、 hoge@summer00.wakhok.ac.jp 宛に メイルが来たが、ここに列挙されていなければ受け取りを拒否するか、 後で出て来るリレーホストに転送してしまうような事が起こるので注意が必要。

デフォルトの設定は、myhostname 宛を受け取る。

ちなみに、複数の値 があるときには、空白あるいはカンマで区切って書くようになっている。

また、一桁目が空白の場合には継続行と見なされる。

mynetworks

中継を許す(つまりは信頼出来る)ネットワークを IP で指定する。 自分のサイトのネットワークに対しては中継を許可するのが 通常である。

これは、メイルサーバを踏台にされないようにするために、中継機能を 制限するためのものである。一般に、外から外への中継を禁止し、 外から内、内から外は許可したいので、内側のネットワークをメイル システムに教える必要がある。勿論、ここに列挙されたネットワークは 内部と同等に考えられるので、外部ネットを安易にここに付け加えては ならない。

この項目の簡易設定として、mynetworks_style がある。 この変数は、class,subnet,host のいずれかの 値を取り、class はホストが接続されているクラスA or B or C 全体を信頼する(どの クラスかは接続されているクラスによる)。一方、subnet は 自分が接続されているネットワークのみを信頼する(つまりは、インターフェース のサブネットの範囲)。最後の host は自分のみを信頼する。 mynetworks が定義されていた場合には、mynetworks_style は 無視される。通常、mynetworks を使うようにした方が良いだろう。

その他 relay_domains が更にあるが、各自ドキュメントを確認されたい。

inet_interfaces

どのインターフェースからの接続に応答するべきかを決定する。デフォルトは 全てのインターフェースに対して応答する。この項目は、複数のインターフェース を持つマシン(マルチホーム)上でメイル接続要求に答えたくないインターフェース がある場合や、あるいはバーチャルインターフェース上でメイルを動かしている ような場合に待ち受けインターフェースを指定するためにある。 つまりはバーチャルドメインでメイルを運用しない限りは指定しなくても良い。

masquerade_domains

発信者エンベロープと ヘッダについて、この値から来たように書き換える。通常、ヘッダーの 様々な部分に発信者ホストの情報が残されるが、そうした情報を隠蔽し、 外から見た場合に、そのドメインあるいは、特定のホストから来たかのように 見せかけるためのもの。但し、受信者エンベロープは書き換えの対象外である。 これは受信者エンベロープも書き換えてしまうと、個別のホストへの転送が 不可能になるからである。

Postfix は全般にカノニカル、マスカレードが弱く、十分な書き換え機能が 存在しない。これは sendmail のような書き換え言語を持っておらず、 テーブルレベルの置換であることによる。もし十分な書き換えを必要と するならば、sendmail を使うより他はない。

ちなみに、この設定と次の設定に関しては、sample-rewrite.cf に サンプルがあり、main.cf には書かれていないので、自分で main.cf に 書き足すか、カット&ペーストをしなければならない。

masquerade_exceptions

先の masquerade_domains の例外として、root へのメイルを指定 した方が良いでしょう。デフォルトでは例外はありません。

relayhost

自分宛ではなく、ドメイン宛のメイルでもないような場合(トランスポート テーブルにマッチしない場合)、$relayhost に転送する。 通常、ドメインマスターを指定すると良い。指定方法は、名前で指定して も良いし、内部参照用DNSのMXフィールドがドメインマスターを指していれば それを指定するのも可能である。名前解決などがうまく行かない場合などの 最終解決方法としてはIPを生で指定することも出来る。

   # ホスト名を指定
   relayhost = dns.summer00.wakhok.ac.jp
   # MX を利用
   relayhost = $mydomain
   # IP 指定
   relayhost = [202.11.97.17]

但し、内側から外側に出て行けるようにmailについてもファイアーウォールを 設定している場合には、nat で変換されるので実は外にも配送される。 ただ、そうしたファイアーウォールの設定が良いかどうかは考えなければ ならない(内部から外部へのspamなどがあり得る)。


next up previous contents
Next: 5.3.2 Other Setting Up: 5.3 メイル環境の設計 Previous: 5.3 メイル環境の設計
Noriyo Kanayama