بروتوكول إرسال البريد البسيط

بروتوكول إرسال البريد البسيط  (بالإنجليزية: Simple Mail Transfer Protocol SMTP) هو المعيار الأساسي لإرسال البريد الإلكتروني عبر الإنترنت. واليوم يستعمل تطوير له باسم ESMTP  (اختصاراً لـ Extended SMTP).

الوصف

يعتبر SMTP نظاماً بسيطاً، ذو أساس نصي، حيث يتم تحديد مستقبل، أو أكثر، للرسالة، ومن ثم ينقل لهم نص الرسالة. كما يعتبر نظام الزبون/ الخادم نموذج طلب الخدمة، حيث أن الحاسب الزبون يرسل رسالة البريد الإلكتروني إلى المزود. قد يكون الزبون عميل بريد إلكتروني لدى المستقبل النهائي للرسالة، أو قد يكون خادم على طريق الرسالة، حيث يستقبل الرسالة أولاً من مرسلها الأساسي، ويكون هنا مخدماً، ومن ثم يعيد إرسالها إلى الخادم التالي، حيث يقوم هنا بدور زبون لذلك الخادم.
عميل البريد الإلكتروني يعلم عنوان مخدم الـSMTP للبريد الصادر من إعداداته. أما الخادم الذي على طريق الرسالة فإنه عادة مايحدد عنوان البريد الذي سيقوم بتمرير الرسالة إليه عن طريق عنوان المستقبل نفسه، إذ أن عنوان البريد الإإلكتروني يكون من الشكل user@host.domain، ففي هذه الحال، فإنه يجب تمرير الرسالة إلى المخدم host.domain
يقوم عميل الـSMTP بإنشاء اتصال TCP إلى المنفذ 25 في المخدم الهدف (بالشكل الافتراضي)، حيث أنه من السهل تماماً الاتصال ومعاينة مخدم SMTP بواسطة برنامج تل نت.
يعتبر نظام SMTP نظام "دفع" إذ أنه لايسمح بـ"سحب" الرسائل من المخدم الهدف.. إذ أنه للقيام بذلك يجب على عميل البريد الإلكتروني استخدام أنظمة أخرى مثل POP3 أو IMAP.

مخدم SMTP للبريد الصادر

يحتاج عميل البريد الإلكتروني لمعرفة اسم أو عنوان آي بي مخدم الـSMTP للبريد الصادر، إذ أن برنامج عميل البريد الإلكتروني لا يقوم بتسليم الرسالة إلى مخدم الـSMTP الهدف مباشرة، بل يسلمها إلى مخدم البريد الصادر، الذي يوجد اسمه/عنوانه في إعدادات البرنامج، حيث يهتم مخدم البريد الصادر هذا بتسليم الرسالة بناءً على طلب المستخدم. وهذا يسمح بتصميمات مختلفة وملائمة للشبكات حسب الحاجة. إذ أنه يمكن لمستخدمين ليسوا على اتصال بالإنترنت، ووراء جدار ناري، ولكن على اتصال بمخدم SMTP للبريد الصادر، أن يستخدموا هذا المخدم لإرسال رسائل بريد إلكتروني لأي عنوان.

القيام بإتصال بسيط مع مخدم SMTP

بعد إنشاء اتصال بين مرسال الرسالة (العميل) ومستقبلها (المخدم)، يتبادل الاثنان الأوامر والردود (التي يتم تبادلها بشكل نصي)، حيث يظهر التالي جلسة اتصال بين زبون ومخدم، يتم من خلالها إرسال رسالة من الزبون عن طريق هذا المخدم، كل مايرسله المخدم مسبوق بـ"S"، وكل ما يرسله الزبون مسبوق بـ"C". يمكن بدء اتصال TCP عن طريق استخدام الأمر telnet من سطر الأوامر على الحاسب الزبون كالتالي:
telnet example.com 25
حيث يقوم بفتح قناة اتصال TCP إلى المنفذ 25 الموجود على الحاسب ذو العنوان example.com
S: 220 www.example.com ESMTP Postfix
C: HELO mydomain.com
S: 250 Hello mydomain.com
C: MAIL FROM:<sender@mydomain.com>
S: 250 Ok
C: RCPT TO:<friend@example.com>
S: 250 Ok
C: DATA
S: 354 End data with <CR><LF>.<CR><LF>
C: Subject: test message
C: From: sender@mydomain.com
C: To: friend@example.com
C:
C: Hello,
C: This is a test.
C: Goodbye.
C:.
S: 250 Ok: queued as 12345
C: QUIT
S: 221 Bye
تقوم المخدمات عادة بالاستفسار من المخدم عن امتدادات SMTP التي يدعمها، وذلك باستخدام الأمر EHLO عوضاً عن HELO، فإذا لم يرد المخدم على هذا الأمر يعود الزبون لاستخدام HELO التقليدية.
أحد امتدادات الـSMTP الهامة التي قد يرد بها المخدم على أمر EHLO هي الكلمة المفتاحية SIZE التي يتبعها حجم الرسالة الأقصى التي يمكن للمخدم أن يستقبلها. إذ أن المخدمات والزبائن الأقدم سوف تقوم بعملية نقل الرسائل الضخمة التي يتم رفضها بعد انتهاء عملية النقل، بعد أن تكون الكثير من موارد الشبكة قد استهلكت، أضف إلى وقت الاتصال الكبير الذي تطلبته العملية والذي قد يشكل عبئاً كبيراً على مستخدمي اتصال الـطلب هاتفي الذين يدفعون بالدقيقة.
S: 220-serverdomain.com ESMTP {postfix version and date}
S: 220 NO UCE. {etc., terms of service}
C: EHLO mydomain.com
S: 250-serverdomain.com Hello mydomain.com [127.0.0.1]
S: 250-SIZE 14680064
S: 250-PIPELINING
S: 250 HELP