Для администрирования Zimbra имеется прекрасный и функциональный веб-интерфейс. Вот только в нем нет средств автоматизации работы с учетными записями, списками рассылки и др. Что будете делать, если надо создать 100 (или 1500 как у нас) почтовых ящиков, алиасов, переименовать согласно новой политики организации 500 почтовых ящиков? В этом случае Вам помогут консольные инструменты Zimbra (они умеет делать очень многое, т.е. всё), ну и некоторые полезные скрипты.
Раньше в Zimbra OSE присутствовал инструмент Bulk Provisioning (массовое развертывание), он позволял создавать учетные записи по заранее подготовленным данным в формате csv. Сейчас его нет, да он и не нужен, т.к. существует гораздо более гибкий и мощный инструмент; его и надо использовать. Конечно же, все самое мощное доступно в виде консольных команд, но есть одна команда, заслуживающая Вашего особого внимания… Её название – zmprov, она является главным ключом к сокровищнице Zimbra, освоите её, остальное – дело техники. При внедрении новой системы нужно начинать с внимательного изучения руководства администратора, но, обычно, все оставляют это интересное (и полезное) занятие на потом. Предлагаю всё же бегло ознакомиться с официальной документацией Zimbra
Проблема с русскими символами
На различных сайтах и форумах, посвященных Zimbra, очень часто просят помочь с проблемами при использовании русских букв в атрибутах консольных команд. Ответ очевидный: “Да прочитайте же эту документацию”. А там черным по белому написано, что если Вы используете символы, не входящие в набор ASCII (например, русские) в Zimbra CLI, то чтобы символы отображалось правильно, вы должны выполнить настройку локали перед запуском консольной команды. Например так:
export LC_ALL='ru_RU.UTF-8'
Ещё там написано, что по умолчанию локаль учетной записи пользователя zimbra установлена в LANG=С. И это необходимо для правильного запуска служб ZCS. Настройки локали пользователя zimbra прописаны в /opt/zimbra/.bash_profile. Их можно временно закомментировать пока Вы работаете, только не забудьте вернуть обратно (а лучше просто делать настройку локали, как указано выше).
zmprov
Команда zmprov поможет выполнить любые задачи в Zimbra LDAP: она умеет создавать и изменять аккаунты, псевдонимы, домены, классы обслуживания, списки рассылки и календари ресурсов. Все операции вызываются через параметры командной строки, и каждая команда имеет длинное и сокращенное имя.
Синтаксис:
zmprov [команда] [аргумент]
Полный перечень команд смотрите в руководстве администратора (ну или zmprov -h), там более сотни различных команд.
Вот несколько из них для примера:
Действие | Название | Сокращение | Синтаксис и пример |
---|---|---|---|
Создать аккаунт | createAccount | ca |
ca {name@domain} {password} [attribute1 value1 etc] zmprov ca joe@domain.com test123 displayName JSmith |
Создать псевдоним | addAccountAlias | aaa |
aaa {name@domain|id|adminName}{alias@domain} zmprov aaa joe@domain.com joe.smith@engr.domain.com |
Изменить аккаунт | modifyAccount | ma |
ma {name@domain|id|adminName} [attribute1 value1 etc] zmprov ma joe@domain.com zimbraAccountStatus maintenance |
Сменить пароль | setPassword | sp |
sp {name@domain|id|adminName} {password} zmprov sp joe@domain.com test321 |
Там же в руководстве администратора есть большое количество примеров использования zmprov.
Примеры скриптов
Рекомендую взять за основу идеи, изложенные в статье Bulk Provisioning.
Команда zmprov может принимать команды из файла (или стандартного ввода) в качестве входных данных. Создайте текстовый файл (например “commands.zmp”) с командами для zmprov на каждой строке:
createDomain domain.com createAccount andy@domain.com password displayName 'Andy Anderson' givenName Andy sn Anderson createAccount betty@domain.com password displayName 'Betty Brown' givenName Betty sn Brown
Затем передайте содержимое файла zmprov.
От пользователя zimbra:
zmprov -f commands.zmp
От root:
cat commands.zmp | su - zimbra -c zmprov
В статье приводится простой пример на perl:
#!/usr/bin/perl # Определение ID COS (класса обслуживания) my $cosid = `su - zimbra -c 'zmprov gc Default |grep zimbraId:'`; $cosid =~ s/zimbraId:\s*|\s*$//g; while (<>) { chomp; # Изменить на реальные поля, которые вы используете в файле CSV my ($email, $password, $first, $last) = split(/\,/, $_, 4); my ($uid, $domain) = split(/@/, $email, 2); print qq{ca $uid\@$domain $password\n}; print qq{ma $uid\@$domain zimbraCOSid "$cosid"\n}; print qq{ma $uid\@$domain givenName "$first"\n}; print qq{ma $uid\@$domain sn "$last"\n}; print qq{ma $uid\@$domain cn "$uid"\n}; print qq{ma $uid\@$domain displayName "$first $last"\n}; print qq{ma $uid\@$domain zimbraPasswordMustChange TRUE\n}; print qq{\n}; }
Данный скрипт (назовем его csv2zmprov.pl) на входе принимает файл csv с параметрами новых учетных записей и генерирует файл команд для zmprov. Создадим файл данных import.csv (вместо домена domain.com впишите свой):
jon@domain.com,Pas01word,Иван,Петров cat@domain.com,Pas87word,Екатерина,Сидорова
Последовательность команд для создания учетных записей может быть такой:
# Генерируем файл команд zmprov perl csv2zmprov.pl < import.csv > commands.zmp # Переключаемся на пользователя zimbra su - zimbra # Настраиваем локаль, т.к. у нас есть русские буквы в атрибутах export LC_ALL='ru_RU.UTF-8' # Запускаем zmprov zmprov -f <путь до файла/>commands.zmp # после su - zimbra, мы в каталоге /opt/zimbra, правильно указывайте путь к своему файлу
Готово! Теперь, вооружившись списком всех возможных команд zmprov и образцами скриптов, Вы можете всё: создавать учетки (автоматически, без Вашего участия), синхронизировать данные о пользователях с внешними базами данных, управлять списками рассылок, проводить обслуживание сервера и почтовых ящиков… всё, что сможете придумать.
здравствуйте, может сможете мне помочь…. я работаю с почтой zimbra, сейчас приехала к родителям и вот беда, с компа моего отца почта открывается, но вот не отображаются метки, а также я не могу их присваивать…. в чем может быть проблема?
Какой браузер используется и какая у него версия? Для начала попробуйте обновить браузер или установить другой
Pingback: z | Admin time
Автор! Спасибо тебе за эту статью! Это именно то что не было нужно!
Добрый день! Подскажите пожалуйста такой момент, у меня возникает жуткая путаница в голове с ou, cn и dc, не могу понять что к чему сопоставляется, вот например, скажем есть АД, имя контроллера dc.domain.local, в нем есть учетка u.name@domain.local, находится она в дереве каталогов /domain.local/Otdel/Users/u.name
как эти данные распределить в, скажем, External Group LDAP Search Base?
или zimbraAutoProvLdapAdminBindDn?
и правильно ли я вписываю в md domain.local, без, непосредственно, префикса самого контроллера домена? Заранее благодарен за ответ!
Не совсем понятно, что Вы пытаетесь сделать. Можно описать суть проблемы и метода её решения?
Добрый день. Может, я несколько не в тему со своим вопросом.
Вкратце опишу проблему. В связи с разрастанием предприятия структура АД понемногу стала хаотичной, решили её структуризировать. И выплыла проблема, если человека перевести из одного подразделения в другое, Зимбра напрочь забывает об этом человеке, и нужно каждому заходить в свойства учётки в АД, копировать новый параметр distinguished name и вставлять в свойства учётке в Зимбре.
к примеру, переносим пользователя из амбулаторной службы в корне домена в подразделение Город-Варненская 2 – ПДО – Регистратура:
в свойствах Зимбры надо вручную изменять
CN=Марина Мельниченко,OU=Амбулаторная служба,OU=Userz,DC=is,DC=corp в регистратуру ПДО
CN=Марина Мельниченко,OU=Регистратура,OU=1- ПДО,OU=Варненская 2, OU=Город,OU=Userz,DC=is,DC=corp
То этот самый атрибут надо в настройках зимбры на каждом почтовом ящике поменять вручную.
А есть ли какой способ, чтоб переселение пользователя в АД автоматически распознавалось Зимброй?
Спасибо!
Добрый день!
Нужно поиграть с синхронизацией учетных записей:
zmgsautil forcesync -a sync@domain.com -n InternalGAL
Имя datasource меняется на ActiveDirectoryGAL или ExternalGAL в зависимости от вашей конфигурации.
https://wiki.zimbra.com/wiki/GAL_Sync_Account
Здравствуйте. Не могу зайти на Zimbru. Пишет,что пароль устарел. Самостоятельно пароль сменить не могу,т.к совершенно не помню старый пароль. Что делать???
Обратиться к администратору Вашего сервера Zimbra.
Здравствуйте, Александр! Спасибо за Ваши полезную информацию по обслуживанию почтового сервера Zimbra. У меня есть один вопрос.
Со временем GAL на сервере обновляется. Кто то уходит, кто то переводится в др. подразделения. Соответсвенно почтовые аккаунты изменяются или блокируются. При создании письма в поле “Кому:” работает авто заполнение. Действующие пользователи жалуются на то что при авто заполнении Адресата и в отправленных после отображаются старые не обновленные наименования адресатов. Решается от части если при наборе адреса мы видим и старое наименование ящика и новое, нажимаем кнопку забыть. А как сделать скрипт чтоб можно было пройтись по всем ящикам пользователей и обновить до актуального состояния базу для авто заполнения?
Как сделать скрипт? Читать документацию и форумы, потом написать скрипт, потом поделиться со всеми, т.к. это актуальный вопрос. Сейчас не занимаюсь поддержкой сервера zimbra, помочь не смогу.