第13章 Postfix

Postfix プロジェクトページより抜粋:
原文: "What is Postfix? It is Wietse Venema's mailer that started life at IBM research as an alternative to the widely-used Sendmail program. Postfix attempts to be fast, easy to administer, and secure. The outside has a definite Sendmail-ish flavor, but the inside is completely different." (訳文: Postfix とは? 幅広く利用されていた Sendmail プログラムの代替となるプログラムの調査が IBM によって行なわれたのが始まりとなる Wietse Venema のメーラーです。Postfix では高速で管理が容易でありながら安全なメーラーを目指しています。外観は Sendmail 色を色濃く残していますが、プログラム自体はまったく異なる仕様になっています。)
Red Hat Enterprise Linux では、 postfix は postfix パッケージで提供されます。 rpm -q postfix を実行して、 postfix パッケージがインストールされているか確認してください。 インストールされていない場合は、 root ユーザーで次のコマンドを実行してインストールを行ないます。
yum install postfix

13.1. Postfix と SELinux

Postfix を有効にすると、デフォルトで制限のあるサービスとして実行されます。制限のあるプロセスはそれ自体のドメイン内で実行され、他の制限のあるプロセスとは分離されます。制限のあるプロセスが攻撃を受けると、SELinux ポリシー設定に応じて、攻撃側がリソースにアクセスして加えることができる被害は限定されます。以下に、Postfix 自体のドメイン内で実行している Postfix プロセスの例を示します。 ここでは postfix パッケージがインストールされていること、また Postfix サービスが起動されていることを前提としています。
  1. getenforce を実行して SELinux が enforcing モードで実行しているか確認します。
    $ getenforce
    Enforcing
    
    SELinux が enforcing モードで実行している場合は、 getenforce コマンドを実行すると Enforcing が返されます。
  2. root ユーザーで service postfix start を実行し、 postfix を起動します。
    service postfix start
    Starting postfix:                               [  OK  ]
    
  3. ps -eZ | grep postfix を実行し、 postfix プロセスを表示させます。
    ps -eZ | grep postfix
    system_u:system_r:postfix_master_t:s0 1651 ?   00:00:00 master
    system_u:system_r:postfix_pickup_t:s0 1662 ?   00:00:00 pickup
    system_u:system_r:postfix_qmgr_t:s0 1663 ?     00:00:00 qmgr
    
    たとえば、Postfix master プロセスに関連する SELinux コンテキストは unconfined_u:system_r:postfix_master_t:s0 です。 コンテキストの最後から 2 番目の部分、 postfix_master_t がこのプロセスのタイプになります。 プロセスのドメインやファイルのタイプを定義するのがタイプです。 この例の場合、 master プロセスは postfix_master_t ドメイン内で実行しています。