مسارات البريد الوارد
إعداد قواعد التوجيه لتوجيه رسائل البريد الوارد إلى التخزين أو ويب هوك أو إجراءات أخرى
تحدد المسارات كيفية تعامل MailLand مع رسائل البريد الوارد لنطاق معيّن. يطابق كل مسار الجزء المحلي
من عنوان المستلم (الجزء الذي يسبق @) وينفذ إجراءً واحدًا أو أكثر: التخزين، أو التسليم إلى ويب
هوك، أو إعادة التوجيه، أو الرفض على مستوى SMTP، أو الإسقاط. تُقيَّم المسارات بترتيب الأولوية (الرقم
الأصغر أولاً)، ويفوز أول مسار مطابق.
تطابق المسارات الجزء المحلي من عنوان المستلم فقط. لا توجد مطابقة حسب المرسل أو الموضوع أو أي رأسية
أخرى: لا يمكن لمسار أن يُصفّي حسب from أو subject.
أنواع المطابقة
| نوع المطابقة | الوصف |
|---|---|
exact | يطابق الجزء المحلي النمط تمامًا |
prefix | يبدأ الجزء المحلي بالنمط |
suffix | ينتهي الجزء المحلي بالنمط |
contains | يحتوي الجزء المحلي على النمط |
plusaddressing | الجزء المحلي هو النمط متبوعًا بـ +أي شيء (يطابق support مع support+ticket123) |
catchall | يطابق كل مستلم؛ لا حاجة لنمط |
regex | يطابق الجزء المحلي النمط كتعبير نمطي (بحد أقصى 200 حرف، ومهلة ثانية واحدة) |
المطابقة غير حساسة لحالة الأحرف وتُجرى دائمًا على الجزء المحلي: يطابق كل من
[email protected] و[email protected] مسارًا بنمط support مقيدًا بنفس النطاق.
يتطلب نوع المطابقة regex خطة تدعم توجيه البريد الوارد بالتعبيرات النمطية (Pro وMax حاليًا، وليس
Free). إنشاء مسار بـ matchType: "regex"، أو تحديث مسار قائم بحيث يصبح نوع مطابقته regex، على
خطة لا تدعم ذلك يُعيد 400 PLAN_LIMIT_REACHED. المسار الذي يستخدم regex بالفعل يستمر في
المطابقة حتى لو خُفّضت خطة مساحة العمل لاحقًا، وتحريره دون تغيير نوع مطابقته لا يتأثر.
إجراءات المسار
حقل actions في المسار هو قائمة تحتوي على واحدة أو أكثر من القيم النصية التالية:
| الإجراء | الوصف |
|---|---|
store | تخزين البريد المُحلَّل لاسترجاعه عبر واجهة البرمجة ولوحة التحكم |
webhook | تسليم البريد المُحلَّل إلى ويب هوك (يتطلب webhookId) |
forward | إرسال نسخة من البريد إلى forwardToEmail عبر مسار الإرسال العادي |
reject | رفض الرسالة على مستوى SMTP باستخدام rejectStatus/rejectMessage |
drop | قبول الرسالة عبر SMTP ثم إسقاطها بصمت، بدون تخزين وبدون ويب هوك |
unsubscribe | معاملة العنوان كصندوق بريد لـ List-Unsubscribe؛ إجراء نهائي، انظر أدناه |
يمكن دمج store وwebhook مع بعضهما البعض ومع forward. أما reject وdrop وunsubscribe
فهي نهائية: يجب أن يكون كل منها الإجراء الوحيد في المسار؛ وترفض واجهة البرمجة أي طلب يجمع
بين أحدها وأي إجراء آخر.
النسخة المُعاد توجيهها لا تُرسل عبر تتابع SMTP خام، بل تمر عبر نفس مسار الإرسال الذي تمر به أي رسالة تراسلية أخرى، ولهذا السبب تحتاج إلى موافقة الوجهة (أدناه)، وتُحتسب ضمن حصة الإرسال لديك، وتظهر في سجل الرسائل الخاص بك مثل أي عملية إرسال أخرى.
وجهات إعادة التوجيه
قبل إعادة توجيه أي بريد إلى عنوان ما، يجب أن يوافق مالك ذلك العنوان: إلا إذا كان العنوان على أحد نطاقاتك الخاصة الموثّقة بالكامل للإرسال. بالنسبة لعنوان خارجي، لا توجد طريقة لتجاوز ذلك: فهذا يحمي مالك الوجهة من تلقّي بريد لم يوافق عليه أبدًا، ويحمي سمعة إرسالك من عنوان يرتد أو يُبلَّغ عنه كشكوى.
عند إنشاء أو تحديث مسار يحتوي على forward ضمن actions، يقوم MailLand تلقائيًا بما يلي:
- إنشاء سجل وجهة إعادة توجيه لـ
forwardToEmail(أو إعادة استخدام سجل موجود)، ضمن نطاق مستأجرك: يُتذكَّر العنوان نفسه عبر كل مسار يعيد التوجيه إليه. - إذا كان العنوان بحاجة إلى تأكيد ولم يُطلب منه ذلك من قبل، يرسل بريدًا إلكترونيًا للتأكيد يحتوي على رابط.
حفظ المسار نفسه ينجح دائمًا؛ فشل بريد التأكيد لا يُفشل حفظ المسار: تبقى الوجهة ببساطة pending
(لا يُعاد توجيه أي شيء إليها) إلى أن تعيد إرسال التأكيد.
رابط التأكيد
الرابط الموجود في بريد التأكيد صالح لمدة 7 أيام وهو للاستخدام مرة واحدة: بمجرد أن يؤكد
المستلم أو يرفض، فإن زيارة الرابط مرة أخرى تعرض القرار نفسه فقط، ولا يمكن التراجع عنه بزيارته
مجددًا. الرابط المنتهي الصلاحية الذي لم يُبتّ فيه يُعيد 410 Gone عند فتحه مرة أخرى.
- التأكيد: سيُرسَل الآن البريد المُعاد توجيهه من هذا المستأجر إلى العنوان.
- الرفض: نهائي. لن يُعاد توجيه أي شيء إلى العنوان من هذا المستأجر مرة أخرى أبدًا، ولا يمكن للمستأجر طلب التأكيد مجددًا له.
جلب وجهة إعادة توجيه
GET https://api.mail.land/v1/transactional/inbound/forward-destinations/{destinationId}{
"id": "f2k9m3q7p4w8x1",
"email": "[email protected]",
"status": "pending",
"confirmedVia": null,
"lastSentAt": "2026-09-26T10:00:00Z",
"confirmedAt": null,
"declinedAt": null
}القيمة status هي إحدى pending أو confirmed أو declined. القيمة confirmedVia تكون link
عندما يؤكد المالك عبر البريد الإلكتروني، أو verified_domain عندما يكون العنوان على أحد نطاقاتك
الخاصة الموثّقة للإرسال ولم يحتج إلى تأكيد، أو null في الحالات الأخرى. تحمل استجابة المسار أيضًا
نفس هذا الكائن ضمن forwardDestination (انظر استجابة المسار أدناه).
إعادة إرسال التأكيد
POST https://api.mail.land/v1/transactional/inbound/forward-destinations/{destinationId}/resendفقط لوجهة لا تزال pending وتحتاج فعليًا إلى رابط (عنوان على أحد نطاقات الإرسال الموثّقة الخاصة بك
يُعيد 409 FORWARD_DESTINATION_NO_CONFIRMATION_NEEDED، لأنه لا يوجد ما يُعاد إرساله). محدود
المعدل: بحد أقصى مرة كل 5 دقائق و5 مرات يوميًا لكل وجهة، و50 مرة يوميًا عبر المستأجر بأكمله. تجاوز
أي من الحدّين يُعيد 429 FORWARD_CONFIRMATION_RATE_LIMITED.
لا توجد طريقة للتراجع عن رفض وجهة عبر واجهة البرمجة بمجرد أن ترفض: يبقى العنوان المرفوض مرفوضًا بشكل دائم لذلك المستأجر.
إنشاء مسار
تنتمي المسارات إلى نطاق وتُنشأ ضمن ذلك النطاق.
POST https://api.mail.land/v1/transactional/inbound/domains/{domainId}/routes{
"name": "Support Inbox",
"matchType": "exact",
"matchPattern": "support",
"actions": ["store", "webhook"],
"webhookId": "w4k8m2q7p9x3z1",
"priority": 10
}| الحقل | النوع | مطلوب | الوصف |
|---|---|---|---|
name | string | نعم | اسم المسار |
matchType | string | نعم | أحد أنواع المطابقة أعلاه |
matchPattern | string | نعم | النمط لمطابقته مع الجزء المحلي (يُتجاهل مع catchall، بحد أقصى 64 حرفًا، و200 مع regex) |
actions | string[] | نعم | واحد أو أكثر من store، webhook، forward، reject، drop، unsubscribe |
webhookId | string | مشروط | المعرّف العام لويب هوك موجود مسبقًا؛ مطلوب عندما تتضمن actions قيمة webhook. لا تُنشئ المسارات ويب هوك مضمّنًا أبدًا، أنشئه أولاً من صفحة Webhooks |
forwardToEmail | string | مشروط | الوجهة لإجراء forward؛ مطلوب عندما تتضمن actions قيمة forward. يجب أن يكون عنوانًا مجردًا (بدون اسم عرض وبدون أقواس زاويّة). يجب أن يكون نطاق المسار نفسه موثّقًا بالكامل للإرسال، إذ تُرسَل النسخة المُعاد توجيهها منه، وإلا رُفض الطلب بالخطأ 400 FORWARD_DOMAIN_NOT_VERIFIED. يجب على الوجهة نفسها أن تؤكد بشكل منفصل، ما لم تكن على أحد نطاقاتك الخاصة الموثّقة للإرسال (انظر وجهات إعادة التوجيه) |
rejectStatus | string | لا | حالة SMTP لإجراء reject، مثل 550 أو 550 5.1.1 (الافتراضي 550 5.1.1) |
rejectMessage | string | لا | نص الرفض عبر SMTP لإجراء reject |
priority | int | لا | رقم أصغر = يُقيَّم أولاً. الافتراضي هو رقم أعلى بواحد من أعلى أولوية حالية في النطاق. يجب أن يكون فريدًا لكل نطاق |
curl -X POST https://api.mail.land/v1/transactional/inbound/domains/k3v9x2m8q1w7z4/routes \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
-H "Content-Type: application/json" \
-d '{
"name": "Support Inbox",
"matchType": "exact",
"matchPattern": "support",
"actions": ["store", "webhook"],
"webhookId": "w4k8m2q7p9x3z1",
"priority": 10
}'الاستجابة
{
"id": "r7k3m9q2p4w8x1",
"name": "Support Inbox",
"domainId": "k3v9x2m8q1w7z4",
"domainName": "yourdomain.com",
"priority": 10,
"isEnabled": true,
"matchType": "Exact",
"matchPattern": "support",
"actions": ["store", "webhook"],
"webhookId": "w4k8m2q7p9x3z1",
"webhookName": "Support Webhook",
"webhookUrl": "https://yourapp.com/webhooks/support",
"forwardToEmail": null,
"forwardDestination": null,
"rejectStatus": null,
"rejectMessage": null,
"createdAt": "2026-02-17T12:00:00Z",
"updatedAt": "2026-02-17T12:00:00Z"
}تقبل الطلبات matchType بأي حالة أحرف؛ أما الاستجابات فتُعيد دائمًا اسم التعداد بحرف كبير في البداية:
Exact، Prefix، Suffix، Contains، PlusAddressing، CatchAll، Regex. لا تقارن قيمة
matchType في الاستجابة بسلسلة أحرف صغيرة.
لا يُملأ forwardDestination إلا عندما تتضمن actions قيمة forward؛ ويحمل نفس الكائن الموصوف في
جلب وجهة إعادة توجيه:
{
"...": "...",
"actions": ["store", "forward"],
"forwardToEmail": "[email protected]",
"forwardDestination": {
"id": "f2k9m3q7p4w8x1",
"email": "[email protected]",
"status": "pending",
"confirmedVia": null,
"lastSentAt": "2026-09-26T10:00:00Z",
"confirmedAt": null,
"declinedAt": null
}
}إدراج مسارات نطاق
GET https://api.mail.land/v1/transactional/inbound/domains/{domainId}/routesيُرجع جميع مسارات النطاق، مرتبة حسب الأولوية (الأدنى أولاً).
curl https://api.mail.land/v1/transactional/inbound/domains/k3v9x2m8q1w7z4/routes \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."{
"items": [
{ "id": "r7k3m9q2p4w8x1", "name": "Support Inbox", "priority": 10, "isEnabled": true, "..." : "..." }
],
"totalCount": 1
}إدراج جميع المسارات
لإدراج المسارات عبر جميع نطاقات المستأجر، استخدم بدلاً من ذلك نقطة النهاية المُرقّمة بالمؤشر:
GET https://api.mail.land/v1/transactional/inbound/routes| المعامل | النوع | الافتراضي | الوصف |
|---|---|---|---|
cursor | string | - | مؤشر معتم من nextCursor الخاص بالصفحة السابقة. يُحذف في الصفحة الأولى |
limit | int | 50 | عدد العناصر في الصفحة |
الحصول على تفاصيل مسار
GET https://api.mail.land/v1/transactional/inbound/routes/{routeId}curl https://api.mail.land/v1/transactional/inbound/routes/r7k3m9q2p4w8x1 \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."تحديث مسار
PUT https://api.mail.land/v1/transactional/inbound/routes/{routeId}يطابق نص الطلب طلب الإنشاء، لكن كل حقل اختياري، تُحدَّث فقط الحقول التي ترسلها.
curl -X PUT https://api.mail.land/v1/transactional/inbound/routes/r7k3m9q2p4w8x1 \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
-H "Content-Type: application/json" \
-d '{
"matchPattern": "help",
"priority": 5
}'تبديل حالة مسار
يعكس قيمة isEnabled دون التأثير على أي حقل آخر. لا يوجد نص طلب.
POST https://api.mail.land/v1/transactional/inbound/routes/{routeId}/togglecurl -X POST https://api.mail.land/v1/transactional/inbound/routes/r7k3m9q2p4w8x1/toggle \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."إعادة ترتيب المسارات
حدِّث أولوية جميع مسارات نطاق دفعة واحدة، بتمرير معرّفات المسارات بالترتيب المطلوب: يصبح المعرّف الأول ذا أولوية 1، والثاني أولوية 2، وهكذا.
POST https://api.mail.land/v1/transactional/inbound/domains/{domainId}/routes/reorder{
"routeIds": ["r7k3m9q2p4w8x1", "m2p8w4x1k7q3z9", "x4k1p7m3q9w2z8"]
}curl -X POST https://api.mail.land/v1/transactional/inbound/domains/k3v9x2m8q1w7z4/routes/reorder \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
-H "Content-Type: application/json" \
-d '{
"routeIds": ["r7k3m9q2p4w8x1", "m2p8w4x1k7q3z9", "x4k1p7m3q9w2z8"]
}'اختبار مسار
تحقّق من المسار الذي سيطابق عنوان مستلم معيّن دون معالجة بريد فعلي.
POST https://api.mail.land/v1/transactional/inbound/domains/{domainId}/routes/test{
"emailAddress": "[email protected]"
}curl -X POST https://api.mail.land/v1/transactional/inbound/domains/k3v9x2m8q1w7z4/routes/test \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
-H "Content-Type: application/json" \
-d '{
"emailAddress": "[email protected]"
}'{
"matched": true,
"matchedRouteId": "r7k3m9q2p4w8x1",
"matchedRouteName": "Support Inbox",
"actions": ["store", "webhook"]
}إذا لم يطابق أي مسار، تكون الاستجابة 200 مع matched: false، وتكون matchedRouteId/matchedRouteName/actions جميعها null. أما 404 فيعني أن النطاق غير موجود، أو أن العنوان المُختبَر غير صالح (بلا @).
حذف مسار
DELETE https://api.mail.land/v1/transactional/inbound/routes/{routeId}curl -X DELETE https://api.mail.land/v1/transactional/inbound/routes/r7k3m9q2p4w8x1 \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."أمثلة مسارات
مسار شامل (catch-all): تخزين كل مستلم غير مطابق:
{
"name": "Catch All",
"matchType": "catchall",
"matchPattern": "*",
"actions": ["store"],
"priority": 999
}العنونة بالإضافة (plus-addressing): توجيه كل صيغ support+*@yourdomain.com إلى ويب هوك واحد:
{
"name": "Support Tickets",
"matchType": "plusaddressing",
"matchPattern": "support",
"actions": ["store", "webhook"],
"webhookId": "w4k8m2q7p9x3z1",
"priority": 5
}الرفض عبر SMTP: رفض البريد الموجه إلى صندوق متوقف قبل قبوله:
{
"name": "Retired Mailbox",
"matchType": "exact",
"matchPattern": "old-team",
"actions": ["reject"],
"rejectStatus": "550 5.1.1",
"rejectMessage": "Mailbox does not exist",
"priority": 1
}تُقيَّم المسارات بترتيب الأولوية (الرقم الأصغر أولاً). ضع المسارات المحددة عند أرقام أولوية أقل، والمسارات الشاملة عند أعلى رقم لتُنفَّذ أخيرًا.
شكل النسخة المُعاد توجيهها
النسخة المُعاد توجيهها هي رسالة تراسلية جديدة وعادية، وليست ترحيلًا خامًا للبايتات الأصلية، تُرسَل من نطاقك الموثّق حتى تتمكن من اجتياز DKIM وDMARC لدى مزوّد صندوق بريد الوجهة:
- From: بالصيغة
"<اسم المُرسِل الأصلي> via <العنوان المطابق>@<نطاقك>"، مثل"Jane Doe via [email protected]". أي اسم عرض يشبه عنوانًا (يحتوي على@أو<أو>) يُستبدل بالعنوان الأصلي المجرد، حتى لا تتمكن أي نسخة أبدًا من انتحال علامة تجارية تحت DKIM الخاص بك. - Reply-To: حقل
Reply-Toفي الرسالة الأصلية إن وُجد، وإلا عنوان المُرسِل الأصلي، حتى تصل الردود إلى الكاتب الحقيقي وليس إليك. - بدون تتبّع: يكون تتبّع الفتح والنقر مُعطّلاً دائمًا في النسخة المُعاد توجيهها، بغض النظر عن إعدادات التتبّع في مساحة عملك.
- بدون تذييل علامة تجارية: لا يُضاف أبدًا التذييل الذي قد تحمله عمليات الإرسال الأخرى في خطة Free.
- المرفقات: تُصفَّى وفق نفس قواعد الإرسال الصادر عبر واجهة البرمجة (النوع، العدد، الحجم الإجمالي). ما يُستبعد يُذكر في ملاحظة أعلى النسخة: "Forwarded without N attachment(s) that exceed the outbound attachment limits: ..."، تصل النسخة مع ذلك، لكن بدون تلك الأجزاء.
- الوسم: تحمل كل نسخة مُعاد توجيهها الوسم
inbound-forward، حتى تتمكن من العثور عليها في سجل رسائلك المعتاد؛ حالة تسليمها (queued، sent، delivered، bounced، إلخ) هي نفس الحالة التي تحصل عليها أي رسالة تراسلية أخرى، لأنها تمر عبر نفس خط التسليم. - الاستخدام: تُحتسب كل نسخة مُعاد توجيهها كعملية إرسال واحدة ضمن حصة خطتك وفوترتها، وتظهر كسطر "Inbound forward" منفصل في الاستخدام، منفصلًا عن عمليات الإرسال عبر واجهة البرمجة وSMTP والحملات والأتمتة.
ما لا يُعاد توجيهه أبدًا
الرسالة التي تطابق مسار forward لا تُعاد توجيهها، ولا تُفوتَر أبدًا، عندما:
- تُصنَّف كبريد مزعج، أو يكون المُرسِل محظورًا كمصدر بريد مزعج.
- تفشل في اجتياز DMARC بموجب السياسة الفعلية لنطاق المُرسِل، وتكون
quarantineأوreject، تُحدَّد هذه السياسة بالصعود من نطاق المُرسِل بحثًا عن أقرب سجل منطبق، بحيث تكون قيمةsp=الخاصة بالنطاق الفرعي أَولى منp=الخاصة بنطاقه التنظيمي، وتُعامَل سجلاتt=y(تجريبية) أوpct=0على أنها بمستوى سياسة أدنى، إذ ستؤدي إعادة توجيهها إلى إعادة توقيع رسالة طلب مُرسِلها صراحةً من المستلمين رفضها. - تتجاوز هي أو نص HTML/النص العادي فيها حدود الحجم الصادر للمنصة.
- ستؤدي إعادة توجيهها إلى حلقة: تكون الوجهة أحد مستلمي الرسالة نفسها، أو تحمل بالفعل عددًا كبيرًا
جدًا من القفزات أو ترويسات
Received.
النسخة المؤهلة التي يتعذّر إرسالها مؤقتًا (تأخير سياسة، نافذة حصة، انقطاع) تُعاد المحاولة مع تراجع تدريجي لمدة تصل إلى 24 ساعة، ثم تنتهي صلاحيتها دون إرسال. المسار الذي يُعطَّل أو يُحذف أو تتغيّر وجهته بعد استلام رسالة يوقف أيضًا أي نسخة لا تزال بانتظاره: تظل تهيئة المسار الحالية هي المرجع دائمًا.
التحقق من نتيجة إعادة التوجيه
كل رسالة واردة طابقت مسار forward تحمل مصفوفة forwards في استجابة تفاصيلها
(GET /v1/transactional/inbound/emails/{id}): عنصر واحد لكل وجهة كانت الرسالة في طابور إعادة التوجيه إليها،
لترى ما حدث فعليًا لا مجرد الوجهة التي تم ضبطها.
"forwards": [
{
"destination": "[email protected]",
"status": "Admitted",
"reason": null,
"omittedAttachmentCount": 0,
"messageId": "m_01hz3k...",
"createdAt": "2026-09-26T10:00:00Z",
"updatedAt": "2026-09-26T10:00:02Z"
}
]| الحقل | النوع | الوصف |
|---|---|---|
destination | نص | عنوان وجهة إعادة التوجيه |
status | نص | إحدى الحالات أدناه |
reason | نص | null | رمز تفصيل قابل للقراءة آليًا (مثل hop_limit)، أو null |
omittedAttachmentCount | رقم | المرفقات التي حُذفت من النسخة لتجاوزها حدود المرفقات الصادرة |
messageId | نص | null | معرّف رسالة النسخة المُعاد توجيهها بعد قبولها، وإلا null |
createdAt / updatedAt | نص | طوابع زمنية ISO-8601 لسجل إعادة التوجيه |
status تكون إحدى القيم التالية:
| الحالة | المعنى |
|---|---|
Pending | كُتبت مع الرسالة الواردة؛ لم يستلمها عامل إعادة التوجيه بعد |
Processing | استلمها عامل إعادة التوجيه؛ قيد التنفيذ |
Deferred | رفض مؤقت (تأخير سياسة، معدل، نافذة حصة، عطل)؛ تُعاد المحاولة بتراجع تدريجي حتى 24 ساعة |
Admitted | أُرسلت عبر خط الإرسال العادي: messageId يسمّي النسخة، وحالة تسليمها الخاصة (في الانتظار/أُرسلت/تم التسليم/ارتدت) هي المرجع |
SkippedLoop | حماية من الحلقات: حد القفزات، عدد كبير جدًا من رؤوس Received، أو أن الوجهة أحد مستلمي الرسالة نفسها |
SkippedSpam | صُنّفت الرسالة كبريد مزعج، أو المرسل مدرج في قائمة الحظر كبريد مزعج |
SkippedAuthFail | فشل DMARC بموجب السياسة الفعلية لنطاق المرسل (quarantine أو reject)، مع مراعاة sp= الخاصة بالنطاق الفرعي |
SkippedTooLarge | تتجاوز الرسالة حد حجم إعادة التوجيه الصادر |
RefusedSuppressed | الوجهة موقوفة، أو مرفوضة بواسطة حماية المستلم |
RefusedDomainNotVerified | نطاق المسار غير موثّق (أو لم يعد موثّقًا) للإرسال |
RefusedPolicy | رفض نهائي بسبب سياسة أو حساب |
RefusedRouteInactive | تم تعطيل المسار أو حذفه أو فقد إجراء forward أو تغيّرت وجهته بعد استلام الرسالة |
RefusedInvalid | تعذّر تحويل الرسالة المخزّنة إلى نسخة قابلة للإرسال |
Expired | ظلت Deferred عند إغلاق نافذة إعادة المحاولة البالغة 24 ساعة |
RefusedDestinationUnconfirmed | الوجهة لم تؤكد بعد (راجع وجهات إعادة التوجيه) |
RefusedDestinationDeclined | رفض مالك الوجهة؛ لن يُعاد توجيه أي شيء إليها أبدًا |
Pending وProcessing وDeferred هي الحالات غير النهائية الوحيدة، أي قيمة أخرى نهائية.
استجابات خطأ إعادة التوجيه
| الحالة | الرمز | الوصف |
|---|---|---|
400 | VALIDATION_FAILED (الحقل forwardToEmail) | عند الإنشاء: تتضمن actions قيمة forward لكن forwardToEmail فارغ |
400 | FORWARD_DESTINATION_REQUIRED | عند التحديث (PUT): المسار الفعّال الناتج يُعيد التوجيه لكن بلا forwardToEmail |
400 | FORWARD_DOMAIN_NOT_VERIFIED | نطاق المسار غير موثّق بالكامل للإرسال، لذا لا يمكن أبدًا إرسال نسخة مُعاد توجيهها منه |
404 | RESOURCE_NOT_FOUND | وجهة إعادة التوجيه غير موجودة |
409 | FORWARD_DESTINATION_NOT_PENDING | طُلبت إعادة الإرسال لوجهة سبق أن أكدت أو رفضت |
409 | FORWARD_DESTINATION_NO_CONFIRMATION_NEEDED | طُلبت إعادة الإرسال لوجهة على أحد نطاقات الإرسال الموثّقة الخاصة بك |
410 | FORWARD_CONFIRMATION_EXPIRED | انتهت صلاحية رابط التأكيد (7 أيام) دون البتّ فيه |
409 | FORWARD_CONFIRMATION_ALREADY_DECIDED | استُخدم الرابط للقرار الآخر |
429 | FORWARD_CONFIRMATION_RATE_LIMITED | طُلبت إعادة الإرسال مبكرًا جدًا، أو تم بلوغ الحد اليومي لإعادة الإرسال |
استجابات الخطأ
| الحالة | الرمز | الوصف |
|---|---|---|
400 | VALIDATION_FAILED | حقول مطلوبة مفقودة، أو matchType/actions غير صالحة، أو إجراء نهائي مدموج مع إجراء آخر |
400 | INVALID_REQUEST | يوجد بالفعل مسار بنفس priority لهذا النطاق، أو لم يُعثر على webhookId المُشار إليه |
400 | PLAN_LIMIT_REACHED | إنشاء مسار بـ matchType: "regex"، أو تحديث مسار بحيث يصبح نوع مطابقته regex، على خطة لا تدعم مسارات regex (Free حاليًا) |
403 | FORBIDDEN | صلاحيات غير كافية |
404 | RESOURCE_NOT_FOUND | النطاق أو المسار غير موجود (نقطة نهاية الاختبار: أيضًا عنوان غير صالح بلا @؛ عدم التطابق يُرجع 200 مع matched: false، وليس 404) |
الخطوات التالية
- Inbound Overview: كيفية عمل معالجة البريد الوارد
- Inbound Webhooks: تنسيق حمولة ويب هوك وتسليمها
- Domains: إعداد سجلات MX للبريد الوارد