GNU/Linux >> Linux の 問題 >  >> Linux

メール システムの仕組みを理解する

電子メールは非常に一般的なコミュニケーション ツールになっています。メール システムの概念をしっかりと理解することは、システム管理者がメール システムに関するさまざまな種類の問題を調査するのに役立ちます。

1.メールはどのように移動しますか

以下の図は、Alice がメール ユーザー エージェント (MUA) を使用してメッセージを作成するときに発生する典型的な一連のイベントを示しています。彼女は、特派員の電子メール アドレスを入力するか、アドレス帳から選択します。その後、彼女はメールを送信します。

<オール>
  • Alice の MUA はメッセージをインターネット電子メール形式にフォーマットし、Simple Mail Transfer Protocol (SMTP) を使用してメッセージをローカルのメール転送エージェント (MTA) (この場合は smtp.a.org が実行) に送信します。アリスのインターネット サービス プロバイダ (ISP)。
  • MTA は、(メッセージ ヘッダーからではなく) SMTP プロトコルで提供された宛先アドレス (この場合は [email protected]) を調べます。インターネット電子メール アドレスは、[email protected] という形式の文字列であり、完全修飾ドメイン アドレス (FQDA) として知られています。 @ 記号の前の部分は、アドレスのローカル部分 (多くの場合、受信者のユーザー名) であり、@ 記号の後の部分はドメイン名です。 MTA は、ドメイン ネーム システムでこのドメイン名を検索して、そのドメイン宛てのメッセージを受け入れるメール交換サーバーを見つけます。
  • b.org ドメインの DNS サーバーである ns.b.org は、そのドメインのメール交換サーバーをリストした MX レコードで応答します。この場合、mx.b.org はボブの ISP が運営するサーバーです。 /li>
  • smtp.a.org は SMTP を使用して mx.b.org にメッセージを送信し、mx.b.org はメッセージをユーザー bob のメールボックスに配信します。
  • Bob が MUA の [get mail] ボタンを押すと、Post Office Protocol (POP3) または Internet Message Access Protocol (IMAP) を使用してメッセージが取得されます。
  • 2.メールの標準形式

    メッセージは、ヘッダー フィールドと、オプションで本文で構成されます。各ヘッダー フィールドは、フィールド名とフィールド本体で構成される ASCII 文字の単一の論理行として表示できます。フィールド本体部分は、複数に分割できます。行。ヘッダー フィールドの構造は、フィールド名とそれに続くコロン (“: ")、その後にフィールド本体が続き、キャリッジ リターン/ライン フィードで終了します。

    field-name は、印刷可能な ASCII 文字 (コロンを除く 10 進数で 33 から 126 の間の値を持つ文字) で構成する必要があります。フィールド本体には、CR または LF を除く任意の ASCII 文字を含めることができます。 (CR および/または LF は実際のテキストに存在する場合がありますが、フィールドを展開するアクションによって削除されます。)

    最低限必要

    Date: 26 Aug 76 1429 EDT       Date: 26 Aug 76 1429 EDT
    From: [email protected]    or   From: [email protected]
    Bcc:                             To: [email protected]

    「Bcc」フィールドは空の場合がありますが、「To」フィールドには少なくとも 1 つのアドレスが必要です。

    いくつかの一般的なフィールド

    1.受け取りました

    トレースフィールドです。開発者やサポートに役立ちます。このフィールドのコピーは、メッセージを中継する各トランスポート サービスによって追加されます。フィールドの情報は、輸送の問題を追跡するのに非常に役立ちます。

    Received: from agminet03.b.org (agminet03.b.org [192.168.10.1])
    	by gw2.b.org(Switch-3.2.0/Switch-3.2.0) with ESMTP id m3A7ZtIj030617
    	for [[email protected]]; Thu, 10 Apr 2008 01:35:55 -0600

    2.から

    「差出人」は発信者フィールドです。このフィールドには、このメッセージの送信を希望する人物の ID が含まれています。メッセージ作成プロセスは、このフィールドをデフォルトで単一の認証済みマシン アドレスに設定する必要があります。これは、メッセージを入力する AGENT (人、システム、またはプロセス) を示します。これが行われない場合、「Sender」フィールドが存在しなければなりません。 「差出人」フィールドがこのようにデフォルト設定されている場合、「送信者」フィールドはオプションであり、「差出人」フィールドと重複しています。いずれの場合も、「From」フィールドのアドレスはマシンで使用できる (addr-specs) 必要があり、名前付きリスト (グループ) を含めることはできません。

    From: Alice [[email protected]]

    3.へ

    「To」は受信者フィールドです。このフィールドには、メッセージの主要な受信者の ID が含まれます。

    To: [[email protected]]

    4.メッセージ ID

    「MESSAGE-ID」は参照フィールドです。このフィールドには、このメッセージのこのバージョンを参照する一意の識別子 (ローカル パート アドレス ユニット) が含まれます。メッセージ識別子の一意性は、それを生成するホストによって保証されます。この識別子は機械可読であることを意図しており、人間にとって必ずしも意味のあるものではありません。メッセージ ID は、特定のメッセージの 1 つのインスタンス化にのみ関係します。その後のメッセージの改訂では、それぞれ新しいメッセージ識別子を受け取る必要があります。

    Message-ID: [[email protected]]

    5.件名

    これは、メッセージの要約を提供するか、メッセージの性質を示すことを目的としています。

    Subject: Hello

    本文

    Content-Type ヘッダー フィールドを使用して、メッセージの本文でデータのタイプとサブタイプを指定し、そのようなデータのネイティブ表現 (エンコーディング) を完全に指定できます。

    1.テキスト

    本体は、ASCII 文字を含む一連の行です。空行 (つまり、CRLF の前に何もない行) によってヘッダーから分離されます。

    Content-Type: text/plain

    2. MIME – 多目的インターネット メール拡張機能

    MIME は、拡張可能なメカニズムとして慎重に設計されています。 MIME-Version ヘッダー フィールド、Content-Type ヘッダー フィールド、Content-Transfer-Encoding ヘッダー フィールドを記述します。例:

    Content-Type: multipart/mixed;
    boundary="------------040406000905020906030306"
    --_77c1a01c-9699-4678-a620-eccfaf27c4c8_
    Content-Type: text/plain
    Content-Transfer-Encoding: base64
    Content-Disposition: attachment; filename="file.txt"

    3. SMTP – シンプルなメール転送プロトコル

    Simple Mail Transfer Protocol (SMTP)。インターネット上のポイント間で電子メールを交換するために使用されるプロトコル。 Simple Mail Transfer Protocol (SMTP) の目的は、メールを確実かつ効率的に転送することです。

    SMTP モデル

    SMTP 設計は、次の通信モデルに基づいています。ユーザーのメール要求の結果として、送信側 SMTP は受信側 SMTP への双方向伝送チャネルを確立します。受信側 SMTP は、最終的な宛先または中間のいずれかです。 SMTP コマンドは、送信側 SMTP によって生成され、受信側 SMTP に送信されます。コマンドに応答して、SMTP 応答が受信側 SMTP から送信側 SMTP に送信されます。

    SMTP メール トランザクションの例

    SMTP メール トランザクションには 3 つの手順があります。トランザクションは、送信者 ID を与える MAIL コマンドで開始されます。一連の 1 つまたは複数の RCPT コマンドが続き、レシーバー情報が提供されます。次に、DATA コマンドでメール データを取得します。最後に、メール データ インジケータの終了により、トランザクションが確認されます。

    C: #telnet smtp.a.org 25
    C: Trying 192.168.**.**...
    C: Connected to bigip-adc-mail-10g.a.org (192.168.**.**).
    Escape character is '^]'.
    C: 220 server ready. Unauthorized Access Prohibited.
    S: EHLO test1.a.org
    S: 250-bigip-adc-mail-10g.a.org Hello test1.a.org, pleased to meet you
    S: 250-8BITMIME
    S: 250-SIZE 15728640
    S: 250-DSN
    S: 250-ENHANCEDSTATUSCODES
    S: 250-STARTTLS
    S: 250-XAUTH
    S: 250 HELP
    C: MAIL FROM:
    S: 250 2.1.0 Sender OK
    C: RCPT TO:
    S: 250 2.1.5 Recipient ok
    C: DATA
    S: 354 Enter mail, end with "." on a line by itself
    C: Subject: email title ..content
    C: ....
    C: . 
    
    S: 250 2.6.0 Message accepted for delivery
    C: quit
    S: 221 2.0.0  bigip-adc-mail-10g.a.org Closing connection
    S: Connection closed by foreign host.

    4. POP3 – 郵便局プロトコル バージョン 3

    POP3 は、電子メールを読むために使用されます。 POP3 では、メールはサーバー上の単一のメールボックスに保存されます。メールを読むと、メールはすぐにコンピューターにダウンロードされ、以前に取り決められた場合を除き、サーバーに保持されなくなります。

    最初に、サーバー ホストは、TCP ポート 110 をリッスンして POP3 サービスを開始します。クライアントがサービスを利用する場合、サーバーとの TCP 接続を確立します。接続が確立されると、POP3 サーバーはグリーティングを送信します。その後、クライアントと POP3 サーバーは、接続が閉じられるか中止されるまで、(それぞれ) コマンドと応答を交換します。

    POP3 プロトコルは、サーバーが保持しているメールをワークステーションが取得できるようにするために使用されます。

    POP3 セッションの例

    S: [wait for connection on TCP port 110]
    C: [open connection]
    S:    +OK POP3 server ready [[email protected]]
    C: USER Alice
    S: +OK Alice is a real hoopy frood
    C: PASS secret
    S: +OK Alice's maildrop has 2 messages (320 octets)
    C:    STAT
    S:    +OK 2 320
    C:    LIST
    S:    +OK 2 messages (320 octets)
    S:    1 120
    S:    2 200
    S:    .
    C:    RETR 1
    S:    +OK 120 octets
    S:    [the POP3 server sends message 1]
    S:    .
    C:    DELE 1
    S:    +OK message 1 deleted
    C:    RETR 2
    S:    +OK 200 octets
    S:    [the POP3 server sends message 2]
    S:    .
    C:    DELE 2
    S:    +OK message 2 deleted
    C:    QUIT
    S:    +OK dewey POP3 server signing off (maildrop empty)
    C:  [close connection]
    S:  [wait for next connection]

    5. IMAP – インターネット メッセージ アクセス プロトコル

    IMAP (Internet Message Access Protocol) は、ローカル サーバーから電子メールにアクセスするための標準プロトコルです。 IMAP は、インターネット サーバーによって電子メールが受信および保持されるクライアント/サーバー プロトコルです。あなた (または電子メール クライアント) は、レターの見出しと送信者だけを表示して、メールをダウンロードするかどうかを決定できます。また、サーバー上に複数のフォルダーまたはメールボックスを作成および操作したり、メッセージを削除したり、メモの特定の部分または全体を検索したりすることもできます。 IMAP では、メールを処理している間、サーバーに継続的にアクセスする必要があります。

    IMAP は、リモート ファイル サーバーと考えることができます。 POP3 は「ストア アンド フォワード」と考えることができます。 」サービス。

    POP3 と IMAP の簡単な比較

    POP3 プロトコルの利点

    • よりシンプルなプロトコル。より簡単に実装できます。
    • 現在、より多くのクライアント ソフトウェアが利用可能です。

    IMAP プロトコルの利点

    • 永続的なメッセージ ステータス フラグを操作できます。
    • メッセージを取得するだけでなく、保存することもできます
    • 複数のメールボックスにアクセスして管理できる
    • 同時更新と共有メールボックスへのアクセスをサポートできる
    • メール以外のデータへのアクセスに適しています。例:ネットニュース、ドキュメント
    • 接続時間とディスク使用量を最小限に抑えるために、オフライン パラダイムも使用できます。
    • ユーザー構成管理 (IMSP) 用に定義されたコンパニオン プロトコル
    • 特に低速リンクでのオンライン パフォーマンスの最適化を可能にする構造。

    IMAP4 接続の例

    以下は、IMAP4rev1 接続のトランスクリプトです。このサンプルの長い行は、編集を明確にするために改行されています。

    C: telnet imap.a.org 143
    S: Trying 192.168.***.***...
    S: Connected to imap.a.org (192.168.***.***).
    Escape character is '^]'.
    S:   * OK IMAP4rev1 Service Ready
    C:   a001 login mrc secret
    S:   a001 OK LOGIN completed
    C:   a002 select inbox
    S:   * 18 EXISTS
    S:   * FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
    S:   * 2 RECENT
    S:   * OK [UNSEEN 17] Message 17 is the first unseen message
    S:   * OK [UIDVALIDITY 3857529045] UIDs valid
    
    S:   a002 OK [READ-WRITE] SELECT completed
    C:   a003 fetch 12 full
    S:   * 12 FETCH (FLAGS (\Seen) INTERNALDATE "17-Jul-1996 02:44:25 -0700"
          RFC822.SIZE 4286 ENVELOPE ("Wed, 17 Jul 1996 02:23:25 -0700 (PDT)"
          "IMAP4rev1 WG mtg summary and minutes"
          (("Terry Gray" NIL "gray" "cac.washington.edu"))
          (("Terry Gray" NIL "gray" "cac.washington.edu"))
          (("Terry Gray" NIL "gray" "cac.washington.edu"))
          ((NIL NIL "imap" "cac.washington.edu"))
          ((NIL NIL "minutes" "CNRI.Reston.VA.US")
          ("John Klensin" NIL "KLENSIN" "INFOODS.MIT.EDU")) NIL NIL
          "[[email protected]]")
           BODY ("TEXT" "PLAIN" ("CHARSET" "US-ASCII") NIL NIL "7BIT" 3028 92))
    S:    a003 OK FETCH completed
    C:    a004 fetch 12 body[header]
    S:    * 12 FETCH (BODY[HEADER] {350}
    S:    Date: Wed, 17 Jul 1996 02:23:25 -0700 (PDT)
    S:    From: Terry Gray [[email protected]]
    S:    Subject: IMAP4rev1 WG mtg summary and minutes
    S:    To: [email protected]
    S:    cc: [email protected], John Klensin [[email protected]]
    S:    Message-Id: [[email protected]]
    S:    MIME-Version: 1.0
    S:    Content-Type: TEXT/PLAIN; CHARSET=US-ASCII
    S:
    S:    )
    S:    a004 OK FETCH completed
    C:    a005 store 12 +flags \deleted
    S:    * 12 FETCH (FLAGS (\Seen \Deleted))
    S:    a005 OK +FLAGS completed
    C:    a006 logout
    S:    * BYE IMAP4rev1 server terminating connection
    S:    a006 OK LOGOUT completed


    Linux
    1. システムロケールをカスタマイズする方法は?

    2. rsyslog テンプレートについて

    3. この出力をソートする方法 1,10,11..2

    1. 16進ダンプのしくみ

    2. Linuxでホスト名を変更する方法

    3. Goでstderrにメッセージを出力するにはどうすればよいですか?

    1. AlmaLinuxを更新する方法

    2. Linuxバージョンを確認する方法

    3. Socks5 プロキシが機能するかどうかを確認する方法