
1. بضع كلمات من المؤلف
تحديث المادة. تغيرت البرامج النصية. تمت إضافة البرنامج النصي لتحديث قائمة بريدية واحدة.في التعليقات على المقالة الأخيرة ، سُئل سؤالًا مثيرًا للاهتمام حول التكوين التلقائي لقوائم البريد بناءً على مجموعات الأمان AD. هناك مشكلة - هناك حل. لذلك دعونا نذهب.
2. مصدر البيانات
خادم نظام التشغيل : CentOS 7
حول نظام التشغيلفي الواقع ، فإن الفرق بين CentOS7 وأي نظام آخر يكمن فقط في أوامر الخادم لتثبيت الحزم ، وربما موقع بعض الملفات. يتم تنفيذ العمل بشكل أساسي باستخدام أوامر cmdlets من طراز Zimbra ، وبالتالي ستكون فروق التكوين ضئيلة للغاية.
Zimbra المجال : zimbramail.home.local
مسار تحميل الكرات على مضيف Zimbra : / mnt / ZM /
3. الإعداد
- نقوم بتركيب كرة الويندوز على خادم Linux الخاص بنا. هذا هو تبسيط ونقل البيانات من Windows PowerShell إلى Linux Bash. تم وصف إجراء التركيب في مقال سابق. لن أكرر نفسي.
- ننشئ OU منفصلة في م ، والتي ننشئ مجموعات على أساسها سيتم إنشاء قوائم بريدية في Zimbra. اسم المجموعة = اسم قائمة التوزيع.
- نضيف إلى المجموعات التي تم إنشاؤها في OU الجديدة ، المستخدمين أو مجموعات الأمان ، والتي سيتم على أساسها نشر قوائم المراسلات في Zimbra. يتم تشغيل البرنامج النصي بشكل متكرر ، مما يعني أنه سيجمع كل البيانات حول المستخدمين الموجودين في مجموعات تضاف إلى مجموعات في OU الهدف. تعرف على المزيد حول إخراج الأمر Get-ADGroupMember .
- قم بإنشاء برنامج نصي لجمع البيانات من Active Directory.
- نقوم بإنشاء برنامج نصي لإضافة قوائم بريدية وتعبئتها بواسطة المستخدمين استنادًا إلى البيانات الواردة في البرنامج النصي السابق.
- استمتع
3.1. حول OU
لقد أنشأت OU "ZimbraDL" في جذر المجال وحظرت عليه أن يرث سياسات المجموعة بحيث تظل هذه المجموعات منفصلة. لن يشاركوا في حياة المجال بأي طريقة ، باستثناء تكوين قوائم التوزيع في بيئة نظام التشغيل Zimbra Collaboration OSE.
4. برنامج PowerShell النصي لجمع البيانات من م
برنامج PowerShell النصي$Path = "C:\ZM\ZimbraDL" $enc = [system.text.encoding] function ReCode ( $f, $t, $line ) { $cp1 = $enc::getencoding( $f ) $cp2 = $enc::getencoding( $t ) $inputbytes = $enc::convert( $cp1, $cp2, $cp2.getbytes( $line )) $outputstring = $cp2.getstring( $inputbytes ) $outputstring | add-content $OutputFile }
4.1. كيف يعمل البرنامج النصي
- أولاً ، يتحقق من وجود دليل العمل وحذفه ، إذا كان موجودًا. يعد ذلك ضروريًا حتى لا تتضاعف البيانات في العملية.
- ينظر PoSh إلى OU المحدد ، ويقرأ مجموعات المستخدمين الموجودة فيه ، ويكتبها في ملف GetGroupsAD.txt
- يتجاهل أي شيء لا لزوم له من الملف المستلم (PoSh يكتب كل مخرجاته إلى الملف ، لذلك في الإخراج الأولي للأمر ، السطر الأول هو الاسم ، السطر الثاني هو الفاصل "----" ، وبعد أن يتم سرد المجموعات واحدة تلو الأخرى) ، يتغير الترميز من "windows-1251" إلى utf-8 ، مما أدى إلى ملف GroupList.txt آخر
- علاوة على ذلك ، استنادًا إلى الملف الذي تم استلامه ، تتم قراءة المعلومات حول مستخدمي المجموعات الموجودة في الملف. الملفات التي تحتوي على أسماء المستخدمين (samAccountName)
وضعت في الدليل \ المستخدمين ودعا باسم المجموعة
4.2. البرنامج النصي لقراءة المعلومات من مجموعة واحدة
لا يختلف البرنامج النصي الذي لديه القدرة على قراءة البيانات من مجموعة أمان واحدة فقط عن المجموعة السابقة ، وذلك لأنه يحتوي على كتلة تطلب من المستخدم إدخال اسم المجموعة ، بناءً على القائمة البريدية التي ستحتاج إلى تحديث.
سيتم تشغيل البرنامج النصي PowerShell يدويًا مع إمكانية قراءة البيانات من مجموعة واحدة فقط $Path = "C:\ZM\ZimbraDL" $enc = [system.text.encoding] function ReCode ( $f, $t, $line ) { $cp1 = $enc::getencoding( $f ) $cp2 = $enc::getencoding( $t ) $inputbytes = $enc::convert( $cp1, $cp2, $cp2.getbytes( $line )) $outputstring = $cp2.getstring( $inputbytes ) $outputstring | add-content $OutputFile }
5. باش النصي لإنشاء قوائم بريدية
سوف أبدي تحفظًا حول نسخ ملفات البرامج النصية التي تم إنشاؤها بموجب Windowsفي مقالة سابقة ، وصفنا طريقة لتنسيق الملفات باستخدام الأمر cat ، والتي عندما يتم تشغيلها باستخدام مفتاح معين ، تزيل جميع الأحرف غير القابلة للقراءة غير الضرورية. رابط للمقال في نهاية المقال.
5.1. كيف يعمل البرنامج النصي
- اكتب قائمة مجموعات لملف
- تحقق من وجود القائمة البريدية في Zimbra ؛ إذا كانت موجودة ، احذفها
- إنشاء قوائم بريدية واحدة تلو الأخرى بناءً على قائمة المجموعات ، وملء كل منها بالمستخدمين (يتم عرض معرّف قائمة التوزيع على الشاشة ، وهذا هو الإخراج القياسي لـ cmdlet zmprov عند إنشاء DL). يتحقق هذا من وجود صناديق بريد المستخدم في Zimbra ، وإذا لم يكن صندوق البريد موجودًا ، فلن تتم إضافة المستخدم إلى القائمة البريدية. يمكنك بالطبع إنشاء صندوق بريد جديد للمستخدم وإضافته إلى القائمة البريدية ، لكنني أفترض أن Zimbra autoprov يعمل في وضع Eager ، وإذا لم يتم إنشاء المستخدم تلقائيًا ، فلن يقوم بأي شيء في النظام
- مسح الملفات المؤقتة
- حذف دليل العمل
6. الخاتمة
بشكل عام ، لم تكن المهمة صعبة ، المشكلة كانت فقط في نقل البيانات من PowerShell إلى Bash. حاولت لفترة طويلة العثور على أداة لتسجيل الملفات النصية مع إخراج PoSh في شكل Bash-digestible. كانت نتيجة البحث لعدة أيام هي الوظيفة:
إعادة ترميز وظيفة $InputFile = gc File1.txt $OutputFile = "File2.txt" $enc = [system.text.encoding] function ReCode ( $f, $t, $line ) { $cp1 = $enc::getencoding( $f ) $cp2 = $enc::getencoding( $t ) $inputbytes = $enc::convert( $cp1, $cp2, $cp2.getbytes( $line )) $outputstring = $cp2.getstring( $inputbytes ) $outputstring | add-content $OutputFile } foreach ($line in $InputFile) { ReCode -f "windows-1251" -t "utf-8" $line }
ربما شخص ما سيكون مفيدا.
7. ملاحظة:
هذا هو المقال الثالث في سلسلة "كيف نفذت زيمبرا". الأول يدور حول التطبيق وترخيص LDAP وإنشاء صناديق البريد تلقائيًا لمستخدمي م ،
هنا . الثاني ، حول إعداد النسخ الاحتياطي واسترداد Zimbra في مجملها وفي صناديق منفصلة ،
هنا .