これから先はメールサーバを管理しようと思う人ならば、sendmail は捨てて postfix から始めた方がよい。
そのうち新人の管理者が、
「sendmailってなんすか」
「むかしのあれっすね。骨董品ですよ。はぁはぁ」
とか言う時代が来るんだろうなぁ。
気落とさずにpostfixに対して Null クライアントの設定をしよう。
postfix のNullクライアント設定
設定の内容は
- smtp 接続はループバックにのみで、リモートアクセスさせない。
- ローカルで受ける宛先ドメインを空にする。
- ローカル以外宛先のメールを、Mail Hub にリレーする。
- アドレスのドメイン部分に対して$mydomain へのマスカレードを行う。
- マスカレードの対象は、エンベロープ送信者、ヘッダ送信者、エンベロープ受信者、ヘッダ受信者の全て。
/etc/postfix/main.cf
inet_interfaces = loopback-only
myhostname = host.example.com
mydomain = example.com
myorigin = $myhostname
mydestination =
relayhost = $mydomain
masquerade_classes = envelope_sender,header_sender,envelope_recipient,header_recipient
masquerade_domains = $mydomain
これで、sendmail の EXPOSED_USERが空の場合と同じになる。
postfix で EXPOSED_USER を実現?
sendmail の EXPOSED_USER と同じことを行うにはどうすればよいのか?
EXPOSED_USER で指定したユーザがマスカレード対象を除外されるのは、ヘッダ送信者/ヘッダ受信者の変換のみのようである。 実際の挙動とcf で変換した sendmail.cf をざっと見た限りそう思う。
どこにも一次情報が見当たらない。。。だから嘘かもしれない。
postfix で、masquerade_exceptions にユーザを追加すると、エンベロープ送信者/エンベロープ受信者の変換も除外になるので、ちょっとだけ追加の設定が必要である。
/etc/postfix/main.cf
...
masquerade_exceptions = root
virtual_alias_maps = regexp:/etc/postfix/virtual_regexp
/etc/postfix/virtual_regexp
/^root@.+\.example\.com$/ root@example.com
これで、ヘッダ部分のFrom:/To:でのみ root@host.example.com 形式のまま残るようになる。
ただ、無理して sendmail と同じ動作するようにする必要は無いかも。
追記
存在しないホストでも変換してしまう。
user@host.example.com -> user@example.com
user@ZZZ.example.com -> user@example.com
postfix の masquerade_domains 設定はちょっと外向きのメールサーバには向かないなぁ。。。
0 件のコメント:
コメントを投稿