Monday, February 25, 2008

Exchange 2007: 530 5.7.1 Client was not authenticated

Deze fout komt vaak voor: Bij een standaardinstallatie van Exchange 2007 (MB, CA en HT) kan er geen externe mail worden ontvangen. De verzender krijgt een NDR met SMTP code 530 5.7.1 Client was not authenticated.

Dit komt doordat de ReceiveConnector van een Hub Transport server, in tegenstelling tot Edge Transport, alleen mail accepteert van gebruikers of andere Exchange 2007 servers. Om mail van externe servers te kunnen ontvangen moeten de permissies op de ReceiveConnector worden aangepast. Dat doen we in de Exchange Management Shell.

Vraag eerst de naam van de ReceiveConnector op:

Get-ReceiveConnector

In mijn geval heet hij SR2\Default SR2. Pas vervolgens de permissies aan met Set-ReceiveConnector.

Set-ReceiveConnector -Identity "SR2\Default SR2" -PermissionGroups "AnonymousUsers"

Wil je meer weten over de ReceiveConnector? Vraag dan nog een keer de properties op en voer de output aan het commando FormatList (fl).

Get-ReceiveConnector -Identity "SR2\Default SR2" | fl

Wednesday, February 13, 2008

Exchange 2007: PowerShell deel 1

In 1985 ben ik begonnen met MSX BASIC, later MSX DOS en vervolgens MS DOS. Maar sinds Windows werd het tikken steeds meer klikken, natuurlijk was er wel eens een batchfile of scriptje maar het meeste kon wel het makkelijkst via de GUI. En toen kwam Microsoft met de aankondiging dat er een shell ging komen, een soort luxe cmd. Het eerste product wat voorzien werd van PowerShell is natuurlijk Exchange 2007. Toen bleek dat veel functionaliteit alleen in de Exchange Management Shell beschikbaar zou komen zorgde dat voor flink wat opschudding.

Inmiddels zijn we een jaar en een eerste servicepack verder en begin ik te ontdekken hoe ontzettend krachtig en makkelijk PowerShell in de praktijk is. Om die reden wil ik af en toe een handigheidje delen, vandaag de eerste.

In bepaalde situaties wil je de SAN oplossing graag een snapshot laten maken van de Exchange database, en wat is nu makkelijker dan dit te doen met LCR. Maar wanneer je geen VSS oid. kunt gebruiken dan zul je de database eerst moeten pauzeren om hem in een consistente staat te kunnen snapshotten. Dat kunnen we doen met Suspend-StorageGroupCopy en Resume-StorageGroupCopy. Laten we dat eens doen met alle Storage Groups:

Get-StorageGroup | Suspend-StorageGroupCopy

Met het eerste commando vragen we de Storage Groups op en door deze output te voeren aan het tweede commando worden ze ge-suspend. Alleen wordt er nu nog om een bevestiging gevraagd, dat moeten we uitschakelen:

Get-StorageGroup | Suspend-StorageGroupCopy -confirm:$FALSE

Maar wat nu als er ook Storage Groups zijn die helemaal geen LCR hebben ingeschakeld? Daar moeten we op filteren, bijvoorbeeld zo:

Get-StorageGroup | Where { $_.HasLocalCopy -eq "$TRUE" } | Suspend-StorageGroupCopy -confirm:$FALSE

Door bij voorbeeld een Get-StorageGroup | fl te geven krijg je een overzicht van alle output en kun je iets zoeken om op te filteren, ik heb gekozen voor HasLocalCopy. O ja, na de snapshot moet LCR natuurlijk weer gaan lopen, dat doen we precies zo:

Get-StorageGroup | Where { $_.HasLocalCopy -eq "$TRUE" } | Resume-StorageGroupCopy -confirm:$FALSE