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

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

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

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


        # /etc/aliases
        #    中略
        member01:member01@mail1.summer00.wakhok.ac.jp
        member02:member02@mail2.summer00.wakhok.ac.jp
        member03:member03@mail3.summer00.wakhok.ac.jp
        member04:member04@mail4.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 のバックアップを取ってから、編集を行う。


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

Postfix では、多くの場合デフォルトで良いので、上記のように 直接オリジナルのmain.cf を編集すれば良いだろう。

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


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


#その他のメイルシステム
#ドメインマスターの編集箇所に以下を加える
relayhost = mail.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 では、別名などメイルの宛先に使われると思われる全ての 名前を列挙しておかなければならない(勿論、そのメイルを受け取りたい場合 には)。

この部分の設定に洩れがあり、例えば 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 を使うより他はない。

masquerade_exceptions

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

relayhost

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


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


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