自前メールサーバを経由してGoogle Appsを使う方法

Google Apps向けメールゲートウェイPostfixで立ててみたという話です。

目標

Googleのhelpだと、1)メールを無条件にGoogle Appsに向けるか、2)サブドメイン定義してユーザー単位でforwardする方法ですが、今回の方法だと、手前で処理されず、Appsで定義済みのメールだけ転送されます。

前提

今回は新規ドメインだったから、MXをあらかじめGoogle Appsに向けることができたが、既存ドメインの移行時はこのやり方は難しいかもしれない。ドメインエイリアスを使えばいけるのかな?

方法

main.cf

# example.co.jpを受ける(必須ではない)
# mydestinationには$mydomainを含めないこと
mydomain = example.co.jp
# example.co.jpを転送対象にする
relay_domains = example.co.jp
# example.co.jp宛のメールとして受け付けるアドレス一覧
relay_recipient_maps = hash:/etc/postfix/relay_recipients
# メールサーバ側で処理するもの
virtual_alias_maps = hash:/etc/postfix/virtual
# 配送経路指定
transport_maps = hash:/etc/postfix/transport
# Google Apps側で確認できないアドレス宛のメールは配送しない
smtpd_recipient_restrictions =
        reject_unverified_recipient

relay_recipients

# example.co.jp宛は全て受け付ける
@example.co.jp OK

virtual

# ローカルで処理(転送)する内容
postmaster@example.co.jp anyuser1@example.org
abuse@example.co.jp anyuser2@example.org
# メーリングリストは/etc/aliases側で定義しておく
maillist@example.co.jp list-addr-in-aliases

transport

# ローカルで処理できなかったものはGoogle Appsへ投げる
example.co.jp smtp:[aspmx.l.google.com]

確認

できればMX変更前に、別のホストからsmtpでつないでみて、メール配送前にアドレス確認処理が動いているのを確認しておくといいです。
確認できてからMXを変更して、Premiumならば手前のメールサーバをゲートウェイに登録すれば完了。

その他

  • こういうやり方をして、MXがGoogle Appsに向いていないことによって、将来的にMailでMXが違うというエラーが出るかもしれない。
    • postini利用時もMXを変更するので、平気かもしれないが。
  • 逆のやり方(Google Appsで一旦受けて、未処理分を自前サーバに送付)もある。メール転送 ただしpermiumのみ。
  • いっぱいメールを転送したらspam送信元扱いされたという事例もあるようだ
    • ユーザの存在確認時にGoogleへアクセスするが、存在しないユーザの確認が多すぎると、bulk senderだと思われて同じ事になるかもしれない

まあ凝ったことをするならPremium契約しとけよ、ということなんだろうが。