إنشاء مزيل البريد الإلكتروني SMTP لـ Office 365 ببروتوكول TLS وغير TLS

كرهها أو أحببها؛ البريد الإلكتروني في كل مكان. البروتوكول الذي يُستخدم لنقل هذا البريد هو SMTP، وموجهات SMTP هي المتسلسلات SMTP.

Not a reader? Check out this tutorial’s related video.

تختلف عمليات إعداد المتسلسلات SMTP حسب الأنظمة، لكن إذا كان لديك Office 365 كمزود لخدمة البريد الإلكتروني الخاص بك، فخياراتك محدودة. يمكن أن تكون عملية الإعداد معقدة وتعرضة للأخطاء، خاصةً بالنسبة للأجهزة التي لا تدعم TLS.

يرجى ملاحظة أن إرسال البريد الإلكتروني من خلال Office 365 لا يتطلب متسلسل SMTP. يمكنك أن تجعل العملاء يرسلون البريد الإلكتروني مباشرةً إلى Office 365 دون إضافة متسلسل SMTP، وذلك دون الحاجة إلى أي تغييرات في التكوين. لمعرفة كيفية القيام بذلك، اقرأ كيفية إرسال البريد الإلكتروني بواسطة Office 365 بدون توجيه متسلسل/SUBMISSION عميل SMTP (PowerShell).

المتطلبات

هذه هي المتطلبات قبل أن تتمكن من المتابعة.

  1. اشتراك في Office 365. إذا لم يكن لديك ذلك بعد، يمكنك التسجيل في اشتراك تجريبي لـ Office 365 E5.
  2. A Windows 10 computer with PowerShell v5.1
  3. A public static IP address. You can still create an SMTP relay in Office 365 even without this, but you might not test.
  4. الوصول إلى منفذ TCP 25 من العميل إلى نقطة النهاية MX الخاصة بـ Office الخاصة بك.
  5. A valid SSL certificate. This certificate could be a wildcard certificate (eg. *.yourdomain.com) issued by third-party certificate authorities like LetsEncrypt, Digicert, etc. Note, that you cannot use self-signed certificates or certificates issued by an internal PKI because they are not supported. (only required for TLS connections)

لإعداد إعادة توجيه SMTP، يجب عليك أولاً إنشاء موصل في Office 365 لقبول عمليات النقل SMTP. سيتلقى هذا الموصل عمليات إعادة التوجيه SMTP من التطبيق أو الجهاز.

قبل محاولة إنشاء موصل، تأكد من أن حسابك لديه أذونات Exchange Online المناسبة. تأكد من أن حسابك هو عضو في مجموعة إدارة المؤسسة.

هناك طريقتان لإنشاء موصل. يمكنك استخدام إما مركز مشرف Exchange أو PowerShell. ستقوم كلا الخيارين بأداء نفس المهمة. الأمر متروك لك أي واحدة تريد استخدامها. في هذه المقالة، سنغطي كليهما. سنغطي أيضًا إنشاء كل من الموصلات غير المؤمنة والمؤمنة ببروتوكول TLS.

إنشاء موصل غير مؤمن باستخدام مركز مشرف Exchange

لنبدأ بإنشاء موصل غير مؤمن. ستتعلم أولاً كيفية القيام بذلك عبر مركز مشرف Exchange. يمكنك تكوين العديد من إعدادات SMTP لـ Office 365 في مركز مشرف Exchange.

بمجرد تسجيل الدخول، انقر فوق تدفق البريد (1) –> الموصلات (2) –> جديد (3). ستظهر نافذة موصل جديد.

New Connector

في نافذة موصل جديد، حدد من: خادم البريد الإلكتروني الخاص بالمؤسسة (1)، حدد إلى: Office 365 (2)، انقر فوق التالي (3).

Selecting a mail flow scenario

في النافذة التالية، ادخل اسم SMTP Relay (غير مؤمَّن ببروتوكول TLS) أو اختر اسمًا آخر (1)، اكتب الوصف Accept relay from on-premises SMTP Server (2)، قم بإلغاء تحديد Retain internal Exchange email headers (يُفضل) (3) وانقر على التالي (4).

Assigning a name to the connector

في النافذة التالية، حدد عن طريق التحقق من مطابقة عنوان IP للخادم المُرسِل مع أحد هذه العناوين التي تنتمي إلى منظمتك (1)، وانقر على إضافة (2).

Adding allowed IP adresses to the connector

في النافذة المنبثقة الجديدة، اكتب عنوان الآي بي العام الخاص بك (1)، ثم انقر على موافق (2). يجب أن يعيدك ذلك إلى النافذة السابقة.

Adding allowed IP adresses to the connector

تحقق من أن العنوان IP قد تمت إضافته في القائمة (1)، ثم انقر على التالي (2).

Adding allowed IP adresses to the connector

ثم سترى ملخصًا للتغييرات التي يجب تنفيذها. اعمل على التغييرات اللازمة أولاً. إذا لم يكن هناك أي تغيير، يمكنك المتابعة والنقر على حفظ.

عد إلى مركز إدارة Exchange، يمكنك الآن التحقق من إنشاء الموصِّل الجديد.

Office 365 Connector has been created

يجب أن يكون لديك الآن موصل غير مؤمَّن ببروتوكول TLS.

إنشاء موصِّل مؤمَّن ببروتوكول TLS باستخدام مركز إدارة Exchange

إنشاء موصِّل مؤمَّن ببروتوكول TLS مماثل لإنشاء موصِّل غير مؤمَّن ببروتوكول TLS. مثلما أنشأت موصِّلًا غير مؤمَّن ببروتوكول TLS، عُد إلى معالج New Connector واستخدم نفس سيناريو تدفُّق البريد. سأستخدم اسم موصِّل SMTP Relay (غير مؤمَّن ببروتوكول TLS) ولكن قد يختلف معك.

في نافذة تعريف Office 365، يجب تحديد البريد الإلكتروني من خادم البريد الإلكتروني الخاص بك، حدد:

  • من خلال التحقق من تطابق اسم الموضوع في الشهادة التي يستخدمها خادم الإرسال للمصادقة مع Office 365 مع هذا الاسم المجال (موصى به) (1)
  • ثم اكتب موضوع شهادة SSL (2)
  • وانقر فوق التالي (3).
Create a TLS Connector using Exchange Admin Center

مرة أخرى، سترى ملخصًا للتغييرات الضرورية. قم بالعمل عليها أولاً قبل المتابعة. إذا لم يكن هناك أي تغييرات، يمكنك النقر فورًا على زر حفظ.

إنشاء موصل غير آمن باستخدام PowerShell

إذا لم يكن إنشاء موصلات Office 365 عبر واجهة المستخدم الرسومية هو ما تفضله، يمكنك دائمًا إنشاؤها باستخدام PowerShell أيضًا. للقيام بذلك، تأكد أولاً من أنك متصل بـ Exchange Online PowerShell.

لإنشاء الموصل، ستحتاج إلى تشغيل أمر New-InboundConnector. هذا الأمر يتطلب بعض المعلمات المختلفة لذا سأقوم بإعداد هذه المعلمات مسبقًا باستخدام splatting.

I’ve added some comments in the code itself below but here’s a breakdown of each parameter and what it’s used for:

  • Name – هذا هو اسم الموصل.
  • ConnectorType – هذا هو نوع الموصل. قيمة هذا الحقل يمكن أن تكون OnPremises أو Partner. في هذ scenario، النوع المناسب هو OnPremises.
  • SenderDomains – يمكن أن يكون هذا قائمة بنطاقات المُرسِل المسموح بها. تُعتبر النطاقات الموثَّقة فقط لمستأجرك خيارات صحيحة. تعني النجمة (*) أنك تسمح بإرسال رسائل من جميع نطاقاتك الموثَّقة باستخدام هذا الموصِّل. إذا كنت تريد فقط السماح لبعض نطاقات المُرسِل، قم بتغيير هذه القيمة إلى مصفوفة من النطاقات. (على سبيل المثال 'domain1.com','domain2.com')
  • SenderIPAddresses – هذا هو عنوان الآي بي العام الخاص بك. لا تنسَ أن تقوم بتغيير هذا قبل التنفيذ.
  • RestrictDomainsToIPAddresses – عند تعيين هذه القيمة إلى $true، فإنه يشير إلى أن هذا الموصِّل سيقبل الرسائل الإلكترونية فقط من عناوين المُرسِل القادمة من عنوان الآي بي العام المسموح به لديك.
$splat = @{
    ## حدد اسم الموصل.
    Name = 'SMTP Relay'
    ## حدد نوع الموصل الذي تريد إنشاؤه.
    ConnectorType = 'OnPremises'
    ## مجموعة من نطاقات المُرسِل المسموح بها للتوجيه.
    SenderDomains = '*'
    ## قم بتغيير هذا إلى عنوان الآي بي العام الفعلي الخاص بك.
    SenderIPAddresses = '110.x.x.x'
    ## قيد توجيه البريد الإلكتروني فقط إلى نطاقات المُرسِل الخاصة بك وعنوان الآي بي الخاص بالمُرسِل
    RestrictDomainsToIPAddresses = $true
}

## أنشئ الموصل
New-InboundConnector @splat

عند التنفيذ، يجب أن ترى شيئًا مشابهًا لما يلي.

New-InboundConnector

أنشئ موصِّل TLS باستخدام PowerShell

بفرض أنك متصل بالإنترنت، قم بتشغيل الكود أدناه لإنشاء موصل TLS باستخدام PowerShell أيضًا. يمكنك أن ترى أن العديد من المعلمات متطابقة مع إنشاء موصل غير مشفر. المعلمات المطلوبة التي تختلف عن إنشاء موصل غير مشفر هي:

  • RequireTLS – يحدد أن جميع الرسائل التي يتم استلامها بواسطة هذا الموصل تتطلب نقل TLS
  • TlsSenderCertificateName – اسم (أو الموضوع) للشهادة المستخدمة بواسطة المرسل.
$splat = @{
    ## حدد اسم الموصل. 
    Name = 'SMTP Relay (TLS)'
    ## نوع الموصل المراد إنشاؤه. 
    ConnectorType = 'OnPremises'
    ## مجموعة من النطاقات المرسلة المسموح بها للتوجيه. 
    SenderDomains = '*'
    ## مطلوب TLS 
    RequireTLS = $true
    ## الموضوع / اسم شهادة SSL 
    TlsSenderCertificateName = '*.YourDomain.com'
}

## إنشاء الموصل. 
New-InboundConnector @splat

قم بتنفيذ الكود أعلاه لإنشاء موصل TLS جاهز لاستقبال البريد الإلكتروني.

اختبار موصل إعادة الإرسال SMTP في Office 365 باستخدام PowerShell

بعد إنشاء الموصل، قم بتجهيزه للاختبار. أسهل طريقة للقيام بذلك هي باستخدام PowerShell. في هذا القسم، سنقوم بإنشاء بعض النصوص البرمجية في PowerShell للتأكد من أن الموصل يعمل بشكل صحيح.

قبل أن تبدأ في الاختبار، تأكد أولاً من معرفة عنوان URL الخاص بنقطة النهاية MX لنطاق Exchange Online الخاص بك. إذا كنت لا تعرف كيفية العثور على عنوان URL لنقطة النهاية MX الخاصة بك، قم بتسجيل الدخول إلى بوابة مسؤول Office 365. انقر على “الإعدادات”، حدد “النطاقات”، انقر على اسم النطاق و انسخ عنوان أو قيمة نقاط MX.

اختبار ريلي SMTP غير TLS (عنوان IP)

ملاحظة: يجب إجراء هذا الاختبار من الكمبيوتر الذي يُسمح بعنوان IP العام له في إعداد ريلي SMTP Office 365.

استخدم رمز PowerShell أدناه للقيام بالاختبار. تأكد من تغيير قيم المعلمة From، To و SmtpServer لاستخدام إعدادات ريلي SMTP Office 365 الخاصة بك قبل تشغيله.

  • To – يجب أن يتضمن مستلم واحد داخلي ومستلم واحد خارجي. لا تنسى تغيير هذه القيم إلى القيم الخاصة بك.
  • From – يجب تغييره إلى عنوان المُرسل المعين الخاص بك. يجب أن يكون جزء النطاق من عنوان البريد الإلكتروني أحد نطاقات البريد الإلكتروني الخاصة بمستأجرك.
  • SmtpServer – يجب تغييره إلى نقطة النهاية MX لمستأجر Office 365 الخاص بك.
$mailParams = @{
    SmtpServer = '<tenant>.mail.protection.outlook.com'
    Port = '25'
    From = '[email protected]'
    To = '[email protected]','[email protected]'
    Subject = ('SMTP Relay - ' + (Get-Date -Format g))
    Body = 'This is a test email using SMTP Relay'
    DeliveryNotificationOption = 'OnFailure','OnSuccess'
}

Send-MailMessage @mailParams

اختبار ريلي SMTP TLS (شهادة)

ملاحظة: يجب أن يكون لديك الشهادة العامة SSL بتنسيق PFX قبل أن تتمكن من المتابعة مع هذا الاختبار.

نظرًا لأن توجيه البريد الإلكتروني SMTP ببروتوكول TLS يتطلب شهادة، فلا يمكنك استخدام أمر Send-MailMessage في PowerShell لأنه لا يتيح لك اختيار شهادة محددة. بدلاً من ذلك، استخدم كائنين .NET يُسمَّيَان System.Net.Mail.SmtpClient لتعريف معلمات SMTP، و System.Net.Mail.MailMessage لتأليف الرسالة.

فيما يلي مقتطف من كود PowerShell يمكنك استخدامه لاختبار توجيه البريد الإلكتروني SMTP ببروتوكول TLS. لا تنسى تغيير قيم pfxFile، pfxPass، From، To و SmtpServer لاستخدام إعدادات توجيه البريد الإلكتروني SMTP في Office 365 الخاصة بك قبل تشغيله.

# حدد المسار الكامل لشهادة PFX الخاصة بك
$pfxFile = "C:\Certificate\cert.pfx"
$pfxPass = '<cert password here>'
$pfxBytes = Get-Content -path $pfxFile -encoding Byte -ErrorAction:SilentlyContinue
$X509Cert = New-Object -TypeName System.Security.Cryptography.X509Certificates.X509Certificate2
$X509Cert.Import([byte[]]$pfxBytes, $pfxPass,"Exportable,PersistKeySet")

# بناء خصائص SMTP
$smtpServer = '<tenant>.mail.protection.outlook.com'
$smtpPort = '25'
$smtp = New-Object Net.Mail.SmtpClient($smtpServer,$smtpPort)
$smtp.ClientCertificates.Add($X509Cert)
$smtp.EnableSSL = $true

# تأليف الرسالة
$emailMessage = New-Object System.Net.Mail.MailMessage
$emailMessage.From = '[email protected]'
$emailMessage.To.Add('[email protected]')
$emailMessage.To.Add('[email protected]')
$emailMessage.Subject = ('SMTP Relay (TLS) - ' + (Get-Date -Format g))
$emailMessage.Body = 'This is a test email using SMTP Relay (TLS)'

# إرسال الرسالة
$smtp.Send($emailMessage)

إذا تم إعداد موصل TLS بشكل صحيح، يجب أن يتلقى المستلمون الذين يتم تعريفهم عبر طريقة Add() البريد الإلكتروني التجريبي.

التحقق من توجيه البريد الإلكتروني SMTP عبر ترويسات الرسالة

الآن لديك توجيه بريد إلكتروني SMTP يعمل باستخدام خادم محلي وتوجيه بريد إلكتروني SMTP في Office 365. كانت جميع الاختبارات ناجحة ويمكن لأجهزتك إرسال الرسائل إلى المستلمين الداخليين والخارجيين. عمل جيد!

إذا كنت لا تزال تشك فيما إذا كانت هذه الرسائل تمر عبر إعادة توجيه SMTP لـ Office 365 ، يمكنك مراجعة رؤوس الرسالة في رسائل البريد الإلكتروني المستلمة.

ملاحظة: فتح رؤوس الرسالة يختلف بين برامج البريد المختلفة. المثال أدناه محدد لـ Gmail.

افتح البريد الإلكتروني في واجهة Gmail ، ثم افتح الرسالة وانقر على النقاط الثلاث العمودية (1) ، ثم انقر على عرض الأصلي (2).

Validating SMTP Relay Hops using the Message Header

A new page will show the email message headers. Click on Copy to clipboard (1).

Validating SMTP Relay Hops using the Message Header

افتح علامة تبويب متصفح جديد وانتقل إلى https://testconnectivity.microsoft.com/.

انتقل إلى علامة تبويب محلل الرسالة (1) ، والصق البيانات المنسوخة في المربع (2) ، ثم انقر على تحليل الرؤوس (3).

Analyzing headers

سيتم عرض نتيجة التحليل في الجدول كما هو موضح أدناه.

Analyzing results

يجب أن ترى سير العمل التالي في النتائج أعلاه:

  1. عنوان IP 192.168.0.3 يشير إلى مصدر الكمبيوتر.
  2. تم استلام الرسالة بواسطة خادم إعادة توجيه SMTP الخاص.
  3. تم استلام الرسالة بواسطة حماية Exchange Online (EOP).
  4. تم استلام الرسالة بواسطة خادم Exchange Online وإعادة توجيهها للتسليم الصادر.
  5. تم تسليم الرسالة من Office 365 إلى google.com.

بناءً على نتائج التحليل ، يمكنك التأكيد على أن الرسالة قد مرت عبر إعادة توجيه SMTP لـ Office 365 كما هو المقصود.

ملخص

في هذا المقال، تعلمت كيفية إنشاء إعادة توجيه SMTP لـ Office 365 بتقنية TLS وغيرها من التقنيات بدون TLS. كما تعلمت أيضًا كيفية اختبار وتأكيد وظائفها باستخدام تقنيات مختلفة، وكيفية التحقق من مسارات SMTP التي مرت من خلالها الرسالة.

قراءة إضافية

Source:
https://adamtheautomator.com/office-365-smtp-relay/