このページではLinux構築した自宅サーバーで使用するMTAであるPostfixセキュリティに関する設定について初心者向けに解説します。
お便利サーバー.com+相互リンクサイト内をキーワードで検索
Postfixの設定

Postfixについて

Postfixのファイル構成

設定ファイルmain.cfについて

ホスト名とドメイン名の設定

受信するホスト名の設定

ホスト名毎のメールの振分け

メール転送設定の使い分け

受信/転送に関する設定

セキュリティ関連の設定

"main.cf"の書式チェック

Postfixのコントロール

連携するアプリケーション


Postfixのセキュリティ関連の設定

以下は、 Postfix の主設定ファイル "/etc/postfix/main.cf" の設定項目です。

これらは "/etc/postfix/main.cf" の中には デフォルト の記述例がありません。

従って "/etc/postfix/main.cf" の中に追加記述する必要があります。

記述する位置は任意で構いませんが、もともと存在する設定と混同しないように工夫しておくと良いでしょう。

一般的にはこういう「新規」の設定はファイルの末尾に記述しておくのがベターです。

"smtpd_client_restrictions"〜接続要求の可否(追記)

Postfix がメールの送信を受けた時に要求の可否を判定する ディレクティブ です。

明示的に記述しない場合には、Postfixは クライアント からの全ての送信要求を受け付けますから、このディレクティブは特定の条件を加えたい場合にのみ明示的に記述することになります。

このディレクティブは通常、複数のパラメータをスペースまたはタブで区切って記述します。

そしてメールの受信や中継の要求が発生するとそのメールに対して左側のパラメータから順に条件比較され、最初に一致した条件によってPostfixは受信の可否を決定します。

ここに設定できるパラメータは非常に種類が多いのですが、最低限設定しておくのが望ましい設定例を以下に示します。

smtpd_client_restrictions =
 permit_mynetworks,
 reject_unknown_client,
 permit

一つ目の "permit_mynetworks" "$mynetworks" つまり前述の "mynetworks_style" または "mynetworks" の値を参照して要求を許可する、という意味です mynetworks_styleディレクティブについて mynetworksディレクティブについて

つまりこのパラメータを最初に記述することで、信頼できるネットワークに対して優先的にメールの中継許可を与えることになります。

次の "reject_unknown_client" は、逆引きの 名前解決 のできない ノード からのメールの受信を拒否する設定です。

名前解決とメールのリレー でも説明したとおり、逆引きの 名前解決 のできないメールサーバーからメールのリレーを受け入れることは、 構築中のLinuxサーバー にとって セキュリティ 上の問題があるだけでなく、スパムメールの横行に手を貸すことにもなりますからできるだけ避けなくてはなりません。

この設定を行うだけで、かなりの割合のスパムメールの受信を拒否することができるようになります。

もちろん、この設定によって名前解決による FQDN を持たないMTAからのメールはすべて受信拒否しますから、不正なものではないけれども、 設定が不完全なMTA からのメールも一部巻き添えになるかもしれません。

とはいえ、スパムメールの脅威に比べれば、それは「些細な不都合」に過ぎないと思われます。

Postfixの構築に
役に立った一冊です

最後の "permit" はすべての要求を許可するパラメータです。

つまり前の二つのパラメータに当てはまらないメールに普遍的な「OK」を出すためのパラメータとして記述するわけですが、実際には "permit" デフォルト のパラメータなので設定は不要です。

しかし普通はデフォルトの値を解りやすくするために明示的に設定しておく習慣になっています。

"smtpd_recipient_restrictions"〜転送要求の可否(追記)

Postfix がメールの中継を伴う送信要求を受けた際に、特定の制限を加えたい場合に設定する ディレクティブ です。

このディレクティブは通常、複数のパラメータをスペースまたはタブで区切って記述します。

そしてメールの受信や中継の要求が発生するとそのメールに対して左側のパラメータから順に条件比較され、最初に一致した条件によって可否が決定されます。

明示的に記述しない場合は、

smtpd_recipient_restrictions =
 permit_mynetworks,
 reject_unauth_destination

デフォルト で設定されているものとみなされます。これを平易に説明すると、

"mynetworks_style" あるいは "mynetworks" で有効になっているネットワークからの送信要求に対してメールの中継を許可し (permit_mynetworks) 、それ以外のネットワークからの送信要求に対してはメールの中継を許可しない (reject_unauth_destination) 。」

という動作になり、例えば"mynetworks_style" mynetworks_styleディレクティブについて が、

mynetworks_style = subnet

あるいは"mynetworks" mynetworksディレクティブについて で、

mynetworks = 192.168.100.0/24, 127.0.0.0/8

と設定されていたとすると、 構築中のLinuxサーバー 自身と自宅内の クライアント からの送信メールはすべて外部の MTA に中継されますが、外出先などからの送信メールは外部のMTAには中継されない、ということになります。

mynetworks_styleがsubnetまたは省略されたときのPostfixの動作
"smtpd_recipient_restrictions "がデフォルトのときのPostfixの動作

メールは自宅でしか扱わず、メールの送信はすべて自宅内のパソコンから行う、という利用環境でしたらもちろんこの設定のままで構いませんから、明示的に"smtpd_recipient_restrictions"を記述する必要はありません。

しかし外出先からのメール送信を可能にするために、 SMTP AUTH SMTP AUTHの構築 を利用する場合、あるいは POP/IMAP before SMTP POP/IMAP before SMTPの構築 を利用する場合にはそれぞれのアプリケーションに迎合する記述を "permit_mynetworks" "reject_unauth_destination" の間に記述します。

以下に設定例を示します。

実際にSMTP AUTHを構築する場合は、これとは別に "smtpd_sasl_auth_enable = yes" を記述しておく必要があります。
smtpd_recipient_restrictions =
 permit_mynetworks,
 check_client_access hash:/etc/postfix/pop-before-smtp, ※pop-before-smtpによる許可
 permit_sasl_authenticated,               ※SMTP AUTHによる許可
 reject_unauth_destination
安全のため、このディレクティブを記述する場合には必ず"reject_unauth
_destination"またはその他指定の制限パラメータを記述しなければならなくなっており、これを忘れるとその他の記述内容に係わらずPostfixは一切の中継を行わないようになっています。偉いですね。

このディレクティブは、設定を間違えると構築中のサーバーが不正中継メールサーバーになってしまいますので、注意して設定してください。

"mailbox_size_limit"〜メールボックスの容量(追記)

ユーザーアカウント が受信したメールは、削除されなければ "/var/spool/mail/" 以下に、それぞれのユーザーアカウント名の一つのファイルに追加書き込みという形で保存されていきます 受信メールの保存様式について

"mailbox_size_limit" は、その一つのユーザーアカウントあたりの保存容量の上限を設定する ディレクティブ です。

単位は バイト です。

例えばこれを大体1GBくらいに設定したいときは、

mailbox_size_limit = 1000000000

と設定してください。

デフォルト では、このディレクティブの記述はありませんが、記述がない場合は自動的に、

mailbox_size_limit = 51200000

、つまり約 50MB が設定されます。

設定がないから無制限、というわけではありませんから気をつけてください。

"message_size_limit"〜扱い可能な一通のメールの容量(追記)

通信速度の飛躍的な向上と、 ハードディスク 容量の増加に伴い、現在ではかなり大きなサイズのデータもメールでやりとりされるようになっています。

とはいえ、一般に ISP から提供されるメールアドレスでは、メールボックスのサイズはせいぜい50 MB 〜100MB程度です。

例えばあなたがそのメールアドレス宛てに、500MBの巨大なメールを送ったとしたらどうなるでしょう。

当然相手の MTA は容量オーバーで受信拒否しますから、そのメールは「受信不可」のメッセージとともに 構築中のLinuxサーバー 上のあなたのメールボックスに格納されます。

そしてあなたは自分の MUA で、その巨大な「送れなかったメール」を延々と受信しなければならなくなります。

送らなければならない容量が大きいときは、例えば FTPサーバー Webサーバー 、あるいは徒歩や自転車などを利用するべきでしょう。

このように、メールシステムはその仕組み上、大きなデータを送るための手段としては不適当です。どんなに大きくても50MB、通常は10〜20MB程度とし、それ以上の容量のデータを送る場合は別の手段を考えるべきでしょう。

ただ、いくら気をつけていても、ファイルの容量を見間違えてうっかり大きなデータを送ってしまうことはあり得ますから、ここはMTAに取り扱い容量の制限を設けてミスに対処するべきでしょう。

例えばこれを大体20MBくらいに制限したいときは、この、 "message_size_limit" ディレクティブ で、

message_size_limit = 20000000

と設定してください。

設定値は、メールの送受信のためのヘッダなどが付いたときの容量になりますから、実際に送ることができる容量は、設定値よりも少し小さめになります。

デフォルト では、このディレクティブの記述はありませんが、記述がない場合は自動的に、

message_size_limit = 10240000

、つまり約 10MB が設定されます。

設定がないから無制限、というわけではありませんから気をつけてください。

郵便受けよりも大きな郵便物は受けられない、というわけですね。

また説明するまでもないかもしれませんが、このディレクティブは、必ず、 "mailbox_size_limit" ディレクティブの設定値よりも小さくなければなりません。

"smtpd_recipient_limit"〜扱い可能な一通のメールのコピー数(追記)

MUA は普通、大勢の相手に同じ内容のメールを一度に送信する機能を持っています。

これはメールシステムの持つ大きなメリットの一つですが、逆に スパムメール の大量発信に悪用される恐れもあるといえます。

サーバーサイドアプリケーション を利用して、多くの読者にメールマガジンなどを発信するような場合は別ですが。

一般的なメールの利用方法であれば、メールのコピーを配信するにしてもせいぜい30〜50通くらいが常識的なところではないでしょうか。

"smtpd_recipient_limit" は、この一度に送信するメールのコピーを上限を決める ディレクティブ です。

たとえば50通に制限したい場合は、

smtpd_recipient_limit = 50

と設定してください。

デフォルト では、このディレクティブの記述はありませんが、記述がない場合は自動的に、

smtpd_recipient_limit = 1000

、つまり 1000通 に設定されます。

このディレクティブは、万が一 構築中のLinuxサーバー がメールの不正中継に使われたり、あるいは サブネット 内の他の ホスト機 コンピュータウイルス に感染して、大量のウイルス付きメールを発信しようとする場合に、最低限の防御手段となります。

必ず自分の利用方法に見合ったパラメータを設定するようにしてください。

サブミッションポートの有効化

Outbound Port25 Blocking に対応する サブミッションポート の設定については、その意味をきちんと理解していただく意味で別途こちら サブミッションポートの設定について に詳しく解説しています。

設定は "/etc/postfix/main.cf" ではなく、 "/etc/postfix/master.cf" に対して行いますので、必要に応じて参照してください。

関連セクションへ 関連セクション・ メールサーバーの構築

このサイトは既に更新を終了していますが、今のところ店じまいの予定はありません。 リンクフリー ですので、趣味や勉強のためでしたら、引用、転用、コピー、朗読、その他OKです。このサイトへのリンクについては こちら をご覧ください。
Powered by Apache
”Linux”は、Linus Torvalds 氏の各国における登録商標です。”Red Hat”及びRed Hatのロゴおよび Red Hat をベースとしたすべての商標とロゴは、各国におけるRed Hat, Inc. 社の商標または登録商標です。その他のプログラム名、システム名、製品名などは各メーカー、ベンダの各国における登録商標又は商標です。
www.centos.org - The Community ENTerprise Operating System