4.1 Postfix
4.1.1 Postfix の概要
Postfix は IBM が開発したメールサーバソフトです。
Postfix をはじめとする MTA(Mail Transfer Agent)は、ポート25/TCP を LISTEN して接続を待ち受け、メールクライアントや
他のメールサーバから SMTP によって送られてきたメールを処理します。メールサーバ内のメールボックスにメールを格納したり、
必要に応じて他のメールサーバにメールを配送します。
メールサーバには 他にも sendmail, qmail などいくつものソフトウェアが存在しています。
代表的なメールサーバの特徴
| 名前 | 説明 |
|---|---|
| sendmail | 古くからあるソフトウェア。セキュリティ上の問題や設定ファイルの複雑さから、最近は利用されることが少ない。 |
| qmail | セキュリティに優れている。開発者はセキュリティホールを見つけたら賞金を出すとまで豪語している。 |
| Postfix | sendmail との互換性が高く設定が容易。 |
4.1.2 Postfix のパッケージと設定
CnetOS は標準で sendmail をインストールして利用します。そこで、Postfix パッケージをネットワークインストールします。
- 書式)postfix インストール
- # yum install postfix
同様に既存の sendmail と新規 Postfix との入れ替えを行うためのツール「system-switch-mail」パッケージを探して、インストール作業を行います。
- 書式)system-switch-mail インストール
- # yum install system-switch-mail
「system-switch-mail」インストール後に、Postfix と sendmail の入れ替え作業を行います。
- 書式)Postfix と sendmail の入れ替え
- # system-switch-mail
Postfix の主な設定ファイルは、/etc/postfix/main.cf と /etc/postfix/master.cfです。 master.cf は高度な設定をする際に編集しますが、通常あまり変更することはありません。基本は main.cf の編集を行います。
4.1.3 設定ファイル main.cf
main.cf の設定を確認するには、postconf コマンドを利用します。数多くの設定項目がありますが、デフォルトと違うものだけ 表示するには、-n オプションを指定して実行します。
- 書式)postfix 設定確認 ※ デフォルトと設定が違うもの
- postconf -n
主な設定項目
| 項目名 | 説明 |
|---|---|
| myhostname | メールサーバのホスト名(FQDN) 例)smtp.ohmatsu.la.net |
| mydomain | メールサーバ所属するドメイン名 例)ohmatsu.la.net |
| myorigin | メールアドレスの@以下が指定されていない場合に自動補完する値。通常は、$myhostname、$mydomain を指定する |
| inet_interfaces | SMTP で接続を受け付ける IP アドレス 例)all ※全て受付 |
| mydestination | ローカル配送を行うメールアドレスのホスト部。
宛先メールアドレスのホスト部がこの値に含まれているとローカル配送する 例)$myhostname, $mydomain |
| mynetworks | 中継(リレー)を許可する接続元の IP アドレスやサブネットを指定 例1)10.20.131.3, 127.0.0.1 例2)10.20.0.0/16, 127.0.0.0/8 ※ プレフィックス表記を使う場合は全て統一する事 |
4.2 Postfix の起動と動作
4.2.1 Postfix の起動と停止
Postfix を起動するには、root になり、起動スクリプトか service コマンドを利用します。
- 書式)postfix 起動
- service postfix start 又は /etc/init.d/postfix start
Postfix を起動すると、master, qmgr, pickup という3つのプロセスが常駐します。 この中でも、master というプロセスは Postfix 全体を制御しており、他のプロセスを起動したり停止したりします。
- 書式)postfix プロセス確認
- ps aux 又は pstree
4.2.2 メールの配送とメールボックス
Postfix がメールを受け取り、処理するには、3つケースが考えられます。
- mail コマンドの利用
- 通常のメールクライアントによる送信
- TELNET コマンドにようる SMTP コマンド (※ 参照)
mail コマンドを利用する場合は、引数に宛先のメールアドレスを指定して実行します。
- 書式)mail コマンドによるメール送信
-
# mail naoki@tdr-lab.com [Enter]
Subject: [件名入力][Enter]
[本文入力][Enter]
.[Enter]
Cc:[CC入力(省略可能)][Enter]
この後、Postfix は配送処理を行うことになります。また、配送されてきたメールを格納するメールボックスは /var/spool/mail/ ディレクトリ内にユーザ名と同名のファイルとして作成されます。
4.2.3 Postfix のログ
Postfix のログは、syslog を通じて /var/log/maillog に格納されます。 配送にあたって様々な情報が記録されますが、各メールには固有の ID が割り当てられており、ログに記録されるため、同じ ID をたどることで、 メール1通1通の配送履歴を追うことができます。
4.3 Postfix の運用管理
4.3.1 キューの確認
Postfix はメール配信要求を受付ると、受け付けたメールを一旦メールキューと呼ばれる場所に格納します。
そして、格納されている送信待ち状態のメールを順次送信します。キューは、メールキューディレクトリと呼ばれるディレクトリに保存されます。
Postfix におけるメールキューディレクトリは、/var/spool/postfix/ 以下のディレクトリになります。
メールサーバを運用していると、宛先に指定されたユーザが存在しないメールが送られてきたり、ネットワークトラブルによって送信が完了
しなかったりということが多々あります。このような場合、キューディレクトリに登録された後、何度か再送信を試みます。
再試行にも失敗した場合は、そのメールを送信したユーザの元に不在通知が届きます。
- 書式)キューの確認コマンド
- # mailq
Postfix は一定時間ごとに自動的にメールキューに溜まっているメールの処理を行います。コマンドで行う場合は以下のようにします。
- 書式)キュー内のメールを即座に再送信
- # postfix flush
- 書式)キュー内のメールを削除
- # postsuper -d キューID
/var/spool/postfix/ 内には、数多くのディレクトリがあります。受信メールは、incoming に入り、その後 qmgr により active に移され 配送処理されます。何らかの原因で配送処理できなかったものは、deferred (deffer)に格納されます。この他、解析できないファイルや 壊れたメッセージを格納するためのキュー が corrupt 、特定の条件設定をしたメッセージが置かれる場所が hold です。 以上5つのキューが qmgr の管理下に置かれてます。
4.4 転送処理
転送処理は、大きく分けて2種類あります。まずはじめに行われるのが、システムとしての転送処理、次に行われるのが各ユーザ単位の 転送処理です。
4.4.1 システムとしての転送
/etc/aliases を使ってメールの転送を行います。
- 書式)info@[ドメイン] に来たメールを ユーザ naoki に転送
-
ユーザ名: 転送先ユーザ名
info: naoki
/etc/aliases を変更後は、下記のコマンドで設定を有効にします。
- 書式)aliases の有効化
- # newaliases
newaliases を実行するとバイナリ化した /etc/aliases.db ファイルが生成されます。 Postfix は aliases.db を参照してます。 aliases ファイルを変更後、設定を有効にするには Postfix の再起動の必要はなく newaliases が必要です。
4.4.2 各ユーザ単位の転送
~/.forward にファイルを設置する事により、各ユーザ単位での転送が行えるようになります。 1行1転送先として、宛先のメールアドレスを記述します。 ユーザ自分自身にもメールを残す場合には、先頭に\(バックスラッシュ)をつけて、自分自身のアドレスを記述します。 \ はループ防止のために記述します。
- 書式)~/.forward の記述方法
-
forward@docomo.ne.jp
\naoki@tdr-lab.com