0

IMAP を使用して Exchange の共有メールボックスにアクセスしようとしていますが、アプリにパスワードを保存したくないので、NTLM 認証を試します。

SSPI フレームワーク API を使用して認証を行うことができましたが、共有受信トレイを選択するのに苦労しています。

「基本」認証を使用すると、次のことができることがわかっています。

  a LOGIN domain/username/mailboxalias username_password //a OK LOGIN completed.
  b select inbox //...\r\nb OK [READ-WRITE] SELECT completed."

それはうまくいきますが、アプリにパスワードを保存したくないので、NTLM認証を使用しています(メールボックスエイリアスが保存されているexchangeserver1.domain.comに接続します):

  a AUTHENTICATE NTLM  // +
  <type_1_msg>  // + <type_2_msg>
  <type_3_msg> // a OK [REFERRAL imap://;AUTH=*@exchangeServer2.domain.com/] AUTHENTICATE completed.
  b select inbox // b NO [REFERRAL imap://;AUTH=*@exchangeServer2.domain.com/inbox] There is no replica for that mailbox on this server."
  c select mailboxalias //c NO There is no replica for that mailbox on this server.
  d select mailboxalias/inbox //d NO There is no replica for that mailbox on this server.
  e select inbox/mailboxalias //e NO There is no replica for that mailbox on this server.

現在のコンテキスト ユーザー メールボックスは exchangeserver2 に保存されていますが、共有メールボックスは exchangeserver1 にあるため、NTLM では REFERRAL 部分が表示されますが、上記の両方のシナリオで exchangeserver1 に接続しています。

select「メールボックスエイリアス」と「受信ボックス」を使用してコマンドのいくつかのバリエーションを試しましたが、どれも機能しませんでした。私はメールボックスにアクセスできます。私はその所有者であり、Outlook (ただし、MAPI を使用していると思います) と「基本認証」からアクセスできます。

認証後、共有メールボックスの受信トレイを選択するにはどうすればよいですか?

次の AcquireCredentialsHandle 呼び出しを使用して NTLM タイプ 1 メッセージを生成しています: AcquireCredentialsHandle (null, "NTLM", 2, 0, 0, 0, 0, ref phCredential, ref ptsExpiry)

最初のパラメーター (ユーザー名) を null (現在のコンテキスト ユーザー) から "ドメイン/ユーザー名/メールボックス" に変更しようとしましたが、うまくいきませんでした。

ありがとう :)

4

0 に答える 0