Mailサーバ(Postfix)の構築
- Details
-
Category: Mailサーバの構築
-
Written by Administrator
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)の構築】に続く