Um cliente pediu para remover a opção de criar sub-pastas de dentro das pastas públicas do Exchange 2010.
Ele possui +/- 6.500 usuários de AD (com contas de exchange) e um pouco mais de 9.000 pastas dentro das pastas públicas… cada sub-pasta tem uns 4 usuários diferentes…
Bom,,, dá pra fazer o trabalho pelo ECM ? claro… imagina quanto tempo o pessoal ia gastar removendo permissão 1 a 1,,, pasta a pasta,,, O pessoal pensou,,, e chegaram a conclusão de que 2 pessoas, 5 dias, 8 horas /dia, iriam conseguir terminar em +/- 6 semanas. Isso é meio que jogar tempo fora certo? levemente uma loucura? Então… o pessoal começou a fazer 1 a 1…
Depois de uns 3 dias de trabalho um deles perguntou se existia uma forma mais rápida de fazer esse trabalho,, e claro,, existe…
demorei 30 min montando o powershell abaixo,
$AllPublicFolders = Get-publicFolder '\Public Folder Base' -recurse #trocar aqui para a public folder que será a raiz da mudança
foreach($Pf in $AllPublicFolders ){
Get-PublicFolderClientPermission $Pf | Foreach{ Remove-PublicFolderClientPermission $_.Identity -User $_.User -AccessRights CreateSubfolders -Confirm:$False -erroraction 'silentlycontinue' }
}
# como existem usuários que vc nao pode trocar a permissao ele apresenta erro
# o comando de remove pede confirmacao para cada vez que e executado o -confirm:$false anula essa confirmacao
Basicamente o que ele faz:
Acessa uma public folder especifica e todas as sub-folders colocando em uma variável
para cada public folder ele pega os usuários que tem permissão dentro dela e remove o direito de criar sub-folder
Não exibe mensagens de erro
suprime a necessidade de pressionar Y para cada remoção
O resultado foi bem legal… de +/- 6 semanas resolvemos tudo em +/- 3 horas.
Você chega em um cliente, o pessoal reclama que uma aplicação X parou de funcionar porque o certificado expirou…
Você abre a aplicação e vê que o certificado foi gerado por um CA interno, mas ninguém sabe qual a maquina que está com a role de CA.. a única coisa que eles sabem é que a role está em um DC…
Quando você abre o DC, tem pelo menos 14 DC´s… iai ?? olhar um por um? e se alguém fez a proeza de instalar em outra maquina?
Não que isso seja a solução de todos os problemas,,, mas já vai ajudar pra caramba:
Algumas vezes ajudo o pessoal de mensageria a arrumar algumas configurações de DNS ou procurar as causas de um anti-spam ter ou não bloqueado alguma mensagem,,,
Basicamente tudo começa com a análise do cabeçalho da mensagem e as configurações de DNS do remetente…
O processo em sí é bem simples, mas toma um tempo em ficar fazerndo as pesquisas de DNS como conectar em um servidor de DNS, ver se o domínio é valido, se tem SPF se tem MX, se o IP do MX é um A válido, etc. etc. etc….
resolvi diminuir um pouco esse trabalho e montei um script em Powershell para ajudar a fazer uma parte dessas consultas…
ele não está 100%,,,, ainda apresenta uma ou outra falha dependendo do domínio,,, mas já ajuda em uns 90% dos casos…
#domínio que você quer consultar
$procurar = "leka.com.br"
#servidor de DNS que utilizaremos para consulta do DNS
$DNSserver = "4.2.2.2"
#localiza os registros de MX do domínio
$MXs = Resolve-DnsName $procurar -Type MX -Server $DNSserver | Select-object -ExpandProperty NameExchange
#localiza o registro TXT para ajudar a ver o SPF
$TXT = Resolve-DnsName $procurar -Type TXT -Server $DNSserver | Select-object -ExpandProperty Strings
Write-Host Consultas utilizando = $DNSserver
Write-Host $procurar
Write-Host SPF = $TXT
foreach($MX in $MXs)
{
#Verifica se o registro de MX possui uma entrada A
$IPA = Resolve-DnsName $MX -Type A -Server $DNSserver #| Select-Object -ExpandProperty IP4Address
foreach($IP in $IPA.IP4Address)
{
#Verifica se o IP da entrada A possui um reverso tipo A
$PTR = Resolve-DnsName $IP -Type PTR -Server $DNSserver | Select-Object -ExpandProperty NameHost
#Verifica se o A do reverso é valido
If(Resolve-DnsName "$PTR" -type A -Server $DNSserver )
{
$ok = $IPA.Name, $IP, $PTR
$ok | Select-Object @{N="MX";E={$IPA.Name}}, @{N="IP";E={$IP}}, @{N="Reverso";E={$PTR}}, @{N="Status";E={"A Valido"}} -Unique
}
else
{
$falha = $IPA.Name, $IP, $PTR
$ok | Select-Object @{N="MX";E={$IPA.Name}}, @{N="IP";E={$IP}}, @{N="Reverso";E={$PTR}}, @{N="Status";E={"A Invalido"}} -Unique
}
}
}
A idéia é bem simples:
coloca-se o domínio que vamos pesquisar e um servidor de DNS que será usado para executar a pesquisa das informações..
verifico se existe MX para esse domínio
localizo a entrada TXT e você vê as configurações de SPF, não sabe o que é SPF ? leia um pouco aqui.
Verifico que o MX tem um registro A
Verifico se IP do registro A tem um PTR (DNS reverso)
testo se o PTR aponta para um A válido.
Ainda estou trabalhando para melhorar o tratamento de erro em algumas partes do script, mas só isso já ajuda a identificar alguns problemas…
Para uma próxima versão espero conseguir fazer testes de relay e fazer uma análise entre os registros de SPF e os IP´s informados de MX para saber se são validos… mas isso está sendo um pouco mais complicado….
Durante o final de semana um amigo fez umas atualizações do catálogo de endereços do Exchange, 2010 adicionando informações sobre os usuários nas propriedades do AD.
Chegando hoje pela manhã ele percebeu que alguns clientes outlook não estavam com o catalogo offline atualizado. Mesmo forçando a atualização ele não baixava as modificações.
Vimos que nenhuma parte do processo estava apresentando erro para o usuário, algumas maquinas receberam as atualizações e outras não, as maquinas estavam na mesma rede e estavam com os horários corretos.
Em um teste acessei uma das maquinas e removi os arquivos .oab do perfil do usuário, após abrir o outlook ele sincronizou o catálogo offline sem problemas.
Como era apenas algumas maquinas montei um script para ajudar a resolver essa situação.
Esse script vai pedir o nome da maquina e o login da pessoa que está conectada na maquina:
$comp = read-host “Computador” $user = read-host “Usuário” cd \\$comp\c$\Users\$user\AppData dir -Recurse -Filter *.oab | remove-item
Lembrando que você tem que ter permissão administrativa suficiente para acessar a maquina remota, ele apagará todos os arquivos .oab.
Montei um script de powershell que cria uma tela para facilitar a exportação de caixas de email do exchange 2010 para PST.
Ele é bem simples,,, Antes de carregar essa tela, ele vai tentar localizar seu servidor de Exchange, vai baixar o módulo EMS para sua maquina e ai ele libera o acesso a tela acima… (o processo de baixar o EMS pode demorar um pouco)
Para localizar alguma caixa utilize o campo “Localizar” e não esqueça de colocar um * (asterisco) e depois clique em “Localizar”
Na Grid abaixo ele vai mostrar todos os resultados para sua busca, selecione a caixa que você quer exportar.
No campo salvar você pode:
Digitar o local e o nome do arquivo para ele exportar a caixa, não esqueça de colocar o nome do arquivo e o .PST
Clicar em “…” e uma tela do “Salvar como” será exibida, escolha o local para salvar o arquivo e nesse caso você não precisa colocar o .PST ele mesmo adiciona.
Clique em “Exportar”.
Detalhe muito importante:
O processo de exportação é assíncrono, isso quer dizer que: ele não ocorre durante a execução do comando de exportação, ele vai para uma fila de tratamento secundária do Exchange e depois vai ser executado. por isso ainda não conseguir colocar um status. Se você quiser saber o status da exportação da caixa pode utilizar o powershell e digitar:
O local para salvar PRECISA ser um compartilhamento da rede, pode ser endereço de loop-back, não importa, mas tem que ser endereço de rede… ainda estou trabalhando nisso
Para essa versão é isso,,, o download está no Skydrive.
Já faz um tempo que despromovemos uma maquina Windows 2003 que estava com o nosso antigo Exchange Server 2003 e era o DC primário. Fizemos isso depois que migramos todo mundo para o Exchange 2010.
O interessante é que depois da despromoção do DC começamos a receber 2 erros ao abrir o EMC (Exchange Management Console):
An error caused a change in the current set of domain controllers. It was running the command ‘Get-OrganizationConfig’.
An error caused a change in the current set of domain controllers. It was running the command ‘Get-Recipient -PropertySet ConsoleLargeSet -ResultSize ’1000′ -SortBy DisplayName -RecipientType ‘UserMailbox”.
Para corrigir esse problema é simples, feche o EMC e abra o Windows Explorer, vá até o diretório C:\Users\<usuário>\AppData\Roaming\Microsoft\MMC e apague o arquivo “Exchange Management Console”. Abra o EMC e o erro foi corrigido.
Como provavelmente você já deve saber, no Exchange server 2010 a opção de expurgar caixa não existe mais e agora não tem uma forma fácil de remover as caixas desconectadas.
To provide the best experiences, we use technologies like cookies to store and/or access device information. Consenting to these technologies will allow us to process data such as browsing behavior or unique IDs on this site. Not consenting or withdrawing consent, may adversely affect certain features and functions.
Functional
Always active
The technical storage or access is strictly necessary for the legitimate purpose of enabling the use of a specific service explicitly requested by the subscriber or user, or for the sole purpose of carrying out the transmission of a communication over an electronic communications network.
Preferences
The technical storage or access is necessary for the legitimate purpose of storing preferences that are not requested by the subscriber or user.
Statistics
The technical storage or access that is used exclusively for statistical purposes.The technical storage or access that is used exclusively for anonymous statistical purposes. Without a subpoena, voluntary compliance on the part of your Internet Service Provider, or additional records from a third party, information stored or retrieved for this purpose alone cannot usually be used to identify you.
Marketing
The technical storage or access is required to create user profiles to send advertising, or to track the user on a website or across several websites for similar marketing purposes.
To provide the best experiences, we use technologies like cookies to store and/or access device information. Consenting to these technologies will allow us to process data such as browsing behavior or unique IDs on this site. Not consenting or withdrawing consent, may adversely affect certain features and functions.