[{"id":127,"title":"Microsoft 365 \u0130naktif Kullan\u0131c\u0131 Raporu Nas\u0131l Al\u0131n\u0131r?","content":"Modern i\u015fletmelerde Microsoft 365 (eski ad\u0131yla Office 365) kullan\u0131m\u0131 giderek yayg\u0131nla\u015fmaktad\u0131r. Bu bulut tabanl\u0131 hizmet, lisans maliyetleri ile birlikte gelmektedir. Bu nedenle, aktif olarak kullan\u0131lmayan hesaplar\u0131n tespit edilmesi ve gerekli aksiyonlar\u0131n al\u0131nmas\u0131, i\u015fletmeler i\u00e7in hem mali hem de g\u00fcvenlik a\u00e7\u0131s\u0131ndan b\u00fcy\u00fck \u00f6nem ta\u015f\u0131maktad\u0131r. Bu yaz\u0131da, Microsoft 365 ortam\u0131n\u0131zdaki inaktif kullan\u0131c\u0131lar\u0131 nas\u0131l tespit edece\u011finizi, rapor olu\u015fturaca\u011f\u0131n\u0131z\u0131 ve bu raporlar\u0131 nas\u0131l analiz edip kullanaca\u011f\u0131n\u0131z\u0131 detayl\u0131ca ele alaca\u011f\u0131z. <h2>\u0130naktif Kullan\u0131c\u0131 Raporunun \u00d6nemi<\/h2> <h3>Maliyet Optimizasyonu<\/h3> Microsoft 365 lisanslar\u0131, kullan\u0131c\u0131 ba\u015f\u0131na ayl\u0131k veya y\u0131ll\u0131k olarak faturaland\u0131r\u0131l\u0131r. \u0130naktif kullan\u0131c\u0131lara ait lisanslar\u0131n tespiti ve yeniden tahsisi veya iptali, i\u015fletmenizin gereksiz maliyetlerden kurtulmas\u0131n\u0131 sa\u011flar. Orta \u00f6l\u00e7ekli bir i\u015fletmede bile, bu tasarruf y\u0131ll\u0131k binlerce TL'ye ula\u015fabilir. <h3>G\u00fcvenlik Riskleri<\/h3> Aktif olarak kullan\u0131lmayan hesaplar, i\u015fletmenizin g\u00fcvenlik zafiyetine neden olabilir. \u0130\u015ften ayr\u0131lm\u0131\u015f ancak hesab\u0131 kapat\u0131lmam\u0131\u015f eski \u00e7al\u0131\u015fanlar veya uzun s\u00fcredir kullan\u0131lmayan hesaplar, siber sald\u0131r\u0131lar i\u00e7in potansiyel bir giri\u015f noktas\u0131 olu\u015fturur. Bu hesaplar\u0131n d\u00fczenli olarak tespit edilip gerekli aksiyonlar\u0131n al\u0131nmas\u0131, g\u00fcvenlik riski y\u00f6netiminin \u00f6nemli bir par\u00e7as\u0131d\u0131r. <h3>Veri Y\u00f6netimi ve Uyumluluk<\/h3> KVKK (Ki\u015fisel Verilerin Korunmas\u0131 Kanunu) ve GDPR (Genel Veri Koruma Y\u00f6netmeli\u011fi) gibi d\u00fczenlemeler, ki\u015fisel verilerin gereksiz yere saklanmamas\u0131n\u0131 gerektirir. Art\u0131k organizasyonunuzda bulunmayan ki\u015filere ait verilerin y\u00f6netimi, bu d\u00fczenlemelere uyum sa\u011flamak a\u00e7\u0131s\u0131ndan kritiktir. <h2>\u0130naktif Kullan\u0131c\u0131 Raporu Olu\u015fturma Y\u00f6ntemleri<\/h2> <h3>1. PowerShell ile Detayl\u0131 \u0130naktif Kullan\u0131c\u0131 Raporu Olu\u015fturma<\/h3> PowerShell, Microsoft 365 y\u00f6netimi i\u00e7in en g\u00fc\u00e7l\u00fc ara\u00e7lardan biridir. A\u015fa\u011f\u0131da, detayl\u0131 bir inaktif kullan\u0131c\u0131 raporu olu\u015fturmak i\u00e7in kullanabilece\u011finiz ad\u0131mlar\u0131 ve komut dosyalar\u0131n\u0131 bulacaks\u0131n\u0131z. <h4>\u00d6n Gereksinimler<\/h4> <ul> <li>Windows PowerShell 5.1 veya daha yeni s\u00fcr\u00fcm<\/li> <li>Exchange Online PowerShell mod\u00fcl\u00fc<\/li> <li>Microsoft Graph PowerShell mod\u00fcl\u00fc<\/li> <li>Global Y\u00f6netici veya Exchange Y\u00f6neticisi yetkileri<\/li> <\/ul> <h4>PowerShell Mod\u00fcllerinin Kurulumu<\/h4> <pre><code ># Exchange Online PowerShell mod\u00fcl\u00fcn\u00fc y\u00fckleyin Install-Module -Name ExchangeOnlineManagement -Force -AllowClobber # Microsoft Graph PowerShell mod\u00fcl\u00fcn\u00fc y\u00fckleyin Install-Module -Name Microsoft.Graph -Force -AllowClobber <\/code><\/pre> <h4>Exchange Online'a Ba\u011flanma<\/h4> <pre><code ># Modern kimlik do\u011frulama ile Exchange Online'a ba\u011flan\u0131n Connect-ExchangeOnline -UserPrincipalName admin@sirketiniz.com <\/code><\/pre> <h4>Microsoft Graph'e Ba\u011flanma<\/h4> <pre><code ># Microsoft Graph'e ba\u011flan\u0131n ve gerekli izinleri al\u0131n Connect-MgGraph -Scopes \"User.Read.All\", \"AuditLog.Read.All\" <\/code><\/pre> <h4>Geli\u015fmi\u015f \u0130naktif Kullan\u0131c\u0131 Raporu Olu\u015fturma<\/h4> <pre><code ><\/code><\/pre> <pre  data-enlighter-language=\"python\"># Parametreleri tan\u0131mlama param( $InactiveDays = 90, # Varsay\u0131lan olarak 90 g\u00fcn $OutputPath = \"C:\\Raporlar\\InaktifKullanicilar_$(Get-Date -Format 'yyyyMMdd').csv\", $IncludeSharedMailboxes = $false, $IncludeResourceMailboxes = $false ) # Fonksiyonlar\u0131 tan\u0131mlama function Write-Log { param ( $Message, $LogLevel = \"INFO\" ) $timestamp = Get-Date -Format \"yyyy-MM-dd HH:mm:ss\" Write-Host \" $Message\" } # Ba\u015flang\u0131\u00e7 mesaj\u0131 Write-Log \"Microsoft 365 \u0130naktif Kullan\u0131c\u0131 Raporu olu\u015fturuluyor...\" Write-Log \"\u0130naktif g\u00fcn say\u0131s\u0131: $InactiveDays\" # Klas\u00f6r\u00fc olu\u015ftur (e\u011fer yoksa) $outputFolder = Split-Path -Path $OutputPath -Parent if (-not (Test-Path -Path $outputFolder)) { New-Item -ItemType Directory -Path $outputFolder -Force | Out-Null Write-Log \"$outputFolder klas\u00f6r\u00fc olu\u015fturuldu\" \"INFO\" } # \u0130naktif tarihi hesapla $inactiveDate = (Get-Date).AddDays(-$InactiveDays) Write-Log \"\u0130naktif tarih e\u015fi\u011fi: $inactiveDate\" \"INFO\" # T\u00fcm posta kutular\u0131n\u0131 al Write-Log \"Posta kutular\u0131 al\u0131n\u0131yor...\" \"INFO\" $mailboxFilter = \"RecipientTypeDetails -eq 'UserMailbox'\" if ($IncludeSharedMailboxes) { $mailboxFilter += \" -or RecipientTypeDetails -eq 'SharedMailbox'\" } if ($IncludeResourceMailboxes) { $mailboxFilter += \" -or RecipientTypeDetails -eq 'RoomMailbox' -or RecipientTypeDetails -eq 'EquipmentMailbox'\" } $mailboxes = Get-EXOMailbox -ResultSize Unlimited -Filter $mailboxFilter -Properties DisplayName, UserPrincipalName, RecipientTypeDetails, WhenCreated, WhenChanged Write-Log \"$($mailboxes.Count) posta kutusu bulundu\" \"INFO\" # Sonu\u00e7lar\u0131 saklamak i\u00e7in bir koleksiyon olu\u015ftur $results = @() # \u0130lerleme sayac\u0131 $progressCounter = 0 $totalMailboxes = $mailboxes.Count foreach ($mailbox in $mailboxes) { # \u0130lerleme \u00e7ubu\u011funu g\u00fcncelle $progressCounter++ $progressPercentage = ::Round(($progressCounter \/ $totalMailboxes) * 100, 2) Write-Progress -Activity \"\u0130naktif Kullan\u0131c\u0131lar Taran\u0131yor\" -Status \"$progressCounter \/ $totalMailboxes ($progressPercentage%)\" -PercentComplete $progressPercentage # Her posta kutusu i\u00e7in son oturum a\u00e7ma tarihini al $stats = $null try { $stats = Get-EXOMailboxStatistics -Identity $mailbox.UserPrincipalName -ErrorAction Stop | Select-Object DisplayName, LastLogonTime, ItemCount, TotalItemSize } catch { Write-Log \"Hata: $($mailbox.UserPrincipalName) i\u00e7in istatistik al\u0131namad\u0131: $($_.Exception.Message)\" \"ERROR\" continue } # Son oturum a\u00e7ma tarihi kontrol\u00fc $isInactive = $false $inactiveDaysCount = 0 if ($null -eq $stats.LastLogonTime) { $isInactive = $true $inactiveDaysCount = ::Round((New-TimeSpan -Start $mailbox.WhenCreated -End (Get-Date)).TotalDays, 0) } elseif ($stats.LastLogonTime -lt $inactiveDate) { $isInactive = $true $inactiveDaysCount = ::Round((New-TimeSpan -Start $stats.LastLogonTime -End (Get-Date)).TotalDays, 0) } # \u0130naktif ise sonu\u00e7lara ekle if ($isInactive) { # Lisans bilgilerini al $licenses = \"Bulunamad\u0131\" try { $user = Get-MgUser -UserId $mailbox.UserPrincipalName -Property AssignedLicenses -ErrorAction Stop if ($user.AssignedLicenses.Count -gt 0) { $licenseDetails = @() foreach ($license in $user.AssignedLicenses) { $licenseSkuId = $license.SkuId # Lisans SKU ID'lerini daha okunabilir isimlerle e\u015fle\u015ftir switch ($licenseSkuId) { \"c5928f49-12ba-48f7-ada3-0d743a3601d5\" { $licenseName = \"Microsoft 365 E5\" } \"06ebc4ee-1bb5-4d50-a87d-2e37e3ec5f57\" { $licenseName = \"Microsoft 365 E3\" } \"a403ebcc-fae0-4ca2-8c8c-7a907fd6c235\" { $licenseName = \"Microsoft 365 Business Standard\" } \"f245ecc8-75af-4f8e-b61f-27d8114de5f3\" { $licenseName = \"Microsoft 365 Business Basic\" } \"3b555118-da6a-4418-894f-7df1e2096870\" { $licenseName = \"Microsoft 365 Business Premium\" } default { $licenseName = $licenseSkuId } } $licenseDetails += $licenseName } $licenses = $licenseDetails -join \", \" } else { $licenses = \"Lisans Yok\" } } catch { Write-Log \"Hata: $($mailbox.UserPrincipalName) i\u00e7in lisans bilgisi al\u0131namad\u0131: $($_.Exception.Message)\" \"ERROR\" } # Son kullan\u0131c\u0131 aktivitesini al $lastUserActivity = \"Aktivite Bulunamad\u0131\" try { $activityLogs = Get-MgAuditLogSignIn -Filter \"userPrincipalName eq '$($mailbox.UserPrincipalName)'\" -Top 1 -ErrorAction Stop if ($activityLogs) { $lastUserActivity = $activityLogs.CreatedDateTime } } catch { Write-Log \"Hata: $($mailbox.UserPrincipalName) i\u00e7in aktivite kayd\u0131 al\u0131namad\u0131: $($_.Exception.Message)\" \"ERROR\" } # Sonu\u00e7 nesnesini olu\u015ftur $result = @{ 'G\u00f6r\u00fcnen Ad' = $mailbox.DisplayName 'E-posta Adresi' = $mailbox.UserPrincipalName 'Hesap T\u00fcr\u00fc' = $mailbox.RecipientTypeDetails 'Olu\u015fturulma Tarihi' = $mailbox.WhenCreated 'Son De\u011fi\u015ftirilme Tarihi' = $mailbox.WhenChanged 'Son Oturum A\u00e7ma' = $stats.LastLogonTime '\u0130naktif G\u00fcn Say\u0131s\u0131' = $inactiveDaysCount '\u00d6\u011fe Say\u0131s\u0131' = $stats.ItemCount 'Posta Kutusu Boyutu' = $stats.TotalItemSize 'Lisanslar' = $licenses 'Son Aktivite' = $lastUserActivity } $results += $result } } # \u0130lerleme \u00e7ubu\u011funu temizle Write-Progress -Activity \"\u0130naktif Kullan\u0131c\u0131lar Taran\u0131yor\" -Completed # Sonu\u00e7lar\u0131 s\u0131rala $sortedResults = $results | Sort-Object -Property '\u0130naktif G\u00fcn Say\u0131s\u0131' -Descending # Sonu\u00e7lar\u0131 CSV olarak d\u0131\u015fa aktar if ($sortedResults.Count -gt 0) { $sortedResults | Export-Csv -Path $OutputPath -NoTypeInformation -Encoding UTF8 Write-Log \"$($sortedResults.Count) inaktif kullan\u0131c\u0131 bulundu ve rapor olu\u015fturuldu: $OutputPath\" \"INFO\" } else { Write-Log \"\u0130naktif kullan\u0131c\u0131 bulunamad\u0131\" \"INFO\" } # \u00d6zet bilgi Write-Log \"Rapor tamamland\u0131\" \"INFO\" Write-Log \"Toplam tarama yap\u0131lan posta kutusu: $totalMailboxes\" \"INFO\" Write-Log \"Bulunan inaktif posta kutusu: $($sortedResults.Count)\" \"INFO\" Write-Log \"\u0130naktiflik e\u015fi\u011fi: $InactiveDays g\u00fcn\" \"INFO\" # \u00d6zet raporu g\u00f6ster if ($sortedResults.Count -gt 0) { Write-Host \"\" Write-Host \"En Uzun \u0130naktif Olan 5 Kullan\u0131c\u0131:\" -ForegroundColor Yellow $sortedResults | Select-Object 'G\u00f6r\u00fcnen Ad', 'E-posta Adresi', '\u0130naktif G\u00fcn Say\u0131s\u0131', 'Lisanslar' | Format-Table -AutoSize | Out-String | Write-Host }<\/pre> <pre><code ><\/code><\/pre> &nbsp; <pre><code ><\/code><\/pre> Bu PowerShell beti\u011fi: <ul> <li>Belirtilen g\u00fcn say\u0131s\u0131na g\u00f6re inaktif kullan\u0131c\u0131lar\u0131 tespit eder (varsay\u0131lan: 90 g\u00fcn)<\/li> <li>Kullan\u0131c\u0131lar\u0131n son oturum a\u00e7ma tarihlerini, posta kutusu boyutlar\u0131n\u0131 ve \u00f6\u011fe say\u0131lar\u0131n\u0131 rapor eder<\/li> <li>Kullan\u0131c\u0131lara atanm\u0131\u015f lisanslar\u0131 g\u00f6sterir<\/li> <li>Son kullan\u0131c\u0131 aktivitesini Azure AD oturum a\u00e7ma kay\u0131tlar\u0131ndan al\u0131r<\/li> <li>\u0130naktif g\u00fcn say\u0131s\u0131na g\u00f6re s\u0131ralanm\u0131\u015f CSV raporu olu\u015fturur<\/li> <li>\u0130lerleme \u00e7ubu\u011fu ile i\u015flem durumunu g\u00f6sterir<\/li> <li>Detayl\u0131 log bilgisi sa\u011flar<\/li> <\/ul> <h4>Raporun \u00c7al\u0131\u015ft\u0131r\u0131lmas\u0131<\/h4> Beti\u011fi farkl\u0131 parametrelerle \u00e7al\u0131\u015ft\u0131rmak i\u00e7in: <pre><code ># Varsay\u0131lan ayarlarla \u00e7al\u0131\u015ft\u0131rma (90 g\u00fcn inaktif) .\\InaktifKullaniciRaporu.ps1 # \u00d6zel inaktif g\u00fcn say\u0131s\u0131 belirterek \u00e7al\u0131\u015ft\u0131rma .\\InaktifKullaniciRaporu.ps1 -InactiveDays 45 # Payla\u015f\u0131ml\u0131 posta kutular\u0131n\u0131 dahil ederek \u00e7al\u0131\u015ft\u0131rma .\\InaktifKullaniciRaporu.ps1 -IncludeSharedMailboxes # \u00d6zel \u00e7\u0131kt\u0131 yolu belirterek \u00e7al\u0131\u015ft\u0131rma .\\InaktifKullaniciRaporu.ps1 -OutputPath \"D:\\Raporlar\\InaktifKullanicilar.csv\" <\/code><\/pre> <h3>2. Microsoft 365 Admin Center ile Rapor Alma<\/h3> PowerShell kullanmak istemeyenler i\u00e7in Microsoft 365 Admin Center arac\u0131l\u0131\u011f\u0131yla da inaktif kullan\u0131c\u0131 raporu olu\u015fturulabilir. Bu y\u00f6ntem daha s\u0131n\u0131rl\u0131 bilgi sa\u011flasa da, teknik bilgisi daha az olan y\u00f6neticiler i\u00e7in kullan\u0131m\u0131 daha kolayd\u0131r. <h4>Ad\u0131m 1: Microsoft 365 Admin Center'a Giri\u015f<\/h4> <ol> <li>Web taray\u0131c\u0131n\u0131zdan <a href=\"https:\/\/admin.microsoft.com\/\">https:\/\/admin.microsoft.com<\/a> adresine gidin<\/li> <li>Y\u00f6netici hesab\u0131n\u0131zla oturum a\u00e7\u0131n<\/li> <\/ol> <h4>Ad\u0131m 2: Raporlar B\u00f6l\u00fcm\u00fcne Eri\u015fim<\/h4> <ol> <li>Sol men\u00fcden \"Raporlar\" se\u00e7ene\u011fine t\u0131klay\u0131n<\/li> <li>\"Kullan\u0131m\" sekmesini se\u00e7in<\/li> <\/ol> <h4>Ad\u0131m 3: Kullan\u0131c\u0131 Etkinlik Raporunu G\u00f6r\u00fcnt\u00fcleme<\/h4> <ol> <li>\"Microsoft 365 Kullan\u0131c\u0131 Etkinlik\" raporunu se\u00e7in<\/li> <li>Sa\u011f \u00fcst k\u00f6\u015feden rapor i\u00e7in zaman aral\u0131\u011f\u0131n\u0131 se\u00e7in (son 7 g\u00fcn, 30 g\u00fcn, 90 g\u00fcn veya 180 g\u00fcn)<\/li> <li>\"Aktif kullan\u0131c\u0131lar\" s\u00fctununu inceleyerek inaktif kullan\u0131c\u0131lar\u0131 belirleyin<\/li> <\/ol> <h4>Ad\u0131m 4: Raporu D\u0131\u015fa Aktarma<\/h4> <ol> <li>Sa\u011f \u00fcst k\u00f6\u015fedeki \"D\u0131\u015fa aktar\" d\u00fc\u011fmesine t\u0131klay\u0131n<\/li> <li>Excel format\u0131nda raporu indirin<\/li> <\/ol> <h2>Rapor Analizi ve Aksiyon Plan\u0131<\/h2> \u0130naktif kullan\u0131c\u0131 raporunuzu olu\u015fturduktan sonra, bu veriler \u00fczerinde yapaca\u011f\u0131n\u0131z analiz ve alaca\u011f\u0131n\u0131z aksiyonlar \u00f6nemlidir. \u0130\u015fte izlemeniz gereken ad\u0131mlar: <h3>1. Kullan\u0131c\u0131 Kategorilerinin Belirlenmesi<\/h3> \u0130naktif kullan\u0131c\u0131lar\u0131 \u015fu kategorilere ay\u0131r\u0131n: <ul> <li><strong>Ge\u00e7ici \u0130naktif Kullan\u0131c\u0131lar<\/strong>: \u0130zin, rapor, do\u011fum izni gibi nedenlerle ge\u00e7ici olarak sistemden uzak olan kullan\u0131c\u0131lar<\/li> <li><strong>\u0130\u015ften Ayr\u0131lm\u0131\u015f Kullan\u0131c\u0131lar<\/strong>: Organizasyondan ayr\u0131lm\u0131\u015f ancak hesaplar\u0131 kapat\u0131lmam\u0131\u015f kullan\u0131c\u0131lar<\/li> <li><strong>D\u00fc\u015f\u00fck Kullan\u0131ml\u0131 Kullan\u0131c\u0131lar<\/strong>: Microsoft 365 hizmetlerini nadiren kullanan \u00e7al\u0131\u015fanlar<\/li> <li><strong>Test\/Servis Hesaplar\u0131<\/strong>: Sistem testleri veya otomasyonlar i\u00e7in olu\u015fturulmu\u015f hesaplar<\/li> <\/ul> <h3>2. Departman Y\u00f6neticileri ile Do\u011frulama<\/h3> Rapordaki inaktif kullan\u0131c\u0131lar\u0131 ilgili departman y\u00f6neticileri ile payla\u015farak do\u011frulay\u0131n. Bu ad\u0131m, gereksiz hesap kapatmalar\u0131n\u0131 \u00f6nler. <h3>3. Lisans Optimizasyon Stratejisi<\/h3> \u0130naktif kullan\u0131c\u0131lar i\u00e7in \u015fu stratejilerden birini uygulay\u0131n: <ul> <li><strong>Lisans Kald\u0131rma<\/strong>: \u0130\u015ften ayr\u0131lm\u0131\u015f kullan\u0131c\u0131lar\u0131n lisanslar\u0131n\u0131 tamamen kald\u0131r\u0131n<\/li> <li><strong>Lisans Downgrade<\/strong>: Nadiren kullan\u0131lan hesaplar i\u00e7in daha d\u00fc\u015f\u00fck seviyeli lisanslara ge\u00e7i\u015f yap\u0131n<\/li> <li><strong>Hesap Yeniden Tahsisi<\/strong>: Kullan\u0131lmayan lisanslar\u0131 yeni \u00e7al\u0131\u015fanlara veya ihtiyac\u0131 olan kullan\u0131c\u0131lara yeniden tahsis edin<\/li> <\/ul> <h3>4. Hesap Y\u00f6netimi Politikas\u0131<\/h3> \u0130naktif kullan\u0131c\u0131lar i\u00e7in kurumsal bir politika olu\u015fturun: <ul> <li><strong>Ge\u00e7ici Devre D\u0131\u015f\u0131 B\u0131rakma<\/strong>: 60 g\u00fcn inaktif olan hesaplar ge\u00e7ici olarak devre d\u0131\u015f\u0131 b\u0131rak\u0131l\u0131r<\/li> <li><strong>Lisans Kald\u0131rma<\/strong>: 90 g\u00fcn inaktif olan hesaplar\u0131n lisanslar\u0131 kald\u0131r\u0131l\u0131r<\/li> <li><strong>Hesap Silme\/Ar\u015fivleme<\/strong>: 180 g\u00fcn inaktif olan hesaplar, veriler ar\u015fivlendikten sonra silinir<\/li> <\/ul> <h2>\u0130naktif Kullan\u0131c\u0131 Tespiti i\u00e7in En \u0130yi Uygulamalar<\/h2> <h3>D\u00fczenli Raporlama Takvimi<\/h3> \u0130naktif kullan\u0131c\u0131 raporlar\u0131n\u0131 d\u00fczenli olarak (haftal\u0131k, ayl\u0131k veya \u00fc\u00e7 ayl\u0131k) olu\u015fturun ve g\u00f6zden ge\u00e7irin. Bu d\u00fczenlilik, potansiyel sorunlar\u0131n erken tespit edilmesini sa\u011flar. <h3>Otomatik Raporlama<\/h3> PowerShell betiklerini Windows G\u00f6rev Zamanlay\u0131c\u0131s\u0131 ile otomatik olarak \u00e7al\u0131\u015ft\u0131rarak d\u00fczenli raporlar olu\u015fturun ve belirli e-posta adreslerine g\u00f6nderin. <pre><code ># G\u00f6rev Zamanlay\u0131c\u0131s\u0131 i\u00e7in \u00f6rnek komut $action = New-ScheduledTaskAction -Execute \"PowerShell.exe\" -Argument \"-NoProfile -ExecutionPolicy Bypass -File 'C:\\Scripts\\InaktifKullaniciRaporu.ps1'\" $trigger = New-ScheduledTaskTrigger -Weekly -DaysOfWeek Monday -At 8am Register-ScheduledTask -Action $action -Trigger $trigger -TaskName \"Microsoft 365 \u0130naktif Kullan\u0131c\u0131 Raporu\" -Description \"Her Pazartesi sabah 8'de Microsoft 365 inaktif kullan\u0131c\u0131 raporu olu\u015fturur\" <\/code><\/pre> <h3>\u00c7ok Fakt\u00f6rl\u00fc \u0130naktiflik De\u011ferlendirmesi<\/h3> Sadece son oturum a\u00e7ma tarihine g\u00f6re de\u011fil, ayn\u0131 zamanda: <ul> <li>E-posta kullan\u0131m istatistikleri<\/li> <li>Teams toplant\u0131 kat\u0131l\u0131mlar\u0131<\/li> <li>SharePoint\/OneDrive dosya eri\u015fimleri<\/li> <li>Microsoft 365 uygulamalar\u0131n\u0131n kullan\u0131m oranlar\u0131<\/li> <\/ul> gibi \u00e7e\u015fitli fakt\u00f6rleri de\u011ferlendirerek daha kapsaml\u0131 bir inaktiflik analizi yap\u0131n. <h2>Microsoft 365 \u0130naktif Kullan\u0131c\u0131 Y\u00f6netimi i\u00e7in Ek Kaynaklar<\/h2> <h3>Microsoft Lisans Maliyeti Hesaplay\u0131c\u0131<\/h3> Microsoft 365 lisans maliyetlerinizi hesaplamak ve optimizasyon f\u0131rsatlar\u0131n\u0131 belirlemek i\u00e7in Microsoft'un resmi <a href=\"https:\/\/www.microsoft.com\/tr-tr\/microsoft-365\/business\/compare-all-microsoft-365-business-products\">Lisans Maliyeti Hesaplay\u0131c\u0131s\u0131<\/a>'n\u0131 kullanabilirsiniz. <h3>PowerShell Betik Deposu<\/h3> Microsoft 365 y\u00f6netimi i\u00e7in daha fazla PowerShell beti\u011fine <a href=\"https:\/\/github.com\/microsoft\/Microsoft365DSC\">Microsoft 365 DSC<\/a> GitHub deposundan eri\u015febilirsiniz. <h3>Microsoft 365 G\u00fcvenlik Portal\u0131<\/h3> \u0130naktif hesaplar\u0131 g\u00fcvenlik perspektifinden de\u011ferlendirmek i\u00e7in <a href=\"https:\/\/security.microsoft.com\/\">Microsoft 365 G\u00fcvenlik Portal\u0131<\/a>'n\u0131 ziyaret edin. Microsoft 365 ortam\u0131n\u0131zdaki inaktif kullan\u0131c\u0131lar\u0131n d\u00fczenli olarak tespit edilmesi, raporlanmas\u0131 ve y\u00f6netilmesi, i\u015fletmenizin bulut maliyetlerini optimize etmesine, g\u00fcvenlik risklerini azaltmas\u0131na ve kaynaklar\u0131n\u0131 daha verimli kullanmas\u0131na olanak tan\u0131r. Bu yaz\u0131da payla\u015f\u0131lan PowerShell betikleri ve y\u00f6ntemler, Microsoft 365 y\u00f6neticilerine kapsaml\u0131 bir inaktif kullan\u0131c\u0131 y\u00f6netimi stratejisi olu\u015fturmalar\u0131 i\u00e7in gerekli ara\u00e7lar\u0131 sa\u011flamaktad\u0131r. \u0130naktif kullan\u0131c\u0131 raporunuzu olu\u015fturduktan sonra, mutlaka bir aksiyon plan\u0131 geli\u015ftirin ve bu plan\u0131 d\u00fczenli olarak uygulay\u0131n. Bu sayede, Microsoft 365 yat\u0131r\u0131m\u0131n\u0131zdan maksimum de\u011feri elde edebilir ve organizasyonunuzun dijital varl\u0131klar\u0131n\u0131 g\u00fcvende tutabilirsiniz.","excerpt":"Modern i\u015fletmelerde Microsoft 365 (eski ad\u0131yla Office 365) kullan\u0131m\u0131 giderek yayg\u0131nla\u015fmaktad\u0131r. Bu bulut tabanl\u0131 hizmet, lisans maliyetleri...","created_at":"2025-04-05 15:30:49","updated_at":"2026-09-23 13:45:32","category_id":6,"view_count":728,"reading_time":11,"status":"published","editor_choice":0,"is_editor_choice":0,"published_at":"2025-04-05 15:30:49","featured_image":"resimyok.jpg","slug":"microsoft-365-inaktif-kullanici-raporu-nasil-alinir","category_name":"Sistem","category_slug":"sistem","category_color":"#3b82f6"},{"id":129,"title":"Office 365 \u00fczerinden SMTP mail g\u00f6nderim ayarlar\u0131","content":"Office 365, uygulama ve sistemlerinizden e-posta g\u00f6ndermek i\u00e7in kullanabilece\u011finiz g\u00fcvenli SMTP (Simple Mail Transfer Protocol) hizmeti sunar. Bu rehberde, Office 365 SMTP ayarlar\u0131n\u0131 yap\u0131land\u0131rma ve kullanma ad\u0131mlar\u0131; <ol> <li><strong>Temel SMTP Ayarlar\u0131<\/strong>: <ul> <li>Sunucu: smtp.office365.com<\/li> <li>Port: 587<\/li> <li>\u015eifreleme: TLS<\/li> <li>Kimlik do\u011frulama gerekiyor<\/li> <\/ul> <\/li> <li><strong>\u0130ki Fakt\u00f6rl\u00fc Do\u011frulama<\/strong> etkinse uygulama \u015fifresi olu\u015fturma ad\u0131mlar\u0131<\/li> <li><strong>Farkl\u0131 Programlama Dillerinde Kullan\u0131m \u00d6rnekleri<\/strong>: <ul> <li>PHP<\/li> <li>C#<\/li> <li>Python<\/li> <li>Node.js<\/li> <\/ul> <\/li> <li><strong>S\u0131k Kar\u015f\u0131la\u015f\u0131lan Sorunlar ve \u00c7\u00f6z\u00fcmleri<\/strong>: <ul> <li>Kimlik do\u011frulama sorunlar\u0131<\/li> <li>SMTP eri\u015fim engelleri<\/li> <li>TLS hatalar\u0131<\/li> <li>G\u00f6nderim limiti sorunlar\u0131<\/li> <\/ul> <\/li> <li><strong>G\u00fcvenlik \u00d6nerileri<\/strong><\/li> <li><strong>Exchange Online PowerShell ile SMTP Ayarlar\u0131 Y\u00f6netimi<\/strong><\/li> <\/ol> &nbsp; <h2>SMTP Ayarlar\u0131 Genel Bilgiler<\/h2> Office 365 i\u00e7in temel SMTP ayarlar\u0131 \u015funlard\u0131r: <table> <thead> <tr> <th>Ayar<\/th> <th>De\u011fer<\/th> <\/tr> <\/thead> <tbody> <tr> <td>SMTP Sunucu Adresi<\/td> <td>smtp.office365.com<\/td> <\/tr> <tr> <td>Port<\/td> <td>587 (TLS\/STARTTLS)<\/td> <\/tr> <tr> <td>\u015eifreleme Y\u00f6ntemi<\/td> <td>TLS (Transport Layer Security)<\/td> <\/tr> <tr> <td>Kimlik Do\u011frulama<\/td> <td>Evet (Kullan\u0131c\u0131 ad\u0131 ve \u015fifre gerekli)<\/td> <\/tr> <tr> <td>Kullan\u0131c\u0131 Ad\u0131<\/td> <td>Office 365 e-posta adresiniz (\u00f6rn: kullanici@sirketiniz.com)<\/td> <\/tr> <tr> <td>\u015eifre<\/td> <td>Office 365 hesap \u015fifreniz veya uygulama \u015fifresi<\/td> <\/tr> <\/tbody> <\/table> <h2>Uygulama \u015eifresi Olu\u015fturma (\u0130ki Fakt\u00f6rl\u00fc Do\u011frulama Etkinse)<\/h2> Office 365 hesab\u0131n\u0131zda iki fakt\u00f6rl\u00fc do\u011frulama (2FA) etkinse, SMTP kimlik do\u011frulamas\u0131 i\u00e7in \u00f6zel bir uygulama \u015fifresi olu\u015fturman\u0131z gerekir: <ol> <li><a href=\"https:\/\/account.microsoft.com\/security\">https:\/\/account.microsoft.com\/security<\/a> adresine gidin ve oturum a\u00e7\u0131n<\/li> <li>\"G\u00fcvenlik\" b\u00f6l\u00fcm\u00fcnde \"Geli\u015fmi\u015f g\u00fcvenlik se\u00e7enekleri\"ne t\u0131klay\u0131n<\/li> <li>\"Uygulama \u015fifreleri\" b\u00f6l\u00fcm\u00fcne gidin<\/li> <li>\"Yeni uygulama \u015fifresi olu\u015ftur\" se\u00e7ene\u011fini t\u0131klay\u0131n<\/li> <li>Olu\u015fturulan \u015fifreyi kaydedin (bu \u015fifre yaln\u0131zca bir kez g\u00f6sterilecektir)<\/li> <\/ol> <h2>Office 365 SMTP'yi Uygulama ve Sistemlerde Kullanma<\/h2> <h3>PHP ile Kullan\u0131m \u00d6rne\u011fi<\/h3> <pre><code ><\/code><\/pre> <pre  data-enlighter-language=\"python\">&lt;?php use PHPMailer\\PHPMailer\\PHPMailer; use PHPMailer\\PHPMailer\\Exception; require 'vendor\/autoload.php'; $mail = new PHPMailer(true); try { \/\/Sunucu ayarlar\u0131 $mail-&gt;isSMTP(); $mail-&gt;Host = 'smtp.office365.com'; $mail-&gt;SMTPAuth = true; $mail-&gt;Username = 'kullanici@sirketiniz.com'; $mail-&gt;Password = 'sifreniz_veya_uygulama_sifreniz'; $mail-&gt;SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; $mail-&gt;Port = 587; \/\/Al\u0131c\u0131lar $mail-&gt;setFrom('kullanici@sirketiniz.com', 'G\u00f6nderen Ad\u0131'); $mail-&gt;addAddress('alici@ornek.com', 'Al\u0131c\u0131 Ad\u0131'); $mail-&gt;addReplyTo('yanit@sirketiniz.com', 'Yan\u0131t Adresi'); \/\/\u0130\u00e7erik $mail-&gt;isHTML(true); $mail-&gt;Subject = 'E-posta Ba\u015fl\u0131\u011f\u0131'; $mail-&gt;Body = 'Bu bir &lt;b&gt;HTML&lt;\/b&gt; mesaj\u0131d\u0131r.'; $mail-&gt;AltBody = 'Bu, HTML mail istemcileri i\u00e7in d\u00fcz metin s\u00fcr\u00fcm\u00fcd\u00fcr'; $mail-&gt;send(); echo 'Mesaj g\u00f6nderildi'; } catch (Exception $e) { echo \"Mesaj g\u00f6nderilemedi. Hata: {$mail-&gt;ErrorInfo}\"; } ?&gt;<\/pre> <pre><code ><\/code><\/pre> &nbsp; <pre><code ><\/code><\/pre> <h3>C# ile Kullan\u0131m \u00d6rne\u011fi<\/h3> <pre><code ><\/code><\/pre> <pre  data-enlighter-language=\"python\">using System; using System.Net; using System.Net.Mail; class Program { static void Main() { try { MailMessage mail = new MailMessage(); SmtpClient SmtpServer = new SmtpClient(\"smtp.office365.com\"); mail.From = new MailAddress(\"kullanici@sirketiniz.com\"); mail.To.Add(\"alici@ornek.com\"); mail.Subject = \"E-posta Testi\"; mail.Body = \"Bu bir test e-postas\u0131d\u0131r.\"; SmtpServer.Port = 587; SmtpServer.Credentials = new NetworkCredential(\"kullanici@sirketiniz.com\", \"sifreniz_veya_uygulama_sifreniz\"); SmtpServer.EnableSsl = true; SmtpServer.Send(mail); Console.WriteLine(\"E-posta ba\u015far\u0131yla g\u00f6nderildi.\"); } catch (Exception ex) { Console.WriteLine(\"Hata olu\u015ftu: \" + ex.Message); } } }<\/pre> <pre><code ><\/code><\/pre> <pre><code ><\/code><\/pre> <h3>Python ile Kullan\u0131m \u00d6rne\u011fi<\/h3> <pre><code ><\/code><\/pre> <pre  data-enlighter-language=\"python\">import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart sender_email = \"kullanici@sirketiniz.com\" receiver_email = \"alici@ornek.com\" password = \"sifreniz_veya_uygulama_sifreniz\" message = MIMEMultipart(\"alternative\") message = \"Office 365 SMTP Test\" message = sender_email message = receiver_email # E-posta i\u00e7eri\u011fi text = \"Merhaba,\\nBu bir test e-postas\u0131d\u0131r.\" html = \"\"\"\\ &lt;html&gt; &lt;body&gt; &lt;p&gt;Merhaba,&lt;br&gt; Bu bir &lt;b&gt;test&lt;\/b&gt; e-postas\u0131d\u0131r. &lt;\/p&gt; &lt;\/body&gt; &lt;\/html&gt; \"\"\" part1 = MIMEText(text, \"plain\") part2 = MIMEText(html, \"html\") message.attach(part1) message.attach(part2) # SMTP sunucusu ile ba\u011flant\u0131 kurma try: server = smtplib.SMTP(\"smtp.office365.com\", 587) server.starttls() server.login(sender_email, password) server.sendmail(sender_email, receiver_email, message.as_string()) print(\"E-posta ba\u015far\u0131yla g\u00f6nderildi!\") except Exception as e: print(f\"Hata olu\u015ftu: {e}\") finally: server.quit()<\/pre> <pre><code ><\/code><\/pre> &nbsp; <pre><code ><\/code><\/pre> <h3>Node.js ile Kullan\u0131m \u00d6rne\u011fi<\/h3> <pre><code ><\/code><\/pre> <pre  data-enlighter-language=\"python\">const nodemailer = require('nodemailer'); \/\/ SMTP yap\u0131land\u0131rmas\u0131 let transporter = nodemailer.createTransport({ host: 'smtp.office365.com', port: 587, secure: false, \/\/ TLS i\u00e7in false auth: { user: 'kullanici@sirketiniz.com', pass: 'sifreniz_veya_uygulama_sifreniz' } }); \/\/ E-posta g\u00f6nderme let mailOptions = { from: '\"\u015eirket Ad\u0131\" &lt;kullanici@sirketiniz.com&gt;', to: 'alici@ornek.com, alici2@ornek.com', subject: 'Office 365 SMTP Test', text: 'Bu bir test e-postas\u0131d\u0131r.', html: '&lt;b&gt;Bu bir test e-postas\u0131d\u0131r.&lt;\/b&gt;' }; transporter.sendMail(mailOptions, (error, info) =&gt; { if (error) { return console.log('Hata:', error); } console.log('Mesaj g\u00f6nderildi:', info.messageId); });<\/pre> <pre><code ><\/code><\/pre> &nbsp; <pre><code ><\/code><\/pre> <h2>S\u0131k Kar\u015f\u0131la\u015f\u0131lan Sorunlar ve \u00c7\u00f6z\u00fcmleri<\/h2> <h3>1. Kimlik Do\u011frulama Ba\u015far\u0131s\u0131z<\/h3> <strong>Sorun:<\/strong> \"5.7.3 Authentication unsuccessful\" hatas\u0131 al\u0131yorsunuz. <strong>\u00c7\u00f6z\u00fcm:<\/strong> <ul> <li>Kullan\u0131c\u0131 ad\u0131 ve \u015fifrenin do\u011fru oldu\u011fundan emin olun<\/li> <li>\u0130ki fakt\u00f6rl\u00fc do\u011frulama etkinse uygulama \u015fifresi kullan\u0131n<\/li> <li>Hesab\u0131n\u0131z\u0131n kilitli olup olmad\u0131\u011f\u0131n\u0131 kontrol edin<\/li> <\/ul> <h3>2. SMTP Eri\u015fimi Engellendi<\/h3> <strong>Sorun:<\/strong> \"5.7.57 SMTP; Client was not authenticated to send anonymous mail during MAIL FROM\" hatas\u0131 al\u0131yorsunuz. <strong>\u00c7\u00f6z\u00fcm:<\/strong> <ul> <li>Office 365 Admin merkezinden SMTP kimlik do\u011frulamas\u0131n\u0131n a\u00e7\u0131k oldu\u011fundan emin olun<\/li> <li>Admin center &gt; Kullan\u0131c\u0131lar &gt; Aktif kullan\u0131c\u0131lar &gt; E-posta &gt; Posta uygulamalar\u0131 y\u00f6netimi &gt; SMTP G\u00f6nderimi a\u00e7\u0131k olmal\u0131d\u0131r<\/li> <\/ul> <h3>3. TLS Hatas\u0131<\/h3> <strong>Sorun:<\/strong> \"Could not connect to SMTP host: smtp.office365.com, port: 587\" hatas\u0131 al\u0131yorsunuz. <strong>\u00c7\u00f6z\u00fcm:<\/strong> <ul> <li>G\u00fcvenlik duvar\u0131 veya antivir\u00fcs program\u0131n\u0131n 587 nolu portu engellememesini sa\u011flay\u0131n<\/li> <li>TLS 1.2 veya daha yeni bir s\u00fcr\u00fcm kulland\u0131\u011f\u0131n\u0131zdan emin olun<\/li> <\/ul> <h3>4. G\u00f6nderim Limiti A\u015f\u0131ld\u0131<\/h3> <strong>Sorun:<\/strong> \"Sending limits exceeded\" hatas\u0131 al\u0131yorsunuz. <strong>\u00c7\u00f6z\u00fcm:<\/strong> <ul> <li>Office 365, g\u00fcnl\u00fck e-posta g\u00f6nderim limitleri i\u00e7erir (genellikle 10,000 e-posta\/g\u00fcn)<\/li> <li>Toplu e-posta g\u00f6nderimleri i\u00e7in \u00f6zel Office 365 e-posta hizmetlerini kullanmay\u0131 d\u00fc\u015f\u00fcn\u00fcn<\/li> <\/ul> <h2>G\u00fcvenlik \u00d6nerileri<\/h2> <ol> <li><strong>\u015eifreleri Kodunuzda Saklamay\u0131n:<\/strong> \u00c7evresel de\u011fi\u015fkenler veya g\u00fcvenli yap\u0131land\u0131rma y\u00f6netimi kullan\u0131n<\/li> <li><strong>IP K\u0131s\u0131tlamalar\u0131n\u0131 Kullan\u0131n:<\/strong> Office 365 Admin merkezinden SMTP eri\u015fimine izin verilen IP adreslerini belirleyin<\/li> <li><strong>D\u00fczenli Denetim:<\/strong> Office 365 G\u00fcvenlik ve Uyumluluk merkezinden SMTP kullan\u0131m\u0131n\u0131 d\u00fczenli olarak izleyin<\/li> <li><strong>SPF, DKIM ve DMARC Kay\u0131tlar\u0131n\u0131 Yap\u0131land\u0131r\u0131n:<\/strong> E-postalar\u0131n\u0131z\u0131n g\u00fcvenli\u011fini ve teslim edilebilirli\u011fini art\u0131rmak i\u00e7in bu DNS kay\u0131tlar\u0131n\u0131 yap\u0131land\u0131r\u0131n<\/li> <\/ol> <h2>Exchange Online PowerShell ile SMTP Ayarlar\u0131n\u0131 Y\u00f6netme<\/h2> SMTP ayarlar\u0131n\u0131 y\u00f6netmek i\u00e7in Exchange Online PowerShell mod\u00fcl\u00fcn\u00fc kullanabilirsiniz: <pre><code ><\/code><\/pre> <pre  data-enlighter-language=\"python\"># Exchange Online PowerShell mod\u00fcl\u00fcn\u00fc y\u00fckleme Install-Module -Name ExchangeOnlineManagement # Exchange Online'a ba\u011flanma Connect-ExchangeOnline -UserPrincipalName admin@sirketiniz.com # Bir kullan\u0131c\u0131n\u0131n SMTP ayarlar\u0131n\u0131 kontrol etme Get-CASMailbox -Identity kullanici@sirketiniz.com | Select SmtpClientAuthenticationDisabled # SMTP kimlik do\u011frulamas\u0131n\u0131 etkinle\u015ftirme Set-CASMailbox -Identity kullanici@sirketiniz.com -SmtpClientAuthenticationDisabled $false <\/pre> <pre><code ><\/code><\/pre> <pre><code ><\/code><\/pre> Office 365 SMTP hizmeti, uygulamalar\u0131n\u0131z ve sistemleriniz i\u00e7in g\u00fcvenilir bir e-posta g\u00f6nderim altyap\u0131s\u0131 sunar. Bu rehberdeki ayarlar\u0131 ve \u00f6rnekleri kullanarak, \u00e7e\u015fitli programlama dillerinde ve platformlarda Office 365 SMTP hizmetini kolayca entegre edebilirsiniz. Modern uygulamalar i\u00e7in Graph API ve Microsoft 365 SDK'lar\u0131n\u0131 kullanmak da alternatif bir yakla\u015f\u0131m olabilir, \u00f6zellikle daha karma\u015f\u0131k e-posta i\u015flemleri yapman\u0131z gerekiyorsa bu se\u00e7enekleri de\u011ferlendirebilirsiniz. <ol> <li><\/li> <\/ol> &nbsp;","excerpt":"Office 365, uygulama ve sistemlerinizden e-posta g\u00f6ndermek i\u00e7in kullanabilece\u011finiz g\u00fcvenli SMTP (Simple Mail Transfer Protocol) hizmeti sunar. Bu...","created_at":"2025-04-05 10:33:00","updated_at":"2026-09-23 12:25:16","category_id":6,"view_count":965,"reading_time":7,"status":"published","editor_choice":0,"is_editor_choice":0,"published_at":"2025-04-05 10:33:00","featured_image":"resimyok.jpg","slug":"office-365-uzerinden-smtp-mail-gonderim-ayarlari","category_name":"Sistem","category_slug":"sistem","category_color":"#3b82f6"}]