
1. Beberapa kata dari penulis
Artikel diperbarui. Skrip berubah. Skrip ditambahkan untuk memperbarui satu milis.Dalam komentar pada artikel terakhir, saya ditanya pertanyaan menarik tentang pembentukan milis otomatis berdasarkan kelompok keamanan AD. Ada masalah - ada solusinya. Jadi ayo pergi.
2. Sumber data
Server OS : CentOS 7
Tentang OSFaktanya, perbedaan antara CentOS7 dan sistem lainnya hanya akan terletak pada perintah ke server untuk menginstal paket, dan, mungkin, lokasi beberapa file. Pekerjaan dilakukan terutama dengan cmdlet Zimbra, sehingga perbedaan konfigurasi akan minimal.
Zimbra Domain : zimbramail.home.local
Jalan untuk memasang bola pada host Zimbra : / mnt / ZM /
3. Pengaturan
- Kami memasang bola Windows ke server Linux kami. Ini untuk menyederhanakan dan mengotomatiskan transfer data dari Windows PowerShell ke Linux Bash. Prosedur pemasangan dijelaskan dalam artikel sebelumnya. Saya tidak akan mengulangi lagi.
- Kami membuat OU terpisah dalam AD, di mana kami membuat grup berdasarkan milis yang akan dibuat di Zimbra. Nama grup = nama daftar distribusi.
- Kami menambahkan ke grup yang dibuat di OU baru, pengguna atau grup keamanan, berdasarkan mana milis di Zimbra akan diisi. Script berjalan secara rekursif, yang berarti akan mengumpulkan semua data tentang pengguna yang berada dalam grup yang ditambahkan ke grup di OU target. Pelajari lebih lanjut tentang output dari perintah Get-ADGroupMember .
- Buat skrip untuk mengumpulkan data dari Active Directory.
- Kami membuat skrip untuk menambahkan milis dan mengisinya oleh pengguna berdasarkan data yang diterima dalam skrip sebelumnya.
- Selamat menikmati.
3.1. Tentang OU
Saya membuat OU "ZimbraDL" di root domain dan melarangnya untuk mewarisi kebijakan grup sehingga grup-grup ini tetap terpisah. Mereka tidak akan berpartisipasi dalam kehidupan domain dengan cara apa pun, kecuali untuk pembentukan Daftar Distribusi di OSE Zimbra Collaboration.
4. Skrip PowerShell untuk mengumpulkan data dari AD
Script 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. Cara kerja skrip
- Pertama, ia memeriksa keberadaan dan penghapusan direktori kerja, jika ada. Ini diperlukan agar data tidak menggandakan dalam proses.
- PoSh melihat OU yang ditentukan, membaca grup pengguna yang ada di dalamnya, dan menulisnya ke file GetGroupsAD.txt
- Buang apapun yang berlebihan dari file yang diterima (PoSh menulis semua outputnya ke file, jadi pada output awal dari perintah, baris pertama adalah Nama, baris kedua adalah pemisah "----", dan hanya setelah itu kelompok-kelompok terdaftar satu per satu), mengubah pengkodean dari "windows-1251" ke utf-8, menghasilkan file lain GroupsList.txt
- Selanjutnya, berdasarkan file yang diterima, informasi tentang pengguna grup yang terkandung dalam file dibaca. File yang berisi nama pengguna (samAccountName)
ditempatkan di direktori \ Users dan dipanggil dengan nama grup
4.2. Skrip untuk membaca informasi dari satu grup
Sebuah skrip dengan kemampuan membaca data hanya dari satu grup keamanan tidak jauh berbeda dari yang sebelumnya, pada dasarnya karena memiliki blok yang meminta pengguna untuk memasukkan nama grup, berdasarkan mana milis perlu diperbarui.
Skrip PowerShell dijalankan dengan tangan dengan kemampuan membaca data hanya dari satu grup $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. Bash script untuk membuat milis
Saya akan membuat reservasi tentang menyalin file skrip yang dibuat di WindowsDalam artikel sebelumnya, kami menjelaskan metode untuk memformat file menggunakan perintah cat, yang, ketika diluncurkan dengan kunci tertentu, menghapus semua karakter yang tidak dapat dibaca yang tidak perlu. Tautkan ke artikel di akhir artikel.
5.1. Cara kerja skrip
- Tulis daftar grup ke file
- Periksa keberadaan milis di Zimbra, jika ada, hapus saja
- Buat milis satu per satu berdasarkan daftar grup, isi masing-masing dengan pengguna (ID dari daftar distribusi ditampilkan di layar, ini adalah output standar cmdlet zmprov saat membuat DL). Ini memeriksa keberadaan kotak surat pengguna di Zimbra, dan jika kotak surat itu tidak ada, pengguna tidak akan ditambahkan ke milis. Anda tentu saja dapat membuat kotak surat baru untuk pengguna dan menambahkannya ke milis, tetapi saya berasumsi bahwa Zimbra autoprov bekerja dalam mode Eager, dan jika pengguna tidak dibuat secara otomatis, maka ia tidak ada hubungannya di dalam sistem
- Hapus file sementara
- Hapus direktori yang berfungsi
6. Kesimpulan
Secara umum, tugasnya tidak sulit, masalahnya hanya dalam mentransfer data dari PowerShell ke Bash. Untuk waktu yang lama saya mencoba menemukan alat untuk menyalin file teks dengan output PoSh ke dalam bentuk Bash-digestible. Hasil pencarian selama beberapa hari adalah fungsinya:
Fungsi Pengodean Ulang $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 }
Mungkin seseorang akan berguna.
7. PS:
Ini adalah artikel ketiga dalam seri βBagaimana Saya Menerapkan Zimbra.β Yang pertama adalah tentang implementasi, otorisasi LDAP dan pembuatan kotak surat otomatis untuk pengguna AD,
di sini . Yang kedua, tentang mengatur cadangan dan pemulihan Zimbra secara keseluruhan dan dalam kotak terpisah, ada di
sini .