3.2.5.1.2 Public Folders Logon
The server confirms that the user logging on to the public folders has a mailbox in the organization. The server performs the following:
Determine the mailbox database hosting the connected user's mailbox. The user is determined from the underlying Session Context. The Essdn field specifies a mailbox to log on to for private mailbox logons (see section 2.2.1.1.1).
Determine from the global directory (for that mailbox container) the preferred public folder container to use (database or mailbox).<33>
Determine the server that the public folder container is hosted on, by using the Autodiscover Publishing and Lookup Protocol, as specified in [MS-OXDSCLI]. If the USE_AUTODISCOVER_FOR_PUBLIC_FOLDER_CONFIGURATION flag is set in the AUX_EXORGINFO auxiliary block, as specified in [MS-OXCRPC] section 2.2.2.2.17, then the client SHOULD<34> configure public folders via autodiscover.
If the client sets an undefined flag in either the LogonFlags field or the OpenFlags field, the server SHOULD<35> fail the operation with 0x80004005 (ecError) in the ReturnValue field of the response.
The OpenFlags field MUST have the PUBLIC bit set to log on to the public folder container (for either database or mailbox).
If the OpenFlags field has the ALTERNATE_SERVER bit set, the server searches for another public folder container server in the organization which is not the configured preferred server. The process by which another public folder container is chosen is up to the implementation. If a suitable server cannot be found, the operation MUST fail with a ReturnValue of 0x80040111 (ecLoginFailure). Otherwise, the operation MUST fail with a ReturnValue of 0x00000478 (ecWrongServer). For more details about properly forming the return values when a ReturnValue of 0x00000478 is sent, see section 2.2.1.1.2.
If the OpenFlags field has either the ALTERNATE_SERVER bit or the IGNORE_HOME_MDB bit set, the server ignores the Ghosted bit of the LogonFlags field. Otherwise, the server has the following behavior: If the Ghosted bit of the LogonFlags field is set, then the server uses the public folder container that is present on the server. If there is no public folder container on the server, then the server responds with the ReturnValue field set to 0x80040111 (ecLoginFailure). If the Ghosted bit is not set, the server uses the default public folder container for the logon. If the server does not host that container, the server MUST fail the operation with a ReturnValue of 0x00000478 (ecWrongServer). For details about properly forming the response when a ReturnValue of 0x00000478 is sent, see section 2.2.1.1.2.
If this server doesn't host a public folder container at all, or the container is not presently accessible, the operation MUST fail with a ReturnValue of 0x80040111 (ecLoginFailure).
The server then determines the appropriate FIDs to return to the user. For more details, see section 2.2.1.1.4.
The server is now ready to accept further ROP commands from the client on behalf of this logon session.