Shinobilayer: SendGrid初心者のための注意点（SoftLayer版）

# はじめに
SendGridは、クラウド型メール配信サービスです。SendGridの配信対象のメールは、

- 事前に用意した購読者リストに対して一斉配信するための、マーケティングメール（NewsLetter)
- 利用者のメーラーやプログラムのイベント等に応じて送信するための、トランザクションメール（アプリケーションから直接利用しても良いし、リレーサーバーとして利用しても良い）

の二種類があります。SoftLayerではOP25B対策が2015年10月から実施され、新規アカウントは25番ポートにインターネット経由でメールを配信することができなくなったため、SendGridの需要（特に後者のトランザクションメールとしての利用）は今後ますます増えるでしょう（https://console.bluemix.net/docs/infrastructure/email-delivery/FAQs.html#why-is-a-standard-email-port-blocked- ）。

私ちょっと使ってみていて分かったのですが、初心者にとっては一見見落としがちなポイントがあったり、SoftLayerや他社クラウドのようなリセラー提供のSendGridは、本家と違って幾つか制約があったりするようです。
本記事では、SoftLayerからリセラー提供されるSendGridについて、幾つか気になるポイントをまとめたいと思います。

※私も初心者なので、落とし穴的な他のポイントに気が付かれた方は、ぜひご指摘下さい！適宜追加・修正したいと思います。

# 1. メール配信数のカウント方法について
メール配信数が利用枠の上限を超えていないかを気にされる方は多いと思います。このカウント方法ですが、1つのメールでTo: やCc:にメンバーを50人入れていたら、50通消費したという扱いになります。自分が何通送ったかというよりは、最終的に何通のメールとして送り届けられるか、という観点で使用状況をカウントしましょう。

# 2. Free packageのメール配信数上限について
SoftLayer提供のFree packageでは、25000通/月まで無料です。一方で、25000通を超えると**配信できなくなる**ため、それ以上配信したい場合は、有償版に移行する必要があるようです。（25000通を超えた場合は、1メールあたり「$0.001」と書かれていますが、そもそも送信できなくなるというのが正しい情報のようです。）
なお、SoftLayer経由で購入したFree packageについては、1日に配信できるメール配信数の上限は特に設定されていないようです。
http://www.softlayer.com/jp/email-delivery

# 3. 必ずしもすぐに送信される訳ではない
実際に配信されるまでには、数分程度の間が空くようです。（こういうものですかね？）

# 4. メールサイズの上限は20MB
メールの合計サイズ（ヘッダー＋ボディー＋添付ファイル）の上限は20MBです。
但し、受信側メールサーバ等の制限を考慮すると、7MBを上限とすることが推奨のようです。
[送信するメールや添付ファイルのサイズに制限はありますか？](https://sendgridjp.zendesk.com/hc/ja/articles/202688609-%E9%80%81%E4%BF%A1%E3%81%99%E3%82%8B%E3%83%A1%E3%83%BC%E3%83%AB%E3%82%84%E6%B7%BB%E4%BB%98%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E3%82%B5%E3%82%A4%E3%82%BA%E3%81%AB%E5%88%B6%E9%99%90%E3%81%AF%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%81%8B-)


# 5. 専有IP使用時はいきなり多くのメールを送れない（共有IPではウォームアップ不要）
本番サービスインになって、いきなり大量のメールを配信しようとしても失敗する可能性があります。（目安として1万通/月未満程度であれば、あまり問題にはならないでしょう）。この仕組みを理解するためには、以下の用語を理解しておく必要があります。

- レピュテーション：
メール送信元の信頼性を表す指標。各ISP/ESPは受信拒否の判断に利用する。レピュテーションが低い場合は、送信したメールは迷惑メールとみなされ、受信拒否される可能性が高くなる。IPレピュテーションと、ドメインレピュテーションがある。https://sendgrid.kke.co.jp/blog/?p=2115
- バウンスメール：
何らかのエラーにより送信者に差し戻されたメール。ソフトバウンス（サーバーが止まっている、メールボックスが一杯だった、といった一時的な障害。SendGridは72時間再送し続ける）、ハードバウンス（メールアドレスが無効、存在しない、といった恒久的な問題）がある。https://sendgrid.kke.co.jp/blog/?p=1338

一定の日数が経過し、一定のメールを配信し、レピュテーションが高い状態をキープされた状態になっているという条件を満たすことで、1日に配信できる送信量は増加できるみたいです。レピュテーション評価は30日ごとに発生するため、最大1ヶ月かけてIPアドレスのウォームアップ（メールが確実に送れるように、レピュテーションを上げる作業）を実施しておく必要があります。

（参考リンク）

- [IPアドレスのウォームアップ](https://sendgrid.kke.co.jp/blog/?p=326)
- [IPウォームアップガイド](http://www.slideshare.net/SendGrid_JP/ipsendgrid)
- [大量のメールを一斉配信する前に気をつけることはありますか？](https://sendgridjp.zendesk.com/hc/ja/articles/206431885-%E5%A4%A7%E9%87%8F%E3%81%AE%E3%83%A1%E3%83%BC%E3%83%AB%E3%82%92%E4%B8%80%E6%96%89%E9%85%8D%E4%BF%A1%E3%81%99%E3%82%8B%E5%89%8D%E3%81%AB%E6%B0%97%E3%82%92%E3%81%A4%E3%81%91%E3%82%8B%E3%81%93%E3%81%A8%E3%81%AF%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%81%8B-)
- [メールの送信元IPアドレスを操るIPマネジメント機能](https://sendgrid.kke.co.jp/blog/?p=3897)
- [Sending Practices and Limitations](https://sendgrid.com/docs/Classroom/Basics/Account/sending_practices.html)

# 6. ドメイン認証の設定
SendGridのサイトに記載されている**[メールは送るものではなく「届ける」もの](https://sendgrid.kke.co.jp/blog/?p=1722)**という表現はメール送信の世界では至言ですね。SendGridに限らず、受信側のSMTPサーバーが適切な相手からメールを受け取ったのだと考えてもらえるように、SPF/DKIMの設定をしておきましょう。特に大量にメールを送る際にはなおさらです。一般的に送信側SMTPサーバーでドメイン認証の設定がされていない場合は、受信側SMTPサーバーでのレピュテーション評価が下がり、受信上限などに引っかかってしまうこともありえます。

https://sendgrid.kke.co.jp/docs/User_Manual_JP/Settings/Sender_authentication/How_to_set_up_domain_authentication.html

# 7. URLが書き換えられてしまう症状について

## 7-1. Click Tracking/Open Trackingとは

- Click Trackingとは、メール内のURLがクリックされたかどうかを追跡する機能
- Open Trackingとは、メールが開封されたかどうかを追跡する機能

です。どうやってこの機能を実現しているかというと、

- Click TrackingはいったんurlをSendGridが書き換えてしまうことで、書き換えられたurlをクリックした際に本当のアドレスにredirectされるように再構成されます。
- Open Trackingは目に見えない画像が埋め込まれ、メール開封時にメーラーがその画像にアクセスしに行くことでメールを開封したとみなされます。

以下にClick TrackingやOpen Trackingが有効にしている時との比較を示します。

- Click TrackingやOpen Trackingが無効になっている場合。
![001.jpg](https://qiita-image-store.s3.amazonaws.com/0/62127/152aad38-49f7-d0a8-4db8-de5931d64602.jpeg) <br><br>
- Click TrackingやOpen Trackingが有効になっている場合。 urlが書きかれられている。また、メーラーによっては画像が埋め込まれているような警告が表示される。
![003.jpg](https://qiita-image-store.s3.amazonaws.com/0/62127/77434a08-1a55-e324-c328-404de05f42e8.jpeg)

```text:ClickTracking用に変換されたリンク
This is test. <a href=3Dhttps://u*****.ct.sendgrid.net/wf/click?upn=3DH7H（途中略）>This is html body.</a>
```

```text:OpenTracking用に埋め込まれていた見えない画像
<img src=3D"https://u*******.ct.sendgrid.net/wf/open?upn=3DjrrXG（途中略）" alt=3D"" width=3D"1" height=3D"1" border=3D"0" style=3D"height:1px !important;width:1px !important;border-width:0 !important;margin-top:0 !important;margin-bottom:0 !important;margin-right:0 !important;margin-left:0 !important;padding-top:0 !important;padding-bottom:0 !important;padding-right:0 !important;padding-left:0 !important;"/>
```
## 7-2. Click TrackingやOpen Trackingの有効化・無効化について
マーケティングメール（NewsLetter)とトランザクションメールでは、管理方法が違うみたいです。Click TrackingやOpen Trackingの有効化・無効化を選択できるのはトランザクションメールのみで、マーケティングメール（NewsLetter）は常に有効になっているようです。

## 7-3. リセラー提供のSendGridの制約（トランザクションメール）

前項で、トランザクションメールであれば、有効化・無効化を選択できると書きましたが、実はここで１つ悩ましい所が、、、

SoftLayerからリセラー提供されるSendGridにおいては、

1. Free packageでは、Click Tracking/Open Trackingは無効になっている。（News Letterに限っては、Free packageでも有効になっている）
2. Base/Advanced/Enterpriseの有償パッケージでは、Click Tracking/Open Trackingは**デフォルトで有効**になっている。
3. SoftLayerや他社クラウドベンダーがリセラーとなっているSendGridでは、このオプションを**利用者が勝手に変更できるようには権限を与えられていない（他社クラウドも同じっぽい。 https://blogram.net/2015/09/23/sendgrid/ ）**。設定の切り替えには、SoftLayer経由でTicketを起票するか、SendGrid社に直接依頼して変更してもらう必要がある。

という制約があるようです。SendGrid社やSendGridの正規代理店である構造計画研究所様から直接購入した場合に限っては、利用者がポータルから自由に切り替えられる権限をもらえるようです。SoftLayerのカスタマーポータルから購入できて、請求書も一元化できるのは楽なのですが、本格的に利用するのであれば、構造計画研究所様から購入した方が良いかもしれないですね。。。

## 7-4. Click Tracking・Open Trackingを無効にする方法（トランザクションメール）

- アプリケーションなどからAPI経由で直接SendGridにメールを発行することが可能な場合。<br>[Click TrackingやOpen Trackingを無効にする方法（Web API）](http://qiita.com/testnin2/items/b608fb81ed9b8ded345e)を参照して下さい。

- Postfix経由などのリレーサーバーでヘッダーを操作可能な場合<br>[Click TrackingやOpen Trackingを無効にする方法（Postfix + SMTP API）](http://qiita.com/testnin2/items/a3f42b4f9d44d53360f3)を参照して下さい。

- どちらも難しい場合は、SoftLayer経由でTicketを起票するか、SendGrid社に直接依頼して変更して、システムレベルでの設定を変更してもらって下さい。[SendGridにClick Trackingを無効化してもらったやり取り例（SoftLayer版）](http://qiita.com/testnin2/items/1051dd83d071baf5c271)


## 7-5. Email Link Whitelabel機能の活用について
Click Trackingの機能を使用をする場合には、このままでは置き換えられるurlがsendgridのurlのままでは信頼性に欠け、場合によってはフィッシングと見なされて、迷惑メールフィルタにひっかかる可能性があります。利用時には、「Email Link Whitelabel」を使って、独自ドメインを使用するように設定を変更しましょう（https://sendgrid.kke.co.jp/blog/?p=3798）。


# 8.「～経由」と表示される症状について
デフォルトの構成だと、Gmailなど一部のメールクライアントで「～経由」の表示のままになってしまうことがあります。これは、DKIM署名のドメイン、SPFの送信元確認結果がいずれもsendgrid.netやsendgrid.softlayer.comになっているからです。

- ～経由の表示<br>![gmail2.jpg](https://qiita-image-store.s3.amazonaws.com/0/62127/731bca57-56ac-ac8d-f9ec-796595e1226a.jpeg)
- メールのソース<br>![spf_dkim.jpg](https://qiita-image-store.s3.amazonaws.com/0/62127/910f8ee1-cc6c-7419-c9d1-b602f2c1e551.jpeg)

この「～経由」の表示を消すためには、「Domain Whitelabel」を設定して、DKIM署名のドメイン、SPFの送信元を独自ドメインに変更する必要があります。
（https://sendgrid.kke.co.jp/blog/?p=3798）

# 9. アカウントが突然無効化されてしまった際の対応について

以下をご参照下さい。登録されているメールアドレス宛にアカウント凍結した旨の通知が届いているので、そのメールの指示に従って、質問された内容に対して直接返信するのが一番良いようです。SendGridサポートチームに依頼しても、サポートチームは一時停止または禁止されたアカウントを再度有効にすることはできないため、直接連絡を取ると再アクティブ化が遅れることがあります。  


- [アカウント凍結のフローとその解除方法について教えてください。](https://support.sendgrid.kke.co.jp/hc/ja/articles/203392245-アカウント凍結のフローとその解除方法について教えてください-)
- [My Account Has Been Suspended / Banned](https://sendgrid.com/docs/Classroom/Troubleshooting/Account_Administration/account_under_review_suspended.html#suspended)
- [アカウントの凍結を防ぐためには、どうすればいいですか?](https://support.sendgrid.kke.co.jp/hc/ja/articles/205263479-アカウントの凍結を防ぐためには-どうすればいいですか-)