Google App Engineでメールを受信してみる。その1:独自ドメインの利用

弊社で運営している、ライフログに活用できる生活チェックサービス「ChanTo.me」で、写真をメールで登録できる処理を追加しています。

Google App Engineでは、メール受信の機能が追加されました。

メールを受信するのは、
「string@appid.appspotmail.com」
というメールアドレスになります。


しかし、独自ドメインでサービスを提供しているので、このメールアドレスは外向けには見せたくありません。

そこで、私は独自ドメインでメールを受けて、それを「string@appid.appspotmail.com」に転送するようにしました。
ただ、メールアドレスが特定のもので数個あるくらいであれば、それぞれのメールアドレスで転送するようにすればいいだけですが、私のサービスでは不特定多数のメールアドレスが必要になります。

メールサーバを自分で立ち上げているのであれば、スクリプトをかけば何とかなりますが、メールもGoogle Appsを使っているのでそうもいきません。


ということで、苦肉の策で次のようにしました。

1. まず、独自ドメインで受信用のメールアドレス(グループ)を作成します。
例)aa@domain.com
2. これをappspotmail.comに転送するようにします。
例)転送先: aa@bb.appspotmail.com
3. 不特定多数のメールアドレスとして、1のアドレスを利用して次のように提供します。
例) aa+111@domain.com aa+222@domain.com aa+333@domain.com
4. 3のメールは、gmailの機能では、aa@domain.comに到着するので、これがaa@bb.appspotmail.comに転送されます。
5. gae側で、メールヘッダの「To」の値を見て、どのメールアドレスに送信されたメール化をチェックして処理します。


これで一応処理はできているのですが、問題があります。
1. Toに複数のアドレスが書かれている場合や、Ccを使った場合に、本来受け取ったメールアドレスがわからない。
2. Bccなどを使って送信された時など、ToやCcにアドレスが記述されていないと、受け取ったメールアドレスがわからない。
そのため、私のアプリでは、Toに一つだけしかアドレスが書かれていいる場合のみ受け付けるようにしました。


本当は、自分でメールサーバを立ち上げて、スクリプトを書くべきだとは思うのですが、まあ仕方ないかなあということで、これで今回は対応しました。

GAEのアプリ側については、後ほど、その2を書きます。