Автоматическая конфигурация AlterOffice AMail 2025
Оглавление
1) Конфигурация с помощью AutoConfig
- Настройка Autoconfig
- Функции AutoConfig
- Конфигурация учетных записей
- IMAP
- AMailEx (Будет доступно начиная с 2025.3)
2) Конфигурация с помощью policies.json
1) Конфигурация с помощью AutoConfig
Конфигурация с помощью Autoconfig известна также под именем Mission Control Desktop (MCD).
Файлы AutoConfig можно использовать для установки и блокировки параметров, автоматической настройки учетных записей. Данный механизм позволяет настраивать параметры приложения на основе свойств пользователей, полученных либо из переменных системной среды, либо из каталога LDAP организации.
Настройка Autoconfig
1. Создать autoconfig.js в папке установки: c:\Program Files\AlterOffice AMail\defaults\pref\autoconfig.js или Он должен содержать следующие две строки:
pref("general.config.filename", "amail.cfg");
pref("general.config.obscure_value", 0);
|
Вторая строка указывает на то, что файл автоматической конфигурации не должен быть скрыт. По умолчанию AlterOffice AMail ожидает, что файл будет с побайтовым смещением
Обратите внимание, все файлы конфигурации должны быть в кодировке utf-8
В случае необходимости шифрования конфигурационного файла, указать значение
pref("general.config.obscure_value", 13);
- Создать amail.cfg в папке установки на верхнем уровне: c:\Program Files\AlterOffice AMail Он всегда должен начинаться со строки-комментария, например:
// ВАЖНО: Комментарий конфигурационного файла
Данный файл несмотря на расширение .cfg является файлом JavaScript. Это позволяет записывать в файл дополнительный JavaScript код для добавления необходимой логики в различных ситуациях. Для конфигурационного файла можно использовать скрипт файла "encode_config.pl" :
#!/usr/bin/perl
# Usage to do byteshift of 13
# To decode: encode_config.pl -s -13 <amail.cfg >amail.cfg.txt
# To encode: encode_config.pl -s 13 <amail.cfg.txt >amail.cfg
use strict;
use Getopt::Std;
use vars qw/$opt_s/;
getopts("s:");
if(!defined $opt_s) {
die "Missing shift\n";
}
my $buffer;
while(1) {
binmode(STDIN, ":raw");
my $n=sysread STDIN, $buffer, 1;
if($n == 0) {
last;
}
my $byte = unpack("c", $buffer);
$byte += 512 + $opt_s;
$buffer = pack("c", $byte);
binmode(STDOUT, ":raw");
syswrite STDOUT, $buffer, 1;
}
Функции AutoConfig
Следующие функции доступны внутри AutoConfig-файла:
|
Функция |
Описание |
|
pref(prefName, value) |
Устанавливает параметру пользовательское значение. Эта функция явно устанавливает параметр как пользовательский параметр. Это означает, что если пользователь изменил значение, оно будет сбрасываться при каждом запуске приложения. |
|
defaultPref(prefName, value) |
Устанавливает параметру значение по умолчанию. Это то значение, которое параметр имеет, когда пользователь не устанавливает никакое значение или пользователь сбрасывает настройки. Оно может быть навсегда изменено пользователем. |
|
lockPref(prefName, value) |
Устанавливает параметру значение по умолчанию и блокирует его. Это наиболее часто используемая функция. Блокировка параметра не даёт пользователи его изменять и в большинстве случаев отключает настройки в графическом интерфейсе, что даёт пользователю очевидное понимание, что параметр был отключен. |
|
unlockPref(prefName) |
Разблокирует параметр. В качестве примера, это может быть использовано в случае, когда настройки должны быть заблокированы для всех пользователей, но разблокированы для определенных пользователей. |
|
getPref(prefName) |
Получение значения параметра. Если параметр не существует, выводится сообщение об ошибке. Эту функцию следует использовать только для тех параметров, которые существуют всегда. |
|
clearPref(prefName) |
Удаляет пользовательское значение параметра, возвращая его к значению по умолчанию. |
|
displayError(funcname, message) |
отображает ошибку в определенном формате, что является удобным инструментом для отладки. Netscape.cfg/AutoConfig failed. Please contact your system administrator. Error: [funcname] failed: [message] |
|
getenv(name) |
Получение значения переменной среды. Это может обеспечить доступ к таким вещам, как имена пользователей и другая системная информация. |
|
setLDAPVersion(version) |
Устанавливает версию LDAP (возможные значения: 2, 3) |
|
getLDAPAttributes(host, base, filter, attribs, isSecure) |
Получение значений атрибутов LDAP |
|
getLDAPValue(str, key) |
Обрабатывает строку и возвращает значение атрибута. |
Конфигурация учетных записей
Ветка mail.* — одна из самых больших групп настроек, которыми можно управлять с помощью autoconfig. Настройка правильной комбинации mail.account, mail.server, mail.identity и mail.smtpserver позволяет настроить учетную запись. Для этого необходимо их правильно связать.
Учетные записи в AMail (за исключением учетной записи Локальные папки) состоят из следующих компонентов:
- account
- server (для входящей почты)
- identities (одна или несколько, в интерфейсе представлены в меню "Дополнительные адреса электронной почты")
- smtp server (для исходящей почты)
|
Компонент |
Свойство |
Описание |
|
Account |
mail.account.accountN |
Связывает server и identity |
|
Server |
mail.server.serverN |
Настройки для сервера Входящей почты (IMAP/POP/AMailEx) |
|
Identity |
mail.identity.idN |
Имя, почтовый адрес, настройки Копии и папки, связка с сервером Исходящей почты |
|
SMTP Server |
mail.smtpserver.smtpN |
Настройки сервера Исходящей почты SMTP |
|
Accounts list |
mail.accountmanager.accounts |
Список mail.account идентификаторов через запятую "account1,account2" |
|
Default account |
mail.accountmanager.defaultaccount |
Учетная запись по умолчанию |
|
SMTP servers |
mail.smtpservers |
Список mail.smtpserver идентификаторов через запятую "smtp1,smtp2" |
|
Default SMTP |
mail.smtp.defaultserver |
Сервер Исходящей почты по умолчанию |
IMAP
Пример конфигурации учетной записи IMAP
// ВАЖНО: Начните свой код со второй строкиtry {// Получаем имя пользователя и домашнюю папкуif (getenv("USER") != "") {// *NIX параметрыlet env_user = getenv("USER");let env_home = getenv("HOME");} else {// Windows параметрыlet env_user = getenv("USERNAME");let env_home = getenv("HOMEPATH");}env_user = "testuser8";// Ставим аккаунтом по умолчанию account2 (account1 относится к Локальным папкам)defaultPref("mail.accountmanager.defaultaccount", "account2");// Добавляем account2 в список аккаунтовdefaultPref("mail.accountmanager.accounts", "account1,account2");// Связываем account2 сервер server2 (IMAP) (server1 относится к Локальным папкам)lockPref("mail.account.account2.server", "server2");// Настройки IMAP сервераlockPref("mail.server.server2.type", "imap");lockPref("mail.server.server2.hostname", "imap.almipartner.ru");lockPref("mail.server.server2.realhostname", "imap.almipartner.ru");lockPref("mail.server.server2.port", 143); //Порт сервераlockPref("mail.server.server2.socketType", 2); // Использовать STARTLSlockPref("mail.server.server2.name", env_user); // Логин пользователяlockPref("mail.server.server2.userName", env_user); // Логин пользователяlockPref("mail.server.server2.realuserName", env_user); // Логин пользователяlockPref("mail.server.server2.login_at_startup", true); // ! Обязательный параметр при автоматическиlockPref("mail.server.server2.isSecure", true); // Защищённый сервер// Настройки SMTP сервераlockPref("mail.smtpserver.smtp1.hostname", "smtp.almipartner.ru");lockPref("mail.smtpserver.smtp1.port", 587);lockPref("mail.smtpserver.smtp1.auth_method", 1);lockPref("mail.smtpserver.smtp1.username", env_user);lockPref("mail.smtpserver.smtp1.try_ssl", 2);lockPref("mail.smtp.defaultserver", "smtp1");lockPref("mail.smtpservers", "smtp1");// Настройки идентификатора пользователяdefaultPref("mail.identity.id1.fullName", env_user);defaultPref("mail.identity.id1.fcc_folder", "imap://" + env_user + "@imap.almipartner.ru/Sent");lockPref("mail.identity.id1.useremail", env_user + "@almipartner.ru");lockPref("mail.identity.id1.reply_to", env_user + "@almipartner.ru");lockPref("mail.identity.id1.valid", true);lockPref("mail.identity.id1.smtpServer", "smtp1");// Привязываем ID к аккаунту account2lockPref("mail.account.account2.identities", "id1");} catch (e) {displayError("lockedPref", e);}AMailEx (доступно начиная с 2025.3)// ВАЖНО: Начните свой код со второй строкиtry {// Получаем имя пользователя и домашнюю папкуif (getenv("USER") != "") {// *NIX параметрыlet env_user = getenv("USER");let env_home = getenv("HOME");} else {// Windows параметрыlet env_user = getenv("USERNAME");let env_home = getenv("HOMEPATH");}env_user = "testuser8";let displayName = "Тестовый Пользователь 8";let domain = "almipartner.ru";let hostname = "mail.almipartner.ru";let ewsURL = "https://" + hostname + "/EWS/Exchange.asmx";defaultPref("devtools.debugger.prompt-connection", false);// Ставим аккаунтом по умолчанию account2 (account1 относится к Локальным папкам)defaultPref("mail.accountmanager.defaultaccount", "account2");// Добавляем account2 в список аккаунтовdefaultPref("mail.accountmanager.accounts", "account2,account1");// Связываем account2 сервер server2 (AMailEx) (server1 относится к Локальным папкам)defaultPref("mail.account.account2.server", "server2");// Настройки сервераdefaultPref("mail.server.server2.type", "amailex");defaultPref("mail.server.server2.hostname", hostname);defaultPref("mail.server.server2.socketType", 3); // Использовать SSLdefaultPref("mail.server.server2.name", env_user + "@" + domain + " on " + hostname);defaultPref("mail.server.server2.userName", env_user); // Логин пользователяdefaultPref("mail.server.server2.login_at_startup", true); // ! Обязательный параметр при автом.defaultPref("mail.server.server2.useAB", true); // Использовать автодополнениеdefaultPref("mail.server.server2.ewsURL", ewsURL);defaultPref("mail.server.server2.check_new_mail", true); // Проверять наличие новых сообщенийdefaultPref("mail.server.server2.check_time", 5); // Каждые 5 минутdefaultPref("mail.server.server2.spamLevel", 0); // Анти-спам фильтры// Настройки идентификатора пользователяdefaultPref("mail.identity.id1.fullName", displayName); // Имя отправителяdefaultPref("mail.identity.id1.fcc_folder", "amailex://" + env_user + "@" + hostname + "/Sent");defaultPref("mail.identity.id1.useremail", env_user + "@" + domain);defaultPref("mail.identity.id1.reply_on_top", 1); // Поместить курсор перед цитируемым текстомdefaultPref("mail.identity.id1.sig_bottom", false); // Ставить подпись после моего ответаdefaultPref("mail.identity.id1.valid", true);defaultPref("mail.identity.id1.smtpServer", "server2"); // В качестве исходящего сервера указываем тот же что и для входящих сообщений// Привязываем ID к аккаунту account2defaultPref("mail.account.account2.identities", "id1");let extensionPrefix = "extensions.amailex.";// Debug логи расширения AMailExpref(extensionPrefix + "log.dump", true);pref(extensionPrefix + "log.file", true);pref(extensionPrefix + "log.level", "Debug");pref(extensionPrefix + "logBodies", true);// Настройки расширения AMailExdefaultPref(extensionPrefix + "mail.account.account2.identities", "id1");defaultPref(extensionPrefix + "mail.account.account2.server", "server2");defaultPref(extensionPrefix + "mail.identity.id1.fullName", displayName);defaultPref(extensionPrefix + "mail.identity.id1.smtpServer", "server2");defaultPref(extensionPrefix + "mail.identity.id1.useremail", env_user + "@" + hostname);defaultPref(extensionPrefix + "mail.identity.id1.valid", true);defaultPref(extensionPrefix + "postamailex17", true);defaultPref(extensionPrefix + "postamailex19", true);} catch (e) {displayError("lockedPref", e);}
Конфигурация с помощью policies.json поддерживается на Windows, Linux
Поддержку политики можно реализовать с помощью файла policies.json. В отличие от управления AMail с помощью групповой политикиWindows, policies.json совместим с разными платформами, что делает его предпочтительным методом для корпоративных сред, в которых рабочие станции работают под управлением различных операционных систем.
Для реализации этой поддержки политики необходимо создать файл policies.json. Этот файл помещается в каталог с именем distribution в установочном каталоге AlterOffice AMail.
Файл policies.json выглядит следующим образом:
{"policies": {"BlockAboutConfig": true}}
В этом примере мы устанавливаем для политики BlockAboutConfig значение true, что означает, что у пользователя не будет доступа к странице about:config.
Список поддерживаемых политик:
|
Policy Name |
Policy Name |
|
3rdparty |
Разрешить WebExtensions настраивать политики |
|
AppAutoUpdate |
Включить или отключить автоматическое обновление приложения |
|
AppUpdatePin |
Запретить обновление приложение выше указанной версии. |
|
AppUpdateURL |
Настройка URL для обновления приложения. |
|
Authentication |
Настройте сайты, поддерживающие интегрированную аутентификацию |
|
BackgroundAppUpdate |
Включить или отключить фоновое обновление (Windows). |
|
BlockAboutAddons |
Блокировка доступа к странице Дополнения и темы(about:addons). |
|
BlockAboutConfig |
Блокировка доступа к Редактору настроек about:config. |
|
BlockAboutProfiles |
Блокировка доступа к странице конфигурации профилей (about:profiles). |
|
BlockAboutSupport |
Блокировка доступа к странице Информация для решения проблем (about:support). |
|
CaptivePortal |
Включить или отключить обнаружение captive portals. |
|
Certificates -> ImportEnterpriseRoots |
Сертификаты доверия, добавленные в хранилище сертификатов операционной системы пользователем или администратором |
|
Certificates -> Install |
Установка сертификатов в хранилище сертификатов приложения |
|
Cookies |
Настройки cookie. |
|
DefaultDownloadDirectory |
Установка каталога загрузки по умолчанию |
|
DisableAppUpdate |
Отключение обновления приложения |
|
DisableBuiltinPDFViewer |
Отключить встроенный предпросмотр файлов PDF |
|
DisabledCiphers |
Отключение заданных ciphers. |
|
DisableDeveloperTools |
Запретить доступ к инструментам разработчика |
|
DisableMasterPasswordCreation |
Запретить создавать основной (главный) пароль |
|
DisablePasswordReveal |
Запрет отображения паролей в менеджере паролей |
|
DisableSafeMode |
Отключить безопасный режим в браузере |
|
DisableSecurityBypass |
Запретить пользователю обходить меры безопасности в определенных случаях |
|
DisableSystemAddonUpdate |
Запретить установку или обновление системных дополнений |
|
DisableTelemetry |
Отключение телеметрии |
|
DNSOverHTTPS |
Настройка DNS через HTTPS |
|
DownloadDirectory |
Установка директории для сохранения файлов по умолчанию |
|
Extensions |
Управление установкой, удалением расширений |
|
ExtensionSettings |
Настройка расширений |
|
ExtensionUpdate |
Управление обновлением расширений |
|
Handlers |
Настройка приложений по умолчанию |
|
HardwareAcceleration |
Управление аппаратным ускорением |
|
InstallAddonsPermission |
Настройте политику установки расширений по умолчанию, а также источники, из которых разрешена установка расширений |
|
ManualAppUpdateOnly |
Разрешить только ручные обновления и не уведомлять пользователя об обновлениях |
|
NetworkPrediction |
Включить или отключить прогнозирование сети (предварительную загрузку DNS) |
|
OfferToSaveLogins |
Управление тем, будет ли приложение предлагать сохранять пароли. |
|
OfferToSaveLoginsDefault |
Установка значения по умолчанию, указывающего, будет ли приложение предлагать сохранять пароли |
|
PasswordManagerEnabled |
Запретить доступ к менеджеру паролей. |
|
PDFjs |
Отключение или настройки PDF.js, встроенного просмотрщика PDF-файлов. |
|
Preferences |
Установка и блокировка настроек |
|
PrimaryPassword |
Требовать или запрещать использование основного (главного) пароля. |
|
PromptForDownloadLocation |
Перед загрузкой каждого файла спрашивать, где его сохранить. |
|
Proxy |
Настройки прокси |
|
RequestedLocales |
Установка списка запрашиваемых локалей для приложения в порядке предпочтения. |
|
SearchEngines |
Добавить поисковую систему |
|
SearchEngines -> Add |
Управление обновлением расширений |
|
SearchEngines -> Default |
Установить поисковую систему по умолчанию |
|
SearchEngines -> PreventInstalls |
Запретить установку поисковых систем из сети |
|
SearchEngines -> Remove |
Скрыть встроенные поисковые системы |
|
SSLVersionMax |
Установка максимальной версии TLS. |
|
SSLVersionMin |
Установка минимальной TLS |