التحديث التلقائي لترميز TLS باستخدام شهادات Let's Encrypt
عندما أعلنا قبل ثلاث недوات عن إصدار MailStore Server 12، شعرنا أن اInnovation معينة تستحق الانتباه بشكل خاص، ألا وهي الدعم التلقائي لشهادات Let's Encrypt، وهي هيئة مُصدرة مستقلة توفر شهادات رقمية للاستخدام في تشفير طبقة النقل (TLS). هذه الخدمة توفر لعملائنا طريقة بسيطة وفعالة للحصول على شهادات رسمية موثوقة تلقائيًا وتجديدها، مما يساعدهم في إنشاء بيئة آمنة وآمنة.

أدوات
يمكنك استدعاء دالة واحدة أو أكثر لمساعدتك في استعلام المستخدم.
لديك توقيعات الدوال داخل علامات XML mode=\"abstract\" يعود ~1500 حرف (صفحة PDF 1 أو وصف HTML meta) -- مسح رخيص لفحص الصلة قبل دفع تكلفة نص كامل. mode=\"full\" (القيمة الافتراضية) يعود كل مقالة. المحاولة الأفضل: الفشل يعود خطأ Info بدلاً من رمي الاستثناء.", "parameters": {"$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "properties": {"url": {"type": "string", "description": "الرابط العلني http(s). يُمنع IPs الخاصة إلا إذا كان SURF_ALLOW_PRIVATE=true."}, "max_chars": {"default": 8000, "description": "تقطيع الجسم إلى هذا العدد من الأحرف (الافتراضي 8000، يتم تعيينه عبر SURF_EXTRACT_MAX_CHARS).", "type": "integer", "minimum": 200, "maximum": 50000}, "mode": {"default": "full", "description": "عمق الاستخراج. full = كامل جسم المقالة (القيمة الافتراضية؛ تستخدم Playwright إذا لزم الأمر). abstract = مسح رخيص: صفحة PDF 1 أو وصف HTML meta (~1500 حرف)؛ استخدم لفحص الصلة قبل دفع نص كامل. metadata = عدد الصفحات فقط (PDF). PDF أكاديمي (arxiv/biorxiv/Nature/OpenReview/NeurIPS/JMLR/PMLR/Springer/PubMed-via-PMC) تُكتشف تلقائيًا؛ الوضع المجرد يتجاوز Playwright لها.", "type": "string", "enum": ["full", "abstract", "metadata"]}}, "required": ["url"]}}}
{"type": "function", "function": {"name": "google-surf__search_extract", "description": "بحث جوجل واحد + استخراج متوازي لنتائج الأعلى. الوضع الافتراضي mode=\"abstract\" يعود SERP مع ملخصات ~1500 حرف لكل نتيجة -- مسح رخيص لما تحتويه النتائج الأعلى فعليًا، عدد أقل بكثير من الرموز من تنزيل كل جسم. انتقل إلى mode=\"full\" فقط عندما تحتاج إلى نصوص المقالات الفعلية (أبطأ، عدد رموز أكثر بكثير). فشل الاستخراج لكل صفحة مفصولة. معطل في الوضع السحابي.", "parameters": {"$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "properties": {"query": {"type": "string", "minLength": 1, "maxLength": 400, "description": "استعلام البحث."}, "limit": {"default": 5, "description": "عدد النتائج لاستخراجها (القيمة الافتراضية 5، ماكس 10).", "type": "integer", "minimum": 1, "maximum": 10}, "max_chars": {"description": "تقطيع جسم كل نتيجة. الافتراضي يعتمد على الوضع: ~1500 لملخص، 8000 لكامل (SURF_EXTRACT_MAX_CHARS، محدد حتى 20000 هنا).", "type": "integer", "minimum": 200, "maximum": 20000}, "mode": {"default": "abstract", "description": "عمق الاستخراج لكل نتيجة. abstract (القيمة الافتراضية) = مسح رخيص، ~1500 حرف لكل نتيجة، مثالي لفحص الصلة. full = جسم كامل لكل نتيجة، أبطأ وعدد رموز أكثر بكثير؛ فقط عندما تحتاج فعليًا إلى نصوص المقالات.", "type": "string", "enum": ["full", "abstract"]}}, "required": ["query"]}}}
{"type": "function", "function": {"name": "google-surf__health", "description": "حالة خادم MCP: الوضع الكасكادي + الانتقالات، استخدام الحدّ المحدد، حجم التخزين المؤقت، الإعدادات. اتصل بهذا إذا بدأت عمليات البحث فشل أو عودة فارغة -- تحقق من cascade.totalCaptchas و rateLimiter.queueSize، وتقليل حجم البحث إذا كانت مرتفعة.", "parameters": {"$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "properties": {}}}}
{"type": "function", "function": {"name": "semgrep__semgrep_rule_schema", "description": "\nالحصول على مخطط قاعدة Semgrep\n\nاستخدم هذا الأداة عندما تحتاج إلى:\n - الحصول على المخطط المطلوب لكتابة قاعدة Semgrep\n - تحتاج إلى رؤية ما هي الحقول المتاحة لقاعدة Semgrep\n - تحقق مما إذا كانت الحقول المتاحة لقاعدة Semgrep\n - التحقق من صحة تركيب قاعدة Semgrep\n", "parameters": {"properties": {}, "title": "semgrep_rule_schemaArguments", "type": "object"}}}
{"type": "function", "function": {"name": "semgrep__get_supported_languages", "description": "\nيعيد قائمة اللغات المدعومة من قبل Semgrep\n\nاستخدم هذا الأداة فقط إذا كنت غير متأكد من اللغات التي يدعمها Semgrep.\n", "parameters": {"properties": {}, "title": "get_supported_languagesArguments", "type": "object"}}}
{"type": "function", "function": {"name": "semgrep__semgrep_findings", "description": "\nيحصل على النتائج من واجهة برمجة تطبيقات Semgrep AppSec Platform Findings.\n\nتسترد هذه الدالة النتائج الأمنية، جودة الكود، ونتائج سلسلة التوريد التي تم تحديدها مسبقًا عبر عمليات فحص Semgrep وتم رفعها إلى منصة Semgrep AppSec. إنها لا تجري فحصًا جديدًا أو تحليل الكود مباشرة. بدلًا من ذلك، تجري استعلامًا إلى واجهة برمجة تطبيقات Semgrep للوصول إلى نتائج الفحص السابقة لمستودع معين أو مجموعة من المستودعات.\n\nالسلوك الافتراضي: بشكل افتراضي، يجب أن ترشح هذه الأداة حسب المستودع الحالي. يجب أن يحدد النموذج اسم المستودع الحالي ويمرره في معلمة 'repos' لضمان أن تكون النتائج محدودة بقاعدة الكود المناسبة. ومع ذلك، يمكن للمستخدمين طلب النتائج من مستودعات أخرى بشكل صريح، وفي هذه الحالة يجب أن يحترم النموذج هذا الطلب.\n\nاستخدم هذه الدالة عندما يطلب المحفوظات ملخصًا، قائمة، أو تحليلًا للنتائج القديمة، مثل:\n - "من فضلك قم بسرد 10 أبرز النتائج الأمنية واقترح حلولًا لها."\n - "أظهر جميع الثغرات الحرجة المفتوحة في هذا المستودع."\n - "ملخص النتائج الأخيرة لفحص Semgrep."\n - "احصل على النتائج من المستودع X" (طلب صريح لمستودع مختلف)\n\nهذه الدالة مثالية ل:\n- مراجعة، قائمة، أو ملخص النتائج من الفحوصات السابقة.\n- تقديم رؤى قابلة للتنفيذ أو نصائح لإصلاح بناءً على بيانات الفحص السابقة.\n\nلا تستخدم هذه الدالة لإجراء فحص جديد أو فحص كود لم يتم تحليله سابقًا من قبل Semgrep. للفحوصات الجديدة، استخدم دالة الفحص المناسبة.\n", "parameters": {"properties": {"issue_type": {"default": "ISSUE_TYPE_SAST", "description": "نوع المشكلة للاستعلام عنها.", "enum": ["ISSUE_TYPE_SAST", "ISSUE_TYPE_SCA"], "title": "Issue Type", "type": "string"}, "repos": {"default": [], "description": "قائمة أسماء المستودعات للاستعلام عنها. اشمل المالك وأسماء المستودع، مثال 'owner/repository'", "items": {"type": "string", "description": ""}, "title": "Repos", "type": "array"}, "status": {"default": "ISSUE_TAB_OPEN", "description": "حالة المشكلة للاستعلام عنها.", "enum": ["ISSUE_TAB_OPEN", "ISSUE_TAB_CLOSED", "ISSUE_TAB_IGNORED", "ISSUE_TAB_REVIEWING", "ISSUE_TAB_FIXING"], "title": "Status", "type": "string"}, "severities": {"anyOf": [{"items": {"enum": ["SEVERITY_CRITICAL", "SEVERITY_HIGH", "SEVERITY_MEDIUM", "SEVERITY_LOW"], "type": "string", "description": ""}, "type": "array", "description": ""}, {"type": "null", "description": ""}], "default": null, "description": " severities للمشاكل للاستعلام عنها.", "title": "Severities"}, "confidence": {"anyOf": [{"items": {"enum": ["CONFIDENCE_HIGH", "CONFIDENCE_MEDIUM", "CONFIDENCE_LOW"], "type": "string", "description": ""}, "type": "array", "description": ""}, {"type": "null", "description": ""}], "default": null, "description": " уверенيات للمشاكل للاستعلام عنها.", "title": "Confidence"}, "autotriage_verdict": {"anyOf": [{"enum": ["VERDICT_TRUE_POSITIVE", "VERDICT_FALSE_POSITIVE"], "type": "string", "description": ""}, {"type": "null", "description": ""}], "default": null, "description": "حكم التriage التلقائي للمشاكل للاستعلام عنها. إذا لم يُقدّم، تُعاد النتائج ذات الأحكام (بما في ذلك غير المقيّمة).", "title": "Autotriage Verdict"}, "refs": {"default": [], "description": "قائمة git refs (أسماء الفروع) للاستعلام عن النتائج. إذا لم تُقدّم، تُعاد فقط النتائج من الفرع الأساسي.", "items": {"type": "string", "description": ""}, "title": "Refs", "type": "array"}, "limit": {"default": 10, "description": "عدد أقصى للنتائج العائدة", "title": "Limit", "type": "integer"}}, "title": "semgrep_findingsArguments", "type": "object"}}}
{"type": "function", "function": {"name": "semgrep__semgrep_scan_with_custom_rule", "description": "\nيُجري فحص Semgrep مع قاعدة مخصصة على المحتوى المقدم\nويعيد النتائج بصيغة JSON\n\nاستخدم هذا الأداة عندما تحتاج إلى:\n - فحص ملفات الكود لضعف أمان معين غير المغطى بقواعد Semgrep الافتراضية\n - فحص ملفات الكود لمشكلة معينة غير المغطى بقواعد Semgrep الافتراضية\n", "parameters": {"$defs": {"CodeFile": {"properties": {"path": {"description": "مسار ملف الكود", "title": "Path", "type": "string"}, "content": {"description": "محتوى ملف الكود", "title": "Content", "type": "string"}}, "required": ["path", "content"], "title": "CodeFile", "type": "object"}}, "properties": {"code_files": {"description": "قائمة بالملفات التي تحتوي على 'path' و'mcontent' ", "items": {"$ref": "#/$defs/CodeFile", "description": ""}, "title": "Code Files", "type": "array"}, "rule": {"description": "نص قاعدة Semgrep بصيغة YAML", "title": "Rule", "type": "string"}}, "required": ["code_files", "rule"], "title": "semgrep_scan_with_custom_ruleArguments", "type": "object"}}}
{"type": "function", "function": {"name": "semgrep__semgrep_scan", "description": "\nيُجري فحص Semgrep محليًا على الملفات المقدمة ويؤدي النتائج بصيغة JSON.\n\nيتم توقع الملفات كمسارات مطلقة لملفات الكود.\n\nاستخدم هذا الأداة عندما تحتاج إلى:\n - فحص ملفات الكود للثغرات الأمنية\n - فحص ملفات الكود لمشكلات أخرى\n", "parameters": {"$defs": {"CodePath": {"properties": {"path": {"description": "مسار مطلق لملف الكود", "title": "Path", "type": "string"}}, "required": ["path"], "title": "CodePath", "type": "object"}}, "properties": {"code_files": {"description": "قائمة بالملفات التي تحتوي على 'path' يشير إلى مسار مطلق لملف الكود", "items": {"$ref": "#/$defs/CodePath", "description": ""}, "title": "Code Files", "type": "array"}}, "required": ["code_files"], "title": "semgrep_scanArguments", "type": "object"}}}
{"type": "function", "function": {"name": "semgrep__get_abstract_syntax_tree", "description": "\nيعيد شجرة التحليل المجردة (AST) لملف الكود المعطى بصيغة JSON\n\nاستخدم هذا الأداة عندما تحتاج إلى:\n - الحصول على شجرة التحليل المجردة (AST) لملف الكود المعطى\n - الحصول على AST لملف\n - فهم هيكل الكود بطريقة أكثر تفصيلًا\n - رؤية ما يراه المترجم في الكود\n", "parameters": {"properties": {"code": {"description": "الكود للحصول على AST له", "title": "Code", "type": "string"}, "language": {"description": "لغة البرمجة للكلمة", "title": "Language", "type": "string"}}, "required": ["code", "language"], "title": "get_abstract_syntax_treeArguments", "type": "object"}}}
{"type": "function", "function