Внедрение zimbra collaboration open source, авторизация через ad и автоматическое создание почтовых ящиков

Загрузка дистрибутива и установка Zimbra

Переходим по одной из ссылок выше для загрузки платной или бесплатной версии.

Если мы планируем установить платную версию, сначала кликаем по START FREE TRIAL:

Проходим процедуру регистрации. На указанный адрес электронной почты мы получим файл с лицензией (на 60 дней). Переносим данный файл на сервер Zimbra, например, при помощи программы WinSCP.

Возвращаемся на страницу загрузки zimbra и копируем ссылку на дистрибутив:

Используя скопированную ссылку, загружаем дистрибутив Zimbra:

wget https://files.zimbra.com/downloads/8.8.15_GA/zcs-NETWORK-8.8.15_GA_3869.UBUNTU18_64.20190918004220.tgz

Распаковываем скачанный архив:

tar -xzvf zcs-*.tgz

Переходим в распакованный каталог:

cd zcs-*/

Запускаем установку почтового сервера:

./install.sh

На экране отобразится лицензионное соглашение — принимаем его:

Do you agree with the terms of the software license agreement? Y

* в платной версии лицензионное соглашение нужно принять дважды.

Разрешаем использование репозитория от Zimbra:

Use Zimbra’s package repository Y

Устанавливаем необходимые модули (или все):

Install zimbra-ldap Y

Install zimbra-logger Y

Install zimbra-mta Y

Install zimbra-dnscache Y

Install zimbra-snmp Y

Install zimbra-store Y

Install zimbra-apache Y

Install zimbra-spell Y

Install zimbra-convertd Y

Install zimbra-memcached Y

Install zimbra-proxy Y

Install zimbra-archiving Y

Install zimbra-drive Y

Install zimbra-imapd (BETA — for evaluation only) N

Install zimbra-network-modules-ng Y

Install zimbra-talk Y

* в зависимости от ситуации, мы можем выбрать лишь несколько компонентов, например, для использования сервера в качестве агента передачи сообщений, мы можем оставить только zimbra-mta. Но в нашем примере мы будем настраивать Zimbra со всем компонентами.

Подтверждаем ранее введенные настройки:

The system will be modified.  Continue? Y

Начнется процесс установки и конфигурирования Zimbra. Ждем окончания процесса.

Если для нашего домена еще нет записи MX, мы увидим сообщение:

It is suggested that the domain name have an MX record configured in DNS

Установщик предложит поменять домен — отвечаем отрицательно:

Change domain name? No

… установщик покажет меню с настройкой Zimbra:

В данном случае мы можем поменять любую из настроек. Настройки, которые необходимо сделать для продолжения установки показаны звездочками — в данном примере необходимо задать пароль администратора (Admin Password) и указать путь до файла с лицензией (License filename). И так, кликаем 7:

Address unconfigured (**) items  (? — help) 7

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

Select, or ‘r’ for previous menu 4

… и задаем пароль.

Если мы устанавливаем платную версию, указываем путь до файла с лицензией:

Select, or ‘r’ for previous menu 25

… и указываем путь до файла с лицензией, например:

Enter the name of the file that contains the license: /opt/zimbra/ZCSLicense.xml

Теперь выходим из меню:

Select, or ‘r’ for previous menu r

Применяем настройки:

Select from menu, or press ‘a’ to apply config (? — help) a

Сохраняем конфигурационный файл:

Save configuration data to a file? Y

Соглашаемся с путем сохранения файла:

Save config in file: [/opt/zimbra/config.20863]

Продолжаем конфигурирование:

The system will be modified — continue? Y

Дожидаемся окончания установки, на запрос отправки уведомления можно ответить отказом:

Notify Zimbra of your installation? n

В конечном итоге, нажимаем Enter:

Configuration complete — press return to exit

Сервер установлен. Однако, установщик меняет пароль пользователя root. Меняем его обратно:

passwd root

Защита от СПАМа

1. Обновление правил в SpamAssassin

Для улучшения защиты от СПАМ-сообщений мы включим автоматическое обновление правил для SpamAssassin. Для этого вводим:

su — zimbra -c «zmlocalconfig -e antispam_enable_rule_updates=true»

su — zimbra -c «zmlocalconfig -e antispam_enable_restarts=true»

После перезапустим соответствующие службы:

su — zimbra -c «zmamavisdctl restart»

su — zimbra -c «zmmtactl restart»

2. Черные списки

Чтобы усилить защиту, разрешим проверку отправителя в черных списках:

su — zimbra -c ‘zmprov mcf zimbraMtaRestriction «reject_rbl_client zen.spamhaus.org»‘

* в данном примере мы подключаем rbl-список от zen.spamhaus.org.

3. Настройка mynetworks

После установки Zimbra в опции postfix mynetworks может оказаться подсеть, в которой находится наш сервер. На практике, это приводит к возможности отправки сообщений без пароля, что в свою очередь, позволяет любому вирусу в нашей сети делать нелегальную рассылку.

Задаем для mynetworks только адрес локальной петли и адрес сервера:

su — zimbra -c ‘zmprov ms zimbra.dmosk.ru zimbraMtaMyNetworks «127.0.0.0/8 192.168.1.15/32″‘

Перезапускаем postfix:

su — zimbra -c ‘postfix reload’

Проверить текущую настройку можно командой:

su — zimbra -c ‘postconf mynetworks’

Выбор дистрибутива Linux и версии Zimbra

Список дистрибутивов Linux, которые поддерживаются разработчиком Zimbra, описан на официальном сайте страницах загрузки. В данной инструкции мы рассмотрим процесс установки для Ubuntu 18.04 и CentOS 7, однако, процесс настройки для других систем, во многом, аналогичен.

Zimbra имеет две основные версии — платную Network Edition и бесплатную Open Source Edition (OSE). Сравнение данных версий можно найти на официальном сайте. В центре загрузки Zimbra мы также можем выбрать и скачать дистрибутив для платной или бесплатной версий. В данной инструкции мы скачем и установим платную demo-версию и лицензируем ее временным ключом, дающим право использовать программный продукт в течение 60 дней. По прошествии данного периода, программный продукт необходимо купить или прекратить использовать.

Маршрутизация почты (mail routing)

Так как Zimbra использует Postfix как МТА, то маршрутизацию (перенаправление) почты настраиваем в нём. Создаём файл с описанием маршрутов /opt/zimbra/postfix/conf/transport-table:

mydomain.com     :
mydomain.ru      :

В этой таблице мы перенаправляем всю почту для домена mydomain.com на другой адрес в Интернете mail.otherdomain.com, а почту для домена mydomain.ru передаём почтовому серверу 192.168.0.10 в локальной сети. При этом имя пользователя (адресата) не изменяется.

! Маршрутизация почты не затрагивает правила IP маршрутизации и меняет лишь домен назначения. Таким образом, после того как эти правила были применены дальнейшее разрешение DNS имён и отправка IP пакетов идут своим обычным чередом.
  • Подробнее про маршрутизацию почты в Zimbra см в официальной документации:

Полезные команды

Все команды запускаются от имени пользователя zimbra:

$ zmcontrol — управление всеми сервисам Zimbra сразу (status | stop | start | maintenance)

$ zmcontrol <имя_сервиса> команда — управление отдельным сервисом (status | stop | start | maintenance)

$ zmprov — работа с каталогом (LDAP). Запустив без параметров, зайдём в командный интерфейс и получим мощный инструмент для адмиинистрирования:

prov> help

 zmprov is used for provisioning. Try:

     zmprov help account         help on account-related commands
     zmprov help calendar        help on calendar resource-related commands
     zmprov help commands        help on all commands
     zmprov help config          help on config-related commands
     zmprov help cos             help on COS-related commands
     zmprov help domain          help on domain-related commands
     zmprov help freebusy        help on free/busy-related commands
     zmprov help list            help on distribution list-related commands
     zmprov help log             help on logging commands
     zmprov help misc            help on misc commands
     zmprov help mailbox         help on mailbox-related commands
     zmprov help notebook        help on notebook-related commands
     zmprov help right           help on right-related commands
     zmprov help search          help on search-related commands
     zmprov help server          help on server-related commands
     zmprov help share           help on share related commands

Overview

Command Format

The format of a Zimbra REST command is:

{protocol}://{host}:{port}/home/{user}/{object}?{params} 

HTTP methods are for reading items. HTTP methods are for creating/modifying items. The following describes the components of the Zimbra REST command:

Component Description
The transport protocol, for example, .
The host name or IP address of the Zimbra Collaboration Suite server
The port number, for example, 7070.
The user. To load an explicit user account, specify the user in one of the following formats:

  • john.doe
    http://localhost:7070/home/john.doe/inbox.rss
    
  • john.doe@mydomain.com
http://localhost:7070/home/john.doe@mydomain.com/inbox.rss

You can also use «~» as a shortcut to the current authenticated user. For example:

http://localhost:7070/home/~/inbox.rss
Designates the object to perform the command against. This might be a folder (such as inbox or drafts) or omitted (to download a specific item). If omitted, the query parameters provide the information the command requires.

For example, to download the inbox folder as XML:

http://localhost:7070/home/john.doe/inbox.rss

For example, to download an item:

http://localhost:7070/home/john.doe/?id=657
A list of command-specific URL parameters. See the specific command for a list of the required and optional parameters.

Response Formats

The following describes the various response formats, designated using the parameter. Not all commands support all formats. See the specific command for a list of supported formats and command-specific details:

Format Description
Hyper Text Markup Language file format. Produced the output as a web page.
Data compression and archive format.
Data archive format («tar»).
Compressed file.
Common Separated Values file format. A specific CSV format can be designated using the parameter. Supported CSV formats include:

  • zimbra-csv
  • yahoo-csv
  • thunderbird-csv
  • outlook-2000-csv
  • outlook-2003-csv
Requests that the server return additional meta-data in the response headers. When using this option, the headers are returned inline of the response, unless you specify .

For example, get a mail message by item id and return the meta-data in the response headers and inline.

http://localhost:7070/home/john.doe/?id=288&fmt=sync

For example, get a mail message by item id and return the meta-data in the response headers only.

http://localhost:7070/home/john.doe/?id=288&fmt=sync&nohdr=1

The following is a list of the meta-data headers:

  • X-Zimbra-ItemId
  • X-Zimbra-FolderId
  • X-Zimbra-Tags
  • X-Zimbra-Flags
  • X-Zimbra-Received
  • X-Zimbra-Modified
  • X-Zimbra-Change
  • X-Zimbra-Revision
  • X-Zimbra-Conv

Authentication

There are multiple methods to authenticate as a user when accessing a mailbox. Using the parameter, you can designate how to authenticate and whether or not to set the authentication cookie.

Default is . Meaning: first, check for a cookie auth token; second, check for query parameter auth token; thrid, prompt for basic authentication.

The parameter supports a list of comma-separated values which include:

Value Description
The authentication token will be retrieved from the cookie.

For example:

http://localhost:7070/home/john.doe/inbox.rss?auth=co
The authentication token will be retrieved from request parameter .

For example:

http://localhost:7070/home/john.doe/inbox.rss?auth=qp&zauthtoken=0_thisismyzauthtokenthisismyzauthtoken_thisismyzauthtoken
These methods refer to Basic Authentication:

  • = Use Basic Authentication and do not set cookie after authentication.
  • = Same as .
  • = Use Basic Authentication and set cookie after authentication.

For example:

http://localhost:7070/home/john.doe/inbox.rss?auth=ba

Подготовка сервера

Независимо от выбранного дистрибутива Linux или редакции Zimbra выполняем следующие действия для подготовки сервера к корректной работы почтового сервера.

1. Настройка времени

Устанавливаем корректный часовой пояс:

timedatectl set-timezone Europe/Moscow

* в данном примере мы зададим московское время.

Теперь установим утилиту для синхронизации времени и запустим ее.

а) если используем систему на базе RPM (CentOS / Red Hat):

yum install chrony

systemctl enable chronyd —now

б) если используем систему на базе deb (Ubuntu):

apt-get install chrony

systemctl enable chrony —now

2. Безопасность

SELinux

Если на сервере используется SELinux (по умолчанию, на системах RPM), рекомендуется ее отключить. Для этого вводим 2 команды:

setenforce 0

sed -i ‘s/^SELINUX=.*/SELINUX=disabled/g’ /etc/selinux/config

* подробнее в статье Как отключить SELinux.

Брандмауэр

Для нормальной работы Zimbra нужно открыть много портов:

  • 25 — основной порт для обмена почтой по протоколу SMTP.
  • 80 — веб-интерфейс для чтения почты (http).
  • 110 — POP3 для загрузки почты.
  • 143 — IMAP для работы с почтовым ящиком с помощью клиента.
  • 443 — SSL веб-интерфейс для чтения почты (https).
  • 465 — безопасный SMTP для отправки почты с почтового клиента.
  • 587 — SMTP для отправки почты с почтового клиента (submission).
  • 993 — SSL IMAP для работы с почтовым ящиком с помощью клиента.
  • 995 — SSL POP3 для загрузки почты.
  • 5222 — для подключения к Zimbra по протоколу XMPP.
  • 5223 — для защищенного подключения к Zimbra по протоколу XMPP.
  • 7071 — для защищенного доступа к администраторской консоли.
  • 8443 — SSL веб-интерфейс для чтения почты (https).
  • 7143 — IMAP для работы с почтовым ящиком с помощью клиента.
  • 7993 — SSL IMAP для работы с почтовым ящиком с помощью клиента.
  • 7110 — POP3 для загрузки почты.
  • 7995 — SSL POP3 для загрузки почты.
  • 9071 — для защищенного подключения к администраторской консоли.

В зависимости от утилиты управления фаерволом, команды будут следующие.

а) Если используем firewalld (Red Hat, CentOS):

firewall-cmd —permanent —add-port={25,80,110,143,443,465,587,993,995,5222,5223,9071,7071,8443,7143,7993,7110,7995}/tcp

firewall-cmd —reload

б) Если используем iptables (Ubuntu):

iptables -A INPUT -p tcp —match multiport —dports 25,80,110,143,443,465,587,993,995,5222,5223,9071,7071,8443,7143,7993,7110,7995 -j ACCEPT 

netfilter-persistent save

в) Если используем ufw (Ubuntu):

ufw allow 25,80,110,143,443,465,587,993,995,5222,5223,9071,7071,8443,7143,7993,7110,7995/tcp

3. DNS и имя сервера

Для корректной работы почтового сервера необходимо создать mx-записи для домена (подробнее о ).

Но для установки Zimbra важнее, чтобы в локальном файле hosts была запись о нашем сервере, в противном случае, установка прервется с ошибкой. И так, задаем FQDN-имя для сервера:

hostnamectl set-hostname zimbra.dmosk.ru

Теперь открываем на редактирование файл:

vi /etc/hosts

… и добавляем:

192.168.1.15      zimbra.dmosk.ru zimbra

* где 192.168.1.15 — IP-адрес нашего сервера; zimbra — имя сервера; dmosk.ru — наш домен.

Не совсем очевидная проблема, но если в системе не будет пакета hostname, при попытке запустить установку зимбры, мы будем получать ошибку определения IP-адреса по имени. Устанавливаем пакет.

а) для CentOS (Red Hat):

yum install hostname

б) если Ubuntu (Debian):

apt-get install hostname

4. Системная переменная для имени сервера

Чтобы нам было удобнее вводить команды, где требуется указать имя сервера, создадим системную переменную:

myhostname=zimbra.dmosk.ru

Теперь мы можем в команде использовать переменную $myhostname.

Совместная работа с документами

В интерфейсе пользователя есть вкладка Drive. Здесь можно хранить свои файлы и делиться ими с другими пользователями системы. Есть возможность давать доступ на чтение или редактирование, а так же на редактирование и возможность так же назначать права для доступа других пользователей.

Отсюда можно запустить редактирование документа. Оно основано на онлайн версии популярного офисного пакета LibreOffice и поддерживает более 100 форматов документов, в т. ч. Microsoft Office. При работе над файлом каждое действие фиксируется, благодаря чему при желании можно будет не только вернуться к любому этапу создания документа, но и отследить порядок внесения правок в него, что помогает участвовать в процесс редактирования другим сотрудникам. Тут же можно будет быстро сохранить документ в виде pdf файла.

Я скажу честно, не протестировал этот функционал. Судя по тому, что все остальное у меня заработало, не думаю, что тут будут какие-то фатальные проблемы. Просто сервер для редактирования документов рекомендуется ставить на отдельную VPS, не на этот же сервер. В рамках тестирования у меня не было подходящей инфраструктуры под рукой, чтобы быстро связать все это дело. Судя по документации, там никаких сложностей нет. Так же качается пакет, ставится одной командой и потом связывается с основным сервером через ввод параметров для связи — адрес сервера и учетка для авторизации.

Думаю, что все это можно поставить и на один сервер, но не было времени проверить и разобраться.

Автоматизация переноса учёток

Почтовая учётная запись создаётся двумя командами:

/opt/zimbra/bin/zmprov ca user@domain.ru userpass displayName "Фамилия Имя Отчество"
/opt/zimbra/bin/zmprov ma user@domain.ru userPassword 'userpass'

где userpass — пароль пользователя

Первая команда создаёт пользователя с открытым паролем, вторая — перезаписывает открытый пароль шифрованным (поэтому первый пароль может быть любым).

Если есть список пользоватей и их пароли, то скрипт можно составить, например, в OpenOffice Calc добавить необходимые поля (команды, кавычки), и затем сохранить в формате csv с разделителем «пробел».

Можно сначала создать все учётные записи, а зетем у всех поменять пароль.

Чтобы корректно отображались кирилические буквы, скрипт лучше выполнять от имени root или можно настроить локаль. Проверить настройки локали можно командной:

# echo $LANG
ru_RU.UTF-8

а установить командами:

LANG=ru_RU.UTF-8
export $LANG

Zimbra Collaboration

Zimbra release notes are specific to each version of the server. Select your version from the list below to see the release notes for it.

Release Codename Patch Level Third-Party Patch Level General Availability Download the Release Notes
9.0.0 GA Release Kepler Patch 14 No released patches 04/07/2020
8.8.15 GA Release (LTS Release) Joule Patch 21 No released patches 07/22/2019
8.8.12 GA Release Isaac-Newton Patch 6 No released patches End of General Support 12/31/2019 04/01/2019
8.8.11 GA Release Homi-Bhabha Patch 5 No released patches End of Technical Guidance 12/17/2019 12/17/2018
8.8.10 GA Release Konrad-Zuse Patch 8 No released patches End of Technical Guidance 10/01/2019 10/03/2018
8.8.9 GA Release Curie Patch 10 No released patches End of Technical Guidance 07/09/2019 07/10/2018
8.8.8 GA Release Turing Patch 10 No released patches End of Technical Guidance 03/29/2019 04/02/2018
8.8.7 GA Release JudasPriest No released patches No released patches End of Technical Guidance 03/29/2019 03/08/2018
8.8.6 GA Release JudasPriest No released patches No released patches End of Technical Guidance 03/29/2019 01/15/2018
8.8 GA Release JudasPriest No released patches No released patches End of Technical Guidance 03/29/2019 12/12/2017
8.7.11 GA Release JudasPriest Patch 14 No released patches End of General Support 12/31/2019 06/08/2017
8.7.10 GA Release JudasPriest No released patches No released patches End of Technical Guidance 9/30/2019 05/31/2017
8.7.9 GA Release JudasPriest No released patches No released patches End of Technical Guidance 9/30/2019 05/11/2017
8.7.8 Early Developer Release JudasPriest No released patches No released patches End of Technical Guidance 9/30/2019 04/27/2017
8.7.7 GA Release JudasPriest No released patches No released patches End of Technical Guidance 9/30/2019 04/13/2017
8.7.6 GA Release JudasPriest No released patches No released patches End of Technical Guidance 9/30/2019 03/30/2017
8.7.5 GA Release JudasPriest No released patches No released patches End of Technical Guidance 9/30/2019 03/16/2017
8.7.4 GA Release JudasPriest No released patches No released patches End of Technical Guidance 9/30/2019 03/02/2017
8.7.3 GA Release JudasPriest No released patches No released patches End of Technical Guidance 9/30/2019 02/17/2017
8.7.2 GA Release JudasPriest No released patches No released patches End of Technical Guidance 9/30/2019 02/02/2017
8.7.1 GA Release JudasPriest No released patches No released patches End of Technical Guidance 9/30/2019 10/27/2016
8.7.0 GA Release JudasPriest No released patches No released patches End of Technical Guidance 9/30/2019 07/13/2016
8.6.0 GA Release JudasPriest Patch 14 No released patches End of Technical Guidance 9/30/2019 12/15/2014
8.5.1 GA Release JudasPriest No released patches No released patches End of Technical Guidance 9/30/2018 11/03/2014
8.5.0 GA Release JudasPriest Patch 2 No released patches End of Technical Guidance 9/30/2018 08/28/2014
8.0.9 GA Release IronMaiden No released patches No released patches End of Technical Guidance 9/10/2017 11/03/2014
8.0.8 GA Release IronMaiden No released patches No released patches End of Technical Guidance 9/10/2017 09/25/2014
8.0.7 GA Release IronMaiden Patch 2 End of Technical Guidance 9/10/2017 04/08/2014
8.0.6 GA Release IronMaiden No released patches End of Technical Guidance 9/10/2017 12/03/2013
8.0.5 GA Release IronMaiden Patch 1 End of Technical Guidance 9/10/2017 09/10/2013
8.0.4 GA Release IronMaiden Patch 2 End of Technical Guidance 9/10/2017 05/24/2013
8.0.3 GA Release IronMaiden Patch 3 End of Technical Guidance 9/10/2017 03/05/2013
8.0.2 GA Release IronMaiden Patch 1 No released patches End of Technical Guidance 9/10/2017 12/10/2012
8.0.1 GA Release IronMaiden No released patches No released patches End of Technical Guidance 9/10/2017 11/05/2012
8.0.0 GA Release IronMaiden No released patches No released patches End of Technical Guidance 9/10/2017 09/07/2012
7.2.7 GA Release Helix No released patches No released patches End of Technical Guidance 3/31/2015 03/14/2014

Try Zimbra

Want to get involved?

Other help Resources

Looking for a Video?

Что такое Zimbra

Для начала расскажу, из чего состоит Zimbra. Это известные open source продукты.

  1. Почтовый сервер — Postfix.
  2. Сервер баз данных — MariaDB.
  3. Ldap сервер — OpenLDAP.
  4. Сервер приложений — Jetty.
  5. Web сервер apache и nginx в качестве прокси к нему.
  6. Поисковой движок — Lucene.
  7. Антивирус и антиспам — ClamAV и SpamAssassin и Amavisd в виде интерфейса для взаимодействия этих инструментов с MTA.
  8. Предпросмотр документов на базе LibreOffice.

В общих чертах появляется понимание о том, что из себя представляет Zimbra. Открытый вопрос с imap сервером. Ожидаешь увидеть здесь dovecot, но на самом деле у зимбры свой imap сервер. Все перечисленные компоненты связаны через web приложения, написанные на Java, в том числе интерфейс пользователя. Это накладывает свои особенности в эксплуатации, которые характерны для всех java приложений. Ожидать небольшого потребления системных ресурсов не приходится.

Системные требования

Минимальные системные требования для Zimbra следующие:

Система Centos 7 и прочие клоны RHEL либо Ubuntu 16
Процессор Intel/AMD 2.0 GHZ+ 64-bit, 2-4 CPU
Память 8 Gb Ram
Диск 5 GB для компонентов сиcтемы + место под почту

Я в своем примере буду использовать операционную систему Centos 7.

Функционал

Рассмотрим теперь, какой функционал предоставляет бесплатная версия Zimbra из коробки.

  1. Непосредственно почтовый сервер с web интерфейсом. Доступен следующий функционал — почта, задачи, календарь, адресная книга, автоответы, алиасы и др.
  2. Простой чат через web клиент.
  3. Хороший функциональный поиск по почтовой базе.
  4. Шифрование почтовых сообщений.
  5. Предпросмотр документов в web интерфейсе.
  6. Антиспам и антивирус.
  7. Web консоль управления сервером для администратора.
  8. Приложение для компьютера Zimbra Desktop. К сожалению, больше не поддерживается.

В целом, ничего особенного. Весь этот функционал можно настроить так или иначе самостоятельно. Но это под силу не только лишь всем 🙂 Объем работы будет очень большой. Нужно хорошее знание linux и понимание устройства и работы почтовых серверов.

Zimbra хороша тем, что дает готовое, единое, комплексное решение, которое ставится практически автоматически и не требует больших знаний linux для развертывания и управления. После установки доступен web интерфейс, через который все управляется. Лазить в консоль сервера практически не нужно. Только если траблшутить какие-то проблемы. Если у вас хороший бэкграунд на тему почтового сервера на базе postfix, но вам просто надоело все настраивать руками, то проблем быть не должно. Если его нет, то как повезет. Но в целом, продукт стабилен и надежен. При типовом использовании проблем быть не должно.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector