|
|
|
|
サーバーのセットアップ
|
|
Postfixの設定
|
||
PostfixについてPostfixのファイル構成設定ファイルmain.cfについてホスト名とドメイン名の設定受信するホスト名の設定ホスト名毎のメールの振分けメール転送設定の使い分け受信/転送に関する設定セキュリティ関連の設定"main.cf"の書式チェックPostfixのコントロール連携するアプリケーション |
Postfixの受信/転送に関する設定以下は、 Postfix の主設定ファイル "/etc/postfix/main.cf" の設定項目です。 "unknown_local_recipient_reject_code"〜ユーザー不明の場合のエラーコードWBEL3 及び CentOS3 では 213,214行目 、WBEL4及びCentOS4では 211行目 あたりに記述があります。 Postfix が受信したメールを、自ホスト内に保存するとき、該当する宛先のメールボックスが見当たらなかった場合、送信元に表示するエラーコードを設定する ディレクティブ です。 WBEL3及びCentOS3の場合 デフォルト では、
となっていて、エラーコード 450 が送信元に表示されることになります。 |
||||
|
ところがこれには少し問題があります。 エラーコード 450 は、それを受け取った MUA または MTA 側では、 「今は事情があって受信できないので、後からもう一度送信しなおしてください。」 という意味に解釈されることがあり、ありもしないアカウント宛てに、一定時間毎に何度もメールの再送信を試みられてしまうことがあるからです。 これではメールを送る側にも送られる側にも迷惑な話ですから、 「該当するユーザーが見当たらないので、そのメールは受信できません。」 |
|||||
|
このディレクティブに何も設定しなければ
550
を返しますので、両方のディレクティブをコメントアウトしてもOKです。
でも、WBEL3やCentOS3のPostfixはどうしてこんなデフォルト設定になっているのでしょうか?。 |
という意味のエラーコード 550 を返すように、
と修正することをお勧めします。 |
||||
|
|
ただしWBEL4及びCentOS4の場合はデフォルトで、
"mynetworks_style"〜転送を許可するホストの範囲WBEL3 及び CentOS3 では 242行目〜 、WBEL4及びCentOS4では 239行目〜 あたりに記述があります。 Postfix が受信したメールを他の ホスト へ転送可能にする、 送信元のホストの範囲を設定する ディレクティブ です。 デフォルト では、
と、全ての設定パターンがコメントアウトされていますが、この場合は "mynetworks_style = subnet" が設定されているものと解釈されます。 この場合、 構築中のLinuxサーバー と同じ サブネット 、すなわち "192.168.100.0/24" と、 ループバックアドレス である "127.0.0.0/8" が設定対象となります。 これが "mynetworks_style" ディレクティブの推奨設定です。 つまり、
"mynetworks_style"が"subnet"または省略されたときのPostfixの動作 のように、"192.168.100.0/24"または"127.0.0.0/8"からPostfixに送信されたメールは、外部のMTAへと転送できますが、それ以外の IPアドレス のホストから送信されたメールは、外部のMTAへは転送されないということです。 ちなみに、 "mynetworks_style = class" を有効にすると、同じ ネットワーククラス に属するホストがすべて対象になり、設定上 セキュリティ の問題を抱えることになります。 また、 "mynetworks_style = host" を有効にすると、自ホストである 構築中のLinuxサーバー のみが対象となります。この設定は、Postfixを外部のホストの MUA から利用しない場合、つまり、 構築中のLinuxサーバー 内の アプリケーション を使ってのみメールを送信するような運用の場合に限られるでしょう。 ところで、このディレクティブが有効になるには、次に説明する "mynetworks" ディレクティブが 設定されていない ことが条件になります。
また、以後に説明するメールの受信/中継の判定のためのディレクティブ
"smtpd_client_restrictions"
"mynetworks"〜転送を許可するホストの範囲(個別設定)WBEL3 及び CentOS3 では 257行目〜 、WBEL4及びCentOS4では 254行目〜 あたりに記述があります。 ディレクティブ の意味は上で説明した "mynetworks_style" ディレクティブと同じです。 ただしこのディレクティブは、転送を許可するホストの範囲を IPアドレス またはネットワーク表記で具体的に設定します。 デフォルト では全ての設定パターンがコメントアウトされていますが、このディレクティブを有効にすると、 "mynetworks_style" に "mynetworks" の設定が追加されるのではなく、 "mynetworks_style" の設定が無効になってしまう点に注意してください。 例えば、 "mynetworks_style = subnet" に該当する設定に加えて WAN 空間の特定のIPアドレスのホストから受信したメールの転送を追加で許可したいとき、これを "mynetworks" ディレクティブで記述する場合には、追加で許可するIPアドレスアドレスを記述するだけではなく、
のようにすべてのIPアドレス範囲を記述することになります。 |
||||
| MUA は クライアント アプリケーション ですから、MTAからのメールの転送先ではありえません。 |
さて、Postfixが転送を試みる「他の ホスト 」とは、正確には 「他のホストからメールの受け入れが可能な MTA 」 ということになります。 |
||||
|
|
Postfix は、"mynetworks_style"や"mynetworks"ディレクティブで指定されたホスト(MTAまたはMUA)からのメールを受信すると、その宛先が "mydestination" ディレクティブで指定されたもの以外の場合、 DNSサーバー を利用してメールの宛先の 名前解決 を行い、自身以外のMTAへの転送を試みることになります。 実際のところ、ほとんどのインターネット利用者は ISP から提供されたメールアドレスを使用しているはずから、あなたが 構築中のLinuxサーバー 上のPostfixを使って友人などにメールを送りたい場合、あなたが使うMUAに対して"mynetworks_style"や"mynetworks"ディレクティブで「メール転送許可」を設定する必要があります。 ただし、自分の管理下にないMTAやMUAに対しては、 絶対にメール転送許可を設定してはいけません。 もしもそういう設定をしてしまうと、 構築中のLinuxサーバー は スパムメールの発信基地 にされてしまうかもしれないからです。
スパマーは自分で設置したMTAから直接スパムメールを発信するわけにはいきませんから
そしてもし 構築中のLinuxサーバー がスパムメールの発信基地にされてしまったら、あなたのメールサーバーそのうちブラックリストに挙げられ、多くのMTAから受信拒否されてしまうことになるでしょう。 "alias_maps"〜受信メールの再転送先ファイルの指定WBEL3 及び CentOS3 では 380行目〜 、WBEL4及びCentOS4では 375行目〜 あたりに記述があります。 Postfix は、自ホスト内に保存されるべきメールを、 データベース を参照して特定のアドレスへ再転送を行わせることができます。
その詳細については、
WBEL3,CentOS3の場合 デフォルト では、
と記述されていますから、 「hash形式で"/etc/postfix/aliases(正確にはaliases.db)を参照する。」 と設定されていることになります。 動作の面だけから考えれば、この設定はこのままで何の問題もないのですが、お勧めは、
です。 実はこの"aliases.db"の参照機能はPostfixがその互換対象としている Sendmail の仕組みをそのまま受け継いだものです。 しかし、デフォルトのSendmailは、hash形式の "/etc/aliases.db" を参照するようになっていますから、この設定のようにPostfixも同じデータベースを参照するようにしておくと、この二つの MTA を切り替えて使用したい場合、個々にデータベース化作業を行う必要がないというわけです。 一方のWBEL4,CentOS4のデフォルトの記述は、
となっていますから修正する必要はありません。 "alias_database"〜newaliasesコマンドの実行対象の指定WBEL3 では 390行目〜 、WBEL4では 385行目〜 あたりに記述があります。 |
||||
|
|
"aliases.db" を作成するための データベース 化 コマンド である、 newaliases を実行する際に、その出力先のデータベースファイルを指定する ディレクティブ です。 WBEL3,CentOS3では デフォルト で、
と記述されていますので、上から3番目を有効にすれば良いのですが、 "alias_maps" ディレクティブと連動しておいたほうが面倒がないので、
と設定しておくと良いでしょう。 また、理由はよくわかりませんがWBEL3,CentOS3の場合、この "alias_database" ディレクティブは、この"/etc/postfix/main.cf"の末尾に有効になっている記述がくっついています。
もちろんこの記述は不要ですから、
のように無効にしてください。 |
||||
|
おそらく
バグ
だと思われますが、WBEL4及びCentOS4のPostfixの場合、
"alias_database = $alias_maps" というように、 "$" を使った変数で設定するとエラーになってPostfixが起動しなくなりますので注意してください。 |
一方WBEL4及びCentOS4の場合はデフォルトで、
と適切な設定になっていますからそのままでOKです。
関連セクション・
メールサーバーの構築
|
|
メール転送設定の使い分け
<<Previous
|
Next>>
セキュリティ関連の設定
|
| このサイトに対するご意見、ご要望、苦情、泣き言、献上品、資金援助などがございましたら こちら からお寄せください(お返事できなかったらごめんなさい)。もちろん リンクフリー です。趣味や勉強のためでしたら、引用、転用、コピー、朗読、その他OKです。このサイトへのリンクについては こちら をご覧ください。 |
| ”Linux”は、Linus Torvalds 氏の各国における登録商標です。”Red Hat”及びRed Hatのロゴおよび Red Hat をベースとしたすべての商標とロゴは、各国におけるRed Hat, Inc. 社の商標または登録商標です。その他のプログラム名、システム名、製品名などは各メーカー、ベンダの各国における登録商標又は商標です。 |