Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SESからSendGridに変更したけど移行で問題が出た話

 SESからSendGridに変更したけど移行で問題が出た話

JAWS-UG朝会 #50
「SESからSendGridに変更したけど移行で問題が出た話
 〜メールアドレスに日本語が使える?〜」
の資料になります。
https://jawsug-asa.connpass.com/event/282615/

Takafumi Omuro

October 20, 2023
Tweet

More Decks by Takafumi Omuro

Other Decks in Technology

Transcript

  1. © Morisawa Inc.
    SES から SendGrid に変更したけど移行で問題が出た話
    〜メールアドレスに日本語が使える?〜
    株式会社モリサワ
    システム開発部門 小室 貴史

    View full-size slide

  2. © Morisawa Inc.
    アジェンダ
    1
    • 自己紹介
    • 株式会社モリサワと Morisawa Fonts の紹介
    • Backend アーキテクチャの紹介と SendGrid 移行
    • メールアドレスの RFC と国際化対応について
    • メールアドレスのバリデーション
    • まとめ

    View full-size slide

  3. © Morisawa Inc.
    自己紹介
    名前:小室 貴史
    所属:株式会社モリサワ
    システム開発部門 シニアテックマネージャー
    仕事:テックリード、 インフラエンジニア
    好きな Amazon Web Services サービス:
    CloudFormation
    趣味:バイク
    2
    サーキットで YZF-R1 に跨る本人

    View full-size slide

  4. © Morisawa Inc.
    3

    View full-size slide

  5. © Morisawa Inc.
    フォント販売方法も変革
    物理媒体からクラウドへ
    4
    2005年
    MORISAWA PASSPORT
    パッケージ
    サブスクリプション
    2002年
    OpenTypeフォント
    パッケージ 売り切り
    2022年
    Morisawa Fonts
    クラウド
    サブスクリプション

    View full-size slide

  6. © Morisawa Inc.
    5 © Morisawa Inc.
    Backend アーキテクチャ

    View full-size slide

  7. © Morisawa Inc.
    Backend アーキテクチャ(SES 利用時代)
    6
    AWS Fargate で GraphQL サーバーを稼働
    AWS Cloud
    ユーザー Amazon Route 53 Elastic Load
    Balancing
    AWS WAF Amazon Aurora Amazon DynamoDB
    Amazon CloudWatch
    Alarm
    Logs Amazon Simple Noti?cation
    Service (Amazon SNS)
    AWS Chatbot
    AWS CodeBuild AWS CodePipeline
    Amazon Elastic
    Container Registry
    (Amazon ECR)
    AWS Fargate
    Amazon SES
    Slack
    ※主要なサービスのみ記載しております

    View full-size slide

  8. © Morisawa Inc.
    Backend アーキテクチャ(SES 利用時代)
    7
    当初 Amazon SES でメールを送信
    AWS Cloud
    ユーザー Amazon Route 53 Elastic Load
    Balancing
    AWS WAF Amazon Aurora Amazon DynamoDB
    Amazon CloudWatch
    Alarm
    Logs Amazon Simple Noti?cation
    Service (Amazon SNS)
    AWS Chatbot
    AWS CodeBuild AWS CodePipeline
    Amazon Elastic
    Container Registry
    (Amazon ECR)
    AWS Fargate
    Amazon SES
    Slack
    ※主要なサービスのみ記載しております

    View full-size slide

  9. © Morisawa Inc.
    Backend アーキテクチャ
    8
    その後、SendGrid へ移行しました
    AWS Cloud
    ユーザー
    ※主要なサービスのみ記載しております
    Amazon Route 53 Elastic Load
    Balancing
    AWS WAF Amazon Aurora Amazon DynamoDB
    Amazon CloudWatch
    Alarm
    Logs Amazon Simple Noti?cation
    Service (Amazon SNS)
    AWS Chatbot
    AWS CodeBuild AWS CodePipeline
    Amazon Elastic
    Container Registry
    (Amazon ECR)
    AWS Fargate Slack
    SendGrid

    View full-size slide

  10. © Morisawa Inc.
    Amazon SES のバウンス率が急上昇
    〜Amazon SES を止めてしまった日〜
    9
    SES を SendGrid に移行しました
    https://speakerdeck.com/tomuro/amazon-ses-nobaunsulu-gaji-shang-sheng-amazon-ses-wozhi-metesimatutari
    3K View 超えて人気

    View full-size slide

  11. © Morisawa Inc.
    10 © Morisawa Inc.
    ここで質問
    メールアドレスに日本語は使えますか?

    View full-size slide

  12. © Morisawa Inc.
    Backend アーキテクチャ
    11
    SendGrid では日本語メールアドレスが使えませんでした
    AWS Cloud
    ユーザー
    ※主要なサービスのみ記載しております
    Amazon Route 53 Elastic Load
    Balancing
    AWS WAF Amazon Aurora Amazon DynamoDB
    Amazon CloudWatch
    Alarm
    Logs Amazon Simple Noti?cation
    Service (Amazon SNS)
    AWS Chatbot
    AWS CodeBuild AWS CodePipeline
    Amazon Elastic
    Container Registry
    (Amazon ECR)
    AWS Fargate Slack
    SendGrid

    View full-size slide

  13. © Morisawa Inc.
    メールアドレスの基本となる RFC
    • RFC5321 Simple Mail Transfer Protocol(SMTP)
    • RFC5322 Internet Message Format
    • メールアドレスに使用できる文字が定義されている
    • 使える文字は ASCII が基本
    • RFC は読むのが大変なので Wikipedia を見てみると…
    12
    RFC5321 と RFC5322

    View full-size slide

  14. © Morisawa Inc.
    メールアドレスのWikipedia
    13
    「ASCII 文字である」と書かれている
    https://ja.wikipedia.org/wiki/メールアドレス

    View full-size slide

  15. © Morisawa Inc.
    メールアドレスのWikipedia
    14
    「正確性に疑問」と注意が出ている
    https://ja.wikipedia.org/wiki/メールアドレス
    メールアドレスの国際化対応とは?

    View full-size slide

  16. © Morisawa Inc.
    メールアドレスの国際化対応 RFC
    • RFC6531 SMTP Extension for Internationalized Email
    • RFC6532 Internationalized Email Headers
    • RFC5321 と RFC5322 の国際化対応がされている
    • ざっくり言うと UTF-8 がサポートされた
    15
    RFC6531 と RFC6532

    View full-size slide

  17. © Morisawa Inc.
    16 © Morisawa Inc.
    それってなんでもありになるのでは?

    View full-size slide

  18. © Morisawa Inc.
    Email バリデーションの正規表現 (Go言語のライブラリ)
    17
    https://github.com/go-playground/validator/blob/5bf55dc757cad229e8297d42640ec036e2360df7/regexes.go

    View full-size slide

  19. © Morisawa Inc.
    Email バリデーションの正規表現 (Go言語のライブラリ)
    18
    https://github.com/go-playground/validator/blob/5bf55dc757cad229e8297d42640ec036e2360df7/regexes.go
    @のチェック
    サロゲートペア使ってないか?
    Not a character 使ってないか?
    @の存在や、Unicode で未定義の文字がないか、
    などをチェックしていることなどが確認できる

    View full-size slide

  20. © Morisawa Inc.
    19 © Morisawa Inc.
    まとめ

    View full-size slide

  21. © Morisawa Inc.
    まとめ
    20
    • メールアドレスには日本語も使える
    • 未対応のプロバイダーやサービスに注意
    • Amazon SES は国際化対応済み
    • ASCII 外の符号も使える
    • 日本語を含むメールアドレスの送信が可能
    • SendGrid は国際化非対応?
    • 国際化対応に関する記載は見つけられなかった
    • 日本語を含むメールアドレスは送信できなかった
    • メールアドレスのバリデーションは OSS など活用すべき
    • 自分で書くのはかなり大変

    View full-size slide

  22. © Morisawa Inc.
    正規ユーザーで日本語メールアドレスを使っている人は
    運良くいなかったため問題にはなりませんでした。
    メールアドレスの国際化対応の必要性は考えておきましょう。
    採用情報はこちら
    https://www.morisawa.co.jp/about/recruit/

    View full-size slide