متوفر أيضًا بلغات أخرى: English · Español · Português · Français
التحقق من البريد الإلكتروني
يفحص العنوان بالمعيارين اللذين يقرّران فعلًا، ويسمّي القاعدة التي ردَّته، ويقول صراحةً ما لا يستطيع معرفته.
ما التحقق من البريد الإلكتروني؟
أداةُ التحقق من البريد تجيب هل هذه السلسلةُ عنوانُ بريدٍ سليمُ البنية. تستعملها نماذجُ التسجيل لاصطياد الأخطاء المطبعية قبل أن تكلّف إعادةَ تعيين كلمة مرور، وتستعملها قوائمُ المراسلة لتبقي المرتدَّ قليلًا، ويعود إليها المبرمج حين يبدأ تعبيرٌ نمطيٌّ منقولٌ عن الإنترنت في رفض عميلٍ عنوانُه سليمٌ تمامًا.
والمشكلةُ أنّه لا جوابَ واحدًا، والمواصفاتُ نفسُها تقول ذلك. فمعيارُ HTML يحدّد ما يقبله حقلُ <input type=email>، ويصف تعريفَه هو بهذه العبارة: «مخالفةٌ متعمَّدةٌ لـRFC 5322»، وهو معيارُ الإنترنت لصيغة الرسائل. ويسوق ثلاثةَ أسباب: أنّ RFC 5322 أشدُّ مما ينبغي قبل @، وأغمضُ مما ينبغي بعدها، وأوسعُ مما ينبغي إذ يجيز التعليقات والمسافات والنصوصَ بين علامات تنصيصٍ على نحوٍ يحيّر أكثر الناس.
والأسبابُ الثلاثةُ تصمد عند الفحص، ونتيجتُها هي ما وُجدت هذه الصفحةُ لتبيّنه: لا أحدَ المعيارين يشمل الآخر، بل يقبل كلٌّ منهما عناوينَ يردّها الآخر. ولذلك تعطي هذه الأداةُ الحكمين جنبًا إلى جنب، وتسمّي القاعدة التي قرّرت.
كيف تستعملها
- الصق عناوينك، عنوانًا في كلّ سطر. يكفي عنوانٌ واحد، وتصلح قائمةٌ من آلاف. تُتخطّى الأسطرُ الفارغة بدل أن تُعدَّ إخفاقات، وتُقصّ المسافاتُ المحيطة، فلصقُ عمودٍ من جدولٍ حسابيّ يفعل ما تتوقّع.
- اقرأ الشارتين في كلّ صفّ. إحداهما قاعدةُ نماذج HTML، وهي التي تقرّر هل يسمح المتصفحُ بإرسال الحقل. والأخرى RFC 5322، وهي التي تنفّذها مكتبةُ بريد. وحين يختلفان يُعلَّم الصفُّ، لأنّ تلك هي الحالةُ الجديرةُ بأن تُعرف.
- اقرأ السببَ تحته. أيًّا كان المعيارُ الذي ردَّ العنوان، فالسطرُ الذي تحته يقول أيُّ قاعدةٍ فعلت ذلك: نقطةٌ في غير موضعها، أو جزءٌ محليٌّ بين علامتَي تنصيص، أو تعليقٌ بين قوسين، أو شَرطةٌ على حافّة جزءٍ من النطاق. والحكمُ بلا سببٍ قليلُ الفائدة حين يكون عليك أن تقرّر: أتصلح العنوان أم تصلح أداةَ التحقق.
أين يفترق المعياران
ثلاثةُ عناوينَ عاديةِ المظهر صحيحةٌ بقاعدة HTML وغيرُ صحيحةٍ بـRFC 5322، وثلاثتُها في النقاط. فـRFC 5322 يبني ما قبل @ من «dot-atom»، أي قطعِ نصٍّ تصلها نقاطٌ مفردة، فالنقطةُ المضاعفةُ أو الأوليةُ أو الأخيرةُ تكسر القواعد. أما نمطُ HTML فيجيز النقاطَ في أيّ موضعٍ من تلك السلسلة، فـjohn..doe@example.com يمرّ في نموذج المتصفح ويسقط في محلّلٍ صارم.
وأكثرُ منها يسير في الاتجاه المعاكس. فـRFC 5322 يدع ما قبل @ نصًّا بين علامتَي تنصيص، فـ"john..doe"@example.com سليم: التنصيصُ يجعل النقاطَ بياناتٍ لا بنية. ويجيز التعليقاتِ بين قوسين في كلّ موضعٍ تقريبًا، فـjohn.doe(comment)@example.com يُحلَّل بلا عناء. ويجيز أن يكون النطاقُ عنوانًا صريحًا بين قوسين معقوفين، سواءٌ user@[192.168.0.1] أو صيغةُ IPv6. وقواعدُ نطاقه لا تقول شيئًا البتة عن أجزاء النطاق، وهو ما يسمّيه معيارُ HTML «غامضًا أكثرَ مما ينبغي»: فـuser@-example.com وجزءُ نطاقٍ طولُه أربعةٌ وستون حرفًا سليمان تركيبيًّا عند RFC 5322، ويردّهما المتصفحُ كليهما.
والقراءةُ العمليةُ أنّ قاعدة HTML تسويةٌ مقصودةٌ لا خطأ. فهي أضيقُ حيث يتساهل المعيارُ في أشياءَ لا يكتبها أحد، وأوسعُ حيث يتزمّت في أشياءَ يكتبها الناسُ فعلًا. فإن كنت تتحقّق من حقلٍ في نموذج، فمحاكاةُ المتصفح هي الصواب غالبًا؛ وإن كنت تكتب محلّلَ بريدٍ فلا.
حدودٌ صريحة
لا يخبرك أيٌّ من العمودين هل يصل البريدُ فعلًا. فذاك سؤالٌ ثالثٌ بتمامه — هل النطاق موجود، وهل له خادمُ بريد، وهل الصندوق قائم، وهل يقبل الرسالة — وهو يحتاج إلى استعلامات DNS وإلى محادثة SMTP. وصفحةٌ تعمل في متصفحك لا تستطيع شيئًا من ذلك، فلا تدّعيه هذه الأداة. ومن زعم فحصَ قابلية التسليم دون إرسال رسالةٍ فهو إمّا يخمّن من قائمة نطاقاتٍ معروفة، وإمّا يؤدّي العمل على خادمٍ تسلّمه أنت قائمتك.
وحدودُ الطول جديرةٌ بأن تُعرف، وهي أغربُ مما تبدو. فـRFC 5321 يحصر ما قبل @ في أربعةٍ وستين بايتًا والنطاقَ في مئتين وخمسةٍ وخمسين. أمّا المئتان والأربعةُ والخمسون التي تستعملها كلُّ مكتبة تحقُّقٍ فلا وجود لها في متن أيّ RFC: مصدرُها استدراكٌ موثَّقٌ على RFC 3696 يستنتجها من حدّ المسار البالغ 256 بايتًا، مطروحًا منه قوسا الزاوية اللذان يلزم المسارَ أن يحيط بهما العنوان. وقد قال استدراكٌ أسبقُ 256 فصُحّح بهذين الحرفين بالضبط. وامضِ بالحساب خطوةً أخرى يخرج لك شيءٌ طريف: 64 زائد واحد زائد 255 يساوي 320، وهو فوق 254 بفارقٍ مريح، فالحدّان الجزئيّان لا يُبلغان معًا في عنوانٍ حقيقيّ أبدًا.
والأطوالُ هنا تُعَدُّ بالبايتات لا بالحروف، لأنّ ذلك ما يقوله المعيار. وفي عنوانٍ لاتينيٍّ عاديٍّ يتساوى العددان، لكنّ الحرفَ المشكولَ يشغل بايتين والرمزَ التعبيريَّ أربعة، فقد يكون عنوانٌ قصيرُ المظهر أطولَ على الشبكة مما يبدو على الشاشة.
والمعياران المنفَّذان هنا كلاهما بـASCII وحدها، وهذا قيدٌ حقيقيٌّ لا سهو. فالعناوينُ المؤمَّمة — بحروفٍ خارج ASCII قبل @ أو بعدها — تعرّفها مواصفاتٌ لاحقة، ودعمُها بين برامج البريد متفاوتٌ بما يكفي لأن يكون عدُّها صحيحةً بلا قيدٍ ضربًا آخر من الكذب. وحين يمرّ واحدٌ منها تقول الأداةُ أيُّ حرفٍ سبّبه بدل أن تفشل صامتة.
وشيءٌ تتعمّد هذه الأداةُ ألّا تفعله: تخمينَ الأخطاء المطبعية. فاقتراحُ أنّ gmial.com أُريد بها gmail.com يستلزم قائمةً بمزوّدين مشهورين، وقائمةٌ كهذه صورةٌ ثابتةٌ تشيخ دون أن تنبّهك، وتنتهي إلى تصحيح من يستعمل نطاقًا أصغرَ عن حقّ.
لماذا هي مجانية؟
لأن تشغيلها لا يكلّف شيئًا. فالمعياران منفَّذان في متصفحك، فالعناوينُ التي تلصقها لا تغادر جهازك — وهذا هنا أهمُّ منه في أكثر الصفحات، لأنّ قائمةَ بريدٍ هي بالضبط ما لا ينبغي رفعُه إلى خادم غريبٍ ليفحصه.
لا حسابَ، ولا حدَّ لعدد العناوين التي تفحصها دفعةً واحدة، ولا شيءَ محجوزًا خلف اشتراك. والتنفيذُ مقيسٌ على محلّلٍ حقيقيٍّ لـRFC 5322 لا على توقّعاتٍ مكتوبةٍ باليد، وعلى التعبير النمطيّ الذي ينشره معيارُ HTML نفسُه، فأحكامُ هذه الصفحة مما يمكن الدفاع عنه.