Exchange Server üzerinde sahip olduğunuz her bir kullanıcı posta kutusu aslında Active Directory üzerinde bir kullanıcı objesi ve Exchange Server posta kutusu veri tabanı üzerinde bir veri deposundan oluşur.
Posta kutusu ile ilgili tüm ayarlar AD veri tabanında kullanıcı öz niteliklerinde yer alırken, mail bilgileri Exchange server posta kutusu veri tabanında saklanır.
Peki, Disconnected Mailbox ne demektir? Exchange Server mailbox database üzerinde bulunan ama AD üzerinde herhangi bir kullanıcı ile ilişkilendirilmemiş olan posta kutularına verilen isimdir.
Disconnected posta kutuları da kendi içerisinde ikiye ayrılmaktadır;
Disabled mailboxes
Bir posta kutusu Exchange Administration Center (EAC) veya Powershell ile (Disable-Mailbox veya Remove-Mailbox) kapatılabilir veya silinebilir. Hangi işlemi yaparsanız yapın yani ister Disabled konuma getirin ister silin mailbox veri tabanı üzerinde o posta kutusu “disabled state” dediğimiz duruma alınır. Tabiki bu iki işlemin farkı vardır. Eğer bir posta kutusunu kapatırsanız yani disable konumuna getirirseniz active directory üzerinde bu posta kutusu ile ilişkili olan kullanıcı üzerinden ilgili ayarların (Exchange attributes) silinmesi gerçekleştirilir, ancak kullanıcı hala aktif olarak çalışmaya devam eder. Eğer posta kutusunu silerseniz bu durumda ilişkili olduğu active directory kullanıcı hesabı da silinecektir. Ancak hangi komutu veya seçeneği kullanırsanız kullanın posta kutusu varsayılan olarak 30 gün olan “deleted mailbox retention period” silinme süreci boyunca veri tabanında saklanacaktır. Bu sayede olası bir yanlışlık ve benzeri bir durumda bu posta kutusunu kurtarabilirsiniz.
Özetle bir posta kutusunu isterseniz kapatın, isterseniz silin varsayılan olarak 30 gün veri tabanınızda yer kaplamaya devam edecektir. Bunun tek istisnası silme işlemini powershell ile yaparken eğer aşağıdaki iki parametreden birini kullanırsanız bu durumda posta kutusu anında silinecektir
Permanent veya StoreMailboxIdentity
Ortamınızdaki Disabled Mailbox’ ları tespit etmek için aşağıdaki powershell komutunu kullanabilirsiniz
Get-MailboxDatabase | Get-MailboxStatistics | Where { $_.DisconnectReason -eq “Disabled” } | ft DisplayName,Database,DisconnectDate
Eğer bu silme işlemini aşağıdaki gibi yaparsanız 30 gün boyunca veri tabanında saklanmadan hemen silinecektir.
Remove-Mailbox -Identity “satis” -Permanent $true
Yukarıdaki komutu çalıştırdıktan sonra artık EAC üzerinde “satis” isminde bir posta kutusu göremezsiniz, ayrıca yine AD üzerinde satis kullanıcısını da göremeyeceksiniz. Son olarak aşağıdaki komut ile posta kutusunun olmadığını doğrulayabilirsiniz
Get-MailboxDatabase | Get-MailboxStatistics | Where { $_.DisplayName -eq “satis” }
Bu komutun çıktısında bir sonuç almayacaksınız, yani satis posta kutusu kalici olarak posta kutusu veri tabanından silinmiştir.
Diğer bir disconnected posta kutusu ise
Soft-deleted mailboxes
Bir posta kutusunu bir posta kutusu veri tabanından bir diğerine taşıdıktan sonra, taşıma işlemi eğer başarılı tamamlanır ise kaynak veri tabanındaki posta kutusu “soft-deleted” olarak işaretlenir. Bu veri tabanları var varsayılan olarak 30 gün boyunca saklanır. Bu şekilde bekleyen veri tabanlarını görmek için ise aşağıdaki pwersehll komutunu kullanabilirsiniz
Get-MailboxDatabase | Get-MailboxStatistics | Where { $_.DisconnectReason -eq "SoftDeleted" } | ft DisplayName,Database,DisconnectDate
Yine buradaki istisna, eğer taşıma işleminden sonra bir sorun yok ve bu posta kutularının 30 gün saklanmasını istemiyorsanız “Remove-StoreMailbox” komutunu kullanarak bunları temizleyebilirsiniz.
Gelelim ne şekilde silmiş olursanız olun (Disabled mailboxes veya Soft-deleted mailboxes ) şu anda ortamınızda Disconnected mailbox olarak duran posta kutularını silmek istiyorsanız eğer silinme yöntemine göre aşağıdaki powershell komutlarını kullanarak bunları kalıcı olarak temizleyebilirsiniz.
Öncelikle bir kullanıcı için posta kutusunun durumunu aşağıdaki powershell komutu ile kontrol edebiliriz
Get-MailboxDatabase | Get-MailboxStatistics | Where { $_.DisplayName -eq “<display name>” } | fl DisplayName,MailboxGuid,Database,DisconnectReason,DisconnectDate
Ben komutun display name bölümüne “Hakan Uzuner – INFO” yazdım ve gördüğünüz gibi iki tane posta kutusu olduğunu görüyorum. Birisi aktif olan diğeri ise taşınmadan kaynaklı “SoftDeleted” olarak işaretlenen posta kutusu.
Bir diğer kullanıcı için durum ise aşağıdaki gibidir
Bu kullanıcı ise Disabled konumundadır. İsterseniz aşağıdaki komut ile tüm organizasyonunuz için bir rapor alabilirsiniz
Get-MailboxDatabase | Get-MailboxStatistics | Where { $_.DisconnectReason -ne $null } | fl DisplayName,MailboxGuid,Database,DisconnectReason,DisconnectDate
Gördüğünüz gibi iki posta kutusu da listelendi.
Gelelim bunları silme işlemine;
Silmek istediğimiz posta kutusunun GUID sini alıyoruz ve aşağıdaki komut yardımı ile kalıcı olarak siliyoruz
Remove-StoreMailbox -Database CPDB01 -Identity "a5ff3fdc-725f-4acf-98b6-48a40b50da02" -MailboxState SoftDeleted
Şimdi ikinci posta kutusunu kalıcı olarak siliyorum
Remove-StoreMailbox -Database CPDB01 -Identity " ff0087f5-70a9-4aa9-b762-dcc628fc2a66" -MailboxState Disabled
Artık organizasyonumda hiç disconnected mailbox kalmadı. Eğer daha fazla posta kutusunu bir arada silmek istiyorsanız örneğin organizasyondaki tüm sofdeleted konumundaki posta kutularını kalıcı olarak silmek için aşağıdaki powershell komutunu kullanabilirsiniz
Get-MailboxStatistics -Database DBismi | where {$_.DisconnectReason -eq “SoftDeleted”} | ForEach {Remove-StoreMailbox -Database $_.Database -Identity $_.MailboxGuid -MailboxState SoftDeleted}
Benzer şekilde SoftDeleted olan bölümleri Disabled olarak değiştirerek diğer bir disconnected posta kutusu çeşidi olan posta kutularını da toplu olarak silebilirsiniz.
Tabiki Disconnected posta kutusu için yapılabilecek tek eylem silmek değildir. Aslında normal durumlarda bu tür işlemler yapılmaz, ancak çok büyük şirketlerde kullanıcı sayısı, posta kutusu boyutlarının büyük olması veya AD kullanıcısı silinip posta kutusu silinmediği durumlarda veri tabanları şişmeye başlar. Ancak normal durumlarda disconnected mailbox daha çok yanlışlıkla silinmiş veya bir şekilde işten ayrılmış bir kullanıcı posta kutusundan bir veri alınması gerektiğinde tekrar bağlanmak için kullanılır. Bu durumda disconnected mailbox için aşağıdaki eylemler geçerlidir;
Mevcut kullanıcıya tekrar bağlamak
Başka bir kullanıcıya bağlamak (posta kutusu olmayan)
Posta kutusu olan bir kullanıcı posta kutusuna geri dönmek
Kalıcı olarak silmek
Son adımı zaten sizler ile paylaştım, gelelim diğer adımlara. Bir posta kutusunu yanlışlıkla Disable etmeniz halinde AD kullanıcısı hala durduğu için kolaylıkla onu tekrar ilgili kullanıcıya bağlayabilirsiniz. Bunun için öncelikle aşağıdaki komut ile DB bazında disconnected mailboxların durumunu güncellemeniz gereklidir
Get-MailboxStatistics -Database CPDB02 | ForEach {Update-StoreMailboxState -Database $_.Database -Identity $_.MailboxGuid -Confirm:$False}
Daha sonra aşağıdaki komut ile bunların durumunu çekebiliriz
Get-MailboxDatabase | Get-MailboxStatistics | Where { $_.DisconnectReason -ne $null } | fl DisplayName,MailboxGuid,Database,DisconnectReason
Yukarıda ben Hakan Uzuner INFO hesabı için bir move işlemi yapmış ve bunun sonucu olarak 1 adet aktif bir adet SoftDeleted posta kutusu görmüştük ve sizler ile beraber SoftDeleted olan ve 30 gün boyunca bekleyecek olan posta kutusunu silmiştik. Peki bu yukarıdaki sonuç nedir? Yine Demo amaçlı ben aktif olan kullanıcıyı sildim ve otomatik olarak posta kutusu da Disabled şeklinde bir Disconnected Mailbox’ a dönüşmüş oldu. Ben bunu tekrar kurtarmak için öncelikle AD üzerinden kullanıcıyı tekrar geri döndürmem lazım.
Kullanıcı tekrar aktif olarak AD de görünüyor
Aşağıdaki komutu tekrar çalıştırıyoruz ve otomatik olarak posta kutusunun tekrar EAC üzerinde görüntülendiğini görebiliyoruz
Get-MailboxStatistics -Database CPDB02 | ForEach {Update-StoreMailboxState -Database $_.Database -Identity $_.MailboxGuid -Confirm:$False}
Eğer kısa bir sürede bu gerçekleşmez ise elle bu işlemi aşağıdaki şekilde yapabilirsiniz. EAC üzerinde mailboxes kısmında 3 noktaya tıklayıp “Connect a mailbox” linkine tıklayınız.
Yukarıdaki gibi disconnected olan posta kutularını göreceksiniz, eğer aradığınız posta kutusunu burada göremiyorsanız yine aşağıdaki tazeleme – güncelleme komutunu çalıştırabilirsiniz
Not: bunu her bir db için çalıştırmanız gerekli, veya silinmiş posta kutusunun hangi db de olduğunu biliyorsanız o db de çalıştırmanız yeterlidir
Get-MailboxStatistics -Database CPDB02 | ForEach {Update-StoreMailboxState -Database $_.Database -Identity $_.MailboxGuid -Confirm:$False}
Daha sonra açılan menüdeki mektup zarfı ikonuna tıklamanız yeterlidir.
Otomatik olarak eski kullanıcıya posta kutusu bağlanacaktır.
Eğer uygun bir kullanıcı yok ise connect dediniz ama sistem uygun bir kullanıcı bulamadığında size aşağıdaki gibi bir soru soracaktır
Siz bu bölüme tıklarsanız nasıl bir posta kutusuna bağlamak istediğinizi soracaktır
Bir sonraki adımda bağlamak istediğiniz kullanıcıyı seçiyorsunuz
Bu sayede hakan uzuner info posta kutusunu posta kutusu olmayan başka bir kullanıcıya bağlamış oldunuz.
Eğer bu bağlama işlemlerini powershell ile yapmak isterseniz
Connect-Mailbox -Identity “Hakan UZUNER – INFO” -Database CPDB02 -User “Hakan info” -Alias hakaninfo
Bir diğer kullanım senaryosu ise bu posta kutusunun içeriğini başka bir posta kutusuna dönmek olacaktır.
Öncelikle silinmiş olan posta kutusunun GUID bilgisi için aşağıdaki komutu kullanın
Get-MailboxDatabase | Get-MailboxStatistics | Where {$_.DisconnectReason -eq "Disabled"} | fl DisplayName,MailboxGuid,LegacyDN,Database
GUID yi aldıktan sonra ise aşağıdaki gibi dönüş işlemi yapabilirsiniz
New-MailboxRestoreRequest -SourceStoreMailbox e4890ee7-79a2-4f94-9569-91e61eac372b -SourceDatabase CPB02 -TargetMailbox "Levent Uzuner" -AllowLegacyDNMismatch
Bir diğer senaryo ise taşıdığınız ancak sorun yaşadığınız için kaynak posta kutusunun restore edilmesi durumudur. Yani siz bir kullanıcı posta kutusunu taşıdığınız zaman, bu taşıma işlemi başarılı tamamlandıktan sonra kaynak veri tabanı üzerinde bu posta kutusu softDeleted olarak işaretlenir, bunu zaten makalemin başlangıcında paylaşmamıştım. Ancak bir nedenden dolayı bu posta kutusuna ihtiyaç duyarsanız eğer öncelikle seftdeleted olan posta kutularını aşağıdaki komut ile listeleyin
Get-MailboxDatabase | Get-MailboxStatistics | Where {$_.DisconnectReason -eq “SoftDeleted”} | fl DisplayName,MailboxGuid,LegacyDN,Database
Daha sonra ihtiyaç duyduğunuz posta kutusuna ait olan GUID’ yi not alın ve aşağıdaki komut ile başka bir kullanıcı posta kutusuna dönün
New-MailboxRestoreRequest -SourceStoreMailbox dc35895a-a628-4bba-9aa9-650f5cdb9ae7 -SourceDatabase MBXDB01 -TargetMailbox “Hasan UZUNER” –AllowLegacyDNMismatch
Bu son komut ile makalemin sonuna geldik, umarım faydalı bir makale olmuştur, bir sonraki makalemde görüşmek üzere
Kaynaklar
https://technet.microsoft.com/en-us/library/jj863435%28v=exchg.150%29.aspx
https://technet.microsoft.com/en-us/library/jj863438%28v=exchg.150%29.aspx