Mail Server(Postfix)の設定

Sendmailよりもずっと楽ですね....

Postfixとは

 つい数年前までは、"Mail ServerといえばSendmail"といっても過言でない状況でしたが、1979年に開発されたSendmailには、かなり無理が来ていたのは誰の目にも明らかでした。

・巨大なプログラム
 まだSMTPも存在しなかった時代に設計されたSendmailは、時代の流れに対応するために建て増しに建て増しを積み重ねてゆきました。その結果としてプログラムサイズは巨大化の一途をたどってしまいました。

・困難を極める設定
 プログラムの巨大化に伴い、設定ファイルの記述も困難になりました。Sendmail.cfがSendmailの設定ファイルですが、この設定ファイルを作成するためのツールが別途存在するほど、その記述は困難を極めました。実際にsendmail.cfを眺めてみればわかりますが、およそ人間が理解できるとは思えない代物です。

・潰し切れないセキュリティホール
 プログラムが巨大で多機能であるが故に、Sendmailには非常によくセキュリティホールが発見されます(一時期に比べれば最近はマシになりましたが)。また、プログラム本体のみならず、設定の困難さに端を発する"人的な"セキュリティホールが多いのも特徴です。

 このような状況を受け、より軽く、より単純で、より安全なMTA(Mail Transer Agent)を目指して開発されたのが、Postfixとqmailでした。管理人がなぜqmailではなくPostfixを利用しているかというと、2002年末に導入したRedhat Ver.8で、Postfixがあらかじめ導入されていたからです。

 しかし、実際に設定を行ってみると、それなりにSendmailとの親和性がある(ここがPostfixとqmailの大きな違いですが)割には設定は非常に簡単で、もうSendmailには二度と戻れないでしょう(^^

 

Postfixの導入

 Redhat Ver.8の場合、インストール時に明示的に指定すれば、自動的に導入が行われます。もしインストール時に導入を行わなかった場合でも、"システム設定" - "パッケージ"でインストール時と同じメニューが現れるので、そこから導入することが出来ます。

 しかし、実際にRedhat Ver.8のデフォルトのMTAとして動作するのはSendmailになります。Sendmailは、インストール時にどのようなオプションを選択しようと、必ず導入されるようになっています。これは、おそらくLogcheckやCronのメッセージをローカルシステムに配送するための配慮だと思われます。
 Redhat Ver.8が利用するMTAを切り替えるには、"システム設定" - "Mail Tranport Agent Switcher"を利用します。起動すると、SendmailとPostfixを選択できるので、Postfixを選択すればOKです。

 また、メールサーバーが動作するためには、必ずDNSサーバーが必要となりますので、まだDNSサーバーを構築していない場合は、まずそちらを先に構築してください。MXレコードの作成もお忘れなく。

 

Postfixの設定

 前述の通り、Postfixの設定で実際に変更するファイルは、main.cfのみになります。その他にも種々のファイルがありますが、それらをいじる必要はまずありません。Postfixの設定ファイルはコメントが非常に丁寧に書かれているため、そのコメントだけ読んでいれば設定できるはずです。
 設定ファイル自体は当然全て英語ですが、日本語訳を行って公開されている方がいらっしゃるので、以下のサイトを参照するといいでしょう。このサイトには設定ファイルの日本語訳以外にも、Postfix関連の様々なドキュメントが置かれているので、一度は訪問してみるといいと思います。

Postfixのぺーじ
 http://www.kobitosan.net/postfix/

 管理人のサイトの設定を以下に公開します。main.cfそのものを掲載してもいいのですが、サイズがかなり大きいので、変更箇所のみを示しておきます。Redhat Ver.8がよきに計らってくれている(自動的に設定ファイルを変更していている)と思われる部分もありますが、管理人自身が手で変更したのは以下の部分のみになります。
 別の言い方をすると、Redhat Ver.8以外を利用している方は、もう少し設定をする必要がある可能性があるという事になりますので、注意してください。

myhostname = mail.bflets.dyndns.org
 Mail Serverとして稼動させるホストの名前を設定します。管理人が利用しているdyn.toは、MXレコードが登録できるようになっているので、外部サーバーがMXを引くと、管理人のサーバー(厳密にはルーター)が持っているグローバルIPアドレスが返されます。
  もちろんローカル向けのDNSにも、www.bflets.dyndns.orgのエイリアスとしてmail.bflets.dyndns.orgが設定されています。

mydomain = bflets.dyndns.org
  Mail Serverとして稼動させるホストのドメイン名を設定します。コメントには"myhostname - ホスト名"と書いてありますので、その通りに設定してあります。

myorigin = $mydomain
 Mail Serverがローカルドメインとして認識するドメイン名を指定します。$myhostnameでいいのですが(こちらがデフォルト値)、なんとなく$mydomainにしてあります。

inet_interfaces = all
 Mail Serverがメールを受け取るインターフェースを指定します。バーチャルドメインを運用していたり、Mail Serverが複数のIPアドレスを持っている場合は、ここで制限することが出来ます。自宅サーバーレベルであれば、大抵の場合"all"で問題ないでしょう。

mydestination = $myhostname, localhost.$mydomain $mydomain
 Mail Serverが、"自分が最終受け取り先である"と認識するドメイン名を指定します。要するに、ここに合致するパラメーターが宛先となったメールの転送要求がきた場合、それ以上の転送を行わないということです。ここの設定は色々ありますので、詳細はmain.cfのコメントを参照してください。
 通常は$mydomainは不要ですが、hogehoge@bflets.dyndns.orgでメールを受け取りたかったので(気分的な問題)、$mydomainも指定してあります。

mynetworks = 192.168.0.0/24
  "信頼する"SMTPクライアントのアドレス範囲を指定しています。このアドレス範囲にあるクライアントのみが、Postfix経由でのメールの転送を許可されます。自宅サーバーの場合、Mail Serverが所属するネットワークを指定する事になるはずです。bflets.dyndns.org(というか私の自宅)では、192.168.0.1~192.168.0.254までを利用するので、上記の指定になっています。

alias_maps = hash:/etc/postfix/aliases
 Mailのエイリアスを設定するaliasesファイルの場所を指定します。Sendmailの場合は/etc/mail/aliasesに置かれているはずなのですが、Redhat Ver.8ではなぜか/etc/mailには置かれておらず、/etc/postfixにのみ置かれています(slocateで確認)。
 どうやら、aliasesファイルの更新後に実行するnewaliasesコマンドの挙動を含め、Redhat Ver.8のMail Tranport Agent Switcherがよきに計らってくれるようなので、Redhat Ver.8を利用している場合は、何も考えずに/etc/postfix/aliasesを編集してから、newaliasesコマンドを実行すればいいようです。
 ちなみに、管理人は/etc/postfix/aliasesで、以下の箇所のみ変更してあります。

# Person who should get root's mail. This alias
# must exist.
# CHANGE THIS LINE to an account of a HUMAN
root: ryu

 自宅サーバー管理者のほとんどの方は、通常デスクトップにログインする際には一般ユーザー権限のアカウントで入ると思います。でも、LogcheckやCrondが報告するメールの宛先は、通常rootになっています。一般ユーザーで入りつつrootのメールを読むのは管理上面倒なので、一番簡単なのは特定のユーザーにroot宛てのメールを全て転送してしまうことでしょう。上記はそのための設定になります。

 

Postfixの動作の確認
 設定が終了したら、早速動作確認に入ります。もし/etc/postfix/aliasesを変更しているのであれば、まずnewaliasesコマンドを実行して、aliases.dbファイルの更新を行いましょう。管理人は以下の手順で動作確認を行いました。

1. mail.bflets.dyndns.orgから、mail.bflets.dyndns.orgにアカウントを持っているユーザーへの、メールの送信確認
2. mail.bflets.dyndns.orgから、Internet上のアドレスへのメールの送信確認(gooのフリーアドレスを利用)
3. Internet上のアドレスから、mail.bflets.dyndns.orgにアカウントを持っているユーザーへのメールの送信確認
4. 1~3をrootを宛先にしての送信確認(aliasesによる転送設定の確認)
5. hogehoge@mail.bflets.dyndns.orgではなく、hogehoge@bflets.dyndns.orgを宛先にした確認
6 . 第三者中継の調査を利用して、不正転送を行わないようになっていることを確認

 上記の設定でこれら全てが成功したことをもって、メールサーバーが正常に動作したと確認しました。

Validator

Home