Login

オンライン中

We have 14 guests and no members online

eagle1jp

Mailサーバ(Postfix)の構築

Mailサーバ(Postfix)の構築

1.Postfixの特徴

 Postfixは単体の1つのプログラムではなく、いくつかの単機能なプログラムを組み合わせたソフトの総称と云えます。 1つ1つのプログラムは特定の目的だけのために動作し、他のソフトの動作による影響を受けないように設計されおり、これによって例えば、「インターネットから最初にSMTPの電文を受ける」プログラムにセキュリティ上の問題が発生しても、「メールデータをファイルとして書き込む」プログラムが影響を受けないようになっています。 また、個々のプログラムはその実行ユーザが必要最小限の権限を持った状態でしか機能しないため、仮にプログラムを乗っ取られてもその権限では大したことができないようになっています。
Postfixに関する代表的な特徴としては

  • 単機能なプログラムを組み合わせて、個々のプログラムの視認性とセキュリティ上の弱点を少なくしている。
  • コンパクトで高速な処理
  • メールデータ保存形式にMaildir形式が利用可能
  • sendmail互換のコマンドを用意(ただし一部、機能制約あり)
  • オープンソース

 などがあります。

 2.Postfixのインストール

 Postfixの最新版をソースからインストールしたいなら、ダウンロードサイトからソースを入手してコンパイルすることもできますが、基本的にはパッケージとして供給されているものを使うことをお勧めします。理由は、ソースファイルからコンパイルした場合、インストール時に最新であっても結局はメンテナンスが追いつかずパッケージでのインストール状態よりもセキュリティ上の問題が取り残される危険が多いと個人的は思っているからです。 メールサーバのように常に攻撃の危険性に晒されるプログラムの場合、最新の状態に保つことが防御の基本と考えられますので最新のソースを追いかけられる時間的・金銭的余裕がある場合を除いてはパッケージの利用(自動でアップデートさせる事も可能になるので))を前提とした方が結局はセキュリティ上も運用コストも安く済むと思います。

 (Debian(Ubuntu)でのパッケージのインストール方法)

 次のコマンドを実行します。

$ sudo apt-get install postfix 

 

 (Redhat(CentOS)でのパッケージのインストール方法)

 次のコマンドを実行します。(スーパーユーザ権限で実行します)

# yum install postfix

 

 3.メールサーバの切り替え

Redhatでは、Postfixをパッケージでインストールしてもそのままでは従来のMTA(sendmail)が動作してしまい、Postfixに切り替わらないかも知れません。  利用中のMTAを切り替えるには、

# alternatives --config mta

 を実行してMTAを切り替える事ができます。 Debian(Ubuntu)ではパッケージとしてPostfixをインストールした段階でsendmailが削除されてMTAはPostfixに切り替わります。

 4.Postfixの設定

Postfixのインストールができたら、利用する環境に合わせた設定を行います。
以下では次のようなシナリオで設定を行うこととします。

設定内容
設定値
構築するサーバの名前ms.example.jp
受信対象とするアドレス(@以後の部分)
example.jp, ms.example.jp, localhost.example.jp, localhost
送信時に付加するアドレス
example.jp
サーバが配置されている組織のローカルネットワークアドレス
192.168.1.0/24, 192.168.10.0/24, 127.0.0.0/8
メールデータの保存形式
Maildir(ホームディレクトリ配下)
受信を排除するアドレス
spam-net.com, dsl.spam-net.co.jp 
受信メールボックスのサイズ制限
2GB
受信メッセージの最大サイズ
1GB
排除ルール

ローカルエリア以外でSMTPのHELO内のホスト名が不正な場合排除。
ローカルエリア以外で、DNSのMXまたはAレコードに登録されていない場合排除。

迷惑メールの検査

メールヘッダーの中で
 "from: *spam-net.com"
 "from: *dsl.spam-net.co.jp"
という送信元がある場合には排除

 

  • /etc/postfix/main.cf
    Postfixの設定の中心は /etc/postfix/main.cfファイルにて行います。
    上記のシナリオに合わせた設定は次の部分を変更していきます。
    #
    myhostname = ms.example.jp
    mydomain = example.jp
    myorigin = $mydomain

    #
    mynetworks_style = subnet
    mynetworks = 192.168.1.0/24, 192.168.10.0/24, 127.0.0.0/8


    mydestination  = allmydestination = $mydomain, $myhostname, localhost.$mydomain, localhost

    home_mailbox = Maildir/
    #
    smtpd_banner = $myhostname ESMTP $mail_name

    # mailbox_size_limit
    mailbox_size_limit = 2097152000
    # message_size_limit
    message_size_limit = 1048576000

    recipient_delimiter = +
    inet_interfaces = all

    # Spam message Reject
    header_checks = regexp:/etc/postfix/header_checks

    # Bad SMTP HELO Check
    smtpd_helo_required = yes
    smtpd_helo_restrictions = permit_mynetworks reject_unknown_hostname


    # Bat MX or A check
    smtpd_recipient_restrictions =
            permit_mynetworks,
            reject_unknown_sender_domain,
            reject

     

  • /etc/postfix/header_checks
    続いて、/etc/postfix/header_checksファイルに受信を排除したいアドレスを登録します。
    /^Received: from .*spam-net.com/ REJECT
    /^Received: from .*dsl.spam-net.co.jp/ REJECT 

以上で、基本的なPostfixの設定は完了です。 
設定項目ではありませんが、利用しているOSによっては、ユーザ登録時にホームディレクトリにMaildirディレクトリが作成されないものがあります。 Postfixの場合、Maildirが存在しなければ自動的にMaildirを作成してくれますが、Postfix以外の処理連携のために予めMaildirが作成されている事が望ましい場合もあるかもしれません。
ユーザ登録時に自動的にMaildirを作成したい場合にはスケルトンディレクトリを利用すると良いでしょう。 スケルトンディレクトリは、ユーザ登録時にそこに存在するファイルやディレクトリをコピーしてホームディレクトリとして利用するもので、通常は /etc/skel というフォルダ以下にコピーさせたいものと置いておきます。
Maildir をコピーさせたいなら以下の手順でスケルトンに作成しておきます。

(Redhat,CetOSの場合)
# cd /etc/skel
# mkdir Maildir Maildir/cur Maildir/new Maildir/tmp
# chmod -R 0700 /etc/skel/Maildir

(Debian, Ubuntuの場合)
$ cd /etc/skel
$ sudo mkdir Maildir Maildir/cur Maildir/new Maildir/tmp
$ sudo chmod -R 0700 /etc/skel/Maildir

 

 【POP・IMAPサーバ(dovecot)の構築】に続く

 

セキュリティ情報

JVN サイト新着ならびに更新情報

広告