PI Services

Le blog des collaborateurs de PI Services

EXCHANGE 2010 - Bascule de bases

La commande “Switchover server” permet de basculer les banques actives

vers un serveur de destination.

Ayant rencontré à de maintes reprises des soucis lors de l’utilisation de cet utilitaire

j’ai préféré utiliser un script.

*********************************************************

######## Move database
######## Ce script permet le déplacement des banques actives d'un serveur "A" vers un serveur "B"
######## Ecrit par Pascal FEDAN
######## Le 05 Novembre 2012
######## Version 1.0
######## Modifié le
######## Version

######## Déclaration des serveurs source et cible

$sourceserver = "serveur2"
$targetserver = "serveur1"

####### Fonction d'envoi d'un message

function sendmail {
         send-mailmessage -from "adm_mail@pub.ad" -to "Franck.Test@pub.ad" -subject "MoveDatabase" -body " Merci de consulter le fichier." -Attachment "C:\Temp\databasecopystatus.txt" -priority High -dno onSuccess, onFailure -smtpServer 10.10.10.10
                  }
####### Statut des bases avant la bascule

get-Date >> c:\Temp\databasecopystatus.txt
Write-output "########## Databasecopystatus avant le déplacement " >> c:\Temp\databasecopystatus.txt
Write-output " " >> c:\Temp\databasecopystatus.txt

get-mailboxdatabasecopystatus -Server $sourceserver >> c:\Temp\databasecopystatus.txt

Write-output " " >> c:\Temp\databasecopystatus.txt

get-mailboxdatabasecopystatus -Server $targetserver >> c:\Temp\databasecopystatus.txt

######### recherche des banques "montées" sur le serveur source

$MountedDB=get-mailboxdatabasecopystatus -Server $sourceserver | where { ($_.Status -eq "Mounted")}

########  si aucune banque "montée", sortie du script

if (!$MountedDB) { Write-Host "PAS DE BANQUE ACTIVE SUR $sourceserver"
                   Write-output " " >> c:\Temp\databasecopystatus.txt
                   Write-output "########## PAS DE BANQUE ACTIVE SUR $sourceserver " >> c:\Temp\databasecopystatus.txt
                   Write-output " " >> c:\Temp\databasecopystatus.txt
                   sendmail
                   exit
                  }
                           
######### bascule des banques

else {
      Foreach ($DB in $MountedDB)
         { Move-ActiveMailboxDatabase -Identity $DB.DatabaseName -ActivateOnServer $targetserver -MountDialOverride:None -confirm:$false >> c:\Temp\databasecopystatus.txt}
      }
     
Start-Sleep -s 30

######### statut des banques après la bascule

Write-output " " >> c:\Temp\databasecopystatus.txt
Write-output "########## Databasecopystatus après le déplacement" >> c:\Temp\databasecopystatus.txt
Write-output " " >> c:\Temp\databasecopystatus.txt

get-mailboxdatabasecopystatus -Server $sourceserver >> c:\Temp\databasecopystatus.txt

Write-output " " >> c:\Temp\databasecopystatus.txt

get-mailboxdatabasecopystatus -Server $targetserver >> c:\Temp\databasecopystatus.txt

######## Appel de la fonction sendmail

sendmail

 

***********************

Ce script recherche les banques actives et les bascule sur le serveur de destination

mentionné dans la déclaration des variables.

Bien sûr, testez avant de l’utiliser en production.

EXCHANGE 2010 SP2 – Convertir une boite aux lettres

A la sortie d’Exchange 2010 convertir par exemple une “linked mailbox” vers une

“user mailbox” impliquez la suppression de la boite puis de réaliser une reconnexion.

Le SP2 offre la possibilité par “powershell” de modifier le type de boite.

Voici une boite liée:

image

image

On constate visuellement ainsi qu’en utilisant le “powershell” que c’est une “linkedmailbox”.

On exécute la commande pour réaliser la conversion (set-user):

image

On remarque visuellement ainsi qu’en utilisant le  “powershell” que le boite est maintenant de type “usermailbox”.

image

image

Et voilà.

Microsoft stipule que les permissions Send As, Full Access, partages,etc sont perdues.

Pour ma part je ne l’ai pas constaté.

L’ouverture de cette boite n’est pas toujours instantanée (réplication des informations).

Référence : http://technet.microsoft.com/en-us/library/bb201694.aspx

Exchange 2010 – Retrouver les permissions d’une boite

On a souvent besoin de connaitre les permissions affectées à une boite aux lettres.

Le script ci-dessous permet d’obtenir les droits mis en place par un administrateur

(send as , send on behalf, full access) ainsi que les droits donnés par l’utilisateur

via Outlook.

Voici le résultat:

image

Le script peut s’utiliser de deux façons.

Utilisation en indiquant un argument:


./getmailboxperm.ps1 jean@domaine.fr
 
Utilisation avec une invite de saisie:

image

Il faut bien entendu adapter le script au choix souhaité.

Bonne utilisation.

############################################################################
# Affiche les droits spécifiques sur une boites ainsi que les autorisations MAPI Exchange 2010
#############################################################################
 
 
#/*MBX Permission*/

#/*Utilisation avec argument (exemple) : ./getmailboxperm.ps1 pascal@domaine.fr

#$Email=$Args[0]
 
#/*Utilisation avec une invite de saisie

$Email = read-host -prompt "Entrez l'adresse de messagerie "
 
[string]$Mailbox = Get-Mailbox -Identity $Email
 
Write-Host

Write-Host "*******************************************************************************" -foregroundcolor yellow
Write-Host "*********** Autorisation sur la boite de $Email" -foregroundcolor red
Write-Host "*******************************************************************************" -foregroundcolor yellow
Write-Host

#/*Full Access*/
$FullAccess = Get-MailboxPermission $Email | where { ($_.AccessRights -eq "FullAccess") -and ($_.IsInherited -eq $false)  -and -not ($_.User -like "NT AUTHORITY\SELF") } | Select User
Write-Host "Contrôle TOTAL:" -foregroundcolor Green
Write-Host
Foreach ($User in $FullAccess)
  {
   Write-Host $User.User
  }
Write-host
#/*Send As*/
#Get-ADPermission -Identity $Sam | Where {$_.ExtendedRights -like "Send-As" -and $_.User -notlike "NT AUTHORITY\SELF" -and $_.Deny -eq $false} | ft Identity,User,ExtendedRights,IsInherited
$SendAs = Get-ADPermission -Identity $Mailbox | Where {$_.ExtendedRights -like "Send-As" -and $_.User -notlike "NT AUTHORITY\SELF" -and $_.Deny -eq $false} | Select User
Write-Host "Envoyer en tant que (send as):" -foregroundcolor Green
Write-host
Foreach ($User in $SendAs)
  {
   Write-Host $User.User
  }
Write-Host
#/*Send on Behalf*/
#$SendOnBehalf = get-mailbox -Identity $Email | Select GrantSendOnBehalfTo
$SendOnBehalf = get-mailbox -Identity $Email | Select @{Name="SendOnBehalf";Expression={$_."GrantSendOnBehalfTo"}}
Write-Host "Envoyer de la part de:" -foregroundcolor Green
Write-Host
Foreach ($User in $SendOnBehalf)
  {
   Write-Host $User.SendOnBehalf
  }
Write-Host
#/*MailboxFolders*/
$folders = Get-MailboxFolderStatistics -Identity $Email | Where {$_.Foldertype -ne "SyncIssues" -and $_.Foldertype -ne "Conflicts" -and $_.Foldertype -ne "LocalFailures" -and $_.Foldertype -ne "ServerFailures" -and $_.Foldertype -ne "RecoverableItemsRoot" -and $_.Foldertype -ne "RecoverableItemsDeletions" -and $_.Foldertype -ne "RecoverableItemsPurges" -and $_.Foldertype -ne "RecoverableItemsVersions" -and $_.Foldertype -ne "Root"} | select folderpath
 
Write-Host "Dossiers de la boîte :" -foregroundcolor Green
Write-Host
Foreach ($Folder in $folders)
  {
   Write-Host $Folder.Folderpath
  }
Write-Host
 
#/*MAPI Permissions*/
Write-Host "MAPI Permissions:" -foregroundcolor Green
Write-Host
get-mailboxfolderpermission -identity $Email":\" | ft foldername, User, AccessRights
Foreach ($Folder in $folders)
  {
   $NormalizedFolder = $Folder.FolderPath.Replace("/","\")
   $NormalizedIdentity = $Email + ":" + $NormalizedFolder
   get-mailboxfolderpermission -identity $NormalizedIdentity | ft foldername, User, AccessRights
  }

ACTIVE DIRECTORY– Utilitaire DSQUERY

Microsoft met à disposition un utilitaire très utile qui permet d’obtenir des informations

sur les objets de l’annuaire.

Un premier exemple, recherchons les comptes qui n’ont pas été utilisés depuis plus de

quatre semaines du domaine courant :

dsquery user domainroot -name * -inactive 4

"CN=Jean AIMARRE,CN=Users,DC=lab,DC=ad"

On peut varier l’affichage, ici par UPN

dsquery user domainroot -name * -inactive 4 -o upn

jean.aimarre@lab.ad

Un second exemple pour retrouver les comptes désactivés dont le champ name commence

par ar :

dsquery user domainroot -o upn -name ar* –disabled

ronald.ardon@lab.ad

Un dernier exemple, on recherche le DC maitre de schéma:

dsquery server -forest -hasfsmo schema


"CN=DC1,CN=Servers,CN=Siege,CN=Sites,CN=Configuration,DC=lab,DC=ad"

                                  **********************************

On peut faire des requêtes sur les utilisateurs,les groupes,les contacts,les OUs,les sites,

les serveurs,les ordinateurs,les quotas et les partitions.

Pour plus d’informations: http://technet.microsoft.com/fr-fr/library/cc725702(v=ws.10)

Threat Management Gateway 2010 – Redirection d’URL.

 

Lors de la publication Outlook Web App sur TMG 2010, le choix de rediriger l’url HTTP

automatiquement vers une url sécurisée HTTPS est souvent retenue.

La technique retenue est souvent mise en œuvre par une première règle en “deny”

qui redirige sur la règle autorisée sécurisée.

image

Malgré tout, vous pourrez en fonction de ce qui est installé sur le serveur être

surpris que cette “mécanique” ne fonctionne pas Triste.

Si vous lancez une URL de type http://monwebmail.fr , il ne se passera rien (pas de code

retour http).

C’est le cas si vous installez le rôle Exchange 2010 EDGE avec TMG 2010.

Dans le journal d’évènement Windows ou TMG vous verrez ce type d’erreur après

le démarrage du service TMG FireWall :

image

Cela indique que TMG ne peut “lier” une règle sur le port 80 car celui-ci est

déjà lié à un autre service !

En lançant la commande netstat on remarque bien que le port 80 n’est pas lié

à l’adresse IP définie dans la règle de TMG:

image

utilisez un utilitaire comme NETSH (netsh http show servicestate) ou ProcessViewer

pour déterminer le “coupable”.

Dans mon cas par défaut l’installation du EDGE installe le composant IIS.

Il suffit d’arrêter le service “World Wide Web Publishing Service” et de le désactiver

puis de relancer le service TMG FireWall.

Vérifiez avec NETSTAT:

image

L’adresse IP définie dans la règle “DENY” est maintenant liée au port 80 et en écoute.

La requête HTTP peut donc maintenant être rediriger vers la règle HTTPS. Sourire

EXCHANGE 2010 – Personnalisation des “bannières SMTP” du connecteur de réception.

 

Une session SMTP renvoie certaines informations et plus particulièrement le nom

du serveur que l’on souhaite dans certains cas modifier.

Sous Exchange 2010 les informations renvoyées par la connexion (220) et par l’initialisation

de la session (helo, 250) sont “personnalisable”.

Voici un aperçu typique par défaut:

image

Pour modifier les informations renvoyées  par la connexion (220) il faut utiliser une commande PowerShell.

Affichons la configuration initiale (par défaut):

image

L’attribut “Banner” est vide , malgré tout des informations par défaut sont renvoyées.

(Ligne 1 ).

L’attribut “Fqdn” qui est renvoyé après le “helo” à par défaut le nom DNS du serveur.

(Ligne 2 ).

Modifions l’information renvoyé à la connexion:

Set-ReceiveConnector "MyConnector" -Banner "220 Welcome"

Modifions l’information renvoyé après la commande “helo”:

Set-ReceiveConnector “MyConnector" -Fqdn "PostFix.fr"

(Cette dernière configuration peut être modifiée dans l’interface graphique).

Ce qui donne:

image

EXCHANGE 2010 – Activer la console de performance ECP

La console Web ECP permet à l’utilisateur certaines actions.

Cette console “embarque” une fonction qui n’est pas visible par défaut : Console de performances.

Cette console permet de mesurer la performance depuis votre client Web et les services

de messageries .Elle pourra vous aider à réaliser certains diagnostics.

Pour activer cette console il faut apporter une modification au fichier web.config situé

dans le répertoire …..\Exchange Server\V14\ClientAccess\ecp

   <!-- Set ShowPerformanceConsole to "true" to show ECP's Perf Console: –>

          <add key="ShowPerformanceConsole" value="false" />

Changer la valeur ShowPerformanceConsole de false à true.

Redémarrer IIS (iisreset /noforce).

Lancer la console ECP : https:\\monserveur.exchange.fr\ecp

*****************                 Rappel : avant la modif:              **************************

clip_image002

***********************************************************************************************

Un nouveau menu est disponible:

clip_image002[5]

Cliquez sur “Console de performance”.

clip_image002[7]

A la première ouverture il y a de fortes chances de voir ces quatre premiers compteurs.

Selon les outils que vous utilisez dans la console ECP d’autres compteurs seront listés:

clip_image002[9]

Les données peuvent être exportées vers Excel en cliquant simplement sur “Copier”.

Bonne utilisation.

EXCHANGE 2010 – Session Telnet

Avec certains système de messagerie nous pouvons envoyer un

message en utilisant une session “telnet” avec la syntaxe suivante:

220 monserveur.fr Microsoft ESMTP MAIL Service ready at Wed, 9 May
helo
250 monserveur.fr Hello [10.10.10.10]
mail from: john@track.ru
250 2.1.0 Sender OK
rcpt to: p.fedan@mondomaine.fr
250 2.1.5 Recipient OK
data
354 Start mail input; end with <CRLF>.<CRLF>
subject: Test email using telnet
Ceci est un test.
.
250 2.6.0 7b45f718-0d0c-42fd-b2f4-dd3607bb334b@monserveur.fr

On remarque qu’avec Exchange 2010 le destinataire et le corps du

message sont vides !

image

La syntaxe utilisée doit être la suivante:

220 monserveur.fr Microsoft ESMTP MAIL Service ready at Wed, 9 May
helo
250 monserveur.fr Hello [10.10.10.10]
mail from: john@track.ru
250 2.1.0 Sender OK
rcpt to: p.fedan@mondomaine.fr
250 2.1.5 Recipient OK
data
354 Start mail input; end with <CRLF>.<CRLF>
to: p.fedan@mondomaine.fr         ######## Ajouter le champ “to”
Subject: test 2 email using telnet   ####### Insérer un saut de ligne

Ceci est un test.

.
250 2.6.0 <6a990d2b-9118-4e5c-8c4d-a7b70b382813@monserveur.fr

L’expéditeur et le corps du message seront présent:

image

EXCHANGE 2010 – Gestion des groupes de distributions

Pour rappel sous Exchange 2010 il ne suffit pas de mettre un gestionnaire

pour lui permettre de gérer un groupe de distribution:

image

Il faut activer le rôle défini par le mécanisme RBAC.

Cochez “MyDistributiongroups”

image

On constate en lançant Outlook Web App que la création de groupe

n’est pas disponible avant l’activation du rôle:

image

Après activation, de nouveaux menus sont disponibles:

image

Chaque utilisateur peut donc créer un groupe

et supprimer un groupe dont il est le propriétaire !

Ce droit “excessif” peut ne pas répondre à la stratégie de la société.

Nous allons donc retirer ces droits de création et de suppression.

Recherchons le rôle “MyDistributionGroups”

image

Créer un rôle enfant de “MyDistributionGroups” en supprimant le droit de créer et de supprimer un groupe.

New-ManagementRole –Name ****OwnerDistributionGroups -Parent MyDistributionGroups

image

image

On remarque la présence de ce nouveau rôle dans la console “RBAC”:

image

Vérifions le rôles assignés sur “Default Role Assignment Policy”

image

MyDistributionGroups est présent.

Supression des droits New et Remove

Remove-ManagementRoleEntry ****OwnerDistributionGroups\New-DistributionGroup -Confirm:$false

Remove-ManagementRoleEntry ****OwnerDistributionGroups\Remove-DistributionGroup -Confirm:$false

Puis il faut associer le “Default Default RoleAssignment Policy” avec ce nouveau rôle :

New-ManagementRoleAssignment –Role ****OwnerDistributionGroups -Policy "Default Role Assignment Policy"

image

L’opération n’est pas finie car le rôle parent est toujours assigné donc actif.

Supprimons ce lien:

Remove-ManagementRoleAssignment “MyDistributionGroups-Default Assignment Policy”

image

Vérifions

image

Ce qui donne dans la console RBAC cette configuration:

image

Et pour l’utilisateur final:

image

Les droits de création et de suppression ne sont plus disponible.

OUTLOOK Configuration Analyzer Tool - OCAT

Microsoft met à disposition un outil qui permet de vérifier la configuration du

client Outlook et de détecter un potentiel problème, Microsoft Outlook Analyzer Configuration Tool.

Cet outil est de la même famille que l’outil  Microsoft Exchange Best Practices Analyzer.

L’interface sera donc familière aux administrateurs d’Exchange 2010.

Télécharger l’outil depuis ce lien:

http://www.microsoft.com/download/en/details.aspx?id=28806

Après avoir installé l’outil, exécutez une analyse (outlook doit être démarré).

image 

Après quelques clics vous obtiendrez un rapport:

image

Analysez et corrigez éventuellement les problèmes.