Postfixのalways_bcc、sender_bcc_maps、recipient_bcc_mapsの動作検証をした時の備忘録です。

■想定図


■説明
Postfixでメールのアーカイブをするのに何かやり方が無いか調べたところ、「always_bcc」「sender_bcc_maps」「recipient_bcc_maps」があることが分かりました。
と、言うことで早速動作を確認してみました。
ここでは、想定図のような環境で検証します。

ホスト名example.localにメールが来たら、そのメールにBCCを自動で追加してホスト名example3.localのメールアーカイブサーバへと送信します。
メールは、example.localとexample3.localの2つに届くようにします。
※ただし、このやり方だとエンベロープの情報や配送経路情報などは同じになりません。

・always_bcc
送受信するメールには全て設定したBCCを追加する。
※エンベロープの情報で判断する。
ここで言うと、example.localが送受信する全てのメールにはBCCを追加してexample3.localに送信する。

・sender_bcc_maps
送信するメールに設定したBCCを追加する。
※エンベロープの情報で判断する。
ここで言うと、example.localが送信するメールにはBCCを追加してexample3.localに送信する。

・recipient_bcc_maps
受信したメールには設定したBCCを追加する。
※エンベロープの情報で判断する。
ここで言うと、example.localが受信したメールにはBCCを追加してexample3.localに送信する。

■OS
CentOS 6 64bit

■Postfixバージョン
postfix-2.6.6-2.2.el6_1.x86_64

■always_bccの検証
まずは、「always_bcc」の動作検証をしてみます。
ここで指定するBCCアドレスは「archive@example3.com」にします。
example3.localには、transportで転送します。
※内部DNSがあり、example3.comの名前解決ができるのであればtransportはいりません。

(1)example.localのmain.cfの設定を変更

[root@example ~]# vi /etc/postfix/main.cf
#--以下を最終行にでも追加--
always_bcc = archive@example3.com
transport_maps = hash:$config_directory/transport

(2)example.localのtransportの設定を変更
[root@example ~]# vi /etc/postfix/transport
#--以下を最終行にでも追加--
example3.com    smtp:[192.168.0.123]:25
※example3.localのIPは「192.168.0.123」とします。

(3)DBを作成
[root@example ~]# postmap /etc/postfix/transport

(4)Postfixのリロード or スタート
[root@example ~]# service postfix reload
postfix を再読み込み中:                                    [  OK  ]
※ここではリロード

(5)クライアント1からメールを出してみる(受信バージョン)
example2.localからexample.localにメールを送信します。

- メール内容
To: test@example.com
From: test@example2.com
Subject: Test Mail
Test Mail

・example.localのメールログ
Jan  5 21:31:48 example postfix/smtpd[10188]: connect from example2.com[192.168.0.122]
Jan  5 21:31:48 example postfix/smtpd[10188]: 4207526244: client=example2.com[192.168.0.122]
Jan  5 21:31:48 example postfix/cleanup[10182]: 4207526244: message-id=<A2A6D799A117472DA284A739BA8C4727@f8a83c6c3dc847d>
Jan  5 21:31:48 example postfix/qmgr[10178]: 4207526244: from=<test@example2.com>, size=1529, nrcpt=2 (queue active)
Jan  5 21:31:48 example postfix/smtpd[10188]: disconnect from example2.com[192.168.0.122]
Jan  5 21:31:48 example postfix/local[10184]: 4207526244: to=<test@example.com>, relay=local, delay=0.01, delays=0.01/0/0/0, dsn=2.0.0, status=sent (delivered to maildir)
Jan  5 21:31:48 example postfix/smtp[10183]: 4207526244: to=<archive@example3.com>, relay=192.168.0.123[192.168.0.123]:25, delay=0.05, delays=0.01/0/0.02/0.02, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as 49D5621A8A)
Jan  5 21:31:48 example postfix/qmgr[10178]: 4207526244: removed
ログを見ると、toが「test@example.com」と「archive@example3.com」の2つがあります。

(6)クライアント2からメールを出してみる(送信バージョン)
example.localからexample2.localにメールを送信します。

・example.localのメールログ
Jan  5 21:34:41 example postfix/smtpd[10196]: connect from unknown[192.168.0.14]
Jan  5 21:34:41 example postfix/smtpd[10196]: 5B37426244: client=unknown[192.168.0.14]
Jan  5 21:34:41 example postfix/cleanup[10199]: 5B37426244: message-id=<4F059718.2030605@example.com>
Jan  5 21:34:41 example postfix/qmgr[10178]: 5B37426244: from=<test@example.com>, size=528, nrcpt=2 (queue active)
Jan  5 21:34:41 example postfix/smtpd[10196]: disconnect from unknown[192.168.0.14]
Jan  5 21:34:41 example postfix/smtp[10201]: 5B37426244: to=<test@example2.com>, relay=example2.com[192.168.0.122]:25, delay=0.13, delays=0.07/0.02/0.02/0.02, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as 74F372088C)
Jan  5 21:34:41 example postfix/smtp[10200]: 5B37426244: to=<archive@example3.com>, relay=192.168.0.123[192.168.0.123]:25, delay=0.16, delays=0.07/0.01/0.03/0.06, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as 748F821A8A)
Jan  5 21:34:41 example postfix/qmgr[10178]: 5B37426244: removed
同じく「archive@example3.com」にメールが送信されていることが分かります。
これで、example3.localにメールを送信することができました:-)

(7)メールヘッダの違いについて
example.localにあるメールとexample3.localに送信されたメールの違いは以下のようになります。

2,3c2,6
< X-Original-To: test@example.com
< Delivered-To: test@example.com
---
> X-Original-To: archive@example3.com
> Delivered-To: archive@example3.com
> Received: from mx.example.com (unknown [192.168.0.121])
>         by mx.example3.com (Postfix) with ESMTP id 8650721A8A
>         for <archive@example3.com>; Thu,  5 Jan 2012 21:36:39 +0900 (JST)
「X-Original-To」「Delivered-To」「Received」が違います。
※ここでは、純粋なMTAだけでの送信しかしていません。メールフィルターも何もなしです。

次に「sender_bcc_maps」を検証してみます。

1 2 3


参考文献
1. http://tomo.ac/goodstream/mailservice/postfix/tips/allbcc.html


1月 5, 2012 at 10:38 pm by 黒ぶちメガネ
Category: Linux, Postfix