FixCategories
Anwender können in Outlook mit Kategorien arbeiten, um Elemente zu gruppieren und zu filtern. Das Ganze funktioniert natürlich auch in öffentlichen Ordnern. Leider kann ein Anwender hier auch Sonderzeichen verwenden, die letztlich die Replikation von öffentlichen Ordnern zwischen Servern stören.
Fehlersuchen über Pipelinetrace
Siehe dazu auch die Seite Pipelinetracing
Das erste Hilfsmittel der Wahl ist das Exchange 2007+ Pipelinetracing. Diese Funktion erlaubt alle Schritte und Veränderungen, die eine Mail auf dem Weg durch den Transport Server durchläuft, zu verfolgen. Es wird pro Absenderadresse aktiviert, d.h.Sie nutzen die Mailadresse des öffentlichen Ordner Speichers von Exchange 2003 als Filter:
set-TransportServer `
-PipelineTracingEnabled $true `
-ContentConversionTracingEnabled : $true `
-PipelineTracingPath : C:\Program Files\Microsoft\Exchange Server\TransportRoles\Logs\PipelineTracing`
-PipelineTracingSenderAddress : SRV01-IS@msxfaq.local
Im angegebenen Verzeichnis befindet sich dann im Unterverzeichnis "ContentConversionTracing/InboundFailures" je eine EML und eine TXT-Datei mit den problematischen Mails. Die Textdatei enthält den Hinweis auf den Fehler.
Microsoft.Exchange.Data.Storage.PropertyValidationException: Property
validation failed. Property = [{00020329-0000-0000-c000-000000000046}:'Keywords']
Categories Error = Element 0 in the multivalue property is invalid..
Microsoft.Exchange.Data.Storage.PropertyValidationException: Property
validation failed. Property =
[{00062004-0000-0000-c000-000000000046}:0x8092] Email2AddrType Error =
Email2AddrType is too long: maximum length is 9, actual length is 25
FAIL 554 5.6.0 STOREDRV.Deliver.Exception.ObjectValidation Failed to
process message due to a permanent exception
Microsoft.Exchange.Data.Storage.ObjectValidationException: The object is
invalid and cannot be saved
Der erste Fehler weist auf Kategorien hin während der zweite Fehler auf fehlerhafte Mailadressen in Kontaktordnern und Fehler 3 oft bei Terminen auftritt (fehlendes Endedatum etc.)
Vergessen Sie am ende nicht wieder das "Pipeline Tracing" abzuschalten
set-TransportServer `
-PipelineTracingEnabled $false `
-ContentConversionTracingEnabled : $false
Auch die BPOS Hilfe liefert hier mehr Infos:
- Pipelinetracing
- How to Enable Pipeline Tracing
http://technet.microsoft.com/en-us/library/bb125018.aspx - Managing Content Conversion Tracing
http://technet.microsoft.com/en-us/library/bb397226.aspx - Using Pipeline Tracing to Diagnose Transport Agent
Problems
http://technet.microsoft.com/en-us/library/bb125198.aspx - Public Folder Replication Troubleshooting
Part 1: http://msexchangeteam.com/archive/2006/01/17/417611.aspx
Part 2: http://msexchangeteam.com/archive/2006/01/19/417737.aspx
Part 3: http://msexchangeteam.com/archive/2006/01/23/417974.aspx
Part 4: http://msexchangeteam.com/archive/2008/01/10/447843.aspx
Fehlersuche mit Message Tracking
Eine zweite Möglichkeit nach Fehlern zu suchen ist die Nachverfolgung im Messagetracking. Die Replikationsnachrichten der öffentlichen Ordner werden natürlich über den Transportdienst übertragen und der Transport Service am Ziel muss die Mails in den Store ablegen. Defekte Kategorien und andere Formatfehler führen auf dem Store zu entsprechenden Fehlern, da er sich weigert die Mails anzunehmen. Diese "Fehler" stehen auch im Message tracking im Feld "Messagino"
get-messagetrackinglog -Server "mail" -resultsize unlimited | where {$_.messageinfo -ne ""} | ft timestamp,messageinfo
Seit einen mir nicht weiter bekannten Rollup Fix ist
das Feld MessagInfo nicht mehr leer, sondern enthält das Sendedatum der
Mail:
http://technet.microsoft.com/en-us/library/bb124375.aspx
Eine Änderung der Anfrage sollte aber auch das Problem lösen:
get-messagetrackinglog -Server "mail" -resultsize unlimited | where {$_.messageinfo -contains "store.exe"}} | ft timestamp,messageinfo
Manchmal glaubt auch die Transport Rolle selbst die Mail als "schädlich" zu erkennen und schiebt diese in die Poison Queue. Ein Blick in die Poisonqueue hilft oder eine Suche im Messagetracking mit:
get-MessageTrackingLog -EventId "POISONMESSAGE"
Sie können die Mail dann wieder "frei" geben
- Nachrichtentracking mit Exchange 2007
- Some Public Folder content is not replicating from
Exchange 2003 to Exchange 2007
http://blogs.technet.com/dblanch/archive/2009/04/10/some-public-folder-content-is-not-replicating-from-exchange-2003-to-exchange-2007.aspx
VBA Skript zum Bereinigen
Da sich in Ordnern sehr viele Elemente verbergen können und es mühsam ist, alle Kategorien abzusuchen, habe ich ein kleines VBA-Makro geschrieben, welches Sie einfach in Outlook ausführen können. Es fordert zur Auswahl eines Ordners auf und durchläuft alle Elemente, prüft die Kategorie und meldet Probleme.
Ich habe zur Vereinfachung nur wenige Zeichen als "gültig" angesetzt. Leider habe ich keine komplette Liste der erlaubten Zeichen und Formate.
Es kann die Kategorien auch "fixen". Prüfen Sie dazu aber zuerst den Inhalt von "ValidChar" und setzen Sie dann den "fixmode" auf true. Wenn es sehr viele Änderungen sind, dann sollten Sie vielleicht die Ausgabe mittels Messagebox auskommentieren.
Sub FixCategory()
Const fixmode = False ' set to true to enable "fixing"
Const ValidChar = "abcdefghijklmnopqrstuvwxyz0123456789 -;_."
Set objFolder = Outlook.GetNamespace("MAPI").PickFolder
Dim item As Object
Dim count, charcounter As Integer
Dim Categories As String
Dim Newcategories As String
Dim blnvalid As Boolean
Dim colMatches
count = 0
For Each item In objFolder.items
count = count + 1
Debug.Print "Processing:" & count & ":" & item.subject & ":" & Categories
Categories = item.Categories
blnvalid = True
Newcategories = ""
For charcounter = 1 To Len(Categories)
If InStr(1, ValidChar, Mid(Categories, charcounter, 1), vbTextCompare) Then
Newcategories = Newcategories & Mid(Categories, charcounter, 1)
Else
blnvalid = False
End If
Next
If Not blnvalid Then
If fixmode Then
item.Categories = Newcategories
MsgBox "FIXING Invalid Categories in " & vbCrLf _
& "Subject: " & item.subject & vbCrLf _
& "Alt: " & Categories & vbCrLf _
& "Neu:" & Newcategories
Debug.Print "Fixing:" & item.subject & ":" & Categories
item.Save
Else
MsgBox "Invalid Categories found in " & vbCrLf _
& "Subject: " & item.subject & vbCrLf _
& "Alt: " & Categories & vbCrLf _
& "Neu:" & Newcategories
Debug.Print "Found:" & item.subject & ":" & Categories
End If
End If
Next
End Sub
Das Skript bearbeitet immer nur einen Ordner. Wenn sie eine Lösung suchen, die z.B. alle öffentlichen Ordner durchläuft, dann ist es relativ einfach, dieses Skript in eine weitere FOR-Schleife zu stecken, die rekursiv die verschiedenen Ordner und Unterordner durchläuft.
Weitere Links
- Olk Kategorien
- Pipelinetracing
- Outlook VBA
- TouchAllItems
- Replikation
- Public Folder Replication Troubleshooting - Part 4: Exchange Server 2007 tips
http://msexchangeteam.com/archive/2008/01/10/447843.aspx - Some Public Folder content is not replicating from Exchange 2003
to Exchange 2007
http://blogs.technet.com/dblanch/archive/2009/04/10/some-public-folder-content-is-not-replicating-from-exchange-2003-to-exchange-2007.aspx - 842273 How to troubleshoot public folder replication problems in Exchange 2000 Server and in Exchange Server 2003
- 321082 XADM: How to Send Replication Status Request Messages in Exchange 2000 Server
- 813629 Update to send status request messages in Exchange 2000 Server
- Exchange Server 2003 How Replication Works
http://technet.microsoft.com/en-us/library/bb123618(EXCHG.65).aspx









