12
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ある独自ドメインのメールアドレスがGoogle Appsを使っているかどうかを判定する

Posted at

概要

最近のWebサービスの新規会員登録画面には「Googleアカウントで会員登録する」ボタンが付いていることがよくあると思います。
それに関連して、例えば『フォームに入力されたメールアドレスがGoogleアカウントに対応していたら「Googleアカウントで会員登録する」ボタンを会員登録画面に表示させたい』といったニーズがたまにあります。

フォーム入力されたメールアドレスが「someone@gmail.com」などgmail.comドメインのメールアドレスであれば、その人は「Googleで会員登録する」が使えると言うことがプログラム的に判定できます。
しかし、Google Apps for Workを使っていると、独自ドメインのメールアドレスの裏側にGMailが居たりするので、単純にメールアドレスのドメイン部分だけを見ただけでは、その人に対して「Googleで会員登録する」機能が利用できるかどうかをプログラム的には判定できません。
なんとかして、入力されたメールアドレスでGoogle Appsが使われているかを判定する方法がありましたので以下に記述します。

判定方法

判定方法として2つの方法があります。1つめの方法は確実ですが、2つめの方法は判定が上手くいかないケースがあります。

方法1

下記URLに対して、curlなどでリクエストを投げます。

https://www.google.com/a/{domain}/ServiceLogin?hl=ja
※{domain}部分はメールアドレスのドメイン名部分に置き換える

{domain}Google Appsを利用していない場合、上記URLのレスポンスには必ず「Google Apps を使用していないドメインのログイン ページにアクセスしました。」という文言が含まれます。なので、その文言が入っていなければ、そのメールアドレスはGoogle Appsを使って運用されている、ということが分かります。
non-google-apps-domain.png

この検出方法の元ネタはStack Overflowにあります。
Programmatically assessing if a domain has Google Apps or not

方法2

メールアドレスのドメインのMXレコードを引き、MXレコードに「aspmx.l.google.com」などGoogle Appsのサーバーが入っているかどうかを調べるという方法です。
一般的に、Google Appsを利用していると下記のようなMXレコードが返ってきますので、このようなMXレコードが設定されているならGoogle Appsを利用しているに違いないと考えられます。

$ dig example.com MX

; <<>> DiG 9.8.3-P1 <<>> example.com MX
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 19847
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;example.com.			IN	MX

;; ANSWER SECTION:
example.com.		299	IN	MX	1 aspmx.l.google.com.
example.com.		299	IN	MX	5 alt1.aspmx.l.google.com.
example.com.		299	IN	MX	5 alt2.aspmx.l.google.com.
example.com.		299	IN	MX	10 aspmx2.googlemail.com.

;; Query time: 50 msec
;; SERVER: 192.168.251.1#53(192.168.251.1)
;; WHEN: Mon Jul  4 21:28:34 2016
;; MSG SIZE  rcvd: 137

しかし、MXレコードに直接Google Appsのサーバーが設定されていないケース(メールをGoogle Appsに渡す前にウイルスチェックサーバーを経由させる設定をしている場合など)は、この方法は上手く動きませんので注意が必要です。

12
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?