MailLandDocs
ایمیل ورودی

مسیرهای ورودی

پیکربندی قوانین مسیریابی برای هدایت ایمیل‌های دریافتی به ذخیره‌سازی، وب‌هوک یا سایر اقدامات

مسیرها تعیین می‌کنند که MailLand چگونه ایمیل‌های دریافتی یک دامنه را پردازش می‌کند. هر مسیر با بخش محلی گیرنده (بخشی از آدرس پیش از @) تطبیق داده می‌شود و یک یا چند اقدام را اجرا می‌کند: ذخیره‌سازی، تحویل به وب‌هوک، ارسال به جلو، رد در سطح SMTP، یا حذف. مسیرها به ترتیب اولویت (عدد کوچک‌تر ابتدا) ارزیابی می‌شوند و اولین مسیر تطبیق‌یافته برنده می‌شود.

مسیرها فقط با بخش محلی آدرس گیرنده تطبیق داده می‌شوند. هیچ تطبیقی بر اساس فرستنده، موضوع یا سایر سرصفحه‌ها وجود ندارد: یک مسیر نمی‌تواند بر اساس from یا subject فیلتر کند.

انواع تطبیق

نوع تطبیقتوضیحات
exactبخش محلی دقیقاً با الگو برابر است
prefixبخش محلی با الگو شروع می‌شود
suffixبخش محلی با الگو پایان می‌یابد
containsبخش محلی شامل الگو است
plusaddressingبخش محلی، الگو به‌همراه +هر چیزی است (support با support+ticket123 تطبیق دارد)
catchallبا هر گیرنده‌ای تطبیق دارد؛ نیازی به الگو نیست
regexبخش محلی با الگو به‌صورت عبارت باقاعده تطبیق دارد (حداکثر ۲۰۰ کاراکتر، مهلت ۱ ثانیه)

تطبیق به بزرگی و کوچکی حروف حساس نیست و همیشه روی بخش محلی انجام می‌شود: هر دوی [email protected] و [email protected] با مسیری با الگوی support که به همان دامنه محدود شده، تطبیق دارند.

نوع تطبیق regex به پلنی نیاز دارد که مسیریابی ورودی مبتنی‌بر عبارت باقاعده را پشتیبانی کند (امروز Pro و Max، نه Free). ایجاد مسیری با matchType: "regex" یا به‌روزرسانی مسیری موجود به‌گونه‌ای که نوع تطبیق آن به regex تغییر کند، در پلنی که این قابلیت را ندارد، خطای 400 PLAN_LIMIT_REACHED برمی‌گرداند. مسیری که از پیش regex است حتی پس از تنزل پلن فضای کاری همچنان تطبیق می‌یابد، و ویرایش آن بدون تغییر نوع تطبیق تحت تأثیر قرار نمی‌گیرد.

اقدامات مسیر

فیلد actions یک مسیر، فهرستی از یک یا چند مقدار رشته‌ای زیر است:

اقدامتوضیحات
storeذخیره ایمیل پردازش‌شده برای بازیابی از طریق API و داشبورد
webhookتحویل ایمیل پردازش‌شده به یک وب‌هوک (نیازمند webhookId)
forwardارسال یک نسخه از ایمیل به forwardToEmail، از همان مسیر عادی ارسال
rejectرد پیام در سطح SMTP با rejectStatus/rejectMessage
dropپذیرش پیام از طریق SMTP و سپس حذف بی‌سروصدای آن، بدون ذخیره‌سازی، بدون وب‌هوک
unsubscribeرفتار با آدرس به‌عنوان صندوق List-Unsubscribe؛ پایانی است، به ادامه مراجعه کنید

store و webhook می‌توانند با یکدیگر و با forward ترکیب شوند. اما reject، drop و unsubscribe پایانی هستند: هر یک باید تنها اقدام مسیر باشد؛ API درخواستی را که یکی از این‌ها را با اقدام دیگری ترکیب کند، رد می‌کند.

نسخهٔ فوروارد‌شده از طریق رله خام SMTP ارسال نمی‌شود، بلکه از همان مسیر ارسالی عبور می‌کند که هر ایمیل تراکنشی دیگر از آن می‌گذرد؛ به همین دلیل به رضایت مقصد نیاز دارد (در ادامه)، در سهمیهٔ ارسال شما محاسبه می‌شود و در گزارش پیام‌های شما مانند هر ارسال دیگری نمایش داده می‌شود.

مقصدهای فوروارد

پیش از آنکه هیچ ایمیلی به یک آدرس فوروارد شود، مالک آن آدرس باید آن را تأیید کند: مگر اینکه آدرس روی یکی از دامنه‌های خودتان باشد که به‌طور کامل برای ارسال تأیید شده است. برای یک آدرس بیرونی راهی برای دور زدن این قاعده وجود ندارد: این کار مالک مقصد را از دریافت ایمیلی که هرگز به آن رضایت نداده محافظت می‌کند و اعتبار ارسال شما را در برابر آدرسی که برگشت می‌خورد یا شکایت می‌کند حفظ می‌کند.

هنگام ایجاد یا به‌روزرسانی مسیری با forward در actions، MailLand به‌طور خودکار:

۱. یک رکورد مقصد فوروارد برای forwardToEmail می‌سازد (یا از رکورد موجود استفاده می‌کند)، مختص مستأجر شما: همان آدرس در تمام مسیرهایی که به آن فوروارد می‌کنند به‌خاطر سپرده می‌شود.

۲. اگر آدرس نیاز به تأیید داشته باشد و پیش‌تر از آن درخواست نشده باشد، یک ایمیل تأیید حاوی لینک ارسال می‌کند.

ذخیرهٔ خود مسیر همیشه موفق می‌شود؛ شکست ایمیل تأیید باعث شکست ذخیرهٔ مسیر نمی‌شود: مقصد فقط pending باقی می‌ماند (چیزی به آن فوروارد نمی‌شود) تا زمانی که تأیید را دوباره ارسال کنید.

لینک تأیید

لینک درون ایمیل تأیید ۷ روز اعتبار دارد و یک‌بارمصرف است: به‌محض اینکه گیرنده تأیید یا رد کند، بازدید مجدد از لینک فقط همان تصمیم را نشان می‌دهد، با بازدید دوباره قابل بازگشت نیست. لینکی که منقضی شده و هرگز تصمیمی برایش گرفته نشده، در صورت باز شدن دوباره 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 برمی‌گرداند، زیرا چیزی برای ارسال دوباره وجود ندارد). دارای محدودیت نرخ: حداکثر یک‌بار در هر ۵ دقیقه و ۵ بار در روز برای هر مقصد، و ۵۰ بار در روز برای کل مستأجر. عبور از هر یک از این محدودیت‌ها مقدار 429 FORWARD_CONFIRMATION_RATE_LIMITED برمی‌گرداند.

هیچ راهی برای لغو رد یک مقصد از طریق API وجود ندارد؛ پس از آنکه مقصدی رد شد، آن آدرس برای آن مستأجر برای همیشه رد شده باقی می‌ماند.

ایجاد یک مسیر

مسیرها به یک دامنه تعلق دارند و زیر همان دامنه ایجاد می‌شوند.

POST https://api.mail.land/v1/transactional/inbound/domains/{domainId}/routes
Create route request
{
  "name": "Support Inbox",
  "matchType": "exact",
  "matchPattern": "support",
  "actions": ["store", "webhook"],
  "webhookId": "w4k8m2q7p9x3z1",
  "priority": 10
}
فیلدنوعالزامیتوضیحات
namestringبلهنام مسیر
matchTypestringبلهیکی از انواع تطبیق بالا
matchPatternstringبلهالگو برای تطبیق با بخش محلی (برای catchall نادیده گرفته می‌شود، حداکثر ۶۴ کاراکتر، برای regex حداکثر ۲۰۰)
actionsstring[]بلهیک یا چند مورد از store، webhook، forward، reject، drop، unsubscribe
webhookIdstringمشروطشناسهٔ عمومی یک وب‌هوک موجود؛ زمانی که actions شامل webhook باشد الزامی است. مسیرها هرگز وب‌هوک را درون‌خطی ایجاد نمی‌کنند: ابتدا آن را در صفحهٔ Webhooks بسازید
forwardToEmailstringمشروطمقصد برای forward؛ وقتی actions شامل forward باشد الزامی است. باید آدرسی خالص باشد (بدون نام نمایشی، بدون علامت‌های زاویه‌ای). دامنهٔ خودِ مسیر باید به‌طور کامل برای ارسال تأیید شده باشد، چون نسخهٔ فوروارد‌شده از آن ارسال می‌شود، وگرنه درخواست با خطای 400 FORWARD_DOMAIN_NOT_VERIFIED رد می‌شود. خودِ مقصد نیز باید جداگانه تأیید کند، مگر اینکه روی یکی از دامنه‌های خودتان که برای ارسال تأیید شده باشد قرار داشته باشد (به مقصدهای فوروارد مراجعه کنید)
rejectStatusstringخیروضعیت SMTP برای reject، مانند 550 یا 550 5.1.1 (پیش‌فرض 550 5.1.1)
rejectMessagestringخیرمتن رد SMTP برای reject
priorityintخیرعدد کوچک‌تر = زودتر ارزیابی می‌شود. پیش‌فرض یک واحد بیشتر از بالاترین اولویت فعلی دامنه است. باید برای هر دامنه یکتا باشد
Create an inbound route
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
  }'

پاسخ

Route response
{
  "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 را با هر حروف‌بزرگ‌وکوچکی می‌پذیرند؛ اما پاسخ‌ها همیشه نام enum را با حرف بزرگ ابتدایی برمی‌گردانند: 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

همهٔ مسیرهای دامنه را، به‌ترتیب اولویت (کوچک‌ترین ابتدا)، بازمی‌گرداند.

List routes for a domain
curl https://api.mail.land/v1/transactional/inbound/domains/k3v9x2m8q1w7z4/routes \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
Route list response
{
  "items": [
    { "id": "r7k3m9q2p4w8x1", "name": "Support Inbox", "priority": 10, "isEnabled": true, "..." : "..." }
  ],
  "totalCount": 1
}

فهرست همهٔ مسیرها

برای فهرست مسیرها در همهٔ دامنه‌های یک تننت، در عوض از نقطهٔ پایانی صفحه‌بندی‌شده با نشانگر استفاده کنید:

GET https://api.mail.land/v1/transactional/inbound/routes
پارامترنوعپیش‌فرضتوضیحات
cursorstring-نشانگر مبهم از nextCursor صفحهٔ قبلی. برای صفحهٔ اول حذف شود
limitint۵۰تعداد آیتم در هر صفحه

دریافت جزئیات یک مسیر

GET https://api.mail.land/v1/transactional/inbound/routes/{routeId}
Get route details
curl https://api.mail.land/v1/transactional/inbound/routes/r7k3m9q2p4w8x1 \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."

به‌روزرسانی یک مسیر

PUT https://api.mail.land/v1/transactional/inbound/routes/{routeId}

بدنهٔ درخواست مانند درخواست ایجاد است، اما هر فیلد اختیاری است: فقط فیلدهایی که ارسال می‌کنید به‌روزرسانی می‌شوند.

Update an inbound route
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}/toggle
Toggle a route
curl -X POST https://api.mail.land/v1/transactional/inbound/routes/r7k3m9q2p4w8x1/toggle \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."

تغییر ترتیب مسیرها

اولویت همهٔ مسیرهای یک دامنه را یکجا به‌روزرسانی کنید، با ارسال شناسه‌های مسیر به ترتیب دلخواه: اولین شناسه اولویت ۱، دومی اولویت ۲ می‌شود و به همین ترتیب ادامه می‌یابد.

POST https://api.mail.land/v1/transactional/inbound/domains/{domainId}/routes/reorder
Reorder routes request
{
  "routeIds": ["r7k3m9q2p4w8x1", "m2p8w4x1k7q3z9", "x4k1p7m3q9w2z8"]
}
Reorder routes
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
Test route request
{
  "emailAddress": "[email protected]"
}
Test a route
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]"
  }'
Test route response: match found
{
  "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}
Delete a route
curl -X DELETE https://api.mail.land/v1/transactional/inbound/routes/r7k3m9q2p4w8x1 \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."

نمونه مسیرها

مسیر همه‌شمول (catch-all): ذخیرهٔ هر گیرندهٔ تطبیق‌نیافته:

Catch-all route
{
  "name": "Catch All",
  "matchType": "catchall",
  "matchPattern": "*",
  "actions": ["store"],
  "priority": 999
}

آدرس‌دهی با علامت جمع (plus-addressing): هدایت همهٔ انواع support+*@yourdomain.com به یک وب‌هوک:

Plus-addressing route
{
  "name": "Support Tickets",
  "matchType": "plusaddressing",
  "matchPattern": "support",
  "actions": ["store", "webhook"],
  "webhookId": "w4k8m2q7p9x3z1",
  "priority": 5
}

رد در SMTP: رد ایمیل ارسالی به صندوقی بازنشسته، پیش از پذیرش آن:

Reject route
{
  "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 داشته باشد همان، وگرنه آدرس فرستندهٔ اصلی، تا پاسخ‌ها به نویسندهٔ واقعی برسد، نه به شما.
  • بدون ردیابی: ردیابی بازشدن و کلیک در نسخهٔ فوروارد‌شده همیشه خاموش است، صرف‌نظر از تنظیمات ردیابی فضای کاری شما.
  • بدون پانوشت برند: پانوشتی که ممکن است سایر ارسال‌ها در پلن رایگان داشته باشند هرگز افزوده نمی‌شود.
  • پیوست‌ها: با همان قواعد یک ارسال بیرونی از طریق API فیلتر می‌شوند (نوع، تعداد، حجم کل). هرچه کنار گذاشته شود در یادداشتی در بالای نسخه ذکر می‌شود: "Forwarded without N attachment(s) that exceed the outbound attachment limits: ..."، نسخه در هر صورت می‌رسد، فقط بدون آن بخش‌ها.
  • برچسب: هر نسخهٔ فوروارد‌شده برچسب inbound-forward را دارد تا بتوانید آن‌ها را در گزارش عادی پیام‌های خود پیدا کنید؛ وضعیت تحویل آن (queued، sent، delivered، bounced و غیره) همان وضعیتی است که هر ارسال تراکنشی دیگر می‌گیرد، چون از همان مسیر تحویل عبور می‌کند.
  • مصرف: هر نسخهٔ فوروارد‌شده به‌عنوان یک ارسال در سهمیه و صورت‌حساب پلن شما محاسبه می‌شود و به‌صورت یک ردیف جداگانهٔ «Inbound forward» در مصرف نمایش داده می‌شود، جدا از ارسال‌های API، SMTP، کمپین و اتوماسیون.

چه چیزی هرگز فوروارد نمی‌شود

پیامی که با یک مسیر forward تطبیق دارد، در موارد زیر فوروارد نمی‌شود و هرگز فاکتور نمی‌شود:

  • به‌عنوان اسپم علامت‌گذاری شده باشد، یا فرستنده به‌عنوان اسپم بلاک‌لیست شده باشد.
  • در DMARC، بر پایهٔ سیاست مؤثر دامنهٔ فرستنده که quarantine یا reject است، رد شود؛ این سیاست با بالا رفتن از دامنهٔ فرستنده و یافتن نزدیک‌ترین رکورد قابل‌اعمال تعیین می‌شود، به‌طوری‌که sp= دامنهٔ فرعی بر p= دامنهٔ سازمانی آن اولویت دارد و رکورد t=y (آزمایشی) یا pct=0 یک سطح پایین‌تر از سیاست در نظر گرفته می‌شود؛ چون فورواردکردن آن به معنای امضای دوبارهٔ پیامی است که فرستنده‌اش صراحتاً از گیرندگان خواسته آن را رد کنند.
  • خودِ آن یا بدنهٔ HTML/متنی‌اش از حدود حجم خروجی پلتفرم فراتر رود.
  • فورواردکردن آن یک حلقه ایجاد کند: مقصد یکی از گیرندگان خودِ پیام باشد، یا پیام از پیش تعداد زیادی hop یا هدر Received داشته باشد.

نسخه‌ای که واجد شرایط است اما موقتاً قابل ارسال نیست (تأخیر یک سیاست، پنجرهٔ سهمیه، یک قطعی)، تا سقف ۲۴ ساعت با backoff دوباره تلاش می‌شود و سپس بدون ارسال منقضی می‌شود. مسیری که غیرفعال یا حذف شود، یا مقصدش پس از دریافت یک پیام تغییر کند، هر نسخهٔ همچنان منتظر را نیز متوقف می‌کند: پیکربندی فعلی مسیر همیشه مرجع است.

بررسی نتیجهٔ یک فوروارد

هر ایمیل واردی که با یک مسیر forward مطابقت داشته باشد، یک آرایهٔ forwards در پاسخ جزئیات آن (GET /v1/transactional/inbound/emails/{id}) دارد: یک مورد برای هر مقصدی که پیام برای فوروارد به آن در صف قرار گرفته، تا ببینید واقعاً چه اتفاقی افتاده، نه فقط جایی که پیکربندی شده بود.

forwards در یک ایمیل واردی
"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یک رد موقت (تأخیر سیاست، نرخ، پنجرهٔ سهمیه، قطعی)؛ با backoff تا ۲۴ ساعت دوباره تلاش می‌شود
Admittedاز طریق خط ارسال معمول ارسال شده: messageId نسخه را مشخص می‌کند و وضعیت تحویل خودِ آن (در صف/ارسال‌شده/تحویل‌شده/برگشتی) مرجع است
SkippedLoopمحافظت در برابر حلقه: محدودیت hop، تعداد زیاد هدر Received، یا مقصد یکی از گیرندگان خودِ پیام است
SkippedSpamپیام به عنوان اسپم علامت‌گذاری شده، یا فرستنده در فهرست مسدود به عنوان اسپم است
SkippedAuthFailDMARC بر پایهٔ سیاست مؤثر دامنهٔ فرستنده شکست خورده (quarantine یا reject، با رعایت sp= دامنهٔ فرعی)
SkippedTooLargeپیام از سقف اندازهٔ فوروارد خروجی فراتر رفته
RefusedSuppressedمقصد سرکوب شده، یا توسط محافظت گیرنده رد شده
RefusedDomainNotVerifiedدامنهٔ مسیر برای ارسال تأیید نشده (یا دیگر تأیید نیست)
RefusedPolicyیک رد نهایی سیاستی یا حسابی
RefusedRouteInactiveمسیر غیرفعال شده، حذف شده، عمل forward را از دست داده، یا پس از دریافت پیام مقصدش تغییر کرده
RefusedInvalidپیام ذخیره‌شده نتوانست به نسخه‌ای قابل‌ارسال تبدیل شود
Expiredهنگام بسته شدن پنجرهٔ تلاش مجدد ۲۴ ساعته هنوز Deferred بود
RefusedDestinationUnconfirmedمقصد هنوز تأیید نکرده (به مقصدهای فوروارد مراجعه کنید)
RefusedDestinationDeclinedمالک مقصد رد کرده؛ هرگز چیزی به آن نشانی فوروارد نمی‌شود

Pending، Processing و Deferred تنها وضعیت‌های غیرنهایی هستند، هر مقدار دیگری نهایی است.

پاسخ‌های خطای فوروارد

وضعیتکدتوضیحات
400VALIDATION_FAILED (فیلد forwardToEmail)هنگام ایجاد: actions شامل forward است اما forwardToEmail خالی است
400FORWARD_DESTINATION_REQUIREDهنگام به‌روزرسانی (PUT): مسیر مؤثر نهایی فوروارد می‌کند اما forwardToEmail ندارد
400FORWARD_DOMAIN_NOT_VERIFIEDدامنهٔ مسیر به‌طور کامل برای ارسال تأیید نشده، بنابراین هرگز نمی‌توان نسخهٔ فوروارد‌شده‌ای از آن ارسال کرد
404RESOURCE_NOT_FOUNDمقصد فوروارد پیدا نشد
409FORWARD_DESTINATION_NOT_PENDINGدرخواست ارسال دوباره برای مقصدی که پیش‌تر تأیید یا رد کرده
409FORWARD_DESTINATION_NO_CONFIRMATION_NEEDEDدرخواست ارسال دوباره برای مقصدی روی یکی از دامنه‌های ارسال تأیید‌شدهٔ خودتان
410FORWARD_CONFIRMATION_EXPIREDلینک تأیید در حالی که هنوز تصمیمی نگرفته بود منقضی شد (۷ روز)
409FORWARD_CONFIRMATION_ALREADY_DECIDEDلینک برای تصمیم دیگر استفاده شده بود
429FORWARD_CONFIRMATION_RATE_LIMITEDدرخواست ارسال دوباره خیلی زود انجام شد، یا سقف روزانهٔ ارسال دوباره رسیده است

پاسخ‌های خطا

وضعیتکدتوضیحات
400VALIDATION_FAILEDفیلدهای الزامی مفقود، matchType/actions نامعتبر، یا ترکیب یک اقدام پایانی با اقدامی دیگر
400INVALID_REQUESTمسیری با همین priority از قبل برای این دامنه وجود دارد، یا webhookId ارجاع‌شده یافت نشد
400PLAN_LIMIT_REACHEDایجاد مسیری با matchType: "regex"، یا به‌روزرسانی مسیری به‌گونه‌ای که نوع تطبیق آن به regex تغییر کند، در پلنی که از مسیرهای regex پشتیبانی نمی‌کند (امروز Free)
403FORBIDDENمجوزهای ناکافی
404RESOURCE_NOT_FOUNDدامنه یا مسیر یافت نشد (نقطهٔ پایانی آزمایش: همچنین آدرس نامعتبر بدون @؛ عدم تطبیق یعنی 200 با matched: false، نه 404)

گام‌های بعدی

  • Inbound Overview: نحوهٔ کار پردازش ایمیل ورودی
  • Inbound Webhooks: قالب و تحویل بار وب‌هوک
  • Domains: پیکربندی رکوردهای MX برای ایمیل ورودی

در این صفحه