IMAP4のユーザーID/パスワードで避けた方がよい文字、特に記号の「{」について new!

E-Post IMAP4サービス使用時にIMAP4ユーザーID/IMAP4パスワードで運用上避けた方がよい文字については、以下の通りです。
  1. E-Post IMAP4サービス(epstimap4d)でIMAP4のユーザーID/パスワードに運用上は避けたほうがよい、使用不可な文字について
  2. 現行のE-Post IMAP4サービス(epstimap4d)において、IMAP4ユーザーID/パスワードに使う文字として、運用上は念のため避けたほうがよい、使用不可な文字は下記の通りです。特に記号の「{」について現行では避けてください。

    " { \ (以上の3文字)

    ※上記は2021年12月現在の状況です。2022年以降の次期最新差分アップデートでは、上記3文字のうち、特に記号の「{」について、IMAP4パスワード文字列に使用できるように予定しています。これについて下記の3.で詳しく説明いたします。

  3. ActiveDirectory[LDAP]連携など、Windows Server側でパスワードに使用可能な文字について
  4. 一方、ユーザー管理をActiveDirectory[LDAP]連携しているときは、ユーザー名とパスワードは、Windows側で管理され、Windowsで許容される文字を使用することになります。 Windows Server 2016 でユーザーパスワードに使用可能な文字は下記の通りです。参考したサイトは2016についてですが、2019の場合も同様かと考えます。
    (参考)
    https://social.technet.microsoft.com/Forums/ja-JP/1764e14e-7e9b-4d9b-a5c2-936693bd792d/windows-server-2016
    英大文字:[A-Z](26 文字)
    英小文字:[a-z](26 文字)
    数字:[0-9](10 文字)
    記号:(半角スペース) ! " # $ % & ' ( ) *
    + , - . / : ; < = > ? @ [ ] ^ _ ` | { } ~(33 文字)
    ※Windows Server側ではユーザーパスワードに「"」および「{」を使うことは実際に許容されております。この点について前記1.と違う点であることに留意してください。

  5. 現行のIMAP4サービスにおいてIMAP4パスワードに記号の「{」を含んだ場合に起きる事象の説明
  6. 現行のE-Post IMAP4サービス(epstimap4d)においてIMAP4パスワードに記号の「{」を含んだ場合、telnetコマンドで試すと「+ Ready for additional command text」を返して待ちの状態となり、Outlookから試すと応答なし状態となります。どうしてこのようになるのか理由と原因を説明いたします。

    まずRFCで規定されているIMAP4プロトコル上では、「{}」はトークンとして扱われます。「{数値}」の指定でサイズ指定をするルールがあり、たとえば「{11}」や「{7}」の指定で次に受け取るバイト数を指定するトークンとなります。

    RFCで規定されているIMAP4の書式では以下のルールが規定されています。
    (参考)
    * rfc3501:INTERNET MESSAGE ACCESS PROTOCOL - VERSION 4rev1
    https://tex2e.github.io/rfc-translater/html/rfc3501.html
    * rfc9051:Internet Message Access Protocol (IMAP) - Version 4rev2
    https://tex2e.github.io/rfc-translater/html/rfc9051.html

    APPEND命令でのデータを受け取る個所で現象が起きたり、LOGIN命令においても「{数値}」の指定が許されるケースが規定されています。

    例をあげて説明します。
    -----------------------------------------------------------
    "COMMAND" "STRING" "{number}" "CRLF"
    -----------------------------------------------------------
    LOGIN命令においても、以下のようなリクエストの指定が認められています。
    (C:クライアント,S:サーバ―側からの応答)
    -----------------------
    C:LOGIN {11}
    S:+ Ready for additional command text
    C:"user id" {12}
    S:+ Ready for additional command text
    C:"password"
    S: OK login completed
    --------------------------
    C:LOGIN "user id" {12}
    S:+ Ready for additional command text
    C:"password"
    S: OK login completed
    --------------------------
    これらを考えた場合、極端なケースでは、以下のようなリクエストを出しても規定上はよいことになります。
    --------------------------
    C:LOGIN "user id" "pass{7}
    S:+ Ready for additional command text
    C:word"
    S: OK login completed
    --------------------------
    IMAP4パスワードに「{」を含んでいる場合、2021年12月現在の現行バージョンでは、この極端なリクエスト事例と同じだとみなされ、処理された結果、「+ Ready for additional command text」の応答を返した後、続きのトークン待ちのため、ログイン処理が進まない現象となり、Outlookから試すと応答なし状態になります。
IMAP4プロトコル上では、IMAP4パスワードに「{」を含むこと自体を禁止していないものの、「{}」はトークンとして扱われることを考慮しておくのなら、E-Post Mail Server V シリーズのIMAP4サービスとしても、IMAP4パスワード文字列に記号の「{」が使われることも想定するべきと考え、2022年以降の次期最新差分アップデートで対応することにいたしました。
現行では、上記1.にあげた通り、IMAP4ユーザーID/パスワードに使う文字のうち、記号の「{」は運用上の禁則文字として扱ってください。また、今後、最新差分アップデートが公開されても、最新差分を適用せず、E-Postの従来バージョンをそのままご利用になる場合も同様で、禁則文字として扱ってください。