في موضوع صناعة الدراجات في مجال تخزين البريد الكهربائي

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


يشار إلى المشكلة ، فمن الضروري حلها. الطريق إلى الأمام - لشراء حديد أكثر قوة - ليس من نوعي ، والميزانية ليست من المطاط. الخيار الواضح: الحصص. لكن في الممارسة العملية ، هذا لا يساعد كثيرا. يتحول قسم "لقد نظفت كل شيء" عند الفحص الدقيق إلى أختام وصور مضحكة وأرشيف صور عائلية (في بريد الشركات ، نعم). وعدد الصرخات "لدي ضوء عاجل لا يعمل ، افعل ذلك على الفور" يزداد بمقدار الضخامة. لذلك ليس لفترة طويلة وتفقد الثقة في الناس.

لحسن الحظ ، أنا لست عالم نفسي ، لست مدربًا أو مرشدًا. عملي هو التكنولوجيا. لذا سنأتي من الجانب التقني.

أول شيء اعتقدته كان رسائل تدمر نفسها. على وجه التقريب ، يتم حذف كل شيء بدون علامة "مهمة" بعد N يوم. بالنسبة لذوقي ، يجب أن يتم "خياطته" في معايير تخزين البريد الكهربائي. ولكن حتى الآن لم يكن الأمر كذلك ، وبدا أن التنفيذ طموح للغاية.

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

حسنا ، لا تحذف ، لذلك نسخ! خذ جميع النسخ وقم بعمل روابط رمزية. أظهر تحليل سريع أنه حتى معالجة التكرارات الكاملة فقط بهذه الطريقة يوفر ثلاثة مستودعات. ولكن ، ولكن ، ولكن. لسوء الحظ ، هذا طريق مسدود بسبب العديد من القيود التقنية.

التفاصيل للمهتمين تحت المفسد
- لا يفهم جميع المحفوظات الروابط الرمزية ؛
- برنامج الخادم أصبح مجنونًا في بعض الأماكن ؛
- مؤسسة التعقيد. حقوق الشخصية والوصول.

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

ماذا بقي؟ مع الحزن نظرت إلى الاختام


وتساءلت بالفعل عن شبكة عصبية بسيطة من شأنها تنظيف البريد للمستخدم. ثم ... معذرة ، معذرة ، ولكن ماذا تفعل القطط في الرسالة؟ أتذكر أن الرسالة التي تحتوي على مرفق تزن ما يقرب من ثلث أكثر من مرفق واحد! ولكن هل يمكنني تحريك المرفق؟ ..

وهكذا بدأ الطريق حيث كانت هناك "العديد من الاكتشافات الرائعة". إذا كنت أعرف ... حسنا ، أنت تفهم. قطرة الجهل والشجاعة تقودنا إلى النصر!

لذا: نقوم بتخزين المرفقات بشكل منفصل عن الحروف .

الخطأ الرئيسي الذي يمكنك القيام به هنا هو فتح ملف eml في محرر نصوص وتحديد وجود نص عادي. لذا فعلت. وكان مسرورًا. الآن سأكتب ملف دفعي. الأدوات المساعدة لسطر الأوامر لاستخراج المرفقات ممتلئة: github.com/erikvdv1/eml-attachments أو github.com/maiken2051/uudeview ، مرتجلاً. هناك مشاكل في الترميزات ، ولكن هذا ليس أهم شيء.

أهم شيء: إخراج الملف وإنشاء رابط إليه هو مسألة تافهة. ولكن لدفع هذا الرابط في الرسالة الأصلية ... لأنه لا يوجد نص. هناك MIME .

القارئ ذو الخبرة ، بالطبع ، يضحك الآن على المؤلف التعساء. ومع ذلك ، اكتشف المؤلف مسرات "المعيار". أهم شيء فهمته: فطر فطر الغاريقون ليس ضروريًا للسقوط في هائج.

أمثلة وسوء - تحت المفسد:

charset = utf-8
مجموعة الأحرف = "UTF-8"
مجموعة الأحرف = "UTF-8"
محارف = UTF-8 ؛
charset = "UTF-8" ؛
charset = "UTF-8" ؛
هذا هو نفس الشيء.

فواصل الأسطر في منتصف دفق Base64. من أين جاءوا لا يزال لغزا بالنسبة لي.

والعكس بالعكس: غياب \ r \ n \ r \ n بعد جزء الرأس.

في الرأس نفسه ، ترتيب الحقول بناء على طلب الكعب الأيسر.

تسمح الأحرف القديمة بطول سطر لا يزيد عن 80 حرفًا ، بما في ذلك أحرف الخدمة.

قد يكون هناك فواصل أسطر في أسماء الملفات (في نص الرسالة ، وليس في الاسم نفسه).

بشكل عام ، يمكن أن تكون فواصل الأسطر في أي مكان ، على الرغم من أن فاصل الأسطر القياسي يُعلن أنه نهاية المعلمة الحالية.

نص الرسالة مشفر. كيف يتم ترميزها بالضبط ، يبقى على ضمير خادم معين ، هناك مجموعة من الخيارات (الرائحة الكريهة).

وفي الرسالة ، يوجد دائمًا جزء html. أي إذا أرسلت "مرحبًا" وكان هناك علامة br أو p ، فسيكون في الرسالة دائمًا قسمان: بنص بسيط وبعلامات. والنص مكرر. وهنا "أنقذوا" قوة الحوسبة ... فقط بعض الوحوش مع فرانكنشتاين.

اسم الملفات الموجودة لديهم هو كما يلي: filename = "=؟ Encoding؟ Type؟؛ ويحدث على هذا النحو: filename * 0 * = encoding '' (STA ؟؟ !!). والثاني هو معيار أحدث ، RFC5987. المعيار صراحة اسم الملف هذا * 0 * = ENC واسم الملف = "=؟ نفس الشيء. في هذا المكان ، أصبحت مقتنعًا أخيرًا بأنهم يسخرون مني. لا أعرف كيف يمكن التعامل معها بشكل طبيعي.

بشكل منفصل ، كالعادة ، سجل آبل. لديهم بشكل عام نوع من المعايير الخاصة بهم. بالنظر إلى المستقبل ، أدت محاولات طويلة لمعالجة التعليمات البرمجية الخاصة بهم إلى الحل الصحيح الوحيد: "خطأ: بريد Apple غير مدعوم".

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

لكنه لم يفقد القلب. لا تقرأ الوثائق @ اكتب الرمز ، وبذلك تكون قد انتهيت. لا ، بجدية ، كان علي أن أفعل شيئًا لتقريب نهاية MIME.

لم يكن البرنامج النصي الدُفعة كافيًا. وكانت النتيجة أداة مساعدة لسطر الأوامر في C # و dotNet .

الأداة المساعدة لها وضعان للعمل:
أولاً: مجرد استخراج المرفقات. في نفس الوقت ، يعمل بشكل صحيح مع ترميزات Windows.

الثاني: وهنا المرح الرئيسي. الآن لا يزال بإمكاننا تخزين مرفقات البريد بشكل منفصل عن البريد! تقوم الأداة بإنشاء حرف جديد بدلاً من الحرف القديم : يتم قطع المرفق ، وتتم إعادة تنسيق الحرف إلى HTML عادي بترميز UTF دون تحديد طول السطر. يؤخذ قسم النص / عادي كأساس. إذا كانت هناك جداول في قسم html ، فإنها تنقلها مع الحفاظ على التنسيق داخل الجدول ، ولكن هذه الوظيفة تعمل على هذا النحو. في نهاية نص الرسالة الحالية (إذا كانت إجابة أو إعادة توجيه) ، يتم إدراج روابط لموارد الشبكة مع المسار إلى الملفات المستخرجة ، في تنسيقات الملف: /// و ftp: //.

الصورة

يتم اختبار النظام على 10000 حرف ويتم نشره على البنية التحتية الموجودة.

المزايا المحددة:
+ كان:
النسخ الاحتياطي
بدأ في 01:00:08
وأتمت بنجاح 03:26:32

أصبح:
النسخ الاحتياطي
بدأ في 01:00:09
وأتمت بنجاح 01:40:36

+ حفظ 30 +٪ من مساحة التخزين: تنتقل الملفات من Base64 الثقيلة وغيرها مثلها إلى تنسيق نظام الملفات العادي ، بالإضافة إلى العثور على الكثير من التكرارات حتى داخل صناديق البريد الفردية.

+ زيادة سرعة معالجة علب البريد من قبل الخادم وبرامج البريد.

+ يختفي "فتحت رسالة من مكتب البريد وقمت بتحريرها لمدة 10 ساعات ولم تنج"

+ يمكنك رفض الحصص.

+ يبقى من الممكن العثور على مرفق في البريد ، بدلاً من نقله ببساطة إلى تخزين الملفات.

+ يقترب من نهاية MIME. توبوا أيها المؤلفون!

سلبيات القرار:

- بعض الحروف (ولكن ليس المرفقات) لا تزال تضرب. في الأساس ليس داخليًا ، ولكن عند عرضها في بعض العملاء ؛
- في بروتوكول نقل الملفات ، تنكسر بعض الشياطين باستمرار ؛
- لا يدعم جميع عملاء البريد الإلكتروني فتح الملف: ///

القضايا الخلافية:

؟؟؟ بريد Apple غير مدعوم. بالنسبة لي - والبوذا معه ؛
؟؟؟ نبض الحروف بتنسيق معقد. عادة ما تكون هذه النشرات من الحجز أو الإعلان ؛
؟؟؟ إذا كان خادم بروتوكول نقل الملفات على منفذ غير قياسي ، فقد تكون هناك مشاكل في الوصول. قرره روبوت البريد.

بهذه الطريقة الشائكة تم حل المشكلة.

شكرا لكم على اهتمامكم!

Source: https://habr.com/ru/post/ar420371/


All Articles