本日も乙

ただの自己満足な備忘録。

VirtualDomainでメール転送時にエンベロープFromを書き換えてみる

今日も引き続き過去のメモを掘り起こして記事にしようのコーナーです。 しばらくはこれで記事更新が続くので楽ですね。


以前、[Postfix]エイリアスでメール送信するときに気をつけること(エンベロープFromの書き換え) という記事でメール転送時にエンベロープFromを書き換えてスパム判定されにくい(正式な)メール転送方法を紹介しました。
実際にサービス運用する場合は、1つのサーバに複数Webサービスが同居することがざらにあり、別々のドメインでメール管理をしなければならないことがあります。
今回はヴァーチャルドメイン(VirtualDomain)による複数ドメインでメール転送している場合にエンベロープFromを書き換える方法を紹介します。

今回の目標

  • VirtualDomainを利用して複数ドメインでメール転送している場合にエンベロープFromを書き換える
  • 次のようにメール転送します。
転送元 転送先
contact@foo.com foo_contact@gmail.com
contact@bar.com bar_contact@gmail.com

実行環境

  • Postfix 2.6.6
  • CentOS 6.5

VirtualDomainの設定

ヴァーチャルドメイン(VirtualDomain)を利用して、複数ドメインの設定を行う でも紹介しましたのでここでは設定のみ載せておきます。

# /etc/postfix/main.cf

# 末尾に追加
virtual_alias_domains = foo.com, bar.com
virtual_alias_maps = hash:/etc/postfix/virtual

転送先をメールアドレスではなく、エイリアス名(contact-fooなど)で指定します。
エイリアス先は後ほど/etc/aliasesで設定します。

# /etc/postfix/virtual

contact@foo.com      contact-foo
contact@bar.com      contact-bar

エイリアスの設定

以下のように、エイリアス先でsendmailコマンドを実行するようにします。

# /etc/aliases

contact-foo:          "|/usr/sbin/sendmail -oi -f contact@foo.com foo_contact@gmail.com"
contact-bar:          "|/usr/sbin/sendmail -oi -f contact@bar.com bar_contact@gmail.com"

設定したらあとはいつものように設定を反映させたら完了です。

$ sudo postmap /etc/postfix/virtual
$ sudo newaliases
$ sudo service postfix reload

最後に

VirtualDomainだとドメインの逆引きができないので、必ずしもメールが正常に届くかというと難しいですね。