内容紹介
高機能メールサーバソフトウェア「Postfix」(ポストフィックス)の解説書
Postfixは、ポストSendmailの候補として、現在最も有力なMTAのひとつである。本書は、Postfixの動作の詳細を知り、Postfixを使いこなして複雑なサービスを実現するための情報を網羅して解説する。POstfix2.1対応。
このような方におすすめ
ネットワーク管理者、特にメールサーバの管理者
目次
主要目次
まえがき
第I部 メールシステム
第1章 電子メールシステム
第II部 Postfixの導入と運用
第2章 メールサーバの構成と配置のプラン
第3章 Postfixのインストールと動作確認
第4章 Postfixの配置と設定
第5章 日常的な運用管理の基本
第6章 受信メッセージ処理の指定と拡張
第7章 アドレスの書き換え
第III部 Postfixの仕組み
第8章 Postfixの概要
第9章 Postfixのメッセージ入力
第10章 Postfixのメッセージキュー管理
第11章 Postfixのメッセージ出力
第12章 Postfixのローカルスプール向けメッセージ出力
第13章 Postfixの全体制御
第IV部 spam対策
第14章 不正中継対策
第15章 DNSを利用したspamデータベースの使用
第16章 メッセージ内容によるフィルタ
第V部 Postfix Tips
第17章 Postfixのチューニング
第18章 外部ライブラリを使ったPostfixの拡張
第19章 運用管理支援ツール
第20章 ほかのMTAからの移行
第21章 さらなる高度な知識
付録A main.cfのパラメータ
付録B 困ったときには?
付録C 参考文献
索引
詳細目次
まえがき
1. はじめに
2. 本書の構成と、対象とする読者
3. 表記凡例
4. おことわり
5. 謝辞
第I部 メールシステム
第1章 電子メールシステム
1.1 電子メールシステム
1.2 電子メールのメッセージ
1.3 メールサーバの構成
1.4 DNSとメール
1.4.1 メールアドレス
1.4.2 メールボックス名
1.4.3 DNSとMTAの動作
1.5 SMTP
1.6 MTAのさまざまな実装
1.6.1 Sendmail
1.6.2 qmail
1.6.3 exim
1.7 Postfix
第II部 Postfixの導入と運用
第2章 メールサーバの構成と配置のプラン
2.1 サーバ単体のバリエーション
2.1.1 メッセージをネットワークから受け取らないホスト
2.1.2 メッセージを外部から受け取らないホスト
2.1.3 自ホストに関係するメッセージのみ受け付けるホスト
2.1.4 いわゆるオールインワンのメールサーバとしてのホスト
2.2 ファイアウォールとメールサーバ
2.3 セカンダリMX:トラブル時などに一時的に配送を中継するサーバ
2.4 一時的に代理配送をするホスト:トラブル時にメールの配送先になるホスト
2.5 モバイルホスト:持ち運ばれ、さまざまなネットワークに接続されるホスト
第3章 Postfixのインストールと動作確認
3.1 Postfixを標準MTAとするOS
3.2 Postfixが動作する環境の準備
3.2.1 ソースコードのダウンロードとコンパイル
3.2.2 Sendmailの無効化
3.2.3 Postfixの実行ユーザの作成
3.2.4 エイリアスの作成
3.2.5 postdropグループの作成
3.2.6 INSTALL.shの実行
3.3 設定の第一歩
3.4 起動と停止
3.5 アップグレードや事故の際の設定の修正
3.6 必要なメールアドレス
第4章 Postfixの配置と設定
4.1 サーバ単体での設定
4.1.1 メールをネットワークで受け取らないホスト
4.1.2 メールを外部から受け取らないホスト
4.1.3 自ホストに関係するメッセージのみ受け付けるホスト
4.1.4 いわゆるオールインワンのメールサーバとしてのホスト
4.2 ファイアウォールの構築に必要なPostfix動作ホスト
4.2.1 Postfixそのものに対する接続制限
4.2.2 smtpdの使うネットワークインタフェースの制限
4.2.3 外サーバ向けSMTP配送に使用するアドレスの指定
4.2.4 アクセス情報と配送情報に基づくPostfixのサービス制限
4.2.5 ホストで動作するサービスの制限方法
4.3 セカンダリMXとしてPostfixを運用する
4.3.1 ETRNによるセカンダリMXからプライマリMXへの転送
4.3.2 sendmail -qRsiteによる方法
4.4 一時的に代理配送をするホストとしてPostfixを運用する
4.4.1 予備のメールリレー先
4.4.2 配送方法の指定
4.5 モバイル環境でのPostfixの使用
4.5.1 defer_transports
4.5.2 relayhost
4.5.3 fallback_relay
4.5.4 smtp_connect_timeout
4.6 バーチャルドメイン
4.6.1 MDA virtualを用いる方法
4.6.2 virtualが使用する配送位置の指定
4.6.3 virtual_alias_mapsを使う方法
4.6.4 transportを定義して使用する(外部プログラムを使う方法)
第5章 日常的な運用管理の基本
5.1 メッセージヘッダから得られる情報
5.2 Postfixからのsyslog出力
5.3 ログメッセージの例と読み方
5.3.1 ローカルユーザがメッセージを送った場合
5.3.2 コマンドラインからリスト宛てに送信した場合
5.3.3 存在しないドメインに送信しようとした場合
5.3.4 リモート側のメッセージ送信試行が拒否され、代わりにfallback_relayのホストに配送される場合
第6章 受信メッセージ処理の指定と拡張
6.1 アドレスの変更を通知する
6.2 エイリアス
6.2.1 /etc/aliasesの基本
6.2.2 エイリアスの右辺
6.2.3 エイリアスファイルの重複処理
6.2.4 エイリアスファイルの配置
6.2.5 DB形式化されたエイリアスファイル
6.2.6 owner-から始まるエイリアスの特別な処理
6.3 インクルード(include)
6.3.1 インクルードファイルの指定
6.3.2 インクルードファイルの記述と利用制限
6.4 一般ユーザによるメール制御を行う.forwardファイルの記述
6.4.1 .forwardファイルと拡張アドレス
6.4.2 ほかのアドレスへの転送
6.4.3 メッセージの格納先と方法の指定
6.4.4 パイプを用いたプログラムの起動
6.4.5 重複の処理
6.5 エイリアス、include、.forwardからのコマンド起動とスプールの指定の制限
6.5.1 利用可能な変数と文字列の制限
6.5.2 exitコード
第7章 アドレスの書き換え
7.1 アドレスのマスカレード
7.2 canonical_maps
7.2.1 recipient_canonical_mapsとsender_canonical_maps
7.2.2 canonical_mapsとvirtual_alias_mapsとの違い
7.3 その他のメールアドレスの書き換えに関するパラメータ
7.3.1 append_at_myorigin
7.3.2 append_dot_mydomain
7.3.3 swap_bangpath
7.3.4 allow_percent_hack
第III部 Postfixの仕組み
第8章 Postfixの概要
8.1 Postfixの構造
8.2 メッセージの配送例
8.2.1 コマンドラインから外部へ配送するメッセージ
8.2.2 smtpdが外部からメッセージを受けてローカルスプールに配送されるメッセージ
第9章 Postfixのメッセージ入力
9.1 ネットワークを経由しないでメッセージを入力する
9.1.1 maildropディレクトリの形式と格納方法
9.1.2 pickupデーモン
9.2 ネットワークを経由してメッセージを入力する
9.3 入力されたメッセージの整形をするcleanup
9.3.1 cleanupによるメッセージの整形
9.3.2 メッセージのチェック
第10章 Postfixのメッセージキュー管理
10.1 キューの種類と構造
10.2 配送先アドレスの解析
10.3 同時に処理するメッセージの制限
10.4 フェアキューイング
10.5 スロースタート
10.6 配送先の相乗りとソート、ラウンドロビン
10.6.1 nqmgrの特徴的な動作
10.7 効率的な再送
10.8 不測のキューの整理
10.9 バウンスと遅延処理
10.10 Postfixのキュー操作コマンド
10.10.1 mailq
10.10.2 postqueue
10.10.3 postsuper
10.10.4 postcat
第11章 Postfixのメッセージ出力
11.1 local:ローカルスプール配送MDA
11.2 virtual:バーチャルホスト用ローカル配送MDA
11.3 pipe:外部コマンドにパイプするMDA
11.4 smtp:SMTPを用いた外部配送を行うMDA
11.5 lmtp:LMTPプロトコルを用いた外部配送MDA
11.6 error:エラー処理のためのMDA
11.7 bounce:配送通知メッセージ作成のためのMDA
第12章 Postfixのローカルスプール向けメッセージ出力
12.1 localの動作詳細
12.1.1 エイリアスの評価
12.1.2 .forwardの評価
12.1.3 メッセージの格納
12.1.4 biffプロトコルによる通知
12.1.5 メールボックスへの書き込みに使う外部コマンド
12.1.6 メールボックスの小文字と大文字の差異
12.1.7 localの動作権限
12.1.8 存在しないユーザ宛てのメッセージ処理
12.2 virtualの動作詳細
第13章 Postfixの全体制御
13.1 サービス名とメッセージ伝達方法:サービスの定義
13.2 アクセス範囲、実行権限、chroot:サービスの動作条件の定義
13.3 実行間隔:サービスの起動周期の定義
13.4 最大プロセス数:実行される最大プロセス数の指定
13.5 起動するプログラム:起動するコマンドの指定
13.6 pipeでサービスを定義する
13.6.1 flags
13.6.2 user
13.6.3 eol
13.6.4 size
13.6.5 argv
第IV部 spam対策
第14章 不正中継対策
14.1 spamメッセージ配送の手口
14.2 MTAの中継機能を悪用するspam手法
14.3 SMTP AUTH
14.3.1 pop-before-smtp
14.3.2 SMTP AUTH
14.4 spamの判別と排除のタイミング
14.4.1 SMTP接続時点での判断
14.4.2 SMTPコマンドが入力された時点での判断
14.4.3 メッセージ内容が入力された時点での判断
14.5 smtpd_*_restrictionsの中で指定可能な制御パラメータ
14.5.1 maptype:mapname
14.5.2 XCLIENT拡張を使ったメッセージ処理の確認
第15章 DNSを利用したspamデータベースの使用
15.1 DNSBL利用のリスクと対応
15.2 DNSBLを使うためのPostfixのパラメータ
15.3 DNSBLに登録されているときのクライアントへのレスポンス
第16章 メッセージ内容によるフィルタ
16.1 Postfixのコンテンツチェック機能
16.1.1 メールメッセージ
16.1.2 ヘッダ部を利用した処理
16.1.3 ボディ部を利用した処理
16.1.4 フィルタリングの例
16.2 フィルタリングについてのその他の知識
16.3 フィルタリングのテスト
16.4 外部プログラムを使ったメッセージフィルタ
16.5 Postfix内部から外部フィルタを呼び出す
16.5.1 smtpd_proxy_filterパラメータを使ってローカルホスト上にある外部フィルタとの入出力にSMTPを使う
16.5.2 ローカルホスト上にある外部フィルタをpipeで呼び出し、処理後のメッセージをsendmailで戻す
16.5.3 外部フィルタとの通信にSMTPを使う
16.5.4 XFORWARD拡張を使った配送データの通知
16.6 amavisを使う
16.6.1 ローカル配送でamavisを使う
16.6.2 Postfix内部で呼び出す外部フィルタとしてamavisを使う
第V部 Postfix Tips
第17章 Postfixのチューニング
17.1 ボトルネックの発見
17.1.1 smtpstone
17.1.2 fsstone
17.2 使用リソースの制御
17.3 送信時にsmtpdとmaildropどちらを使うかの選択
17.4 DNSのチューニング
17.5 smtpのチューニング
17.5.1 SMTP並列配送の制御
17.5.2 smtpの名前解決
17.6 localのチューニング
17.7 キューマネージャの高速化
17.8 ディスクのミラーリングと高速化、NFS
17.9 並列化
17.10 バイナリの高速化
17.11 フィルタの高速化
17.12 (ローカル配送での)外部プログラムの利用
17.13 特定の配送先のために特別なtransport名を付けて使用する
第18章 外部ライブラリを使ったPostfixの拡張
18.1 SASLとSMTP AUTH
18.1.1 SASLのサポートする認証機構
18.1.2 Cyrus SASLライブラリのインストール
18.1.3 Cyrus SASLライブラリの設定
18.1.4 SASL対応のPostfixのインストール
18.1.5 PostfixをSMTP AUTHのサーバ側にする設定
18.1.6 PostfixをSMTP AUTHのクライアント側にする設定
18.1.7 SASLに関係する高度な設定
18.2 TLS
18.2.1 TLSに対応したPostfixの構築
18.2.2 PostfixをTLS対応サーバにする
18.2.3 PostfixをTLS対応クライアントにする
18.2.4 その他のTLSのパラメータ
18.3 SQL
18.3.1 MySQLまたはPostgreSQLに対応したPostfixの構築
18.3.2 MySQLまたはPostgreSQLのレコードをPostfixから使う
18.3.3 SQLのWHERE句とSELECT句の組み合わせ例
18.3.4 MySQLへのデータ設定
18.4 NISとLDAP
18.4.1 NIS
18.4.2 LDAP
18.4.3 LDAPに対応したPostfixの構築
18.4.4 LDAPを利用する
18.4.5 LDAPサーバへの接続設定
18.4.6 LDAPを使った検索の設定
第19章 運用管理支援ツール
19.1 ログファイルの管理と運用
19.2 ログ解析支援ツール
19.3 MRTG
第20章 ほかのMTAからの移行
20.1 Sendmailからの移行
20.1.1 スプールの位置
20.1.2 再送間隔の設定
20.1.3 Postfixのsendmailコマンドで無視されるオプション
20.1.4 alias、include、.forward
20.2 qmailからの移行
20.2.1 local配送に外部コマンドを使っているとき
20.2.2 local配送にqmail-localを使用しているとき
20.2.3 .qmailと.forward
第21章 さらなる高度な知識
21.1 SMTPのエラーおよび攻撃への対応
21.2 受信されるメッセージの保存および監視
21.3 DNSに問題がある場合の動作
21.3.1 MXレコードがないとき
21.3.2 CNAMEのとき
21.4 PostfixがサポートするSMTPのコマンドとレスポンス
21.4.1 PostfixがサポートしているESMTPコマンド
21.5 smtpd_*_restrictionsの中で使用する特別なパラメータを定義する
21.6 外部の利用ポリシー制御プログラム
21.7 ヘッダの削除
21.7.1 header_checksを使った内部ネットワークの隠蔽
21.7.2 header_checksを使った不正なMessage-Idヘッダの削除と書き換え
21.8 メールスプールの格納形式
21.8.1 mbox形式
21.8.2 Maildir形式
21.9 Postfixでのロックの使用
21.9.1 dotlock(ドット・ロック)
21.9.2 floockとfcntl
21.10 MIMEサポート
21.10.1 SMTP 8BITMIME拡張の制御
21.10.2 入力されたメッセージの取り扱い
21.11 デバッグ
21.11.1 don’t_remove
21.11.2 soft_bounce
21.11.3 warn_if_reject
21.11.4 debug_peer_listとdebug_peer_level
21.11.5 smtpd_error_sleep_time
21.11.6 notify_classes
21.11.7 master.cfでそれぞれのプログラムにデバッグのためのオプションを指定する
21.12 VERP:宛先ごとにエラーメール返送先を指定する
21.12.1 VERPの問題
21.12.2 ESMTPのXVERP拡張
21.12.3 その他のVERP関連のパラメータ
21.13 Postfixが使用するヘッダ
21.14 メッセージサイズとメールボックスサイズの制限
21.15 maptype
21.15.1 Berkeley DBとdbm
21.15.2 正規表現
21.16 spawn:inetd相当のサービス提供コマンド
21.17 複数のPostfixを動かす方法
21.17.1 ネットワークインタフェースの追加
21.17.2 設定ファイル(/etc/postfix以下)とすべてのファイルのコピー
21.17.3 スプールディレクトリの追加
21.17.4 設定ファイルの変更
21.17.5 起動と管理スクリプトの追加
21.18 メッセージ配送ループの検出と対策
21.18.1 Delivered-To:ヘッダによる方法
21.18.2 外部に配送するメッセージのMXレコードが自ホストを向いている
21.18.3 HELO/HOSTが一致したとき
21.18.4 ローカルのdouble-bounceアドレス宛てのメッセージ
21.18.5 Received:ヘッダの行数
21.19 verify:送受信者のアドレスの存在の有無を確認し、メッセージ受信を制御する
21.19.1 メールアドレスの調査の方法と制約
付録A main.cfのパラメータ
付録B 困ったときには?
付録C 参考文献
索引
続きを見る