none
[MS-OXOMSG] RopTransportNewMail not supported

    Question

  • Hi,

    I'm calling RopTransportNewMail in Exchange 2010, and it is returning MAPI_E_NO_SUPPORT.

    A very simple test (basically creating some messages and calling RopTransportNewMail) runs fine on Exchange 2007, and fails on exchange 2010 SP0.

    Here is a sample of the traffic:

       EcDoRpc: struct EcDoRpc
        in: struct EcDoRpc
          handle          : *
            handle: struct policy_handle
              handle_type       : 0x00000000 (0)
              uuid           : 44e0b7ba-be20-404f-860f-4a0559cad6ad
          size           : 0x00007fff (32767)
          offset          : 0x00000000 (0)
          mapi_request       : *
            mapi_len         : 0x00000026 (38)
            length          : 0x0022 (34)
              mapi_request: struct EcDoRpc_MAPI_REQ
                opnum          : 0x51 (81)
                logon_id         : 0x01 (1)
                handle_idx        : 0x00 (0)
                u            : union EcDoRpc_MAPI_REQ_UNION(case 81)
                mapi_TransportNewMail: struct TransportNewMail_req
                  MessageId        : 0xc915050000000001 (-3957251200016973823)
                  FolderId         : 0x1514050000000001 (1518844471888838657)
                  MessageClass       : 'IPM.Note'
                  MessageFlags       : 0x00000004 (4)
              mapi_request       : (handles) number=1
                handle          : 0x01000002 (16777218)
            length          : *
              length          : 0x0026 (38)
            max_data         : 0x7fff (32767)
    rpc request data:
    [0000] 00 00 00 00 BA B7 E0 44  20 BE 4F 40 86 0F 4A 05  .......D .O@..J.
    [0010] 59 CA D6 AD FF 7F 00 00  00 00 00 00 26 00 00 00  Y....... ....&...
    [0020] 87 A5 F4 A4 A5 A4 A5 A5  A5 A5 A0 B0 6C A4 A5 A5  ........ ....l...
    [0030] A5 A5 A0 B1 B0 EC F5 E8  8B EB CA D1 C0 A5 A1 A5  ........ ........
    [0040] A5 A5 A7 A5 A5 A4 26 00  FF 7F          ......&. ..
    ntlmssp_seal_data: seal
    ntlmssp clear data
    [0000] 00 00 00 00 BA B7 E0 44  20 BE 4F 40 86 0F 4A 05  .......D .O@..J.
    [0010] 59 CA D6 AD FF 7F 00 00  00 00 00 00 26 00 00 00  Y....... ....&...
    [0020] 87 A5 F4 A4 A5 A4 A5 A5  A5 A5 A0 B0 6C A4 A5 A5  ........ ....l...
    [0030] A5 A5 A0 B1 B0 EC F5 E8  8B EB CA D1 C0 A5 A1 A5  ........ ........
    [0040] A5 A5 A7 A5 A5 A4 26 00  FF 7F 00 00 00 00 00 00  ......&. ........
    NTLM2: created signature over 112 bytes of input:
    [0000] 01 00 00 00 28 51 35 D8  59 37 C6 72 41 00 00 00  ....(Q5. Y7.rA...
    ntlmssp signature
    [0000] 01 00 00 00 6A EE D5 05  09 AE CA 5D 41 00 00 00  ....j... ...]A...
    ntlmssp sealed data
    [0000] 75 4E C5 31 28 45 58 03  FA B0 1D BB 48 A9 35 6B  uN.1(EX. ....H.5k
    [0010] E1 E5 03 14 55 F9 26 6C  2B E8 7C 46 36 6A A8 BA  ....U.&l +.|F6j..
    [0020] 62 3F C9 D8 4F 52 AC F5  9D 8B 3D DB DB B7 C1 3B  b?..OR.. ..=....;
    [0030] 79 15 16 C7 DA 21 FA 8B  13 03 77 08 9A BC D7 19  y....!.. ..w.....
    [0040] 56 9F 69 4A 80 A1 BD 64  4B 38 53 9C 52 A1 9A 39  V.iJ...d K8S.R..9
    librpc/rpc/dcerpc_util.c:857: auth_pad_length 12
    ntlmssp sealed data
    [0000] 87 B3 24 42 D9 FB 45 4C  44 A8 92 CF 27 E5 39 2A  ..$B..EL D...'.9*
    [0010] 57 17 3B 2E 40 7C 24 63  25 89 F3 10 A5 20 62 A1  W.;.@|$c %.... b.
    [0020] 92 F3 8B 5D E1 2D C5 9F  8F 19 D4 96 2D 61 7D DA  ...].-.. ....-a}.
    [0030] F5 73 DF A6 79 D4 DD 6E  66 C1 A2 A8 4F A9 E5 AF  .s..y..n f...O...
    ntlmssp clear data
    [0000] 00 00 00 00 BA B7 E0 44  20 BE 4F 40 86 0F 4A 05  .......D .O@..J.
    [0010] 59 CA D6 AD FF 7F 00 00  00 00 00 00 0C 00 00 00  Y....... ........
    [0020] AD A5 F4 A5 A7 A4 A1 25  A7 A5 A5 A4 0C 00 00 00  .......% ........
    [0030] 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ........ ........
    NTLM2: created signature over 96 bytes of input:
    [0000] 01 00 00 00 F9 70 CC 3C  7E AC 8F 85 41 00 00 00  .....p.< ~...A...
    checked ntlmssp signature
    [0000] 01 00 00 00 F9 70 CC 3C  7E AC 8F 85 41 00 00 00  .....p.< ~...A...
    rpc reply data:
    [0000] 00 00 00 00 BA B7 E0 44  20 BE 4F 40 86 0F 4A 05  .......D .O@..J.
    [0010] 59 CA D6 AD FF 7F 00 00  00 00 00 00 0C 00 00 00  Y....... ........
    [0020] AD A5 F4 A5 A7 A4 A1 25  A7 A5 A5 A4 0C 00 00 00  .......% ........
    [0030] 00 00 00 00                    .... 
       EcDoRpc: struct EcDoRpc
        out: struct EcDoRpc
          handle          : *
            handle: struct policy_handle
              handle_type       : 0x00000000 (0)
              uuid           : 44e0b7ba-be20-404f-860f-4a0559cad6ad
          size           : 0x00007fff (32767)
          offset          : 0x00000000 (0)
          mapi_response      : *
            mapi_response      : length=8
            mapi_response: ARRAY(6)
              mapi_repl: struct EcDoRpc_MAPI_REPL
                opnum          : 0x51 (81)
                handle_idx        : 0x00 (0)
                error_code        : MAPI_E_NO_SUPPORT (0x80040102)
            mapi_response      : (handles) number=1
              handle id        : 0x01000002 (16777218)
          length          : *
            length          : 0x000c (12)
          result          : MAPI_E_SUCCESS (0x0)
        * TransportNewMail          : MAPI_E_NO_SUPPORT
    

    I've tried some other flags values (0x0000, and 0x0008), but the results are unchanged.

    Questions:

    1. Is this ROP supported on Exchange 2010?

    2. If so, are there any suggestions on what I could be doing wrong?

    Brad

    Wednesday, August 11, 2010 5:44 AM

Answers

  • Brad,

    In Exchange 2010, the requirements for RopTransportNewMail has changed. You must set the spooler before you issue the command, and it must be used against a logon object.

    Dominic Salemno
    Escalation Engineer
    Open Specifications

    • Marked as answer by Brad Hards Wednesday, September 22, 2010 3:25 AM
    Monday, September 20, 2010 2:14 PM

All replies

  • Brad,

    I am the engineer who has taken ownership of your questions. I am currently researching this and will follow-up with you as things progress.

    Dominic Salemno
    Escalation Engineer
    US-CSS DSC Protocols Team
    Wednesday, August 11, 2010 4:27 PM
  • Brad,

    Could you send me a wire capture of this behavior to dochelp (at) microsoft.com?

    Thank you.

    Dominic Salemno
    Escalation Engineer
    US-CSS DSC Protocols Team
    Monday, August 16, 2010 8:56 PM
  • Dominic,

    I've performed the capture on the Exchange 2010 host using NetMon 3.4, and emailed it to the address above.

    Brad

     

    Tuesday, August 17, 2010 12:41 AM
  • Brad,

    You must initialize the spooler before calling this rop. You can do so by issuing RopSetSpooler (Section 2.2.7.4 of [MS-OXCROPS]).

    Dominic Salemno
    Escalation Engineer
    Open Specifications

    Thursday, August 26, 2010 5:06 PM
  • Dominic,

    I've added this call, but am not seeing any difference in the response. I've emailed you a new capture, which hopefully will be useful.

    Brad

    Tuesday, August 31, 2010 4:30 AM
  • Brad,

    In Exchange 2010, the requirements for RopTransportNewMail has changed. You must set the spooler before you issue the command, and it must be used against a logon object.

    Dominic Salemno
    Escalation Engineer
    Open Specifications

    • Marked as answer by Brad Hards Wednesday, September 22, 2010 3:25 AM
    Monday, September 20, 2010 2:14 PM
  • Dominic,

    Thanks for this information. On closer inspection, I see the requirement for this to be used against  a Logon object in the documentation ([MS-OXOMSG], Section 2.2.5.5.1 "Request Buffer" - my apologies for missing this earlier).

    I'm now facing MAPI_E_INVALID_PARAMETER (rather than the previous MAPI_E_NO_SUPPORT), but I should be able to resolve that.

    Thanks again.

    Brad

    Wednesday, September 22, 2010 3:25 AM