Deep Dive Into Mailing Servers and SMTP #How it works, from an Email to Email Overview

حياتنا اليومية تكاد لا تخلوا من الـ Emails , سواء كان في الشغل أو برا الشغل ، طب اي حكاية الـ Mail Server وازاي لسه لغاية دلوقتي ما بنعرفش نحذف الـ Emails بعد اما بنبعتها ؟!
Deep Dive Into Mailing Servers and SMTP #How it works, from an Email to Email Overview
Deep Dive Into Mailing Servers and SMTP #How it works, from an Email to Email Overview

في هذه الصفحة

المقدمة

حياتنا اليومية تكاد لا تخلوا من الـ Emails , سواء كان في الشغل أو برا الشغل ، طب اي حكاية الـ Mail Server وازاي لسه لغاية دلوقتي ما بنعرفش نحذف الـ Emails بعد اما بنبعتها ؟!

ده اللي هنعرفه من خلال المقال ده ، فهنتعرف علي الـ SMTP وازاي بيشتغل ووقتها هنفهم ليه مش بنقدر نحذف الـ Emails اللي بنبعتها.


Sending Emails Workflow

لما بنيجي نبعت أي Email لحد ، الـ Email بيلف ف رحلة لذيذة متوضحة ف الرسمه اللي تحت دي: 

الـ MUA هو الـ Client App اللي انت بتبعت منه أو بتشوف عليه الـ Email ومش لازم يكون موجود ف الـ Flow علشان نقدر نبعت Email ، ولكن نقدر نعتبره هو الواجهة اللي بنتعامل من خلالها زي Outlook أو الـ Gmail على سبيل المثال.

فعادي جدًا ممكن نتكلم مع الـ Mail Server باستعمال الـ SDKs وده على سبيل المثال عشان نقدر نبعت Transactional Emails او Marketing Emails.


SMTP - Simple Mail Transfer Protocol

الـ SMTP ببساطة هو الـ Protocol اللي بيخلينا نتكلم مع الـ Mail Server عشان نبعت الـ Emails. ومعندوش أي طريقه نقدر بيها نـ List الـ Emails، في حين الـ MUA بيستخدم Protocols تانية ممكن تكون HTTP عادي عشان يكلم الـ Mail Server ويشوف الـ Emails اللي اتبعتت.

الـ SMTP Server بيتكون من اكتر من Program:

  • الـ MTA ( Mail Transfer Agent )
  • الـ MDA ( Mail Delivery Agent )
  • الـ MSA ( Mail Submission Agent )

كل واحد في دول بيكون عنده مهمة معينة بيعملها عشان ال Mail Server يقدر يبعت او يستقبل الـ Emails.

طب هو ازاي الـ SMTP بيشتغل ؟

الـ SMTP بيعتمد علي TCP كـ Network Layer ودا نقدر نلاحظه من طريقة الكلام معاها.

💡
وأي Protocol بيبقا ليه طبعًا بعض الشروط والـ Terms عشان الطرفين يتكلموا سوا.

عشان نفتح Connection معاه بنبعتله HELO بيرد عليك ب EHELO

الـ OAUTH - Optional وده عشان لو ال Server بيحتاج نوع من الـ Authentication


MAIL FROM: <test@example.com>
RCPT TO: <me@example.com>
DATA: 
Hello this is an email to test SMTP.
.

ولازم يبقا في (.) Period في اخر الـ Email وده لانها بتعرف الـ Server انه كده خلاص انا خلصت فتقدر تستخدم RSET عشان تبعت Email تاني و QUIT عشان تقفل ال Connection مع الـ Server.


تقدروا دلوقتي تشتركوا في النشرة الأسبوعية لاقرأ-تِك بشكل مجاني تمامًا عشان يجيلكوا كل جديد بشكل أسبوعي فيما يخص مواضيع متنوعة وبشروحات بسيطة وسهلة وبجودة عالية 🚀

النشرة هيكون ليها شكل جديد ومختلف عن شكلها القديم وهنحاول انها تكون مميزة ومختلفة وخليط بين المحتوى الأساسي اللي بينزل ومفاجآت تانية كتير 🎉

Eqraatech Newsletter | Eqraatech - اقرأ-تِك | Substack
محتوى تقني متميز في مختلف مجالات هندسة البرمجيات باللغة العربية عن طريق تبسيط المفاهيم البرمجية المعقدة بشكل سلس وباستخدام صور توضيحية مذهلة. Click to read Eqraatech Newsletter, a Substack publication with hundreds of subscribers.

Example

HELO smtp.example.com   250 EHLO smtp.example.com
MAIL FROM: <sender@example.com>  250 Sender <sender@example.com> OK
RCPT TO: <recipient@domain.com>  250 Recipient <recipient@domain.com> OK
DATA                             354 Start mail input; end with . on a line by itself
Subject: This is a test email  
Hello,                          
This is the body of the test email.  
Best regards,                   
The Sender                       
.                                 250 OK message accepted for delivery
QUIT                             221 closing connection

SMTP Envelope

طب ماذا لو انا عاوز ابعت أو اشيل معلومات تانية من الـ Client للـ SMTP Servers ؟

هنا بيجي باه دور الـ SMTP Envelope

دي بتبقا فيها شوية معلومات من الـ Client Email عشان تشيل شوية معلومات ممكن ال Mail Server يتصرف بناءا عليها بشكل مختلف مع ال Email.

زي ان يكون في شوية Headers بتتبعت مع الـ Email بردو علشان تخلي الـ Mail Client يتصرف بناء عليهم سواء لما بيستلم ال Email او يبعت الـ Email.

فعلي سبيل المثال من ال Headers اللي بنستخدمها ف ال Transactional Emails لما بيبقا عندنا Magic Link Auth زي الزرار اللي بيكون في الـ Email وتقدر من خلاله تعمل Authenticate على الموقع بشكل Passwordless أو حاجة محتاجنها تظهر في Email لوحدها علشان احنا بنستخدم نفس ال Email.

الـ Header ده بيكون اسمه X-Entity-Ref-ID وده بنديله Random Id علشان نمنع انه يحصل Threading للـ Email.

وفيه Headers تانية برضو زي :

  • الـ Reply-to: وده بنستعمله لتحديد عنوان Email مختلف للردود.
  • الـ CC، BCC
  • الـ SUBJECT، Content-Type.
  • الـ Return-Path: عنوان الإيميل اللي أُرسل منه الـ Email، بيستخدم لو لم يصل الـ Email (ارتد Bounced).
  • الـ Message-ID: بيمنع تكرار الرسائل ويتم توليده تلقائيًا بواسطة سيرفر الـSMTP.

وبالتأكيد الـ Headers اللي موجودة في الـ Email بتكون مهمة جدًا لضمان تحقيق التسليم والأمان!


في الختام

طب ليه مش بنعرف نـ Delete الـ Email؟ دا الـ هنعرفه في باقي الـ Episodes الجاية

و بكده نكون بدأنا مع بعض رحلتنا في اننا نفهم ايه حكاية الـ Mail Servers

اشترك الآن بنشرة اقرأ-تِك الأسبوعية

لا تدع أي شيء يفوتك. واحصل على أحدث المقالات المميزة مباشرة إلى بريدك الإلكتروني وبشكل مجاني!