自分でサーバーを運用している人でも、メールサーバ(以下、メルサバ)はgoogle appsにしているという人は多いと思います。ですが、google appsをメルサバにした場合に自分のサーバー(以下、自サバ)のメルサバの設定をどうしたらいいのか、ちょっと迷ったのでメモ。よくよく調べたら、そんな面倒な話ではありませんでした。
メルサバを外部にしてるなら、自サバの設定をいじる必要なんて無いのでは?
と思ったら、実際、そうでもなかったりします。たとえば、VPSや自宅・自社サーバなどを使っていると、自サバからのroot宛のメールが結構頻繁に来たりします。また、Wordpressなんぞを運用していると、Wordpressからコメントが付いただのなんだのといろいろ通知のメールが来たりするわけです。
こういったメールを送信する場合、自サバにもPostfixなどのMTA(Message Transfer Agent;つまり、メールを送信するためのソフト)をインストールして設定する必要が出てきます。
このとき、たとえば「example.com」ドメインが設定されている自サバが「info@example.com」宛にメールを送信した場合(つまり、自ドメインにメールを配送する場合)、ネット上に良くあるPostfixの設定だとサーバ内部のinfoアカウントにメールが配送されてしまいます。図で表すと以下のような感じ。

この場合、配送されたメールをチェックするには自サバのメールアカウントをチェックする必要があります。これはちょっとめんどくさいので、自ドメイン宛のメールもgoogleのメルサバに配送されるようにしたいところです。図にすると以下のような感じ。

で、これを実現するにはどうしたらいいのか、調べてみたのですが、案外簡単な方法で実現できました。以下、postfixの場合。
結論から言うと「mydestination」のリストから「$mydomain」を取り除くだけでした。以下、Postfixのmain.cfの中から抜粋。ただし、googleのメルサバに「example.com」を割り当てている場合の設定です。
myhostname = mail.example.com
mydomain = example.com
myorigin = $myhostname
mydestination = $myhostname, localhost.$mydomain, localhost
この中で大事なのは「mydestination」のところ。「mydestination」にリストアップされているドメイン宛のメールがこのサーバでキャッチされるようです。なので、「$mydomain」をリストから外せば、送信された「info@example.com」宛のメールが自サバのMTAをスルーしてgoogleのメルサバに渡る、と。仮にサブドメインの「mail.example.com」をスルーさせたい場合は「$myhostname」をリストから外します。
「myorigin = $myhostname」としているのは、googleのメルサバに割り宛てている「example.com」とかぶらないようにするためです。何でか、という説明をするのはちょっとめんどくさいので、知りたい人は次のことをやってみてください。
# まず、root宛てにメールを出します。
echo test|mail root
# 次にmaillogを開きます。
# たぶんエラーが記録されていると思います。
# つまりそういうことです。
vi /var/log/maillog
つまりそういうことです。ながなが説明するより実際に見た方が分かるのではないかと。
なんか間違ってるところがあるかもしれませんが、これでとりあえず動いているのでOKということで。