読者です 読者をやめる 読者になる 読者になる

自ホストで送受信しているメールを複製して他のホストに送信する

Postfix

Postfixでは、一度ローカルに配送したメールをそのまま複製して他のホストに送信することはできない。できるだけオリジナルのメールに近いメールを複製し他のホストに送信するには、BCCとして送信先アドレスを付加したメールを作り配送すればよい。

送受信されるメールにBCCを付加して配送するには、main.cfでalways_bcc(送受信すべて)、またはrecipient_bcc_maps(受信のみ)、sender_bcc_maps(送信のみ)を利用する。 ただし、どのパラメータを利用した場合も一つのアドレスに対してBCCアドレスは一つしか指定できないため、複数のアドレスに対してBCCメールを送信するには下記のいずれかのようにする。

local配送エージェントを使用する場合

always_bcc(または残りの二つ)にmydestinationで指定したドメインを持つアドレスAを指定し、alias_mapsでAに対して送信したいアドレス群のエイリアスを指定する。

たとえば、受信したメールを自ホストに配送した上で、複数の他ホストに複製送信するには次のようにする。

# /etc/postfix/main.cf
local_recipient_maps = proxy:unix:passwd.byname $alias_maps
alias_maps = hash:/etc/aliases
recipient_bcc_maps = hash:/etc/postfix/recipient_bcc
# /etc/postfix/recipient_bcc
@receiving.example.com    bcc
# /etc/aliases
bcc:    bcc@forward1.example.org, bcc@forward2.example.org, bcc@forward3.example.org

各ファイルを書き換えた後は次のコマンドを実行する必要がある。

$ sudo newaliases                            # /etc/aliasesの内容を反映したデータベースを作成
$ sudo postmap /etc/postfix/recipient_bcc    # recipient_bccの内容を反映したデータベースを作成
$ sudo postfix reload                        # main.cfの再読み込み

この場合、receiving.example.com宛てのメールがローカルに配送された後、(実在しない)ローカルユーザbccを介して、BCC/etc/aliasesで指定した各アドレスを付加したメールが3通送信される。

virtual配送エージェントを使用する場合

recipient_bccで指定するアドレスに仮想ドメインを利用する場合は、alias_mapsの代わりにvirtual_alias_domainsおよびvirtual_alias_mapsを用いる。 すなわち、always_bcc(または残りの二つ)に適当な仮想ドメインのアドレスBを指定し、virtual_alias_domainsvirtual_alias_mapsでBに対して送信したいアドレス群のエイリアスを指定する。

たとえば、次のようになる。

# /etc/postfix/main.cf
virtual_alias_domains = virtual.example.com
virtual_alias_maps = hash:/etc/postfix/virtual
recipient_bcc_maps = hash:/etc/postfix/recipient_bcc
# /etc/postfix/recipient_bcc
@receiving.example.com    bcc@virtual.example.com
# /etc/postfix/virtual
bcc@virtual.example.com    bcc@forward1.example.org, bcc@forward2.example.org, bcc@forward3.example.org

local配送エージェントを使用する場合と同じように、各ファイルを書き換えた後は次のコマンドを実行する必要がある。

$ sudo postmap /etc/postfix/virtual          # virtualの内容を反映したデータベースを作成
$ sudo postmap /etc/postfix/recipient_bcc    # recipient_bccの内容を反映したデータベースを作成
$ sudo postfix reload                        # main.cfの再読み込み

この場合、receiving.example.com宛てのメールがローカルに配送された後、仮想アドレスbcc@virtual.example.comを介して、BCC/etc/postfix/virtualで指定した各アドレスを付加したメールが3通送信される。