メールサーバ_DNS関連の学習記録①

# メール、ドメインの基礎知識
・メールアドレス形式は＠より左をローカルパートと呼ぶ。その右側をドメインパートと呼ぶ
　tanaka@exmple.comだとtanakaがローカルパート、exmpleがドメインパート
・gTLDはジェネリックトップレベルドメインと呼ぶ
　（.comや.net、.olgなど）
・ccTLDは国別コードトップレベルドメインと呼び日本は.jp、オーストラリアであれば.au。
・セカンドレベルドメイン（SLD）は.co.jp、.ne.jpなどがある。
・ちなみにドメインでよく使われるwwwはサブドメインである。
・POPのプロトコルは受信したメールを直接PCやスマホに保存される。
　受信するとメールサーバでは削除される。だからほかのPCやスマホでは確認できない
・IMAPのプロトコルでは受信したメールをサーバで管理するのでほかのPC、スマホからでも確認できる。gmailのように端末が異なっていてもアカウントにログインできれば確認できる。
・メーラーはメールクライアントとも呼ばれる。
・送信メールサーバが宛先側のメールサーバに送信する際はDNSを使って宛先側のメールサーバに送信される。
・CRLFのCRはキャリッジリターン（行頭復帰）、LFはラインフィード（改行）のことを指す。
 ・メールサーバ管理者は送信元のことをエンベロープfrom（送信元アドレス）、宛先側アドレスのことをエンベロープto（宛先側アドレス）と呼ぶ。

  # SMTPの応答コード
・211
　システムステータス、ヘルプの応答
・214
　ヘルプメッセージ
・220
　接続の確立
・221
　接続を閉じる
・235
　認証成功
・250
　リクエストされたアクションは実行可能
・251
　ユーザーが存在しないので転送する
・354
　データの転送開始
・421
　サービス使用不可、接続を閉じる
・450
　メールボックス利用不可、リクエストは実行不能
・451
　処理中にエラーが発生。リクエスト失敗
・452
　システムの空き容量不足により処理は実行不能
・500
　文法エラー、コマンドを実行できない
・501
　引数の間違い
・502
　コマンドがこのシステムに実装されていない
・503
　コマンドの順序が正しくない
・550
　メールボックス利用不可、実行不能
・551
　ユーザーが存在しない
・552
　ディスク容量不足
・553
　メールボックスが正しくないなど
・554
　接続失敗、処理失敗

 # POPコマンド
 ※基本コマンドは参考ドキュメントにて記載
・NOOP
　何も処理せずに接続を維持する
・TOP
　指定したメールのヘッダーと先頭部分を取得する
・STLS
　暗号化された通信を開始する。

 # IMAPコマンド
・LOGIN ユーザー名 パスワード
　ログインする。
・AUTHENTICATE 認証方法名
　指定した認証方法でログイン動作を開始する。
・LOGOUT
　ログアウトする。
・RENAME 旧メールボックス名 新メールボックス名
　メールボックス名を変更する
・FETCH メッセージ番号 データの種類
　メッセージの取得を行う。
・SEARCH キャラクタセット 検索条件
・使用例：SEARCH CHARSET UTF-8 SUBJECT "テスト"　
  UTF-8エンコーディングで「テスト」という件名を含むメールを検索する。
・SEARCH FROM "example@example.com"
　この例では、example@example.comから送られたメールを検索する。
・SEARCH UNSEEN
　未読メールを検索する。


  # 受信メールの管理方法
 mboxとmaildirの二つの保存方法にわかれる。
 ・mbox
 新しいメールを受信したら一つのメールファイルに追記されていく。
 その代わり、ファイルがロックされてしまったらこれまでのやり取りが見れなくなる。mboxファイルと呼ばれる。
・保存パターンは二つに分かれる
・/var/spool/mail/ユーザー名
・/home/ユーザー名/Mailbox
・maildir
　未読メール（new）、既読メール(curl)、受信中(tmp)のメールで振り分けられる。

# メールヘッダーについて
・メールソフトの「メッセージのソースを表示」のオプションで確認する。
　メールがインターネットに送信される際に必要な情報を詰め込んだ情報で配送経路の記録、送信者・受信者の識別、メールの種類を確認できる。
・メールヘッダーの各項目
・From（送信者）
・To（受信者）
・Cc（カーボンコピー）
　メールのコピーが送られた他の受信者を示す。
・Bcc（ブラインドカーボンコピー）
　Bccに指定されたアドレスは他の受信者には表示されない。多くの人にメールを送りたいが、互いのメールアドレスを見せたくない場合に使用される。
・Subject（件名）
・Date（送信日時）
・Return-Path（リターンパス）
　メールが送信に失敗した場合に、エラーメッセージや通知が送られるアドレスを示す。
　もし「Return-Path」に書かれているアドレスが不正であれば、メールの発信元が信頼できない可能性がある。
・Message-ID（メッセージID）
　各メールに一意の識別子を付けるための項目。同じ内容のメールが重複して送信されたかどうかを判別できたり、メールの追跡ができる。
・Received（受信記録）
　メールがどのサーバーを経由して受信者に届いたかを示す。各サーバーを通過するたびに「Received」の情報が追加されてメールの配送ルートが確認できる。
　実際のメッセージのソースでは古い記録が下に存在し新しい記録が上に追記される。
・MIME-Version(マイムバージョン)
　メールの形式に関する情報である。テキストだけでなく画像や添付ファイル、HTMLメールなどを扱うための標準規格である。このフィールドによりメールがどの形式で送信されているかを確認できる。
・Content-Type（コンテンツタイプ）
　メールの内容の種類を示す。　
　通常のテキスト形式なのかリッチテキストなのか
・X-ヘッダー
　標準のヘッダー項目ではなく、サーバーやメールソフトが独自に追加した情報である。
  迷惑メールフィルタや認証に関する情報などが含まれることがある。
  例えば、「X-Spam-Status」は、そのメールが迷惑メールと判断されたかどうかを示すことがある。

# 配信が遅延している場合のヘッダーサンプル
```
Return-Path: <sender@example.com>
Received: from mail.example.com (mail.example.com. [203.0.113.1])
        by mx.google.com with ESMTPS id x67si209856qkg.233.2024.09.11.18.40.12
        for <recipient@example.net>;
        Mon, 11 Sep 2024 18:40:12 -0700 (PDT)
Received: from mail2.example.com (mail2.example.com. [203.0.113.2])
        by mail.example.com with ESMTP id y45hg78ijk123.2024.09.11.17.30.00
        Mon, 11 Sep 2024 17:30:00 -0700 (PDT)
Received: by mail2.example.com with SMTP id qwerty9876;
        Mon, 11 Sep 2024 14:20:00 -0700 (PDT)

From: sender@example.com
To: recipient@example.net
Subject: Delayed Email
Date: Mon, 11 Sep 2024 14:20:00 -0700
Message-ID: <20240911142000.987654321@mail2.example.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
```
下から読んでsender@example.comがrecipient@example.net宛てにメールを送信している。
内部の送信サーバー（mail2.example.com ）がメールを受け取り
受信者のメールサーバー（mail.example.com）に渡している。
ヘッダーの「for recipient@example.net」は、メールがこのアドレスに向けて送られたということを示している。

1件目のReceivedでは受信時間が14:20となっている。
2件目のReceivedでは受信時間が17:30、
3件目ではReceivedでは18:40となっている。

主な原因はこれらの記事を参考にする。
〇メール配信の遅延はなぜ起きる？気になる原因と解決方法をご紹介
  https://www.hai2mail.jp/column/security/why-does-mail-delivery-delay-occur.php

SMTPの応答コードも参考にしておくこと


# 参考にしたドキュメント
 ■ドメインの名称について
　https://www.auncon.co.jp/column/seo/591/

■telnetを使ってメールサーバーと通信する (SMTP/POP/IMAP)
　https://qiita.com/suzutsuki0220/items/64e519e124e6fef323f9#:~:text=%E8%AA%8D%E8%A8%BC%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE%E6%BA%96%E5%82%99.

■SMTPとは？コマンドと応答コード（ステータスコード、responsecode）の一覧
　https://urashita.com/archives/26971#:~:text=SMTP%E5%BF%9C%E7%AD%94%E3%82%B3%E3%83%BC%E3%83%89

■telnet等でPOPサーバに接続しメールを確認する方法
　https://www.server-memo.net/memo/mail-command/pop3-commands.html

■IMAP4コマンド一覧
　https://atmarkit.itmedia.co.jp/fnetwork/rensai/netpro09/imap4-command.html