メールドメインがOffice 365やG Suiteを使っているかどうか判定する

近頃では、メールや共同作業ツールにクラウドサービスを使う企業・団体も増えてきました!
しかもいまは新型コロナウイルスの影響でテレワークをしている会社も多いですよね～( ;∀;)
そんな中で、あなたが普段お付き合いしている顧客や取引先で使っている、もしくは新年度で新たにお付き合いを開始する顧客や取引先が使っているクラウドサービス、気になりませんか？

そんなの関係ない♪ (古い) と思うかもしれませんが、たとえば以下のようなことに使えます。

* 相手側で使っているコミュニケーションツール、共同作業ツール、ファイル共有ツールの想像ができます(Office 365, G Suite, Exchange Online, Teams, Zoomなど)**⇒どのツールを使って共同作業をすべきか忖度できます。**
* 相手側で使っているメールフィルタリングサービスがわかります**⇒メール不達などのトラブルがあった場合に解決策の想定に役立ちます。**
* できるIT営業であれば、あらかじめ調べておくことにより提案する際に考慮した提案が可能です。

# なぜ使っているツールがわかるの?
各サービスで使っているドメイン名の設定等は、各サービスの設定が保持されているデータベースに保存されていて見えないのではと思うかもしれません。それはそのサービス同士で会社内で通信しているときはその通りです。ただし、インターネットを介して外部の人と通信を行う場合は、<b>「インターネットにおけるアドレス帳」(=DNS, Domain Name Service) </b> をお互いが参照して、どこのサーバーや端末と通信をすればいいのかの道しるべが必要になります。 そのため、DNSには、各サービスへの端末情報も含めて通信相手の情報が記載されているのです。よって<b>DNSに記載されている各サービスに固有の端末情報を解析すると、相手がどのサービスを使っているかがわかる</b>のです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/5e05614f-767d-3a91-ac20-bf91fad2a9a2.png)
後、SaaSサービスでドメインを使う場合、好き勝手な他人のドメインを登録できないように、<b>そのドメインの所有者であることを証明させるために、SaaSサービス側からドメインの特定のレコードに特定の文字列を記載させる</b>手順を踏むのが普通です。これについても外部から参照可能なため、どのSaaSサービスを使っているのかが外部からもある程度わかるのです～(^_-)-☆

# DNSレコードを参照してみよう
インターネットのアドレス帳の役割をするDNSには、さまざまな情報が種類別に特定のレコード**(DNSレコード)**に記載されています。DNSレコードは実に様々な種類があります。仕様拡張になったもの、廃止されたものも含め、全体像が一覧になっている完全な資料はなかなかない (一番網羅性があるのは[Wikipedia](https://ja.wikipedia.org/wiki/DNSレコードタイプの一覧)ですが、中途半端な翻訳なので見にくい) のですが、たとえば『[主なDNSレコードの種類 - @IT](https://www.atmarkit.co.jp/fnetwork/rensai/dns01/dns-record.html)』を見るとメジャーなものが載っているので参考になります♪

ここでは、今回の文脈で使うDNSレコードのみをリストアップします。

|DNSレコードの種類||
|:--|:--|
|A|A（アドレス）レコードは、ドメインに対応する IP アドレスを示します。|
|CNAME|CNAME（Canonical Name）レコードは、ドメインのエイリアス名を実際の「正規」ドメイン名にリンクします。|
|MX|Mail Exchange（MX）レコードは、ドメインのメールを、ドメインのユーザーアカウントをホストしているサーバーもしくは中継サーバーに配信します。|
|SRV|インターネットアプリケーションに必要な情報を付加します。 負荷分散サービスの提供、冗長性の確保、サービスポート番号の通知等を可能にします。|
|TXT|TXT レコードは、ドメイン外のソースにテキスト情報を提供するためのもので、さまざまな任意の目的に使用します。SPF、DKIM、DMARC といったメールのセキュリティ機能の実装や、ドメインの所有権の証明に使われます。|

これらの情報を参照するには nslookup、digといったコマンドツールを使います。Windows/Linuxには標準でインストールされています。また、nslookup/digと同等の情報をブラウザー上で提供してくれるWebサイトもあるので、いずれかを使って情報を得ることができます。

### コマンドライン
コマンドラインを表示後、以下のコマンドを打ってみましょう。`-type=any`オプションは、すべての種類のDNSレコードの情報を表示するように指定するものです。

```
nslookup -type=any (ドメイン名)
```

ためしに `microsoft.com`に対してnslookupをかけると、以下の結果が返ってきます。
`microsoft.com   MX preference = 10, mail exchanger =`の次に来ているのがMXレコードの内容、また、複数の`microsoft.com	text =`の次に来ているのがTXTレコードの内容です。TXTレコードは複数持つことができます。

```
>nslookup -type=any microsoft.com

サーバー:  dns.google
Address:  8.8.8.8

microsoft.com	internet address = 40.113.200.201
microsoft.com	internet address = 104.215.148.63
microsoft.com	internet address = 13.77.161.179
microsoft.com	internet address = 40.76.4.15
microsoft.com	internet address = 40.112.72.205
microsoft.com	nameserver = ns4.msft.net
microsoft.com	nameserver = ns1.msft.net
microsoft.com	nameserver = ns2.msft.net
microsoft.com	nameserver = ns3.msft.net
microsoft.com
	primary name server = ns1.msft.net
	responsible mail addr = msnhst.microsoft.com
	serial  = 2020031312
	refresh = 7200 (2 hours)
	retry   = 600 (10 mins)
	expire  = 2419200 (28 days)
	default TTL = 3600 (1 hour)
microsoft.com	MX preference = 10, mail exchanger = microsoft-com.mail.protection.outlook.com
microsoft.com	text =

	"google-site-verification=yUE_SrjKKb4FHH1H04VWidfwstTGeS1FLx3Mcsnijjs"
microsoft.com	text =

	"adobe-sign-verification=c1fea9b4cdd4df0d5778517f29e0934"
microsoft.com	text =

	"3lp8f84rbvcsohupiil488dlj9"
microsoft.com	text =

	"docusign=52998482-393d-46f7-95d4-15ac6509bfdd"
microsoft.com	text =

	"google-site-verification=6P08Ow5E-8Q0m6vQ7FMAqAYIDprkVV8fUf_7hZ4Qvc8"
microsoft.com	text =

	"facebook-domain-verification=m54hfzczreqq2z1pf99y2p0kpwwpkv"
microsoft.com	text =

	"facebook-domain-verification=gx5s19fp3o8aczby6a22clfhzm03as"
microsoft.com	text =

	"google-site-verification=7BhRYd_4jVpBnrAKBLNQdi5ioTVzLzwwXMSlcTkxWZ8"
microsoft.com	text =

	"atlassian-domain-verification=jbey7I2+3Wyl+PZ0QUCC6fCz2Gu5KO7GQPcy/0c4za7ebQxar/qqujJH4kZLVQHZ"
microsoft.com	text =

	"docusign=d5a3737c-c23c-4bd0-9095-d2ff621f2840"
microsoft.com	text =

	"FbUF6DbkE+Aw1/wi9xgDi8KVrIIZus5v8L6tbIQZkGrQ/rVQKJi8CjQbBtWtE64ey4NJJwj5J65PIggVYNabdQ=="
microsoft.com	text =

	"adobe-idp-site-verification=8aa35c528af5d72beb19b1bd3ed9b86d87ea7f24b2ba3c99ffcd00c27e9d809c"
microsoft.com	text =

	"google-site-verification=Zv1IvEEZg4N9wbEXpBSSyAiIjDyyB3S-fzfFClb7D1E"
microsoft.com	text =

	"v=spf1 include:_spf-a.microsoft.com include:_spf-b.microsoft.com include:_spf-c.microsoft.com include:_spf-ssg-a.microsoft.com include:spf-a.hotmail.com ip4:147.243.128.24 ip4:147.243.128.26 ip4:147.243.1.153 ip4:147.243.1.47 ip4:147.243.1.48 -all"
microsoft.com	text =

	"google-site-verification=8-zFCaUXhhPcvN29EVw2RvtASDCaDPQ02L1HJ8Om8I0"
microsoft.com	text =

	"facebook-domain-verification=bcas5uzlvu0s3mrw139a00os3o66wr"

```
後述の、各サービスで使われているDNSレコードの情報を基にすると、いろいろなことがわかります。マイクロソフトでは、メールはOffice 365、その他にクラウドサービスとしてAdobe Sign、DocuSign、Facebookのサービス、アトラシアン、そしてGoogleのサービスも使っています。競合会社のサービスも使っているのは面白いですね！

### Webサービス
たとえば、https://www.cman.jp/network/support/nslookup.html などでWebブラウザーの画面からnslookupコマンドと同様のことを実行して結果を得るサービスが提供されています。コマンドラインが難しい方はこれで試してみるとよいでしょう。上記のコマンドラインで得られる結果と同じ結果が得られることが確認できます。



# 主要クラウドサービスの利用に必要なドメイン設定 (随時更新)
以下に代表的なクラウドサービスで使われているDNSレコードの設定値を挙げます。

### [Office 365](https://docs.microsoft.com/ja-jp/office365/enterprise/external-domain-name-system-records)

|DNSレコードの種類|判別文字列|
|:--|:--|
|CNAME|エイリアス: Autodiscover 対象: autodiscover.outlook.com (Exchange Online使用時)|
|MX|(ドメイン名).mail.protection.outlook.com (Exchange Online使用時)|
|SRV|sipfed.online.lync.com、sipdir.online.lync.com、webdir.online.lync.com (Skype for Business使用時)|
|TXT|MS=ms(8文字の数字)<br/>SPFレコード内の文字列: spf.protection.outlook.com|

### [G Suite](https://support.google.com/a/answer/48090?hl=ja)

|DNSレコードの種類|判別文字列|
|:--|:--|
|CNAME|ghs.googlehosted.com|
|MX|ASPMX.L.GOOGLE.COM または<br/> ALT?.ASPMX.L.GOOGLE.COM (?は1～4の数字)|
|TXT|google-site-verification=(ランダム文字列)<br/>SPFレコード内の文字列: _spf.google.com|

### [Salesforce](https://help.salesforce.com/articleView?id=emailadmin_spf_include_salesforce.htm&type=5)

|DNSレコードの種類|判別文字列|
|:--|:--|
|TXT|SPFレコード内の文字列: _spf.salesforce.com (Salesforceからメールを送信する場合)|

### [Zoom](https://zoom-support.nissho-ele.co.jp/hc/ja/articles/360022892551--%E7%AE%A1%E7%90%86%E8%80%85-%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E7%AE%A1%E7%90%86)

|DNSレコードの種類|判別文字列|
|:--|:--|
|TXT|ZOOM_verify_rl-(19文字のランダム文字列)|
※DNSレコード以外の所有権確認方法もあるので、このレコードの有無で確定しません。

### [Marketo](https://docs.marketo.com/pages/releaseview.action?pageId=7509569)

|DNSレコードの種類|判別文字列|
|:--|:--|
|TXT|SPFレコード内の文字列: mktomail.com(Marketoからメールを送信する場合)|

### [Atlassian](https://ja.confluence.atlassian.com/cloud/verify-a-domain-for-your-organization-873871234.html)

|DNSレコードの種類|判別文字列|
|:--|:--|
|TXT|atlassian-domain-verification=(ランダム文字列)|
※DNSレコード以外の所有権確認方法もあるので、このレコードの有無で確定しません。

### Wrike

|DNSレコードの種類|判別文字列|
|:--|:--|
|TXT|wrike-verification=(ランダム文字列)|

### DocuSign

|DNSレコードの種類|判別文字列|
|:--|:--|
|TXT|docusign=(GUID文字列)|

### [Adobe Sign](https://helpx.adobe.com/jp/sign/using/claim-domain-names.html)

|DNSレコードの種類|判別文字列|
|:--|:--|
|TXT|adobe-sign-verification=(ランダム文字列)|

### Proofpoint

|DNSレコードの種類|判別文字列|
|:--|:--|
|MX|(文字列).gslb.pphosted.com|
|TXT|SPFレコード内の文字列: spf-(文字列).pphosted.com|

# こんな場合は注意が必要
MXレコードの参照は、インターネットからドメイン宛ての電子メールを「次に」どのアドレスに配送すればいいかを指定するものなので、インターネットからの入り口に電子メールサービスのアドレスが直接置かれていない場合にはMXレコードからは判別できません。

たとえば以下のような場合です。

**メールフィルタリングサービスを使っている**
この場合はメールフィルタリングサービスに配送されてから電子メールサービスに配送されます。

**中継サーバーを経由している場合**
この場合は中継サーバーのアドレスが書き込まれています。


**第2, 第3ドメインとして登録されている場合**
MXレコードはプライマリドメインへの参照を記載しておくのが一般的です。


これらの場合は、いずれもMXレコード以外のDNSレコードの情報から判別をする必要があります。


# こんな場合には使えません
以下のようなケースでは、どのDNSレコードを調べてもクラウドサービスの情報は出てきません。

* そもそも全然違うドメイン名でサービスを使っている場合。
* 予想がつかない名前のサブドメインでサービスを使っている場合。
* DNSレコード以外の方法でドメイン所有権を確認している場合。たとえばドメインがホストしているWebページに特定の文字列を記載するとか、特定のページをアップロードするなどの方法も使われています。
* クラウドサービス側のドメインのサブドメインとして使われている場合。この場合はドメインは使っていないのでDNSレコードには何も情報は書き込まれません。
* そもそも独自ドメインを使わない運用をしている場合。


# まとめ

ドメインのDNSレコードって結構情報の宝庫だったりするわけです。その組織・団体に関してわりといろいろな情報がわかると思いませんか？