This post is also available in: angielski
Czasami w środowisku Microsoft Exchange mamy problem z serwerami transportowymi Hub Transport lub Edge Transport, wówczas na innych serwerach tworzą się kolejki z wiadomościami które nie mogą zostać przekazane dalej.
Po rozwiązaniu problemu który spowodował awarie serwera Exchange, kolejki te potrzebują kilku czasami nawet kilkudziesięciu minut do przekazania emaili dalej do innych serwerów.
Aby przyśpieszyć dostarczenie emaili możemy ręcznie wymusić ponowne przekazanie wiadomości znajdujących się w kolejkach jeżeli kolejki te nie są w stanie Suspended oraz znajdują się w:
- mailbox Delivery queues lub Remote delivery queues ze statusem Retry
- Unreachable queue
- Poison queue
Do ręcznego wymuszenia przekazania wiadomości możemy wykorzystać poniższe metody:
- za pomocą konsoli Exchange Management Shell użyć polecenia Retry-Queue z parametrem -Resubmit
- wyeksportowanie wiadomości z kolejki do plików .eml i umieszczenie ich w folderze Replay directory (dla Exchange 2010 default location:
C:\Program Files\Microsoft\Exchange Server\V14\TransportRoles\Replay) w celu ponownego ich wysłania - uruchomienie narzędzia Queue Viewer lub użycie polecenia Resume-Message w celu wymuszenia wysłania wiadomości z kolejki Poison
Exchange 2010 eksport kopii wiadomości z kolejki:
Aby wyeksportować wiadomość z zablokowanej kolejki do pliku .eml musimy użyć polecenia Export-Message. Po wyeksportowaniu wiadomości możemy ją umieścić w Exchange 2010 Replay Directory.
Poniższy przykład powoduje wyeksportowanie wiadomości z InternalMessageID 1234 znajdującej się w kolejce domain.com na serwerze ExHub01:
Export-Message ExHub01\domain.com\1234 -Path "d:\message_export\msg.eml"
Jeżeli potrzebujemy wyeksportować wszystkie wiadomości które znajdują się w kolejce musimy skorzystać z poniższych przykładów:
$array = @(Get-Message -Queue "QueueName" -ResultSize unlimited)
$array | ForEach-Object {$i++; Export-Message $_.Identity | AssembleMessage -Path ("c:\Export_messages\"+ $i +".eml")}
Po wykonaniu powyższych poleceń w folderze C:\Export_messages umieszczone zostaną wszystkie wiadomości znajdujące się w kolejce QueueName, dzięki temu możemy je przenieść na inny serwer Exchange Hub Transport do folderu Transport Pickup directory (domyślna lokalizacja dla Exchange 2010: C:\Program Files\Microsoft\Exchange Server\V14\TransportRoles\Pickup).
Więcej informacji na temat folderów serwerów transportowych Exchange: Exchange 2010 Transport Pickup Directory
Exchange 2010 ponowne wysłanie wiadomości z kolejki Delivery Queue:
Poniższe polecenie spowoduje ponowne wysłanie (resubmit) wszystkich wiadomości znajdujących się w kolejce 74536 na serwerze ExHub01:
Retry-Queue “ExHub01\74536” -Resubmit $True
aby wyeksportować wszystkie wiadomości z wszystkich kolejek na serwerze Exchange które posiadają status Retry musimy wykonać polecenie:
Retry-Queue –Server “ExHub01” -Filter {Status -eq "Retry"} -Resubmit $True
Ponowne wysłanie wszystkich wiadomości znajdujących się w kolejce Unreachable:
Retry-Queue “ExHub01\Unreachable” -Resubmit $True
aby wysłać ponownie wszystkie wiadomości z wszystkich kolejek przesyłane do określonej domeny(domain.com) mające status Retry musimy użyć:
Retry-Queue –Server “ExHub01” -Filter {NextHopDomain -eq “domain.com” -and Status -eq “Retry”}
Exchange 2010 Poison Queues:
W przypadku kolejek Poison na Exchange, nie możemy użyć Retry-Queue z parametrem -Resubmit.
Przed wymuszeniem ponownego przesłania wiadomości znajdujących się w kolejce Poison należy je najpierw przeglądnąć w celu określenia czy wiadomości te są dla nas bezpieczne. Przetworzenie przez serwer Exchange takich wiadomości może skutkować uszkodzeniem systemu lub zawieszeniem się serwera.
Po upewnieniu się, że wiadomości znajdujące się w kolejce Poison Queue są bezpieczne możemy wymusić ich ponowne wysłanie używając Exchange Management Console:
W tym celu uruchamiamy Queue Viewer, wybiramy Queues Tab, zaznaczamy kolejkę Poison Queue i wybieramy View Messages, następnie zaznaczamy wszystkie wiadomości klikamy prawym przyciskiem i wybieramy Resume.