Работа
November 2

CommunigatePRO: Предоставление прав доступа на папки

Предоставление прав на папки почтовых ящиков пользователей из веб-интерфейса Pronto дело простое, но не все пользователи согласны это делать самостоятельно, а у администратора не должно быть паролей - поэтому, мы предоставим права доступа через CLI.

Примечание:

# Узнать, как пишется имя папки на русском языке для Communigate можно командой name2mbox "Текст"
# пример:
# name2mbox "рофл"
# 200 "&BEAEPgREBDs-"

Скрипт по настройке. Установите expect на ПК, сохраните с расширением .expect, выдайте права на исполнение и используйте.

Этот метод НЕ работает с Календарями, только с обычными папками почтового ящика.

upd: С календарём можно, но если вы вдруг переименовывали Calendar во что-то иное, права доступа так выдать не выйдет и нужно указывать дефолтное имя папки Calendar. По заявлению вендора — это захардкожено и пока не исправлено

#!/usr/bin/expect
# Скрипт на Expect, предоставляющий доступ к папкам в почтовом ящике Communigate
## Примеры применения:
#
# Выдача прав доступа к папке INBOX
# setAccountFolderRights.expect [email protected] INBOX v.marikov ls
#
# Выдача прав доступа к папке INBOX/проекты
# setAccountFolderRights.expect [email protected] &BEAEPgREBDs- v.marikov lsd
#
# Выдача прав доступа к Календарю пользователя
# setAccountFolderRights.expect [email protected] &BBoEMAQ7BDUEPQQ0BDAEQARM- v.marikov ls
#
# Права доступа к почтовым папкам, календарям и папкам с контактами, заметками и задачами пользователя (значения ключа):
#      l – видеть;
#      r – входить;
#      s – читать;
#      w – метить;
#      d – удалить;
#      i – добавить;
#      p – публиковать;
#      c – создать;
#      a – управлять. 

#
#
# Почтовый ящик, куда предоставляется доступ                                                                                                                                                                                            
set mailbox [lindex $argv 0];
# Имя папки, куда предоставляется доступ
set folder [lindex $argv 1];
# Имя пользователя, которому предоставляется доступ
set username [lindex $argv 2];
# Предоставляемые права доступа
set access [lindex $argv 3];

spawn telnet СЕРВЕРCGPRO 106                                                                                                                                                                  
                                                                                                                                                                                            
expect "200" {                                                                                                                                                                              
        send "USER postmaster\n"                                                                                                                                                            
}                                                                                                                                                                                           
                                                                                                                                                                                            
expect "300" {                                                                                                                                                                              
        send "PASS ПАРОЛЬ\n"                                                                                                                                                              
}                                                                                                                                                                                           
                                                                                                                                                                                            
expect "200" {                                                                                                                                                                              
send "SETMAILBOXACL $mailbox MAILBOX \"$folder\" {$username=$access;}\n"
}                                                                                                                                                                                           
                                                                                                                                                                                            
expect "200" {}                                                                                                                                                                             
                                                                                                                                                                                            
sleep 1                                                                                                                                                                                     
send "QUIT\n"                                                                                                                                                                               
send_user "\n"                                                                                                                                                                              
exit 0.