MailLandDocs
قابلية التسليم

نظرة عامة على قابلية التسليم

مراقبة سمعة المرسل ومعدلات التسليم وصحة DNS عبر جميع نطاقاتك

يتتبع MailLand سمعة المرسل الخاصة بك من خلال درجة مركبة واتجاهات التسليم والتحليل التفصيلي على مستوى مزودي الخدمة ومراقبة صحة DNS. استخدم واجهة برمجة تطبيقات قابلية التسليم لعرض هذه المقاييس في لوحات التحكم الخاصة بك أو لتشغيل تنبيهات عند انخفاض السمعة.

درجة المرسل

احصل على درجة سمعة من 0 إلى 100 مقسمة إلى أربعة مكونات مرجحة:

GET https://api.mail.land/v1/deliverability/score

استخدم Authorization: Bearer <token> أو X-API-Key: <api key> للمصادقة.

Get sender score
curl https://api.mail.land/v1/deliverability/score \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
Sender score response
{
  "totalScore": 87,
  "label": "Good",
  "hasSufficientData": true,
  "totalSentLast30Days": 142500,
  "dnsScore": {
    "name": "DNS Authentication",
    "score": 25,
    "maxScore": 25,
    "detail": "2/2 domains fully authenticated"
  },
  "bounceScore": {
    "name": "Bounce Rate",
    "score": 20,
    "maxScore": 25,
    "detail": "Bounce rate: 1.80%"
  },
  "complaintScore": {
    "name": "Complaint Rate",
    "score": 25,
    "maxScore": 25,
    "detail": "Complaint rate: 0.020%"
  },
  "engagementScore": {
    "name": "Engagement",
    "score": 25,
    "maxScore": 25,
    "detail": "Open rate: 32.0%"
  },
  "calculatedAt": "2026-02-17T12:00:00Z"
}

يساهم كل مكون بما يصل إلى 25 نقطة. عند إرسال أقل من 100 رسالة خلال آخر 30 يومًا، تكون قيمة hasSufficientData هي false. مع ذلك يستمر حساب totalScore، لكنه غير ذي دلالة عند هذا الحجم: بدون أي إرسال، يحصل مكونا الارتداد والشكاوى كلاهما على الدرجة الكاملة (25)، لذا قد يظهر حساب جديد تمامًا حتى 75 نقطة قبل أن يرسل أي رسالة.

سجل الدرجات

تتبع تغيرات درجتك عبر الزمن:

GET https://api.mail.land/v1/deliverability/score/history?days=30
Get score history
curl "https://api.mail.land/v1/deliverability/score/history?days=30" \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
المعاملالنوعالافتراضيالوصف
daysint30نافذة السجل (7–90)
Score history response
[
  {
    "date": "2026-02-17",
    "totalScore": 87,
    "label": "Good",
    "dnsScore": 25,
    "bounceScore": 22,
    "complaintScore": 25,
    "engagementScore": 15,
    "bounceRate": 0.8,
    "complaintRate": 0.02,
    "openRate": 32.0,
    "deliveryRate": 98.5,
    "totalSent": 4750,
    "hasSufficientData": true
  }
]

إحصائيات نظرة عامة على قابلية التسليم

احصل على مقاييس التسليم الإجمالية لفترة زمنية معينة:

GET https://api.mail.land/v1/deliverability/overview?days=30
Get deliverability overview
curl "https://api.mail.land/v1/deliverability/overview?days=30" \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
المعاملالنوعالافتراضيالوصف
daysint30نافذة الفترة الزمنية (تُعادَل إلى 7 أو 30 أو 90)
Overview response
{
  "totalSent": 142500,
  "totalDelivered": 140325,
  "totalBounced": 1125,
  "totalComplained": 28,
  "totalOpened": 44878,
  "totalClicked": 5843,
  "totalUnsubscribed": 312,
  "deliveryRate": 98.47,
  "bounceRate": 0.79,
  "complaintRate": 0.02,
  "openRate": 31.49,
  "clickRate": 4.1,
  "unsubscribeRate": 0.22
}

الاتجاهات اليومية

احصل على مقاييس التسليم اليومية لتصور الاتجاهات:

GET https://api.mail.land/v1/deliverability/trends?days=30
Get daily trends
curl "https://api.mail.land/v1/deliverability/trends?days=30" \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
Trends response (abbreviated)
[
  {
    "date": "2026-02-17T00:00:00Z",
    "sent": 4750,
    "delivered": 4680,
    "bounced": 38,
    "complained": 1,
    "opened": 1498,
    "deliveryRate": 98.53,
    "bounceRate": 0.8,
    "complaintRate": 0.02,
    "openRate": 31.53
  }
]

التحليل التفصيلي حسب المزود

عرض مقاييس قابلية التسليم مجمعةً حسب مزود صندوق البريد للمستلم (Gmail وYahoo وOutlook وغيرها):

GET https://api.mail.land/v1/deliverability/providers?days=30&limit=10
Get provider breakdown
curl "https://api.mail.land/v1/deliverability/providers?days=30&limit=10" \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
المعاملالنوعالافتراضيالوصف
daysint30نافذة الفترة الزمنية (تُعادَل إلى 7 أو 30 أو 90)
limitint10الحد الأقصى لعدد المزودين المُرجَعين (1–50)
Provider breakdown response
[
  {
    "domain": "gmail.com",
    "sent": 58200,
    "delivered": 57800,
    "bounced": 210,
    "opened": 19500,
    "clicked": 2540,
    "complained": 8,
    "deliveryRate": 99.31,
    "openRate": 33.51,
    "bounceRate": 0.36
  },
  {
    "domain": "outlook.com",
    "sent": 31400,
    "delivered": 30800,
    "bounced": 350,
    "opened": 8650,
    "clicked": 1120,
    "complained": 12,
    "deliveryRate": 98.09,
    "openRate": 27.55,
    "bounceRate": 1.11
  }
]

التحليل التفصيلي للمرتدات

عرض المرتدات مصنفةً حسب النوع والسبب:

GET https://api.mail.land/v1/deliverability/bounce-breakdown?days=30
Get bounce breakdown
curl "https://api.mail.land/v1/deliverability/bounce-breakdown?days=30" \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
Bounce breakdown response
{
  "hardBounces": 450,
  "softBounces": 625,
  "blockedBounces": 40,
  "unknownBounces": 10,
  "totalBounces": 1125,
  "topReasons": [
    { "reason": "InvalidRecipient", "count": 380 },
    { "reason": "QuotaIssues", "count": 290 },
    { "reason": "SpamBlock", "count": 40 },
    { "reason": "BadDomain", "count": 70 },
    { "reason": "PolicyRelated", "count": 95 },
    { "reason": "TransientFailure", "count": 55 }
  ]
}

يستخدم topReasons أسماء التصنيف الخاصة بـ MTA نفسه (راجع المرتدات للاطلاع على المفردات الكاملة)، وليس فئات snake_case المشتقة من الكلمات المفتاحية المستخدمة في نقاط نهاية المرتدات المعاملاتية.

راجع المرتدات للاطلاع على تفاصيل فئات المرتدات الكاملة وسلوك المعالجة.

حالة DNS

تحقق من حالة مصادقة DNS عبر جميع نطاقاتك:

GET https://api.mail.land/v1/deliverability/dns-status
Get DNS status
curl https://api.mail.land/v1/deliverability/dns-status \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
DNS status response
[
  {
    "domainId": "k3v9x2m8q1w7z4",
    "domainName": "yourdomain.com",
    "spfStatus": "Valid",
    "dkimStatus": "Valid",
    "dmarcStatus": "Valid",
    "lastCheckedAt": "2026-02-17T10:00:00Z",
    "isFullyAuthenticated": true
  },
  {
    "domainId": "n7p2q9x4m8w1z3",
    "domainName": "notifications.yourdomain.com",
    "spfStatus": "Valid",
    "dkimStatus": "Valid",
    "dmarcStatus": "Invalid",
    "lastCheckedAt": "2026-02-17T10:00:00Z",
    "isFullyAuthenticated": false
  }
]

يكون النطاق isFullyAuthenticated فقط عندما تكون قيم SPF وDKIM وDMARC جميعها Valid.

الحالةالوصف
Pendingلم يتم فحص السجل بعد
Validالسجل مُهيَّأ بشكل صحيح
Invalidالسجل مفقود أو مُهيَّأ بشكل خاطئ

التوصيات

احصل على توصيات قابلة للتنفيذ لتحسين سمعة المرسل:

GET https://api.mail.land/v1/deliverability/recommendations
Get recommendations
curl https://api.mail.land/v1/deliverability/recommendations \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
Recommendations response
[
  {
    "id": "dns_dmarc_missing_notifications.yourdomain.com",
    "category": "dns",
    "severity": "critical",
    "titleKey": "deliverability.recommendations.dns.dmarcMissing.title",
    "descriptionKey": "deliverability.recommendations.dns.dmarcMissing.description",
    "actionUrl": "/domains",
    "impact": 8,
    "parameters": {
      "domain": "notifications.yourdomain.com"
    }
  },
  {
    "id": "bounce_high",
    "category": "bounce",
    "severity": "warning",
    "titleKey": "deliverability.recommendations.bounce.high.title",
    "descriptionKey": "deliverability.recommendations.bounce.high.description",
    "actionUrl": "/deliverability",
    "impact": 15
  }
]
الحقلالنوعالوصف
idstringمعرّف التوصية. ليس تعدادًا (enum) ثابتًا: تتضمن معرّفات DNS اسم النطاق (مثلاً dns_dmarc_missing_{domain})، لذا تنتج المشكلة نفسها على نطاقين معرّفين مختلفين.
categorystringdns أو bounce أو complaint أو engagement أو warmup أو volume
severitystringcritical أو warning أو info
impactintالتحسين المحتمل في الدرجة (0–100) عند المعالجة
actionUrlstringمسار الواجهة الأمامية لمعالجة المشكلة: واحد من /domains أو /deliverability أو /suppression-lists أو /analytics أو /dashboard
parametersobjectقيم لاستيفاء i18n. تظهر فقط في توصيات DNS (بالشكل {"domain": "..."})؛ توصيات الارتداد والشكاوى والتفاعل والتسخين والحجم لا تحتوي على parameters.

في كل مرة يُعاد حد أقصى 10 توصيات، مرتبة حسب الخطورة (الحرجة أولًا) ثم حسب الأثر تنازليًا.

التخزين المؤقت

يتم تخزين جميع نقاط نهاية قابلية التسليم مؤقتًا على جانب الخادم لتقليل حمل الاستعلام على ClickHouse:

نقطة النهايةمدة التخزين المؤقت
/score15 دقيقة
/overview5 دقائق
/trends3 دقائق
/providers5 دقائق
/bounce-breakdown5 دقائق
/score/historyغير مُخزَّن مؤقتًا
/dns-statusغير مُخزَّن مؤقتًا (في الوقت الفعلي)
/recommendations10 دقائق

يُطبَّع معامل days إلى 7 أو 30 أو 90: القيم ≤ 7 تُقرَّب إلى 7، ومن 8 إلى 30 تُقرَّب إلى 30، وأي قيمة أعلى من 30 تُقرَّب إلى 90. قيمة مثل 14 تُقرَّب إلى 30، وليس 7.

الخطوات التالية

في هذه الصفحة