プロジェクト

全般

プロフィール

Postfixを勉強したときのこと » 履歴 » バージョン 5

健二 酒井, 2019/04/20 13:22

1 1 健二 酒井
# Postfixを勉強したときのこと
2 1 健二 酒井
3 1 健二 酒井
## 概要
4 1 健二 酒井
5 1 健二 酒井
Postfixの入門解説資料。
6 1 健二 酒井
mydestinetionやリレーの設定が分かる・調べられるようにするのが目標。
7 1 健二 酒井
他の解説ページも使うの推奨。特に「Postfixのぺーじ」が良いと思う。
8 1 健二 酒井
9 1 健二 酒井
### 前準備
10 1 健二 酒井
11 1 健二 酒井
CentOS 6、7なら標準で入って稼働しています。特にインストール作業などは不要です。
12 1 健二 酒井
13 2 健二 酒井
まずは以下のファイルを抑える。
14 1 健二 酒井
15 1 健二 酒井
| ファイル名 | 役割 |
16 1 健二 酒井
| - | - |
17 1 健二 酒井
| /var/log/maillog | ログファイル |
18 1 健二 酒井
| /etc/postfix/main.cf | メインの設定ファイル |
19 2 健二 酒井
| /etc/aliases | ユーザー名のエイリアス |
20 1 健二 酒井
| /usr/share/doc/postfix-2.10.1 | Postfix付属のドキュメント類。当然英語 |
21 1 健二 酒井
22 1 健二 酒井
動作を見るときは`tail -f`でログファイルを監視しましょう。
23 1 健二 酒井
24 2 健二 酒井
簡単な歴史も抑えましょう、postfixより前の世代のメールサーバソフトとしてsendmailというものがありました。
25 2 健二 酒井
大いに流行ったらしいので、postfixはsendmailと互換性を持つように作られています。「よくわからないなぁ」と思う部分があったら
26 2 健二 酒井
「たぶん、sendmailの影響だろう」と思って納得してください。
27 2 健二 酒井
28 1 健二 酒井
### ログの見方
29 1 健二 酒井
30 1 健二 酒井
以下はログの実例
31 1 健二 酒井
32 1 健二 酒井
```
33 1 健二 酒井
Mar 24 03:05:03 hostname postfix/pickup[17871]: 56060D2814C: uid=0 from=<root>
34 1 健二 酒井
Mar 24 03:05:03 hostname postfix/cleanup[1054]: 56060D2814C: message-id=<20190323180503.56060D2814C>
35 1 健二 酒井
Mar 24 03:05:03 hostname postfix/qmgr[1406]: 56060D2814C: from=<root@見せられないよ>, size=1445, nrcpt=1 (queue active)
36 1 健二 酒井
Mar 24 03:05:03 hostname postfix/smtp[1060]: 56060D2814C: to=<redmine@見せられないよ>, relay=リレー先サーバ[xxx.xxx.xxx.xxx]:25, delay=0.65, delays=0.31/0.04/0.22/0.08, dsn=2.0.0, status=sent (250 2.0.0 x2NI53NW065825 Message accepted for delivery)
37 1 健二 酒井
Mar 24 03:05:03 hostname postfix/qmgr[1406]: 56060D2814C: removed
38 1 健二 酒井
```
39 1 健二 酒井
40 1 健二 酒井
Postfixは複数のプロセスが連携して動いています。各プロセスが協調するためにキューを使用しています。ですのでキューの情報がとても大事です。
41 2 健二 酒井
最後の行「potfix/qmgr[1406]  removed」があるとうまくいったと思ってください。defferedって見えたら失敗したと思ってください。
42 1 健二 酒井
問題があると処理されずキューに溜まっていきます。
43 1 健二 酒井
44 1 健二 酒井
### 構造
45 1 健二 酒井
46 1 健二 酒井
> ![postfix](img17.png)
47 1 健二 酒井
48 1 健二 酒井
引用元:http://www.wakhok.ac.jp/~kanayama/summer/05/net/node78.html
49 1 健二 酒井
50 1 健二 酒井
この図を頭に叩き込んでください。
51 1 健二 酒井
52 1 健二 酒井
1. pickupとsmtpdがメール送信要求を受け取る
53 1 健二 酒井
1. clenupからqmgrに伝わり。
54 1 健二 酒井
1. local配信か他のsmtpサーバに伝えられる
55 1 健二 酒井
56 1 健二 酒井
というメールを受信してからの処理の流れがまとまっています。masterはこれら複数のプロセスを制御しています。
57 1 健二 酒井
58 2 健二 酒井
設定は以下のページを参考に読むといいでしょう。
59 2 健二 酒井
http://www.postfix-jp.info/trans-2.3/conf/main.cf.jp
60 2 健二 酒井
61 1 健二 酒井
### 受信設定
62 1 健二 酒井
63 2 健二 酒井
「$myhostname」は頭に$をつけることで設定した内容を後から参照するときに使います。
64 1 健二 酒井
65 2 健二 酒井
項目 | 説明  
66 2 健二 酒井
- | -
67 1 健二 酒井
myhostname | 自分のホスト名、hostnameコマンドで得られるものが入ると思う
68 5 健二 酒井
inet_interfaces | メールの受信を行うネットワークインターフェースを指定。動かしたいだけなら「all」と入れる
69 3 健二 酒井
mydestination | 自分が最終目的地と判断する(ローカルユーザーに配送する)メールドメイン。デフォルトは$myhostnameとかだったかな。<br> user@example.comあてのメールを受けたとき、mydestination=example.comだと「このメールが自分のマシンに受け取るユーザーがいる」と思いローカル配送を試みる。
70 1 健二 酒井
71 5 健二 酒井
72 5 健二 酒井
> ```
73 5 健二 酒井
# インターネットのホストとドメイン名
74 5 健二 酒井
# 
75 5 健二 酒井
# myhostname パラメータにはこのメールシステムのインターネット上の
76 5 健二 酒井
# ホスト名を指定します。デフォルトは gethostname() から得られた
77 5 健二 酒井
# FQDN(fully-qualified domain name, ホスト名+ドメイン名)です。
78 5 健二 酒井
# $myhostname は他の多くの設定パラメータでデフォルト値として使われます。
79 5 健二 酒井
#
80 5 健二 酒井
#myhostname = host.domain.tld
81 5 健二 酒井
#myhostname = virtual.domain.tld
82 5 健二 酒井
# mydomain パラメータにはローカルなインターネットドメイン名を指定
83 5 健二 酒井
# します。デフォルトは $myhostname からはじめの部分を引いたものです。
84 5 健二 酒井
# $mydomain は他の多くの設定パラメータでデフォルト値として使われます。
85 5 健二 酒井
#
86 5 健二 酒井
#mydomain = domain.tld
87 5 健二 酒井
```
88 5 健二 酒井
89 5 健二 酒井
90 5 健二 酒井
>```
91 5 健二 酒井
# inet_interfaces パラメータには配送されたメールをメールシステムが
92 5 健二 酒井
# 受け取る際のネットワークインターフェースのアドレスを指定します。
93 5 健二 酒井
# デフォルトではソフトウェアはマシン上のすべてのアクティブなインター
94 5 健二 酒井
# フェースを要求します。このパラメータは user@[ip.address] へのメールも
95 5 健二 酒井
# 制御します。
96 5 健二 酒井
#
97 5 健二 酒井
# プロキシもしくはネットワークアドレス変換ソフトを通して自身に
98 5 健二 酒井
# 転送されるネットワークアドレスについては、proxy_interfaces
99 5 健二 酒井
# パラメータも参照してください。
100 5 健二 酒井
#
101 5 健二 酒井
# 注意: このパラメータを変更したら、Postfixを stop/start する
102 5 健二 酒井
# 必要があります。
103 5 健二 酒井
#
104 5 健二 酒井
#inet_interfaces = all
105 5 健二 酒井
#inet_interfaces = $myhostname
106 5 健二 酒井
#inet_interfaces = $myhostname, localhost
107 5 健二 酒井
```
108 5 健二 酒井
109 5 健二 酒井
> ```
110 5 健二 酒井
# mydestination パラメータには、このマシンが自分自身が最終目的地だと
111 5 健二 酒井
# みなすドメインのリストを指定します。
112 5 健二 酒井
#
113 5 健二 酒井
# これらのドメインは local_transport パラメータで設定された配送
114 5 健二 酒井
# エージェントに回されます。それはデフォルトでは /etc/passwd や
115 5 健二 酒井
# /etc/aliases、およびそれと同等のものに書かれた全ての受信者を
116 5 健二 酒井
# 検索する UNIX 互換の配送エージェントです。
117 5 健二 酒井
#
118 5 健二 酒井
# デフォルトは $myhostname + localhost.$mydomain です。メールドメイン
119 5 健二 酒井
# ゲートウェイでは、$mydomain も含めるべきです。
120 5 健二 酒井
(途中略)
121 5 健二 酒井
#mydestination = $myhostname, localhost.$mydomain, localhost
122 5 健二 酒井
#mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
123 5 健二 酒井
#mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain,
124 5 健二 酒井
#	mail.$mydomain, www.$mydomain, ftp.$mydomain
125 5 健二 酒井
126 5 健二 酒井
127 1 健二 酒井
### 送信設定
128 1 健二 酒井
129 2 健二 酒井
130 2 健二 酒井
項目 | 説明
131 2 健二 酒井
- | -
132 4 健二 酒井
myorigin | ローカルユーザーが送信したメールにつけられるドメイン名。デフォルト$myhostname。userというLinuxユーザーがメールを出すとuser@$originという送信元で出される。
133 1 健二 酒井
relayhost | 受け取ったけど送るユーザーがいないときに、ここで設定されたマシンに対してリレーする
134 5 健二 酒井
135 5 健二 酒井
> ```
136 5 健二 酒井
# メールの送信
137 5 健二 酒井
# 
138 5 健二 酒井
# myorigin パラメータにはローカルで送信されたメールがどのドメインから
139 5 健二 酒井
# 来るように見えるかを指定します。デフォルトは $myhostname で、これは
140 5 健二 酒井
# 小さなサイト向きです。もし複数のマシンがあるドメインで走らせるので
141 5 健二 酒井
# あれば、(1)これを $mydomain に変えて、(2) それぞれのユーザに対する
142 5 健二 酒井
# エイリアスを user@that.users.mailhost の形でドメイン全体に渡って
143 5 健二 酒井
# 作るべきです。
144 5 健二 酒井
#
145 5 健二 酒井
# 送信者と受信者のアドレス間の一貫性を保つため、myorigin は
146 5 健二 酒井
# @domain 部分がない受信者アドレスに付け加えられるデフォルトの
147 5 健二 酒井
# ドメインも指定します。
148 5 健二 酒井
#
149 5 健二 酒井
#myorigin = $myhostname
150 5 健二 酒井
#myorigin = $mydomain
151 5 健二 酒井
```
152 5 健二 酒井
153 5 健二 酒井
> ```
154 5 健二 酒井
# relay_domains パラメータはこのメールシステムがどの目的地にメールを
155 5 健二 酒井
# リレーするかを制限します。詳細な情報は postconf(5) の
156 5 健二 酒井
# smtpd_recipient_restrictions の記述を参照してください。
157 5 健二 酒井
#
158 5 健二 酒井
# デフォルトでは、Postfixは
159 5 健二 酒井
# - ($mynetworks にマッチする IP アドレスを持つ)「信頼された」
160 5 健二 酒井
#   クライアントから全ての目的地へ
161 5 健二 酒井
# - 「信頼されていない」クライアントから、$relay_domains または
162 5 健二 酒井
#   そのサブドメインにマッチする目的地へ、送信者が指定した
163 5 健二 酒井
#   ルーティングのアドレスを除いて
164 5 健二 酒井
# リレーをします。デフォルトでは、relay_domains は $mydestination です。
165 5 健二 酒井
```
166 2 健二 酒井
167 1 健二 酒井
### ローカル配信とエイリアス
168 1 健二 酒井
169 2 健二 酒井
/etc/aliasesはユーザー名の別名を指定します。例えば「postmaster: root」となっていますが、
170 2 健二 酒井
postmaster@myhost.example.comを自分のマシンが受け取ったとき、root@myhost.example.comへのメールとして扱います。
171 1 健二 酒井
172 2 健二 酒井
/etc/aliasesは編集するだけでは反映されません。編集後
173 2 健二 酒井
```
174 2 健二 酒井
newaliases
175 2 健二 酒井
```
176 1 健二 酒井
177 2 健二 酒井
を打ちましょう。
178 2 健二 酒井
179 2 健二 酒井
## 今後
180 2 健二 酒井
181 2 健二 酒井
本当は全然足りないけどこの記事はここまで。次はまたいつかに。
182 2 健二 酒井
183 1 健二 酒井
## 参考
184 1 健二 酒井
185 1 健二 酒井
* 5.1.5 Postfixの構造:http://www.wakhok.ac.jp/~kanayama/summer/05/net/node78.html  
186 1 健二 酒井
Postfixについて、このページだけでも読んでおくと理解が違う
187 1 健二 酒井
188 1 健二 酒井
* Postfixのぺーじ:http://www.postfix-jp.info/ 
189 1 健二 酒井
マニュアルの日本語訳があるのが嬉しい。
190 1 健二 酒井
標準設定の例とかで勉強する。
191 1 健二 酒井
192 2 健二 酒井
* main.cf日本語訳:http://www.postfix-jp.info/trans-2.3/conf/main.cf.jp
193 2 健二 酒井
一回読んでおくと吉
194 2 健二 酒井
195 1 健二 酒井
* Postfix実用ガイド:https://www.oreilly.co.jp/books/4873111951/  
196 1 健二 酒井
オライリーさんのPostfix解説書。SMTPはこれで学んだ。後ろのほうは全然読んでないから全体は分からない。
197 2 健二 酒井
198 2 健二 酒井
* /etc/aliasesについて:https://www.itmedia.co.jp/help/tips/linux/l0349.html