RAKUS Developers Blog | ラクス エンジニアブログ

株式会社ラクスのITエンジニアによる技術ブログです。

メール 入門編

f:id:tech-rakus:20200924194135p:plain

こんにちは!akiponxといいます。

さて、今回のブログはメールのあれこれについて書きます。

メールというと、いつでも送信できて、いつでも受信できる。 これが当たり前ですよね。

まれにメールが届かない。という声を聴くことがあります。

今回はメールが届かない原因について触れてみたいと思います。

まずはRakusのブログではメール関連の記事があまりないので今回は仕組みの部分。イメージを付けていただければと思います。

当たり前にメールの送受信ができる裏側で何が起きているのか見ていきましょう!



1. メールとは

メールとは手紙のやり取りと似たようなものです。 画像①を使って説明します。

f:id:akiponx:20200918163859p:plain

①手紙を作る

  1. 封筒に下記を書く
    • 宛先の住所
    • 差出人の名前
  2. 手紙の本文を書く
  3. ポストへ投函

②郵便配達の人が頑張って宛先の住所に手紙を届けます。

③家のポストを確認して手紙を受け取る

メールの送信・受信もイメージは同じです。


2. メールの送信・受信

こちらについてもメールの仕組みで使った図と見比べて説明していこうと思います。

f:id:akiponx:20200918163853p:plain

①手紙を作る部分:メールを作成して送信ボタンをクリック

  1. メーラ(gmailなど)でメールを作成 (図1の封筒にあたる部分)
    • 宛先メールアドレスを記載 (例:hoge@example.com)
    • 自動で入力されていることが多いですが、差出人アドレスを記載 (例:akiponx@rakus.co.jp)
  2. 本文を入力 (図1の本文にあたる部分)
  3. 送信ボタンを押す (図1のポストに投函にあたる部分)

②郵便配達の人が頑張る部分:メール送信サーバが受信サーバへメール送信

  • この時にメール送信サーバが行っている処理をざっくり説明。
    1. 宛先メールアドレスのドメイン(example.com)を名前解決してメール受信サーバのインターネット上の住所であるIPアドレスを取得。
    2. メール受信サーバへメールを送信

③郵便ポストにメールを取りに行く部分:受信者がメーラで受信メールサーバに届いているか確認しに行く

  • メール受信はメーラによってメール受信サーバにメールが届いているか確認しに行く作業。

さて。ざっくりとした流れは説明した通りですが、送信・受信についてもう少し細かく見ていきます。


メール送信

①の部分を切り取った画像がこちら。さらに処理の内容を記載しています。後で全部マージします。

f:id:akiponx:20200918163844p:plain

1-1. 差出人アドレスがメールを送信していいかどうか認証する(SMTP認証と呼ばれているもの。)

1-2. 認証が通れば送信する準備に入る

続いて②を切り取った画像。

f:id:akiponx:20200918163840p:plain

②の中身を細かく分割するとこんな感じです。では説明していきましょう。

2-1. どこに送ればいいのか確認するため、送信先メールアドレスのドメイン部分を確認。

2-2. 確認したドメインの住所がどこなのかDNSレコードにMXレコードを問合せ

2-3. DNSから送信先アドレスの住所をもらう。

2-4. DNSからもらった住所宛にメールを送信する。

※MXレコードとはメールをどこに送ればいいのかを教えるための、DNSレコードの一種です。


メール受信

さて、続いてメール受信ですが、メールが受信できるようになるまでもいくつか過程があります。

メール送信の段階で②の処理が全て終わっているように思われますが、実はまだ終わっていません。

続きはメール受信サーバ側で処理がされているためこちらに続きを記載します。

f:id:akiponx:20200918163832p:plain

2-5. 届いたメールの差出人アドレスのドメインを確認

2-6. DNSSPF(またはDKIMの公開鍵)を問合せ

2-7. SPF(またはDKIMの公開鍵)の評価を実施 ※1

2-8. 問題なければメールを受け入れる処理を実施

2-9. メールボックス(イメージ的にはポスト)にメールを置く。

3-1. メーラがPOP3 or IMAPでメールがあるかどうか確認しに行く ※2

3-2. 新着メールが存在していればダウンロードして表示する。

※1 SPF(またはDKIM)の評価によってはメールが拒否されることがある。

※2 POP3IMAPはメールを受信する用の通信プロトコル

   また、POP3SやIMAPSといったSSL証明書を利用したプロトコルもある。

SPFDKIMについては後程説明します。


全部をマージするとこんな感じ

f:id:akiponx:20200918163825p:plain


3. メールが届かない原因

さて、メールの送信・受信についてはある程度説明できたかと思います。

続いては当たり前に届くはずのメールが届かないことがある原因ついて、考えられることを書いていきます。

  • スパムメール判定がされている
  • メールアドレスが間違っている
  • etc...

メールが届かない原因としてスパムメールと評価されてしまい、拒否されているケースが多いです。


スパムメールとは

スパムメールとは迷惑メールの一つで、主に広告や宣伝、ウィルス付きメールなどに使われることが多いです。

広告や宣伝に使われるならいいんじゃない?と思う方もいるかと思いますが、そうではありません。

主に詐欺やデータを取る目的で送られていることが多いです。

そもそもメール配信などはオプトイン(メルマガ送ってもいいですよ。という意志表明)が無いと送ってはいけないのがルール。

そのオプトインがない人にメールを大量に送る。迷惑ですよね。


スパムメール対策

スパムメールを受信しないようにする対策として、

などがありますが、「メールが届かない!」ということは大きなクレームにもつながるため、

なかなかSPFDKIMを設定していないメールは受信しない。という強気な対応に踏み切れないところがあります。

そんなこんなで続いてはSPFとか何か、DKIMとは何か。について書いていきます。


4. SPF

SPFとは、DNSのTXTレコードにあたります。

送信元ドメインの名前解決を実施しTXTレコードに記載があるSPFの値を確認します。

例を出すと基本的にこんな感じのSPFが設定されています。

# SPFの例
rakus.co.jp descriptive text "v=spf1 include:spf.rakus.co.jp ip4:xxx.xxx.xxx.xxx ~all"

SPFの値にはIPアドレスなどが記載されており、送信サーバのIPアドレスSPFに記されていればOK、記載されていなければ基本的にNGとなります。

受信メールサーバ側の設定によりますが、このSPFのチェックを通らないとメールを受信しない。という設定もできます。

もし「メールが届かない…orz」となった方はSPFをチェックしてみるのもいいかもしれないですね。


5. DKIM

DKIMとは、これもDNSのTXTレコードを利用した技術です。SPFより少し複雑。

ざっくりとした流れとしては

  1. メール送信サーバがメールヘッダーに電子署名を実施
  2. メール受信サーバがDNSサーバに問い合わせを実施し、公開鍵を入手
  3. 入手した公開鍵で電子署名が複合化し、認証を実施。

こんな感じでDKIMは評価されます。

f:id:akiponx:20200918163817p:plain

DKIM署名を実装する方法などなどは今回は書きません。


6. DMARC

DMARCとはSPFDKIMの合わせ技です。

基本的にメール受信についてはSPFが設定されていなくても、DKIMが設定されていなくても、

そのメールを受信するかどうかは受信メールサーバ側が決めています。

DMARCを設定することによって、メール送信者側が挙動を指定できます。

例えば、

  • SPFが通らなければメールを拒否(迷惑メールに振り分け)する
  • DKIMの署名がなければメールを拒否(迷惑メールに振り分け)する

上記の設定をすることによって、自分のドメインを語ったメールを受信させないようにできます。

また、DMARCを設定することによって、自分のドメインを語ったメール(SPFDKIMの評価が通らなかったもの)が何通送られているのか

というレポートメールを受け取ることができます。

f:id:akiponx:20200918164216p:plain

これを受け取ったから何ができるのかといわれると難しいですが、DMARCの運用を考えていかないといけないですね。


7. まとめ

メールが届かない原因は今回記載した以外にもありますが、

本記事に記載されている内容を踏まえてメールが届かなった原因の調査や対策をしてみていただければと思います。

大手フリーメールの会社ではセキュリティが厳しくなってきており、迷惑メールフォルダに振り分けられてしまうこともしばしばあります。

迷惑メールフォルダに振り分けられないように、SPFDKIMの対策をしっかりしていきましょう!

そのうち別のメール関連の記事も書きます。


参考にさせていただいたページ

DMARK


  • エンジニア中途採用サイト
    ラクスでは、エンジニア・デザイナーの中途採用を積極的に行っております!
    ご興味ありましたら是非ご確認をお願いします。
    20210916153018
    https://career-recruit.rakus.co.jp/career_engineer/

  • カジュアル面談お申込みフォーム
    どの職種に応募すれば良いかわからないという方は、カジュアル面談も随時行っております。
    以下フォームよりお申込みください。
    forms.gle

  • イベント情報
    会社の雰囲気を知りたい方は、毎週開催しているイベントにご参加ください! rakus.connpass.com

Copyright © RAKUS Co., Ltd. All rights reserved.