|
|
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行目 、CentOS5では 212行目 あたりに記述があります。
Postfix
は
"mydestination"
しかし例えば、相手がメールアドレス "tanaka@obenri.com" に送ったつもりが、間違って "tamaka@obenri.com" 宛てに送ってしまったような場合は保存すべきメールボックスが見当たりませんから、Postfixはメールの送り主に対して「宛先不明メール」の返信を試みます。 この ディレクティブ では、その「宛先不明メール」に表示するエラーコードを設定します。 WBEL3及びCentOS3の場合 デフォルト では、
となっていて、エラーコード 450 が送信元に表示されることになります。 ところがこれには少し問題があります。 エラーコード 450 は、それを受け取った MUA または MTA 側では、 「今は事情があって受信できないので、後からもう一度送信しなおしてください。」 という意味に解釈されることがあり、ありもしないアカウント宛てに、一定時間毎に何度もメールの再送信を試みられてしまうことがあるからです。 これではメールを送る側にも送られる側にも迷惑な話ですから、 「該当するユーザーが見当たらないので、そのメールは受信できません。」 という意味のエラーコード 550 を返すように、
と修正することをお勧めします。 ただしWBEL4、CentOS4、CentOS5の場合はデフォルトで、
|
|||||||||
|
このディレクティブに何も設定しなければ
550
を返しますので、両方のディレクティブをコメントアウトしてもOKです。
でも、WBEL3やCentOS3のPostfixはどうしてこんなデフォルト設定になっているのでしょうか?。 |
"mynetworks_style"〜転送を許可するホストの範囲WBEL3 及び CentOS3 では 242行目〜 、WBEL4及びCentOS4では 239行目〜 、CentOS5では 240行目〜 あたりに記述があります。 |
|||||||||
|
実際に転送の動作を決めているのはこの
"mynetworks_style"
ではなく、後述する
"smtpd_recipient _restrictions" ディレクティブですので、こちら
の解説も合わせてご覧ください。
|
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サーバー 内の アプリケーション を使ってのみメールを送信するような運用の場合に限られるでしょう。 |
|||||||||
|
Postfixの構築に
役に立った一冊です ↓ |
ところでこの "mynetworks_style" は、次に説明する "mynetworks" と同じディレクティブパラメータ "$mynetworks" を与えるディレクティブで、 "mynetworks" に明示的な設定がなされていない場合にのみ有効となります。 さて、この "mynetworks_style" は、具体的にIPアドレスを指定することなく 構築中のLinuxサーバー のネットワーク設定から自動的にパラメータを取り込むディレクティブである点に注意してください。 例えば "mynetworks_style = subnet" と設定した場合、自宅の サブネット を "192.168.100.0/24" から "192.168.1.0/24" に変更すると自動的に設定値も変わり、ディレクティブパラメータ "$mynetworks" も同じく変更になります。 一般的にいうとPostfixの転送許可範囲はデフォルトの "mynetworks_style = subnet" で問題はありませんから、その他のIPアドレスに対して転送許可を追加したり、逆に転送を許可する プライベートIPアドレス の範囲を制限したり、という特殊な設定をしない限り、結果的には、
"mynetworks"〜転送を許可するホストの範囲(個別設定)WBEL3 及び CentOS3 では 257行目〜 、WBEL4及びCentOS4では 254行目〜 、CentOS5では 255行目〜 あたりに記述があります。 |
|||||||||
|
実際に転送の動作を決めているのはこの
"mynetworks"
ではなく、後述する
"smtpd_recipient _restrictions" ディレクティブですので、こちら
の解説も合わせてご覧ください。
|
ディレクティブ の意味は上で説明した "mynetworks_style" ディレクティブと同じです。 ただしこのディレクティブは、転送を許可するホストの範囲を IPアドレス またはネットワーク表記で具体的に設定します。 デフォルト では全ての設定パターンがコメントアウトされていますが、このディレクティブを有効にすると、 "mynetworks_style" に "mynetworks" の設定が追加されるのではなく、 "mynetworks_style" の設定そのものが無効になってしまう点に注意してください。 例えば、 "mynetworks_style = subnet" に該当する設定に加えて WAN 空間の特定のIPアドレスのホストから受信したメールの転送を追加で許可したいとき、これを "mynetworks" ディレクティブで記述する場合には、追加で許可するIPアドレスアドレスを記述するだけではなく、
のようにすべてのIPアドレス範囲を記述することになります。 ただ "mynetworks" ディレクティブで具体的にIPアドレスを設定してしまうと、例えば自宅の サブネット を "192.168.100.0/24" から "192.168.1.0/24" に変更したようなときは、 "mynetworks" のパラメータも記述し直す必要がある点に注意してください。 |
|||||||||
| 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行目〜 、CentOS5では 376行目〜 あたりに記述があります。 Postfix は、自ホスト内に保存されるべきメールを、 データベース を参照して特定のアドレスへ再転送を行わせることができます。
その詳細については、
WBEL3,CentOS3の場合 デフォルト では、
と記述されていますから、 「hash形式で"/etc/postfix/aliases(正確にはaliases.db)を参照する。」 と設定されていることになります。 動作の面だけから考えれば、この設定はこのままで何の問題もないのですが、お勧めは、
です。 |
|||||||||
|
|
実はこの"aliases.db"の参照機能はPostfixがその互換対象としている Sendmail の仕組みをそのまま受け継いだものです。 しかし、デフォルトのSendmailは、hash形式の "/etc/aliases.db" を参照するようになっていますから、この設定のようにPostfixも同じデータベースを参照するようにしておくと、この二つの MTA を切り替えて使用したい場合、個々にデータベース化作業を行う必要がないというわけです。 一方のWBEL4、CentOS4、CentOS5のデフォルトの記述は、
となっていますから修正する必要はありません。 "alias_database"〜newaliasesコマンドの実行対象の指定WBEL3 及び CentOS3 では 390行目〜 、WBEL4及びCentOS4では 385行目〜 、CentOS5では 386行目〜 あたりに記述があります。 "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、CentOS5の場合はデフォルトで、
と適切な設定になっていますからそのままでOKです。
関連セクション・
メールサーバーの構築
|
|
|
メール転送設定の使い分け
<<Previous
|
Next>>
セキュリティ関連の設定
|
| このサイトは既に更新を終了していますが、今のところ店じまいの予定はありません。 リンクフリー ですので、趣味や勉強のためでしたら、引用、転用、コピー、朗読、その他OKです。このサイトへのリンクについては こちら をご覧ください。 |
| ”Linux”は、Linus Torvalds 氏の各国における登録商標です。”Red Hat”及びRed Hatのロゴおよび Red Hat をベースとしたすべての商標とロゴは、各国におけるRed Hat, Inc. 社の商標または登録商標です。その他のプログラム名、システム名、製品名などは各メーカー、ベンダの各国における登録商標又は商標です。 |