Artigo: 816789 - Última revisão: terça-feira, 12 de Julho de 2005 - Revisão: 5.2

Acesso de leitura a todos o grupo é removido depois de instalar o Exchange 2000 SP3

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Nesta página

Expandir tudo | Reduzir tudo

Sintomas

Se enviar correio SMTP (Simple Mail Transfer Protocol) utilizando uma aplicação Collaboration Data Objects para Windows (CDOSYS), Collaboration Data Objects para aplicação de Exchange 2000 (CDOEX) ou espaço num computador onde o Exchange 2000 Server Service Pack 3 (SP3) é instalado, receberá a seguinte mensagem de erro:
CDO.Message.1 (0x80040220)
O valor de configuração "SendUsing" é inválido.
Nota espaço é um wrapper gerido para CDOSYS permite-lhe criar e enviar mensagens utilizando o componente de mensagem CDOSYS.

Causa

Este problema ocorre porque acesso de leitura à metabase do serviços de informação Internet (IIS) e o serviço de directório Microsoft Active Directory foi removido para o todos grupo. O acesso foi removido devido a uma modificação de segurança no Exchange 2000 Server SP3. CDOEX CDOSYS e espaço tem de ter acesso à metabase do IIS para aceder a informações sobre a localização do caminho do directório de escolha. Este comportamento ocorre quando utiliza o método Sendusingpickup e se estas informações não for especificadas no código de aplicação. Uma vez que acesso é restrito, o utilizador não administrativo cujo contexto de segurança a aplicação está em execução não consegue ler estas informações da metabase do IIS e o Active Directory.

Resolução

Para contornar este problema, utilize um das soluções na secção "Soluções alternativas".

Nota O código de exemplo para as soluções que é escrito no contexto de uma página ASP (Active Server Pages).

Soluções alternativas

Para contornar este problema, tem de modificar a configuração ou o código. Alterações de configuração podem ser distribuídas rapidamente, mas as alterações de código devem ser feitas mais deliberadamente e considerando a segurança da aplicação e respectivos recursos.

Nota Restaurar o acesso de leitura à metabase do IIS para o todos grupo não é uma solução para este problema. Restaurar este acesso reintroduces vulnerabilidades que resolve o Exchange 2000 Server SP3.

Utilize um dos seguintes medidas para que utilizar aplicações CDOEX e CDOSYS depois de aplicar o Exchange 2000 Server SP3. Na solução alternativa 1 e 2 da solução alternativa, modifique a configuração administrativa. Na solução alternativa 3 e 4 da solução alternativa, modifique o código. Apesar de apenas ter de aplicar uma solução para resolver o problema, tem de decidir a solução é a solução mais adequada para aplicação do utilizador.

Para modificar a configuração administrativa, tem de conceder selectivamente o acesso à metabase do IIS. Na solução alternativa 1 e 2 da solução alternativa, o código da aplicação não é alterado, mas as contas que requerem acesso de leitura a metabase do IIS são concedidas acesso. Pode conceder ou acesso de metabase do IIS para a conta que a aplicação está a ser executado (como contornar 1) ou pode criar uma nova conta para esse fim (solução alternativa 2).

Os ficheiros de script Adadd.vbs, Adlist.vbs e Addel.vbs conceder acesso à metabase do IIS. Consulte a secção "Apêndice" no fim deste artigo para obter mais informações sobre estes ficheiros de script.

Uma vez que o CDO (Collaboration Data Objects) chama a função RevertToSelf antes de que acede a metabase do IIS, é possível adicionar a conta em que é executado o processo da aplicação. Para uma página ASP normal, esta é a conta IWAM_ ComputerName.

Solução 1

A opção menos destabilizing consiste em determinar que conta as aplicações estão a ser executado e, em seguida, concedem acesso de conta na metabase do IIS. No entanto, uma vez que outras aplicações podem utilizar a conta existente (por exemplo, IWAM_ XXX ou IUSR_ XXX), esta solução alternativa pode trazer vulnerabilidades se estas aplicações são concedidas acesso à metabase do IIS. A vantagem desta solução alternativa é que o código da aplicação e a configuração de SMTP não são alterados. A desvantagem desta solução alternativa é que desnecessariamente pode conceder acesso à metabase do IIS.

Para determinar a conta que a aplicação está a ser executado e para conceder o acesso de conta a metabase do IIS, siga estes passos:
  1. Guarde os ficheiros .vbs para um directório no servidor.
  2. No IIS, localize o directório virtual que contém a aplicação, clique com o botão direito do rato no directório virtual e, em seguida, clique em Propriedades .
  3. Clique no separador Segurança de directórios e, em seguida, em controlo de acesso anónimo e autenticação , clique em Editar .
  4. Na caixa de diálogo Métodos de autenticação , certifique-se de que a caixa de verificação acesso anónimo (Anonymous access) está seleccionada e, em seguida, em contas utilizada para acesso anónimo , clique em Editar .
  5. Anote o nome de conta que é apresentado a caixa de diálogo Anonymous User Account .
  6. Clique em ' Cancelar ' para fechar as caixas de diálogo.
  7. Numa linha de comandos, altere o directório para o directório que contém os ficheiros .vbs no passo 1.
  8. Utilize Adadd.vbs para conceder acesso à metabase do IIS para a conta que anotou no passo 5. Para o fazer, execute o seguinte comando na linha de comandos:

    cscript adadd.vbs ComputerName \ AccountName

    Nota No controlador de domínio, utilize DomainName \ AccountName, ou não especifique o nome de computador ou nome de domínio. Apenas tem de fornecer AccountName depois adadd.vbs. Para adicionar IWAM_ computername num controlador de domínio, execute um dos seguintes comandos na linha de comandos:

    cscript adadd.vbs DomainName \IWAM_ ComputerName

    - ou -

    cscript adadd.vbs IWAM_ ComputerName

    Por vezes também tem de conceder acesso da metabase do IIS à conta IWAM_ ComputerName utilizando Adadd.vbs. Para o fazer, execute o seguinte comando na linha de comandos:

    cscript adadd.vbs ComputerName \IWAM_ ComputerName
  9. Utilize Adlist.vbs para verificar se a conta foi adicionada à lista de acesso da metabase do IIS. Para o fazer, execute o seguinte comando na linha de comandos:

    cscript adlist.vbs
  10. Pare e reinicie o serviço de administração do IIS e quaisquer serviços dependentes.
  11. Em computadores que executem o Exchange 2000, conceda acesso de escrita de utilizador para o caminho do programa Files\exchsrvr\mailroot\vsi # \pickup directório. Em computadores que não estão a executar o Exchange 2000, conceda acesso de escrita de utilizador para o caminho do directório Inetpub\mailroot\pickup.
  12. Aguardar Do Active Directory para replicar para a metabase do IIS.
  13. Execute a aplicação.

    A aplicação agora funciona como previsto.

Solução 2

Pode criar uma conta, conceder essa conta acesso a metabase do IIS e, em seguida, configurar o directório virtual onde a aplicação está em execução para ser executado como a conta. A vantagem desta solução alternativa é que o código da aplicação e a configuração de SMTP não são alterados.

Para criar uma nova conta para a aplicação ser executado e configurar o directório virtual, siga estes passos:
  1. Guarde os ficheiros .vbs para um directório no servidor.
  2. Utilize computadores e utilizadores do Active Directory para criar uma conta de computador (por exemplo, CdoExAccount) e, em seguida, adicione esta conta ao grupo de utilizadores.

    Esta conta não requer uma caixa de correio.
  3. No IIS, localize o directório virtual que contém a aplicação, clique com o botão direito do rato no directório virtual e, em seguida, clique em Propriedades .
  4. Clique no separador Segurança de directórios e, em seguida, em controlo de acesso anónimo e autenticação , clique em Editar .
  5. Na caixa de diálogo Métodos de autenticação , certifique-se de que a caixa de verificação acesso anónimo (Anonymous access) está seleccionada e, em seguida, em contas utilizada para acesso anónimo , clique em Editar .
  6. Na caixa de diálogo Anonymous User Account , siga estes passos:
    1. Na caixa nome de utilizador , escreva o nome da conta que criou no passo 2.

      Nota No controlador de domínio, utilize DomainName \ AccountName, ou não especifique o nome de computador ou nome de domínio. Apenas tem de fornecer AccountName. Se tiver criado uma conta de nível do computador, escreva o nome da conta no seguinte formato: ComputerName \ AccountName
    2. Um controlador de domínio utilizar <DomainName>\<AccountName> ou não especificar o nome do computador ou domínio nome (apenas dar o <AccountName>)
    3. Clique para desmarcar a caixa de verificação Permitir pelo IIS para controlar a palavra-passe .
    4. Na caixa palavra-passe , escreva a palavra-passe da conta.
    5. Clique em OK e, em seguida, escreva novamente a palavra-passe na caixa de diálogo resultante.
  7. Clique em OK para fechar todas as caixas de diálogo.
  8. Numa linha de comandos, altere o directório para o directório que contém os ficheiros .vbs no passo 1.
  9. Utilize Adadd.vbs para conceder acesso à metabase do IIS para a conta que anotou no passo 2. Para o fazer, execute o seguinte comando na linha de comandos:

    cscript adadd.vbs ComputerName \ AccountName

    Nota No controlador de domínio, utilize DomainName \ AccountName, ou não especifique o nome de computador ou nome de domínio. Apenas tem de fornecer AccountName depois adadd.vbs. Para adicionar IWAM_ computername num controlador de domínio, execute um dos seguintes comandos na linha de comandos:

    cscript adadd.vbs DomainName \IWAM_ ComputerName

    - ou -

    cscript adadd.vbs IWAM_ ComputerName

    Por vezes também tem de conceder acesso da metabase do IIS à conta IWAM_ ComputerName utilizando Adadd.vbs. Para o fazer, execute o seguinte comando na linha de comandos:

    cscript adadd.vbs ComputerName \IWAM_ ComputerName
  10. Pare e reinicie o serviço de administração do IIS e quaisquer serviços dependentes.
  11. Execute Adlist.vbs para se certificar de que a conta foi adicionada à lista de acesso da metabase do IIS. Para o fazer, execute o seguinte comando na linha de comandos:

    cscript adlist.vbs
  12. Em computadores que executem o Exchange 2000, conceda acesso de escrita de utilizador para o caminho do programa Files\exchsrvr\mailroot\vsi # \pickup directório. Em computadores que não estão a executar o Exchange 2000, conceda acesso de escrita de utilizador para o caminho do directório Inetpub\mailroot\pickup.
  13. Aguardar Do Active Directory para replicar para a metabase do IIS.
  14. Execute a aplicação.

    A aplicação agora funciona como previsto.

Solução 3

Se não especificar explicitamente o método sendusing no código, o valor de cdoSendUsingPickup é o valor predefinido. No entanto, pode especificar explicitamente cdoSendUsingPickup e o caminho de directório de recolha no código. Para utilizar o método de directório de recolha, o SMTP local terá de configurar para reencaminhamento.

As vantagens desta solução alternativa são aplicação maior controlo sobre configuração e que a solução alternativa não está limitada a primeira instância do serviço de SMTP. Em computadores com vários servidores virtuais de SMTP, a configuração predefinida selecciona o directório de recolha primeiro a metabase do IIS. Este directório de escolha poderá não ser o directório que a aplicação necessita. Ao especificar explicitamente o directório de recolha, pode tornar-se de que a configuração predefinida selecciona o directório de escolha correcto. A desvantagem desta solução alternativa é que é mais frágeis de outras soluções. Alterações para a instalação do Exchange 2000 ou para a configuração de administração podem fazer com que a aplicação deixe de funcionar devido a alterações à localização do directório de recolha.
Exemplo de código
O código de exemplo seguinte demonstra como definir explicitamente cdoSendUsingPickup e a localização do directório de recolha:
<%@ Language=VBScript %>
	<%
	    Dim iMsg
	    Dim iConf
	    Dim Flds
	    Const cdoSendUsingPickup = 1
	
	    'For CDOSYS, the pickup directory is located at c:\inetpub\mailroot\pickup.
	    Const strPickup = "c:\Program Files\Exchsrvr\mailroot\vsi 1\Pickup"
	
	    'Create the message object.
	     Set iMsg = CreateObject("CDO.Message")
	
	    'Create the configuration object.
	     Set iConf = iMsg.Configuration
	
	    With iConf.Fields
	  	.item("http://schemas.microsoft.com/cdo/configuration/sendusing")= cdoSendUsingPickup
	       .item("http://schemas.microsoft.com/cdo/configuration/smtpserverpickupdirectory") = strPickup
	       .Update
	    End With
	
	    'Set the To, From, Subject, and Body properties of the message.
	    With iMsg
	       .To = "someone@example.com"
	       .From = "someone@example.com"
	       .Subject = "Test message by using CDOEx and cdoSendUsingPickup sent on: "  & now()
	       .TextBody = "This is a test by using CDOEx"
	       .Send
	    End With 
	    Set iMsg = Nothing
	 %>

Solução 4

Em vez de escrever mensagens para o directório de recolha local, pode escrever mensagens para um servidor SMTP remoto através da rede. As vantagens desta solução alternativa são menor consumo de recursos geral e informações de erro detalhadas e imediata. As desvantagens desta solução alternativa são que o servidor SMTP remoto poderá não estar disponível e que perde o mecanismo de fila natural no directório de recolha.
Código de exemplo
O seguinte código de exemplo modificado funciona no Exchange 2000 Server SP3. Nota que este exemplo adiciona um código para criar e definir a configuração object.
<%@ Language=VBScript %>
	<%
	    Dim iMsg
	    Dim iConf
	    Dim Flds
	    Const cdoSendUsingPort = 2
	    Const strSmartHost = "MySmartHostServer"
	
	    'Create the message object.
	    Set iMsg = CreateObject("CDO.Message")
	
	    'Create the configuration object.
	    Set iConf = iMsg.Configuration
	
	    'Set the fields of the configuration object to send by using SMTP through port 25.
	    With iConf.Fields
	       .item("http://schemas.microsoft.com/cdo/configuration/sendusing") = cdoSendUsingPort
	       .item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = strSmartHost
	       .Update
	    End With
	
	    'Set the To, From, Subject, and Body properties of the message.
	    With iMsg
	       .To = "someone@example.com"
	       .From = "someone@example.com"
	       .Subject = "Test message by using CDOEx and cdoSendUsingPort, sent on: "  & now()
	       .TextBody = "This is a test by using CDOEx"
	       .Send
	    End With
	    set iMsg = Nothing
	 %> 

Apêndice

Para transferir o script ficheiros que conceder acesso de leitura para o IIS metabase e o Active Directory, visite o seguinte Web site da Microsoft:
http://download.microsoft.com/download/9/7/0/9706f302-99f8-49f9-8aa4-df66d771feaf/smtppermissionsscripts.exe (http://download.microsoft.com/download/9/7/0/9706f302-99f8-49f9-8aa4-df66d771feaf/smtppermissionsscripts.exe)
A transferência inclui os seguintes ficheiros de script.
Reduzir esta tabelaExpandir esta tabela
Adlist.vbsLista as listas de controlo de acesso (ACL, Access Control List) para cada instância do serviço SMTP no servidor no Active Directory (se disponível) ou na metabase do IIS.
Adadd.vbsConcede acesso só de leitura contas para todas as instâncias do serviço SMTP no servidor.
Addel.vbsRemove todas as entradas de controlo de acesso (ACE, Access Control ENTRY) para a conta de todas as instâncias de serviço de SMTP no servidor.
Cada script utiliza o Active Directory para determinar se o computador está a executar o Exchange 2000. Se o computador está a executar o Exchange 2000, são efectuadas alterações no Active Directory e o ficheiro Ds2mb.dll replica as alterações à metabase do IIS para consumo por SMTP. Se o computador não está a executar o Exchange 2000, as alterações são efectuadas directamente na metabase do IIS.


A informação contida neste artigo aplica-se a:
  • Microsoft Exchange Server 2003 Standard Edition
  • Microsoft Exchange 2000 Enterprise Server
  • Microsoft Exchange 2000 Server Standard Edition
Palavras-chave: 
kbmt kbdownload KB816789 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 816789  (http://support.microsoft.com/kb/816789/en-us/ )