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個の標準フラグがあります。
また、PMail Server では、1つの拡張フラグに対応しています。
メッセージ番号(Message numbers)
IMAP4 では各メッセージに2つの番号を保持します。メッセージ番号(メッセージ連番とも言います)とユニークIDです。
このうちメッセージ番号は、メールボックス内でメッセージの数が変化した場合に更新される1からの連番です。
メールボックスの中に3通のメッセージが存在する場合、そのメッセージには1、2、3とメッセージ番号が割り当てられます。
1のメッセージが削除された場合再割り当てが行われ、削除前の2、3は、1、2となります。
メッセージ番号 | メッセージ |
1 | a.eml |
2 | b.eml |
3 | c.eml |
この状態で1が削除された場合・・・
メッセージ番号 | メッセージ |
1 | b.eml |
2 | c.eml |
b.eml / c.eml が繰り上がり、新たに1、2が割り当てられます。
メッセージ番号はメールボックス内にメッセージが追加・削除された場合に再割り当てが行われますので、メッセージ数に変化が無い場合は同じ値を保持しますが、変化後は同じメッセージ番号が同じメッセージを示す保証はありません。
ユニークID( Unique Identifier (UID) )
IMAP4 では各メッセージに2つの番号を保持します。メッセージ番号(メッセージ連番とも言います)とユニーク番号です。
このうちユニークIDは、各メッセージに割り当てられる過去に渡り重複しない(ユニークな)IDです。
メッセージ番号 | ユニークID | メッセージ |
1 | 101 | a.eml |
2 | 102 | b.eml |
3 | 103 | c.eml |
この状態で1が削除された場合・・・
メッセージ番号 | ユニークID | メッセージ |
1 | 102 | b.eml |
2 | 103 | c.eml |
メッセージ番号と違い、ユニークIDはメールボックス内のメッセージ数が変化しても同じユニークIDであれば必ず同じメッセージを指すことが保証されます。
またユニークIDはメッセージが追加された場合必ず増加し、下がることはありません。
メッセージ番号 | ユニークID | メッセージ |
1 | 101 | a.eml |
2 | 102 | b.eml |
3 | 103 | c.eml |
この状態で新しいメッセージが追加された場合・・・
メッセージ番号 | ユニークID | メッセージ |
1 | 101 | a.eml |
2 | 102 | b.eml |
3 | 103 | c.eml |
4 | 104 | d.eml |
更にこの状態で2と4が削除された場合・・・
メッセージ番号 | ユニークID | メッセージ |
1 | 101 | a.eml |
2 | 103 | c.eml |
この状態で新しいメッセージが2つ追加された場合・・・
メッセージ番号 | ユニークID | メッセージ |
1 | 101 | a.eml |
2 | 103 | c.eml |
3 | 105 | b.eml |
4 | 106 | d.eml |
上記のようにメッセージ番号と違い、ユニークIDは必ず連番になるとは限りません。
タグ(Tag)
IMAP4 でクライアント側から発行される全ての「コマンド」には対応する「タグ」が必ず必要です。タグは半角英数で長さや内容に特に決まりはありません。
IMAP4 クライアントはタグをつけコマンドを発行し、IMAP4 サーバーは、そのタグに対して応答を返します。
C:C001 NOOP
S:C001 OK NOOP Completed.
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版のみ利用可能)
共有フォルダは、特定のアカウントに依存しないドメイン単位で管理される特殊なフォルダです。
共有フォルダは同一ドメイン内のアカウントであれば任意にアクセスを行い、メールの取得、削除、コピーを行うことができます。
(他のアカウントのメールボックスを共有する公開フォルダ機能は実装の予定はありません。)