郵箱命名的規則

2021-09-14 02:12:25 字數 2679 閱讀 9753

最近用到郵件相關協議,現總結郵箱名命名規則如下:

郵箱名是7-bit的。客戶端實現體不能試圖建立8-bit的郵箱名,應當把list或者lsub返回的任意8-bit郵箱名解釋為utf-8。伺服器實現體應當禁止8-bit郵箱名的建立,list或者lsub不應當返回8-bit的郵箱名。

注意:8-bit的郵箱名在本協議的早期版本中並未定義。一些站點使用 乙個本地的8-bit字串行表示非ascii郵箱名。這種用法是不能有效溝通的,現在而言也是不正規的。

不區分大小寫的郵箱名inbox是乙個特殊的郵箱名,它被保留下來,表示「該伺服器上該使用者的主郵箱」。所有其它郵箱名的解釋都是依賴於實現體的。

特別的,本文件未指定是否區分非inbox郵箱名的大小寫。一些伺服器實現體全部區分大小寫;一些伺服器實現體保留新建立的郵箱名的大小寫狀態,而其它的則是不區分大小寫的;還有一些伺服器實現體則強制命名為特定形式。客戶端實現體必須與其中的任何一種做好互動。如果乙個伺服器實現體把非 inbox郵箱名解釋為不區分大小寫的,則它必須特別使用5.1.3一節中所描述的國際命名約定。

建立乙個新的郵箱名,有一些客戶端的考慮:

1)原語類(參見正式語法一節)的任意乙個字元要求郵箱名表述為乙個引用字 符串或者原義字串。

2)ctl和其它生僻字元很難表述在使用者介面,所以最好避免。

3)雖然萬用字元列表字元(「%」和「*」)在郵箱名中是正確的,所以很難把list 和lsub命令用於這樣的郵箱名,因他們與萬用字元的解釋相衝突。

4)通常,保留乙個字元(取決於伺服器實現體)用於層級分隔。

5)「#」和「&」這兩個字元有約定語上的意義,應當避免以其它意義使用它。

1、 郵箱層級命名

如果需要輸出分層的郵箱名,郵箱名必須是從左到右的層級,並使用乙個字元分隔不同層級。在乙個郵箱名中,所有層級的分層使用同乙個層級分隔字元表示。

2、 郵箱命名空間的約定

按照約定,任何郵箱名的第乙個分層元素以「#」開頭,它標識剩餘名稱的命名空間。這使得消除具有各自命名空間的、不同型別的郵箱儲存間的含糊意義成為可能。

例如,提供訪問usenet網路組的實現體可以使用「#news」命名空間把usenet網路組的命名空間與其它郵箱的網路組命名空間分割開 來。comp.mail.misc網路組可能有乙個「#news.comp.mail.misc」的郵箱名,而郵箱名「comp.mail.misc」可以指向乙個不同的物件(如,乙個使用者的本地郵箱)。

3、郵箱的國際命名約定

按照約定,imap4rev1的國際郵箱名用「utf-7」中所描述的utf-7編碼的修訂版本描述。在執行本協議的乙個早期版本的伺服器上,修訂版utf-7同樣是可以用的。

在修訂版utf-7中,除「&」外的us-ascii列印字元都可以表示郵箱名;即八進位制值為0×20-0×25和0×27-0×7e的字元。字元「&」(0×26)表示成兩個八進位制串「&-」。

所有其它字元(八進位制值為0×00-0×1f和0×7f-0xff)表示成修訂版base64,它具有「utf-7」之後的乙個修訂――「,」替代「/」使用。修訂版base64不能用來表示任何可以表示自身的us-ascii列印字元。

「&」用來轉換至修訂版base64,「-」用來轉換回us-ascii。不存在從base64至us-ascii的隱式轉換,且無效 轉換(base64下的「-&」;注意,us-ascii下的「&-」意為「&」)也是不允許的;就是說,乙個以非 ascii iso-10646字元結尾的郵箱名必須以乙個「-」結尾。

這些修訂是為了修正與utf-7的以下錯誤:

1)utf-7使用「+」字元實現轉換;這跟郵箱名稱中的「+」,特別是usenet 網路組名稱的一般用法相衝突。

2)utf-7的編碼是base64,它使用「/」字元;這跟「/」作為層級分隔符 的普遍用法相衝突。

3)utf-7禁止「/」的未編碼使用;這跟「/」作為層級分隔符的普遍用法相 衝突。

4)utf-7禁止「」的未編碼合用;這跟一些伺服器將「」作為根目錄標記 的用法相衝突。

5)utf-7允許選擇多種形式表示同樣的字串;特別的,us-ascii列印字 符可以表示成編碼後的形式。

雖然修訂版utf-7是乙個約定,它在伺服器建立了用乙個嵌入的「&」字元處理任意郵箱名的一些請求。特別的,伺服器實現體必須保留一 個修訂版utf-7名稱的修訂版base64部分的準確形式,並把這些文字視為區分大小寫的,即使郵箱名是不區分大小寫的或者部分區分大小寫、部分不區分 大小寫的。

伺服器實現體應當用乙個嵌入的「&」字元――用作create的乙個變數,檢驗任意郵箱名:正確修訂版utf-7語法中,不含有多餘的 轉換符,也不含有可表示自身的任意us-ascii列印字元的修訂版base64編碼。但是,客戶端實現體不能依賴伺服器做這個,也不應當試圖用乙個嵌入 的「&」字元建立乙個郵箱名,除非它用修訂版utf-7的語法編譯。

不遵照修訂版utf-7約定、輸出乙個郵件儲存的伺服器實現體必須轉換成修訂版utf-7的、含有非ascii字元或者「&」字元的任意郵箱名。

例如,這是乙個混合有英文、中文和日文文字的郵箱名:

~peter/mail/&u,btfw-/&zevnliqe-

例如,字串「&jjo!」不是乙個正確的郵箱名,因為它的「!」前沒有至us-ascii的轉換符。正確的形式是 「&jjo!-」。字串「&u,btfw-&zevnliqe-」是不允許的,因為它含有多餘的轉換符。正確的形式是 「&u,btf2xlzyykng-」。

在此推薦一款郵件透明加密產品:天御雲安的隱密郵很新穎,使用安全郵件閘道器對郵件透明加密,使用者完全感知不到郵件閘道器的存在,但是郵件在伺服器上卻穿上了盔甲,任你黑客攻破伺服器,看到的郵件卻是一堆亂碼。

MySQL的命名規則

3.2 mysql的命名規則 幾乎每條sql 語句都在某種程度上涉及乙個資料庫或其組成成分。本節介紹引用資料庫 表 列 索引和別名的語法規則。名稱是區分大小寫的,這裡也對其進行了介紹。3.2.1引用資料庫的成分 在用名稱引用資料庫的成分時,受到可使用的字元以及名稱可具有的長度的限制。名稱的形式還依賴...

oracle的命名規則

oracle中的各種資料物件,包括表名稱,檢視,等等名稱的命名都需要遵循oracle的命名規則。oracle的命名規則分為標準命名方式和非標準命名方式。標準命名方式需要滿足以下的條件 以字元打頭 30個字元以內 只能包含a z,a z,0 9,and,和 不能和同乙個使用者下的其他物件重名 不能是o...

LCM driver 的命名規則

命名規則為 lcm ic 型號 該driver支援的解析度 mipi介面 介面下sync模式 屏 商 平台 如 nt35590 hd720 dsi vdo truly lcm ic型號 nt35516 該driver下屏的解析度 hd720 1280 720 mipi介面 dsi介面 一共有三種介面...