• IMAP4rev1
    IMAP4 から拡張を行った規格です。PMail Server で IMAP4 は IMAP4rev1 を指します。

  • RFC(Request for Commnet[s])
    インターネット上での様々なプロトコルや仕様、決め事が記述された文書。RFC の後には番号がつきます。(例 RFC2060 は IMAP4rev1 に関する文書です)世界共通の文書で原則として英語で記載されています。JPNIC やボランティアの方が日本語に訳したものをインターネット上でも提供している場合があります。

  • INBOX
    メールボックスのルート、POP3 でいうと受信メールボックスを指します。
    IMAP4 の RFC では INBOX のリネームも許可されていますが、PMail Server では INBOX のリネームは許可されていません。

  • メッセージフラグ
    IMAP4 では、各メッセージに対して、6個の標準フラグがあります。

    • \recent
      最近届いたメッセージ(新着メール)
    • \seen
      読まれたメッセージ(既読メール *1)
    • \deleted
      削除フラグが設定されたメッセージ
    • \draft
      下書きフラグが設定されたメッセージ
    • \flaged
      特別なメッセージを示すフラグ

    1. *1 既読メールですが、これは IMAP4 クライアントがメッセージを取得した時点で設定が行われます。(ただし \seen を設定しないメッセージ取得コマンドも存在しますので \seen の扱いは IMAP4 クライアントによって変化します。
    2. \recent は IMAP4 クライアントから操作することはできず「あくまで IMAP4サーバー側での新着メール」を意味します。
    3. \flagged は IMAP4 クライアントによって意味が変わります。

    また、PMail Server では、1つの拡張フラグに対応しています。

    • $MDNSENT
      開封要求通知のメールに対して処理を行ったメッセージ

  • メッセージ番号(Message numbers)
    IMAP4 では各メッセージに2つの番号を保持します。メッセージ番号(メッセージ連番とも言います)とユニークIDです。
    このうちメッセージ番号は、メールボックス内でメッセージの数が変化した場合に更新される1からの連番です。
    メールボックスの中に3通のメッセージが存在する場合、そのメッセージには1、2、3とメッセージ番号が割り当てられます。
    1のメッセージが削除された場合再割り当てが行われ、削除前の2、3は、1、2となります。

    メッセージ番号メッセージ
    1a.eml
    2b.eml
    3c.eml

    この状態で1が削除された場合・・・

    メッセージ番号メッセージ
    1b.eml
    2c.eml

    b.eml / c.eml が繰り上がり、新たに1、2が割り当てられます。

    メッセージ番号はメールボックス内にメッセージが追加・削除された場合に再割り当てが行われますので、メッセージ数に変化が無い場合は同じ値を保持しますが、変化後は同じメッセージ番号が同じメッセージを示す保証はありません。

  • ユニークID( Unique Identifier (UID) )
    IMAP4 では各メッセージに2つの番号を保持します。メッセージ番号(メッセージ連番とも言います)とユニーク番号です。
    このうちユニークIDは、各メッセージに割り当てられる過去に渡り重複しない(ユニークな)IDです。

    メッセージ番号ユニークIDメッセージ
    1101a.eml
    2102b.eml
    3103c.eml

    この状態で1が削除された場合・・・

    メッセージ番号ユニークIDメッセージ
    1102b.eml
    2103c.eml

    メッセージ番号と違い、ユニークIDはメールボックス内のメッセージ数が変化しても同じユニークIDであれば必ず同じメッセージを指すことが保証されます。
    またユニークIDはメッセージが追加された場合必ず増加し、下がることはありません。

    メッセージ番号ユニークIDメッセージ
    1101a.eml
    2102b.eml
    3103c.eml

    この状態で新しいメッセージが追加された場合・・・

    メッセージ番号ユニークIDメッセージ
    1101a.eml
    2102b.eml
    3103c.eml
    4104d.eml

    更にこの状態で2と4が削除された場合・・・

    メッセージ番号ユニークIDメッセージ
    1101a.eml
    2103c.eml

    この状態で新しいメッセージが2つ追加された場合・・・

    メッセージ番号ユニークIDメッセージ
    1101a.eml
    2103c.eml
    3105b.eml
    4106d.eml

    上記のようにメッセージ番号と違い、ユニークIDは必ず連番になるとは限りません。

  • タグ(Tag)
    IMAP4 でクライアント側から発行される全ての「コマンド」には対応する「タグ」が必ず必要です。タグは半角英数で長さや内容に特に決まりはありません。
    IMAP4 クライアントはタグをつけコマンドを発行し、IMAP4 サーバーは、そのタグに対して応答を返します。

    C:C001 NOOP
    S:C001 OK NOOP Completed.

    このように処理を行うことにより、IMAP4 クライアントは、どのコマンドに対してサーバーが応答をしているか識別することができます。
    タグは再利用可能ですが、以前発行したコマンドに対してサーバーからの応答が返ってくる前に同じタグを利用することはできません。

    C:C001 NOOP
    S:C001 OK NOOP Completed.
    C:C001 EXPUNGE (C001 NOOP に対してサーバーが C001 OK を返しているので再度 C001 は利用できる。)
    S:C001 OK EXPUNGE Completed.

    C:C001 NOOP
    C:C001 FETCH
    S:C001 BAD FETCH Uncompleted. (サーバーは FETCH に対してエラー応答をしているがクライアント側からは NOOP / FETCH どちらでエラーが発生しているかわからない)
    S:C001 OK NOOP Completed.

    IMAP4 クライアントに対して IMAP4 サーバーは主に OK / NO / BAD の3種類の応答でコマンドの成功の有無を返答します。(OK / NO / BAD 以降はコマンドに対する、人がわかる「文章」でしか無いので、この文章を使って判定することはできません。

  • タグ無し応答(Untagged responses)
    IMAP4 サーバーは、IMAP4 クライアントからのコマンドに応じて、タグ無し応答を返す場合があります。
    タグ無し応答には2種類あります
    * (アスタリスク) IMAP4 サーバーから IMAP4 クライアントに対してデータを送信する場合に利用。
    + (プラス) IMAP4 クライアントからのコマンドに対して IMAP4 サーバー側で準備が整ったので追加命令の要求を行う場合に利用。

    C:C001 CAPABILITY
    S:* CAPABILITY IMAP4rev1 NAMESPACE CHILDREN UIDPLUS AUTH=LOGIN AUTH=CRAM-MD5 IDLE
    S:C001 OK CAPABILITY completed

    C:C001 APPEND "INBOX" () "01-Mar-2010 18:00:00 +0900" {412} (INBOX に対して 2010/03/01 18:00:00 の日付でフラグ設定は無しで 412byte のデータの送信を行います。)
    S:+ Ready for argument(APPEND コマンドに対してサーバー側の準備が整ったので残りのデータを要求)
    C:(残りデータを送信)
    S:C001 OK APPEND Completed.

  • 共有フォルダ (Pro版のみ利用可能)
    共有フォルダは、特定のアカウントに依存しないドメイン単位で管理される特殊なフォルダです。
    共有フォルダは同一ドメイン内のアカウントであれば任意にアクセスを行い、メールの取得、削除、コピーを行うことができます。
    (他のアカウントのメールボックスを共有する公開フォルダ機能は実装の予定はありません。)