انتقل إلى المحتوى الرئيسي
MailLand

دليل الانتقال

الانتقال من Amazon SES إلى Mail.Land

الانتقال من SES يستبدل بيانات اعتماد AWS ومجموعات الإعداد ووجهات الأحداث بمفتاح API واحد وWebhooks موقّعة. يطابق هذا الدليل كل حقل شائع في SendEmail ويعدّد ما يحتاج إلى تغيير في الشيفرة.

SMTP
# Before (Amazon SES)
SMTP_HOST=email-smtp.eu-central-1.amazonaws.com   # your Region's endpoint
SMTP_PORT=587          # STARTTLS (465 for TLS wrapper)
SMTP_USER=<SES SMTP user name for that Region>
SMTP_PASS=<SES SMTP password for that Region>

# After (Mail.Land)
SMTP_HOST=smtp.mail.land
SMTP_PORT=587          # STARTTLS; 465 is not offered
SMTP_USER=apikey       # any value; Mail.Land ignores it
SMTP_PASS=ml_pet_...   # a Mail.Land key with SMTP enabled

مفاهيم Amazon SES في Mail.Land

مفاهيم Amazon SES في Mail.Land
Amazon SESMail.Land
مستخدم IAM وتوقيع الطلبات SigV4مفتاح API (بيانات اعتماد) في الترويسة X-API-Key
بيانات اعتماد SMTP لكل منطقة في AWSمفتاح API نفسه، مستخدماً ككلمة مرور SMTP
هوية موثّقة (نطاق) وMAIL FROM مخصصنطاق موثّق (SPF وDKIM وDMARC ومسار الإرجاع)
مجموعات الإعداد ووجهات الأحداث (SNS وEventBridge وFirehose)Webhooks موقّعة بـ HMAC-SHA256، تُرسل مباشرة إلى نقطة النهاية لديك
قائمة منع الإرسال على مستوى الحسابقوائم منع إرسال بنوع ونطاق تطبيق
قوالب البريد (Handlebars)قوالب بعناصر نائبة {{name}}
قوائم جهات الاتصال والموضوعات (topics)القوائم البريدية والحملات وإدارة إلغاء الاشتراك (Pro وMax)
بيئة الاختبار (Sandbox)مفاتيح اختبار (ml_set_ وml_sem_): مع sandboxBehavior بالقيمة LogOnly تُقبل الطلبات وتُسجَّل ولا تُسلَّم أبداً

أنشئ مفاتيح API المناسبة

لا حاجة إلى كتابة سياسات IAM. تخبرك بادئة مفتاح Mail.Land بوضعه وتدفقه؛ أنشئ مفتاحاً لكل تطبيق ولكل تدفق، وقيّده بالنطاقات وعناوين IP التي تستخدمه.

أنشئ مفاتيح API المناسبة
البادئةالغرض منه
ml_pet_إنتاج، معاملاتي: الإيصالات وإعادة تعيين كلمات المرور والتنبيهات. حتى 5 مستلمين في كل طلب.
ml_pem_إنتاج، تسويقي: النشرات الإخبارية والإرسال الجماعي عبر send-batch، حتى 10,000 مستلم في كل استدعاء.
ml_set_اختبار، معاملاتي: مع sandboxBehavior بالقيمة LogOnly (الافتراضية) تُقبل الطلبات وتُسجَّل ولا تُسلَّم أبداً. استخدمه لاختبارات التكامل.

يمكن تقييد كل مفتاح بالواجهة البرمجية أو SMTP أو كليهما، وبنطاقات محددة وعناوين IP معروفة. يُعرض المفتاح مرة واحدة، ولا تحفظ Mail.Land إلا قيمة مجزّأة (hash) منه.

وثائق مفاتيح API

تبديل SMTP: غيّر المضيف وبيانات الاعتماد

تُنشأ بيانات اعتماد SMTP في SES عبر IAM وتختلف في كل منطقة من AWS. أما Mail.Land فتستخدم مفتاح API ككلمة مرور وتتجاهل اسم المستخدم.

تبديل SMTP: غيّر المضيف وبيانات الاعتماد
الإعدادAmazon SESMail.Land
المضيفemail-smtp.<region>.amazonaws.comsmtp.mail.land
المنفذ25 أو 587 أو 2587 مع STARTTLS، أو 465 و2465 مع TLS wrapper587 مع STARTTLS
اسم المستخدماسم مستخدم SMTP لتلك المنطقةأي قيمة، مثل apikey
كلمة المروركلمة مرور SMTP لتلك المنطقةمفتاح API من Mail.Land مفعّل لـ SMTP (ml_pet_ للبريد المعاملاتي)

لا تقبل Mail.Land تسجيل الدخول إلا بعد STARTTLS، ولا يُتاح المنفذان 465 و2465. إذا كان تطبيقك يستخدم TLS wrapper، فحوّله إلى 587 مع STARTTLS. لا تعمل Mail.Land بترويسات X-SES-* مثل X-SES-CONFIGURATION-SET، فيمكنك حذفها. يمكن أن يصل حجم الرسالة إلى 15 MiB.

وثائق مرحّل SMTP

تبديل استدعاء API

تُوقَّع طلبات SES بـ AWS Signature Version 4، عادةً عبر AWS SDK. أما Mail.Land فلا تحتاج إلا إلى الترويسة X-API-Key ومتن JSON أبسط. إليك الرسالة نفسها في الاثنتين، وإرسالاً بقالب.

aws sesv2 send-email --region eu-central-1 \
  --from-email-address "[email protected]" \
  --destination '{"ToAddresses":["[email protected]"]}' \
  --reply-to-addresses "[email protected]" \
  --email-tags Name=type,Value=order-shipped \
  --content '{
    "Simple": {
      "Subject": { "Data": "Order 12345 has shipped" },
      "Body": {
        "Text": { "Data": "Your order is on its way." },
        "Html": { "Data": "<p>Your order is on its way.</p>" }
      }
    }
  }'
curl -X POST https://api.mail.land/v1/transactional/send \
  -H "X-API-Key: $MAILLAND_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "from": { "email": "[email protected]", "name": "Your Shop" },
    "to": [{
      "email": "[email protected]", "name": "Jane",
      "variables": { "orderNumber": "12345" }
    }],
    "replyTo": "[email protected]",
    "subject": "Order {{orderNumber}} has shipped",
    "textContent": "Your order {{orderNumber}} is on its way.",
    "htmlContent": "<p>Your order {{orderNumber}} is on its way.</p>",
    "tags": ["order-shipped"]
  }'
# MAILLAND_API_KEY=ml_pet_...  (production, transactional)

مطابقة حقول استدعاء الإرسال

من SES API v2 SendEmail (POST /v2/email/outbound-emails) إلى POST /v1/transactional/send.

مطابقة حقول استدعاء الإرسال
Amazon SESMail.Landملاحظة
AWS Signature Version 4X-API-Key: <key>لا توقيع للطلبات؛ أرسل المفتاح عبر HTTPS.
FromEmailAddressfrom.email, from.nameيجب أن يكون العنوان على نطاق موثّق.
Destination.ToAddressesto[].email, to[].nameحتى 5 مستلمين في كل طلب مع مفتاح معاملاتي؛ ويتلقى كل منهم نسخة منفصلة.
Destination.CcAddresses, BccAddressesلا يوجدغير مدعوم. أرسل رسالة منفصلة إلى كل مستلم.
ReplyToAddressesreplyToسلسلة عنوان واحدة بدلاً من قائمة. إذا كنت تستخدم عدة عناوين، فاحتفظ بواحد.
Content.Simple.Subject.Datasubjectمطلوب ما لم تستخدم قالباً.
Content.Simple.Body.Html.DatahtmlContent
Content.Simple.Body.Text.DatatextContent
Content.Simple.Headers [{ Name, Value }]customHeadersكائن من أسماء الترويسات وقيمها بدلاً من مصفوفة.
Content.Simple.Attachments[].FileName, ContentType, RawContent, ContentId, ContentDispositionattachments[].fileName, contentType, content, contentId, inlineمحتوى Base64. اضبط inline: true للصورة المضمّنة. حتى 10 مرفقات و10 MiB إجمالاً.
Content.Raw.Data (MIME)غير موجود في الواجهة البرمجيةأرسل رسائل MIME الجاهزة عبر مرحّل SMTP بدلاً من ذلك.
Content.Template.TemplateName, TemplateArntemplateIdأعد إنشاء القالب في Mail.Land أولاً.
Content.Template.TemplateDatavariables, to[].variablesكائن JSON بدلاً من سلسلة JSON.
EmailTags [{ Name, Value }]tagsمصفوفة سلاسل نصية بدلاً من أزواج الاسم والقيمة.
ConfigurationSetNameلا يوجدتُضبط Webhooks والتتبع في حسابك في Mail.Land وعلى كل نطاق.
ConfigurationOverrides.Trackingtracking.opens, tracking.clicksيُقدَّم اختيار النطاق نفسه لتتبع الفتح.
ListManagementOptionsغير موجود في استدعاء الإرسالتتولى قوائم Mail.Land وحملاتها إلغاءات الاشتراك التسويقية.
لا مقابل لهscheduledAtجدول الرسالة حتى 7 أيام مقدماً.
لا مقابل لهالترويسة X-Idempotency-Keyخلال فترة الاحتفاظ، تعيد المحاولة بالمفتاح نفسه الاستجابة الأصلية بدلاً من الإرسال مجدداً.

تردّ SES بـ 200 مع MessageId. وتردّ Mail.Land بـ 202 Accepted مع jobId ومعرّف رسالة لكل مستلم مقبول وقائمتي المستلمين المقبولين والمرفوضين.

وثائق REST API

أضف نطاقك وسجلات DNS

أضف النطاق في Mail.Land وانشر السجلات التي تعرضها لوحة التحكم. يجب التحقق من SPF وDKIM وDMARC قبل أن تتمكن من الإرسال. يمكنك فعل ذلك بينما لا تزال SES ترسل.

أضف نطاقك وسجلات DNS
السجلالاسمالقيمةملاحظة
SPF (TXT)yourdomain.cominclude:spf.mlnd.netأضف include إلى سجل SPF الحالي. يجب أن يكون للنطاق سجل SPF واحد فقط.
DKIM (TXT)mlnd._domainkey.yourdomain.comv=DKIM1; k=rsa; p=...المحدِّد (selector) هو mlnd، فيوجد السجل إلى جانب سجلات DKIM التي تستخدمها SES.
DMARC (TXT)_dmarc.yourdomain.comv=DMARC1; p=...مطلوب. احتفظ بسجل DMARC واحد؛ ويكفي سجل قائم يتضمن سياسة.
مسار الإرجاع (CNAME)bounce.yourdomain.combounce.mlnd.netاضبطه على DNS only دون وكيل (proxy). إذا كان نطاق MAIL FROM المخصص لديك في SES يستخدم هذا الاسم، فأبقِه حتى تتوقف SES عن الإرسال.

احتفظ بسجلات DNS الخاصة بـ SES حتى ينتهي الانتقال، واحذفها فقط بعد خروج آخر رسالة منها.

وثائق إعداد DNS

استورد قائمة منع الإرسال أولاً

تنطبق قائمة منع الإرسال على مستوى الحساب في SES على كل منطقة من AWS على حدة. صدّرها من كل منطقة ترسل منها عبر ListSuppressedDestinations (aws sesv2 list-suppressed-destinations)، ثم استوردها إلى Mail.Land بالنوع ونطاق التطبيق المطابقين، من لوحة التحكم أو عبر POST /v1/transactional/suppressions/import.

استورد قائمة منع الإرسال أولاً
السبب أو المصدر في SESالنوع في Mail.Landنطاق التطبيق
BOUNCEHardBounceGlobal
COMPLAINTComplaintGlobal
إلغاءات الاشتراك من موضوعات قوائم جهات الاتصالUnsubscribeMarketing؛ أو List، الذي ينطبق فقط على الحملات المرسلة إلى القائمة البريدية المطابقة في Mail.Land

لا تضيف SES إلى القائمة إلا الارتدادات الدائمة، ولا تصلها بلاغات البريد المزعج من Gmail، لذا استورد أيضاً أي قوائم منع إرسال تحتفظ بها أنظمتك. استورد قبل أول إرسال عبر Mail.Land، كي يبقى من ألغوا اشتراكهم ممنوعين من البداية.

وثائق قوائم منع الإرسال

وجّه Webhooks إلى Mail.Land

استبدل مجموعة الإعداد ووجهة أحداثها بـ Webhook في Mail.Land: أضف نقطة نهاية HTTPS واختر الأحداث وتحقق من الترويسة X-MLND-Signature بسرّ ذلك الـ Webhook. لا يوجد اشتراك SNS يلزم تأكيده.

وجّه Webhooks إلى Mail.Land
حدث SESحدث Mail.Landملاحظة
Sendلا يوجد حالياًmessage.sent غير متاح بعد؛ تؤكد الاستجابة 202 القبول.
التسليم (Delivery)message.delivered
DeliveryDelaymessage.deferred
الارتداد (Bounce)message.bounced
Complaintmessage.complained
Subscriptionmessage.unsubscribedيُرسل عند إلغاء المستلم اشتراكه بنفسه، لا عند تغييرات تجريها عبر الواجهة البرمجية.
Rejectلا يوجد
RenderingFailureلا يوجدتُرفض القيمة الناقصة في القالب عند استدعاء الواجهة البرمجية، برمز 422 TEMPLATE_VARIABLE_MISSING.
الفتح، النقر (Open, Click)غير متاح بعدأحداث الفتح والنقر مدرجة في الكتالوج لكنها لا تُرسل اليوم.

أزل التكرار بالاعتماد على event_id، لأن التسليم المعاد يحمل معرّف الحدث نفسه. قد تُصحَّح الحالة لاحقاً، فواصل معالجة الأحداث بعد الحدث النهائي وقارن status_version.

أحداث Webhook

التحقق من توقيع Webhook

أعد إنشاء قوالبك

أنشئ كل قالب في لوحة تحكم Mail.Land أو عبر واجهة القوالب، ثم أرسله باستخدام templateId وvariables. يجب أن يكون لكل عنصر نائب قيمة، وإلا رُفض الإرسال برمز 422 مع أسماء القيم الناقصة.

أعد إنشاء قوالبك
Amazon SESMail.Land
{{firstName}}{{firstName}}
{{contact.firstName}} (متداخل){{firstName}}
{{#each}}, {{#if}} ... {{else}}لا يوجد
الأجزاء المضمّنة ({{> name}})لا يوجد

العناصر النائبة في Mail.Land بسيطة: دون قيم متداخلة أو شروط أو حلقات أو أجزاء. مرّر قيماً بسيطة وانقل المنطق إلى تطبيقك، أو احتفظ بقالب لكل حالة.

وثائق القوالب

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

  1. أضف نطاق الإرسال في Mail.Land وتحقق منه، مع إضافة include:spf.mlnd.net إلى سجل SPF الحالي.
  2. صدّر قائمة منع الإرسال لكل منطقة AWS تستخدمها واستوردها.
  3. أنشئ مفاتيح Mail.Land لكل تطبيق ولكل تدفق، مقيّدة بنطاقاتك وعناوين IP لديك.
  4. أعد إنشاء القوالب، واستبدل كل وجهة أحداث بـ Webhook.
  5. أنشئ مفتاح اختبار مع sandboxBehavior بالقيمة LogOnly، وشغّل اختبارات التكامل على Mail.Land دون تسليم بريد.
  6. أرسل رسائل حقيقية إلى عناوين تتحكم بها وتحقق منها في سجل البريد.
  7. انقل تطبيقاً واحداً أو حصة صغيرة من حركة الإرسال، ثم راقب التسليم والارتدادات والشكاوى.
  8. ما دام المزودان يعملان، أبقِ إلغاءات الاشتراك متزامنة في الاتجاهين: انسخ إلغاءات الاشتراك والشكاوى والارتدادات الجديدة من SES إلى Mail.Land ومن Mail.Land إلى SES، وأجرِ مزامنة أخيرة قبل نقل ما تبقى من الحركة.
  9. تحقق من الإحماء لنطاقك: في Free وPro يكون للنطاق الجديد حد يومي يرتفع على مراحل، وتُرفض الرسائل التي تتجاوزه. خطط للانتقال ضمن هذه الحدود، أو اسألنا عن جدول مخصص. خطة Max لا تمر بالإحماء.
  10. ثم انقل الباقي، وأبقِ SES فعّالة حتى تخرج آخر رسائلها.

Mail.Land مقابل Amazon SES: المقارنة الموثّقة

المصادر

صفحات AWS العامة المستخدمة في هذا الدليل.

  1. [1]Amazon SES API v2: SendEmailhttps://docs.aws.amazon.com/ses/latest/APIReference-V2/API_SendEmail.htmlتم التحقق في 4 نوفمبر 2026
  2. [2]Amazon SES: الاتصال بنقطة نهاية SMTPhttps://docs.aws.amazon.com/ses/latest/dg/smtp-connect.htmlتم التحقق في 4 نوفمبر 2026
  3. [3]Amazon SES: الحصول على بيانات اعتماد SMTPhttps://docs.aws.amazon.com/ses/latest/dg/smtp-credentials.htmlتم التحقق في 4 نوفمبر 2026
  4. [4]Amazon SES: التخصيص المتقدم للبريدhttps://docs.aws.amazon.com/ses/latest/dg/send-personalized-email-advanced.htmlتم التحقق في 4 نوفمبر 2026
  5. [5]Amazon SES: نشر الأحداثhttps://docs.aws.amazon.com/ses/latest/dg/monitor-using-event-publishing.htmlتم التحقق في 4 نوفمبر 2026
  6. [6]Amazon SES: قائمة منع الإرسال على مستوى الحسابhttps://docs.aws.amazon.com/ses/latest/dg/sending-email-suppression-list.htmlتم التحقق في 4 نوفمبر 2026

الأسئلة الشائعة

هل يمكنني مواصلة الإرسال عبر SES أثناء الاختبار؟

نعم. التحقق من نطاق في Mail.Land لا يمنع SES من الإرسال باسمه، فيمكنك تشغيل الاثنين ونقل الحركة تدريجياً.

هل ما زلت أحتاج إلى AWS SDK؟

لا. يمكن لأي عميل HTTP استدعاء واجهة Mail.Land البرمجية مع الترويسة X-API-Key، وتعمل أي مكتبة SMTP مع المرحّل.

كيف أرسل البريد الجماعي الذي كنت أرسله عبر SendBulkEmail؟

استخدم POST /v1/transactional/send-batch مع مفتاح تسويقي (ml_pem_). يقبل حتى 10,000 مستلم، لكل منهم متغيراته.

أين تعمل Mail.Land؟

لا توجد في Mail.Land مناطق للاختيار. النسخة الأساسية من بياناتك في ألمانيا؛ والمزودون خارج الاتحاد الأوروبي مدرجون في صفحة GDPR لدينا.

هل أنت مستعد للانتقال من Amazon SES؟

أنشئ حساباً مجانياً وأرسل أول رسالة اختبار اليوم. وإن أردت المساعدة، فأخبرنا عن إعدادك.