MailLandDocs
ایمیل ورودی

نمای کلی ایمیل ورودی

دریافت و پردازش ایمیل‌های ورودی با گیت‌وی ورودی Mail.Land

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

نحوهٔ کار

دامنهٔ خود را پیکربندی کنید

رکوردهای MX دامنهٔ خود را به سرورهای ورودی MailLand اشاره دهید. دامنه به inboundEnabled و یک تننت فعال نیاز دارد. MailLand ایمیل را فقط برای گیرنده‌ای که با یک مسیر فعال مطابقت دارد می‌پذیرد، یا در صورت روشن‌بودن catchAllEnabled برای هر آدرسی؛ در غیر این صورت در مرحلهٔ RCPT رد می‌شود.

قواعد مسیردهی بسازید

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

دریافت ایمیل‌های تجزیه‌شده

MailLand ایمیل را پردازش می‌کند؛ هدرها، بدنه و پیوست‌ها را تجزیه می‌کند و نتیجه را به نقطهٔ پایانی وب‌هوک شما تحویل می‌دهد یا برای دریافت از طریق API ذخیره می‌کند.

تنظیمات ایمیل ورودی

تنظیمات به‌ازای هر دامنه است، نه در سطح کل ورک‌اسپیس:

GET https://api.mail.land/v1/transactional/inbound/domains/{domainId}/settings
PUT https://api.mail.land/v1/transactional/inbound/domains/{domainId}/settings

با Authorization: Bearer <token> یا X-API-Key: <api key> احراز هویت کنید.

Get inbound settings
curl https://api.mail.land/v1/transactional/inbound/domains/k3v9x2m8q1w7z4/settings \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
Inbound settings response
{
  "isEnabled": true,
  "catchAllEnabled": true,
  "maxMessageSizeBytes": 26214400,
  "retentionDays": 30,
  "dailyLimit": 10000,
  "storeEmails": true
}

به‌روزرسانی تنظیمات:

PUT https://api.mail.land/v1/transactional/inbound/domains/k3v9x2m8q1w7z4/settings
Update settings request
{
  "isEnabled": true,
  "catchAllEnabled": true,
  "maxMessageSizeBytes": 26214400,
  "retentionDays": 30,
  "dailyLimit": 10000,
  "storeEmails": true
}
Update inbound settings
curl -X PUT https://api.mail.land/v1/transactional/inbound/domains/k3v9x2m8q1w7z4/settings \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
  -H "Content-Type: application/json" \
  -d '{
    "isEnabled": true,
    "catchAllEnabled": true,
    "maxMessageSizeBytes": 26214400,
    "retentionDays": 30,
    "dailyLimit": 10000,
    "storeEmails": true
  }'
فیلدنوعتوضیح
isEnabledboolفعال یا غیرفعال‌کردن پردازش ایمیل ورودی برای این دامنه
catchAllEnabledboolپذیرش ایمیل برای هر گیرنده‌ای در دامنه، نه فقط گیرندگانی که با یک مسیر فعال مطابقت دارند
maxMessageSizeBytesintحداکثر حجم پیام مجاز برای این دامنه بر حسب بایت، که با کد SMTP ‎552 5.3.4‎ اعمال می‌شود. رابط تنظیمات مقادیر تا ۵۰ مبی‌بایت را می‌پذیرد، اما پلتفرم صرف‌نظر از این تنظیم هرگز بیش از ۲۵ مبی‌بایت را نمی‌پذیرد
dailyLimitintحداکثر پیام‌های ورودی پذیرفته‌شده در روز برای این دامنه
retentionDaysintتعداد روزهای نگهداری ایمیل‌های ذخیره‌شده. پیش‌فرض ۳۰ روز، مجاز از ۱ تا ۹۰
storeEmailsboolاینکه آیا ایمیل تجزیه‌شدهٔ کامل برای دریافت بعدی ذخیره شود یا نه
routeCountintتعداد مسیرهای پیکربندی‌شده برای این دامنه

هیچ اسکن ویروسی وجود ندارد، و هیچ webhookUrl/webhookSecret واحدی در سطح ورک‌اسپیس وجود ندارد؛ وب‌هوک‌ها به‌ازای هر مسیر از طریق webhookId متصل می‌شوند (به مسیرها مراجعه کنید).

maxMessageSizeBytes، dailyLimit و retentionDays واقعاً اعمال می‌شوند. ایمیل در آدرس ‎<inboundSubdomain>.<domain>‎، همان میزبانی که رکورد MX به آن اشاره می‌کند، دریافت می‌شود و دامنهٔ ریشه هم همچنان دریافت‌کننده است. پیامی که از maxMessageSizeBytes تعیین‌شده برای دامنه بیشتر باشد، با کد SMTP ‎552 5.3.4‎ رد می‌شود و حتی با تنظیم مقداری بزرگ‌تر، هرگز از سقف پلتفرم یعنی ۲۵ مبی‌بایت فراتر نمی‌رود (رابط تنظیمات تا ۵۰ مبی‌بایت را می‌پذیرد، اما فقط ۲۵ مبی‌بایت اعمال می‌شود). به‌محض رسیدن به dailyLimit (پیش‌فرض ۱۰٬۰۰۰) در طول روز، فرستنده‌ها یک پاسخ موقت 452 4.2.2 دریافت می‌کنند و باید بعداً دوباره تلاش کنند؛ ایمیل از بین نمی‌رود. پیام‌های ذخیره‌شده پس از سپری‌شدن retentionDays (پیش‌فرض ۳۰ روز، بازهٔ مجاز ۱ تا ۹۰ روز) حذف می‌شوند.

وضعیت‌های ایمیل

به‌صورت رشتهٔ متنی بازگردانده می‌شود، نه عدد:

وضعیتتوضیح
Receivedایمیل دریافت شده، در انتظار پردازش
Processingدر حال پردازش (تجزیه، بررسی اسپم، مسیردهی)
Processedپردازش شده و عملیات آن کامل شده است
Deliveredبا موفقیت تحویل داده شده (فوروارد یا ارسال وب‌هوک)
Failedپردازش ناموفق بود
Expiredدورهٔ نگهداری سپری شده؛ ایمیل حذف شده است

وضعیت جداگانه‌ای به‌نام Quarantined وجود ندارد؛ اسپم یک پرچم بولی isSpam روی ایمیل است، مستقل از status.

فهرست ایمیل‌های ورودی

GET https://api.mail.land/v1/transactional/inbound/emails
List inbound emails
curl https://api.mail.land/v1/transactional/inbound/emails \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
پارامترنوعپیش‌فرضتوضیح
cursorstring-مکان‌نمای مبهم از nextCursor صفحهٔ قبلی. برای صفحهٔ اول حذف شود.
limitint20تعداد آیتم در هر صفحه (حداکثر ۱۰۰)، به‌جای رد‌شدن محدود می‌شود
domainIdstring-فیلتر بر اساس شناسهٔ عمومی دامنه
statusstring-فیلتر بر اساس وضعیت ایمیل (Received، Processing، Processed، Delivered، Failed، Expired)
routeIdstring-فیلتر بر اساس مسیر مطابقت‌یافته
isSpambool-فیلتر بر اساس پرچم اسپم. مشخص‌کردن isSpam (چه true چه false) خودش بُعد اسپم را تعیین می‌کند و فیلتر پیش‌فرض excludeQuarantined را غیرفعال می‌سازد؛ در نتیجه isSpam=true ردیف‌های اسپم را برمی‌گرداند (همچنان تابع قانون «فقط ذخیره‌شده‌ها» در پایین است). برای حفظ رفتار پیش‌فرض صندوق ورودی که اسپم را پنهان می‌کند، isSpam را ارسال نکنید.
fromdatetime-ایمیل‌های دریافت‌شده پس از این زمان
todatetime-ایمیل‌های دریافت‌شده پیش از این زمان
searchstring-جست‌وجو در موضوع و فرستنده (آدرس یا نام)؛ با گیرنده مطابقت داده نمی‌شود
sortBystring-فیلد مرتب‌سازی: subject، from، یا پیش‌فرض receivedAt
sortDescbooltrueمرتب‌سازی نزولی
excludeQuarantinedbooltrueحذف ایمیل‌های علامت‌خورده به‌عنوان اسپم از فهرست. در صورت مشخص‌شدن isSpam نادیده گرفته می‌شود.
includeWebhookOnlyboolfalseافزودن ایمیل‌هایی که هنگام دریافت ذخیره نشده‌اند (مسیرهای فقط‌وب‌هوک یا حذفی) به فهرست. این‌ها به‌طور پیش‌فرض پنهان‌اند، پس مستأجری که همهٔ مسیرهایش فقط‌وب‌هوک است، اینجا فهرستی خالی می‌بیند.

جست‌وجوی صرفاً بر اساس subject وجود ندارد، فیلتر مستقل آدرس فرستنده یا گیرنده هم وجود ندارد، و from/to در اینجا تاریخ هستند نه آدرس (برای تطبیق متنی فرستنده/موضوع از search استفاده کنید).

Inbound emails list response
{
  "items": [
    {
      "id": "k7m2x9q4p1w8z3",
      "domainId": "k3v9x2m8q1w7z4",
      "domainName": "yourdomain.com",
      "matchedRouteId": "r7k3m9q2p4w8x1",
      "matchedRouteName": "Support inbox",
      "fromAddress": "[email protected]",
      "fromName": "Customer Name",
      "subject": "Need help with my account",
      "textPreview": "Hi, I need help with...",
      "hasHtml": true,
      "hasText": true,
      "attachmentCount": 1,
      "sizeBytes": 45230,
      "status": "Delivered",
      "spfResult": "Pass",
      "dkimResult": "Pass",
      "dmarcResult": "Pass",
      "isSpam": false,
      "spamScore": 1.2,
      "receivedAt": "2026-02-17T14:30:00Z",
      "expiresAt": "2026-03-19T14:30:00Z"
    }
  ],
  "nextCursor": "eyJ2IjoxLCJzIjoiY3JlYXRlZGF0OmRlc2MiLCJrIjoi...",
  "hasMore": true
}

فیلد to روی آیتم فهرست وجود ندارد؛ گیرنده‌ها در پاسخ جزئیات، در envelopeRecipients/headerRecipients قرار دارند. status رشتهٔ متنی است، نه عدد.

دریافت جزئیات ایمیل

GET https://api.mail.land/v1/transactional/inbound/emails/{id}
Get email details
curl https://api.mail.land/v1/transactional/inbound/emails/{id} \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."

ابرداده، هدرها، یک پیش‌نمایش متنی و ابردادهٔ پیوست‌های ایمیل تجزیه‌شده را برمی‌گرداند؛ نه بدنهٔ کامل HTML یا متن. برای آن، پیام خام را دریافت کنید (به ادامه مراجعه کنید).

Inbound email detail response
{
  "id": "k7m2x9q4p1w8z3",
  "domainId": "k3v9x2m8q1w7z4",
  "domainName": "yourdomain.com",
  "matchedRouteId": "r7k3m9q2p4w8x1",
  "matchedRouteName": "Support inbox",
  "fromAddress": "[email protected]",
  "fromName": "Customer Name",
  "subject": "Need help with my account",
  "textPreview": "Hi, I need assistance with...",
  "hasHtml": true,
  "hasText": true,
  "attachmentCount": 1,
  "sizeBytes": 45230,
  "status": "Delivered",
  "spfResult": "Pass",
  "dkimResult": "Pass",
  "dmarcResult": "Pass",
  "isSpam": false,
  "spamScore": 1.2,
  "receivedAt": "2026-02-17T14:30:00Z",
  "expiresAt": "2026-03-19T14:30:00Z",
  "envelopeFrom": "[email protected]",
  "replyTo": "[email protected]",
  "messageId": "<[email protected]>",
  "inReplyTo": null,
  "dateHeader": "2026-02-17T14:30:00Z",
  "authResultsHeader": "spf=pass dkim=pass dmarc=pass",
  "spamReason": null,
  "sourceIp": "203.0.113.5",
  "heloHostname": "mail.example.com",
  "processingError": null,
  "processedAt": "2026-02-17T14:30:01Z",
  "envelopeRecipients": [
    { "address": "[email protected]", "localPart": "support", "matchedRouteId": "r7k3m9q2p4w8x1" }
  ],
  "headerRecipients": [
    { "type": "To", "address": "[email protected]", "name": null }
  ],
  "attachments": [
    { "id": "a3k7m2q9p4w1x8", "fileName": "screenshot.png", "contentType": "image/png", "sizeBytes": 34500, "isInline": false, "contentId": null }
  ],
  "webhookAttempts": [
    { "attemptNumber": 1, "status": "Delivered", "webhookUrl": "https://yourapp.com/webhooks/inbound", "httpStatusCode": 200, "errorMessage": null, "durationMs": 145, "attemptedAt": "2026-02-17T14:30:02Z", "nextRetryAt": null }
  ]
}

نتایج احراز هویت

هر ایمیل ورودی شامل نتایج بررسی SPF، DKIM و DMARC است. مقادیر ممکن برای هر بررسی متفاوت است: headerRecipients[].type مقدار "To"، "Cc" یا "Bcc" است (با همین حروف‌بزرگ‌وکوچک)، و dateHeader یک برچسب‌زمانی به‌قالب ISO 8601 است، نه رشتهٔ خام هدر RFC 2822.

spfResultتوضیح
Noneرکورد SPF یافت نشد یا بررسی انجام نشد
Passفرستنده مجاز است
Failفرستنده مجاز نیست
SoftFailممکن است فرستنده مجاز نباشد
Neutralبیانیه‌ای دربارهٔ مجاز‌بودن وجود ندارد
TempErrorخطای موقت DNS
PermErrorخطای دائمی DNS
dkimResultتوضیح
Noneامضای DKIM یافت نشد یا بررسی انجام نشد
Passامضا تأیید شد
Failتأیید امضا ناموفق بود
TempErrorخطای موقت DNS
PermErrorخطای دائمی DNS
dmarcResultتوضیح
Noneسیاست DMARC یافت نشد یا بررسی انجام نشد
Passهمسویی موفق بود
Failهمسویی ناموفق بود
Quarantineسیاست، قرنطینه را توصیه می‌کند
Rejectسیاست، رد را توصیه می‌کند

دانلود ایمیل خام

GET https://api.mail.land/v1/transactional/inbound/emails/{id}/raw
Download raw email
curl https://api.mail.land/v1/transactional/inbound/emails/{id}/raw \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
  -o email.eml

ایمیل خام اصلی (با قالب RFC 5322) را به‌صورت فایل قابل‌دانلود برمی‌گرداند.

حذف ایمیل‌ها

حذف یک ایمیل:

DELETE https://api.mail.land/v1/transactional/inbound/emails/{id}
Delete inbound email
curl -X DELETE https://api.mail.land/v1/transactional/inbound/emails/{id} \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."

حذف گروهی ایمیل‌ها:

POST https://api.mail.land/v1/transactional/inbound/emails/bulk-delete
Bulk delete request
{
  "ids": ["k7m2x9q4p1w8z3", "p3q8w2x7m9k4z1", "w9k3p7m2q8x4z6"]
}
Bulk delete inbound emails
curl -X POST https://api.mail.land/v1/transactional/inbound/emails/bulk-delete \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
  -H "Content-Type: application/json" \
  -d '{
    "ids": ["k7m2x9q4p1w8z3", "p3q8w2x7m9k4z1", "w9k3p7m2q8x4z6"]
  }'

همچنین POST /v1/transactional/inbound/emails/bulk-mark-spam با همان بدنهٔ {"ids": [...]} وجود دارد، برای علامت‌گذاری همان دستهٔ ایمیل‌ها به‌عنوان اسپم در یک فراخوانی.

قرنطینه

ایمیل‌هایی با isSpam: true اینجا نمایش داده می‌شوند (هیچ اسکن ویروسی وجود ندارد و وضعیت جداگانه‌ای به‌نام Quarantined هم نیست؛ اسپم فقط یک پرچم بولی است). مشاهدهٔ ایمیل‌های قرنطینه‌شده:

GET https://api.mail.land/v1/transactional/inbound/quarantine
List quarantined emails
curl https://api.mail.land/v1/transactional/inbound/quarantine \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."

آزادکردن یک ایمیل از قرنطینه:

POST https://api.mail.land/v1/transactional/inbound/quarantine/{id}/release
Release from quarantine
curl -X POST https://api.mail.land/v1/transactional/inbound/quarantine/{id}/release \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."

آزادکردن یک ایمیل فقط پرچم isSpam آن را پاک می‌کند. مسیردهی را دوباره اجرا نمی‌کند و وب‌هوک‌ها را دوباره ارسال نمی‌کند. برای تحویل دوبارهٔ وب‌هوک یک ایمیل آزادشده (یا هر ایمیل دیگری)، POST /v1/transactional/inbound/emails/{id}/replay-webhook را فراخوانی کنید. این درخواست یک تحویل پایدار را به وب‌هوک مسیر منطبق در صف قرار می‌دهد و 202 Accepted برمی‌گرداند (بخش Inbound Webhooks را ببینید). یک پارامتر اختیاری ?addToAllowlist=true هم فرستنده را در زمان آزادسازی به فهرست مجاز اضافه می‌کند.

فهرست مجاز و فهرست مسدود

فهرست مجاز

ایمیل‌های فرستندگان موجود در فهرست مجاز از فیلتر اسپم عبور می‌کنند:

GET https://api.mail.land/v1/transactional/inbound/allowlist
Get allowlist
curl https://api.mail.land/v1/transactional/inbound/allowlist \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
POST https://api.mail.land/v1/transactional/inbound/allowlist
Add to allowlist
{
  "pattern": "[email protected]",
  "matchType": "ExactEmail",
  "description": "Trusted partner"
}
Add to allowlist
curl -X POST https://api.mail.land/v1/transactional/inbound/allowlist \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
  -H "Content-Type: application/json" \
  -d '{
    "pattern": "[email protected]",
    "matchType": "ExactEmail",
    "description": "Trusted partner"
  }'

به‌صورت رشتهٔ متنی ارسال و بازگردانده می‌شود، نه عدد:

نوع تطبیقتوضیح
ExactEmailتطبیق دقیق آدرس ایمیل
Domainتطبیق همهٔ ایمیل‌های یک دامنه
WildcardPatternتطبیق با الگوی عام (wildcard)

فهرست مسدود

ایمیل‌های فرستندگان مسدودشده به‌صورت خودکار مدیریت می‌شوند:

GET https://api.mail.land/v1/transactional/inbound/blocklist
Get blocklist
curl https://api.mail.land/v1/transactional/inbound/blocklist \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
POST https://api.mail.land/v1/transactional/inbound/blocklist
Add to blocklist
{
  "pattern": "[email protected]",
  "matchType": "ExactEmail",
  "action": "RejectAtSmtp",
  "description": "Known spammer"
}
Add to blocklist
curl -X POST https://api.mail.land/v1/transactional/inbound/blocklist \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
  -H "Content-Type: application/json" \
  -d '{
    "pattern": "[email protected]",
    "matchType": "ExactEmail",
    "action": "RejectAtSmtp",
    "description": "Known spammer"
  }'

به‌صورت رشتهٔ متنی ارسال و بازگردانده می‌شود، نه عدد. در صورت حذف‌نشدن، عملیات پیش‌فرض MarkAsSpam است:

عملیات مسدودسازیتوضیح
RejectAtSmtpرد در سطح SMTP (پاسخ ۵۵۰)
MarkAsSpamپذیرش، اما علامت‌گذاری به‌عنوان اسپم (پیش‌فرض)
Dropحذف بی‌سروصدای ایمیل

حذف از فهرست مجاز یا فهرست مسدود:

DELETE https://api.mail.land/v1/transactional/inbound/allowlist/{id}
DELETE https://api.mail.land/v1/transactional/inbound/blocklist/{id}
Delete from allowlist or blocklist
# Delete from allowlist
curl -X DELETE https://api.mail.land/v1/transactional/inbound/allowlist/{id} \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."

# Delete from blocklist
curl -X DELETE https://api.mail.land/v1/transactional/inbound/blocklist/{id} \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."

آمار ایمیل ورودی

GET https://api.mail.land/v1/transactional/inbound/stats
Get inbound stats
curl https://api.mail.land/v1/transactional/inbound/stats \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
پارامترنوعتوضیح
domainIdstringفیلتر بر اساس شناسهٔ عمومی دامنه
fromdatetimeفیلتر بر اساس receivedAt در یا پس از این زمان
todatetimeفیلتر بر اساس receivedAt پیش از پایان این روز
Inbound stats response
{
  "totalEmails": 1500,
  "todayEmails": 42,
  "receivedCount": 1500,
  "processingCount": 5,
  "processedCount": 1345,
  "failedCount": 20,
  "spamCount": 80,
  "webhookFailedCount": 3,
  "storageUsedBytes": 52428800,
  "byDomain": [
    { "domainId": "k3v9x2m8q1w7z4", "domainName": "yourdomain.com", "count": 1500 }
  ],
  "byStatus": { "Received": 5, "Processing": 5, "Processed": 1345, "Delivered": 1300, "Failed": 20, "Expired": 50 },
  "dailyStats": [
    { "date": "2026-02-17", "total": 120, "processed": 115, "spam": 8 }
  ]
}

فیلد spamRate/averageSizeBytes وجود ندارد؛ ساختار بالا کامل و جامع است.

پاسخ‌های خطا

وضعیتکدتوضیح
400VALIDATION_FAILEDپارامترهای درخواست نامعتبر
403FORBIDDENدسترسی ناکافی
404RESOURCE_NOT_FOUNDایمیل یافت نشد

گام‌های بعدی

  • مسیرها: پیکربندی قواعد مسیردهی برای ایمیل‌های ورودی
  • وب‌هوک‌ها: دریافت دادهٔ تجزیه‌شدهٔ ایمیل از طریق وب‌هوک
  • دامنه‌ها: تنظیم رکوردهای MX برای پردازش ایمیل ورودی

در این صفحه