دليل تفاعلي

إعدادك، مُعبّأ مسبقًا

اكتب قيمك مرة واحدة فيعيد كل أمر أدناه كتابة نفسه — اسم التطبيق، وسياسة الوصول، واختبارات التحقق، ورسالة ما قبل الإقلاع. انسخ كل كتلة مباشرة إلى PowerShell.

قيمك السبع

تُمسح القيم بعد 15:00

المضيف الذي يعمل عليه Matomo لديك. تُشتق منه تسمية تطبيق Entra ووصف السر.

من صفحة نظرة عامة في تسجيل تطبيقك. معرِّف، لا سر.

من صفحة نظرة عامة نفسها.

عمود Value الذي يُعرض مرة واحدة عند إنشاء السر — لا Secret ID. يُستخدم فقط في كتلة ما قبل الإقلاع أدناه، ولا يظهر في الملخص إطلاقًا.

صندوق البريد المشترك الذي سيرسل Matomo باسمه.

النطاق المدمج لمستأجرك — مُعبّأ مسبقًا من عنوان المرسل؛ عدّله إن كان مختلفًا لديك.

الحساب الذي تستخدمه في admin.microsoft.com — غالبًا حساب admin@…onmicrosoft.com، لا بريدك اليومي.

الأسماء المشتقة

اسم تطبيق Entra
missivus-matomo-analytics.example.com
وصف سر العميل
missivus-matomo-analytics.example.com
عنوان مجموعة الأمان
noreply-apps@yourcompany.onmicrosoft.com

ثبّت الوحدة وسجّل الدخول

ستُفتح نافذة متصفح؛ سجّل الدخول بحساب المسؤول. يتضمن Windows برنامج PowerShell أصلًا، وعلى macOS نفّذ `brew install --cask powershell` ثم `pwsh`.

Install-Module -Name ExchangeOnlineManagement -Scope CurrentUser
Connect-ExchangeOnline -UserPrincipalName {{admin}}

أنشئ المجموعة

عضوها الوحيد هو صندوق بريدك المشترك. لاحظ قيمة PrimarySmtpAddress التي يطبعها PowerShell — فهي عادة على النطاق المدمج للمستأجر، وهي بالضبط ما يحتاجه الأمر التالي.

New-DistributionGroup -Name "NoReply Apps" -Alias noreply-apps -Type Security -Members "{{sender}}"

اربط التطبيق بالمجموعة

سطر واحد. هذه هي الخطوة التي تحوّل «تطبيقًا يستطيع الإرسال باسم أي أحد» إلى «تطبيق يستطيع الإرسال من عنوان واحد بالضبط».

New-ApplicationAccessPolicy -AppId "{{clientId}}" -PolicyScopeGroupId "{{group}}" -AccessRight RestrictAccess -Description "Missivus (Matomo) may only send as {{sender}}"

تحقّق — انتظر 5 دقائق أولًا

يجب أن يُظهر السطر الأول AccessCheckResult Granted، وأن يُظهر الثاني Denied. ويستخدم السطر الثاني عنصرًا نائبًا — استبدله بأي صندوق بريد حقيقي آخر في مستأجرك، وعنوانك أنت يفي بالغرض. لا تمضِ قدمًا حتى تظهر النتيجة Denied.

Test-ApplicationAccessPolicy -Identity "{{sender}}" -AppId "{{clientId}}"
Test-ApplicationAccessPolicy -Identity "{{other}}" -AppId "{{clientId}}"

ما قبل الإقلاع — أرسل رسالة حقيقية واحدة من PowerShell

اختياري لكنه موصى به بشدة — فهو يثبت المستأجر والتطبيق والسر والسياسة من طرف إلى طرف قبل إقحام Matomo. إن طبع الجزء الأول 20 حرفًا فالمصادقة تعمل. وظهور StatusCode 202 مع رسالة في صندوق وارِدك يعني أن جانب Microsoft قد اكتمل. استبدل العنصر النائب للمستلم بصندوق وارِدك أنت.

$TenantId = "{{tenantId}}"
$ClientId = "{{clientId}}"
$Secret   = "{{secret}}"

$tok = Invoke-RestMethod -Method Post -Uri "https://login.microsoftonline.com/$TenantId/oauth2/v2.0/token" -Body @{ client_id=$ClientId; client_secret=$Secret; scope="https://graph.microsoft.com/.default"; grant_type="client_credentials" }
$tok.access_token.Substring(0,20)
$body = '{"message":{"subject":"Missivus pre-flight","body":{"contentType":"Text","content":"Graph app-only send OK"},"toRecipients":[{"emailAddress":{"address":"{{other}}"}}]},"saveToSentItems":false}'
Invoke-WebRequest -Method Post -Uri "https://graph.microsoft.com/v1.0/users/{{sender}}/sendMail" -Headers @{ Authorization = "Bearer $($tok.access_token)" } -ContentType "application/json" -Body $body | Select-Object StatusCode

نظّف وسجّل الخروج

كُتب السر في هذه النافذة، لذا امسحه ثم أغلق PowerShell.

Remove-Variable Secret,tok,body
Disconnect-ExchangeOnline

لمدير كلمات المرور لديك

انسخ هذه الكتلة إلى ملاحظات مدخل في مدير كلمات المرور. تحتوي على المعرّفات التي ستحتاجها عند تدوير السر — أما السر نفسه فليس فيها عمدًا.

{{summaryAppName}}: {{appName}}
{{summaryTenantId}}: {{tenantId}}
{{summaryClientId}}: {{clientId}}
{{summaryGroup}}: {{group}}
{{summarySender}}: {{sender}}

{{summaryExpiry}}

ثم أكمل في Matomo

أدخل معرّف المستأجر ومعرّف العميل والسر وعنوان المرسل في الإدارة ← النظام ← الإعدادات العامة ← Missivus، وفعّل خيار «إرسال البريد عبر Microsoft Graph»، ثم احفظ واضغط «إرسال رسالة اختبار».

مرجع إعداد الإضافة