wiki-js/Soft/manager-password/Passwork.html

234 lines
25 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<!--
title: Менеджер паролей Passwork
description:
published: true
date: 2023-11-15T16:36:53.126Z
tags:
editor: ckeditor
dateCreated: 2023-11-15T16:36:08.780Z
-->
<h1><span style="color: rgb(0,0,0);"><ac:structured-macro ac:name="toc" ac:schema-version="1" ac:macro-id="3c625648-1347-4f46-acc6-41d4c87e3533" /></span><span style="color: rgb(0,0,0);">Описание</span></h1>
<p><br /></p>
<blockquote>
<p><span style="color: rgb(0,0,255);">Пассворк упрощает совместную работу с корпоративными паролями. Все данные безопасно хранятся на вашем сервере, а сотрудники быстро находят нужные пароли. Администратор управляет правами пользователей, отслеживает все действия и изменения.</span></p>
<p><span style="color: rgb(0,0,255);"><ac:image><ri:attachment ri:filename="image2022-12-12_11-39-19.png" /></ac:image><ac:image><ri:attachment ri:filename="image2022-12-12_11-39-59.png" /></ac:image></span></p></blockquote>
<p><br /></p>
<p><ac:image><ri:attachment ri:filename="image2022-12-12_11-41-52.png" /></ac:image></p>
<p><br /></p>
<h1>Рекомендации по установке</h1>
<h3><strong>Минимальные системные требования</strong></h3>
<p>Пассворк не требователен к ресурсам сервера(-ов). Объемы необходимых ресурсов (RAM, CPU, HDD) и количество серверов зависят от количества активных пользователей, объема хранимых данных, а также требований к отказоустойчивости системы.</p>
<blockquote>
<p>Показатель IOPS имеет большое значения для скорости работы базы данных, поэтому желательно использовать SSD диски.</p></blockquote>
<p><strong>Варианты установки Пассворк на выделенных или виртуальных серверах</strong></p>
<h3>1. Все на одном сервере</h3>
<p>Обычно подходит для редакций до 500 пользователей, без специальных требований по хранению данных:</p>
<table class="wrapped"><colgroup><col /><col /><col /><col /></colgroup>
<tbody>
<tr>
<th scope="col">Кол-во пользователей</th>
<th scope="col">RAM</th>
<th scope="col">CPU</th>
<th scope="col">HDD</th></tr>
<tr>
<td>до 50</td>
<td>
<p>2-4 ГБ</p></td>
<td>4</td>
<td>
<p>100 ГБ</p></td></tr>
<tr>
<td><span style="color: rgb(55,53,47);">до 100</span></td>
<td>
<p>4-8 ГБ</p></td>
<td>8</td>
<td>
<p>150 ГБ</p></td></tr>
<tr>
<td>
<p>до 500</p></td>
<td>
<p>8-16 ГБ</p></td>
<td>8</td>
<td>
<p>200 ГБ</p></td></tr></tbody></table>
<p><strong>2. Сервер приложения и база данных на разных серверах</strong></p>
<p>База данных и сервер приложения разносятся по разным серверам.&nbsp;</p>
<p>RAM-1, CPU-1, HDD-1 &mdash; сервер приложения.</p>
<p>RAM-2, CPU-2, HDD-2 &mdash; база данных.</p>
<table class="wrapped"><colgroup><col /><col /><col /><col /><col /><col /><col /></colgroup>
<tbody>
<tr>
<th scope="col">Кол-во пользователей</th>
<th scope="col">RAM-1</th>
<th scope="col">CPU-1</th>
<th scope="col">HDD-1</th>
<th scope="col">RAM-2</th>
<th scope="col">CPU-2</th>
<th scope="col">HDD-2</th></tr>
<tr>
<td>
<p>до 50</p></td>
<td>
<p>2-4 ГБ</p></td>
<td>4</td>
<td>
<p>100 ГБ</p></td>
<td>
<p>2-4 ГБ</p></td>
<td>4</td>
<td>
<p>100 ГБ</p></td></tr>
<tr>
<td>
<p>до 100</p></td>
<td>
<p>4 ГБ</p></td>
<td>8</td>
<td>
<p>100 ГБ</p></td>
<td>
<p>4 ГБ</p></td>
<td>4</td>
<td>
<p>150 ГБ</p></td></tr>
<tr>
<td>до 500</td>
<td>
<p>8-16 ГБ</p></td>
<td>8</td>
<td>
<p>100 ГБ</p></td>
<td>
<p>8 ГБ</p></td>
<td>8</td>
<td>
<p>200 ГБ</p></td></tr>
<tr>
<td>до 1000</td>
<td>
<p>8-16 ГБ</p></td>
<td>8</td>
<td>
<p>100 ГБ</p></td>
<td>
<p>16 ГБ</p></td>
<td>8</td>
<td>
<p>200 ГБ</p></td></tr>
<tr>
<td>до 10000</td>
<td>
<p>16-32 ГБ</p></td>
<td>16</td>
<td>
<p>100 ГБ</p></td>
<td>
<p>16-32 ГБ</p></td>
<td>16</td>
<td>
<p>200 ГБ</p></td></tr></tbody></table>
<p><br /></p>
<h1>Установка</h1>
<h2>Установка Docker</h2>
<p>Скачайте и установите Docker CE (<a href="https://docs.docker.com/engine/installation/">https://docs.docker.com/engine/installation/</a>).</p>
<p>ачайте и установите Docker-сompose (<a href="https://docs.docker.com/compose/install/">https://docs.docker.com/compose/install/</a>)</p>
<p><strong>Обновите систему:</strong></p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="7ad23e74-9dd1-4901-9c00-9516a8accb62"><ac:plain-text-body><![CDATA[sudo i
apt-get update
apt-get upgrade]]></ac:plain-text-body></ac:structured-macro>
<p><strong><span class="notion-enable-hover">Установите Git:</span></strong></p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="be2398c2-1752-4891-9fa8-f7bc92ec9d68"><ac:plain-text-body><![CDATA[apt-get install git]]></ac:plain-text-body></ac:structured-macro>
<p><strong>Скачайте файлы управления и шаблонные конфиг-файлы</strong></p>
<p>Создайте директорию /server и склонируйте файлы:</p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="e7a6dd06-cb88-461f-978b-69f5415b9335"><ac:plain-text-body><![CDATA[rm /server/sites/prod/.gitkeep]]></ac:plain-text-body></ac:structured-macro>
<p>Склонируйте репозиторий. Укажите логин и пароль, которые вам сообщили менеджеры Пассворк.</p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="a49a23d9-66bd-40c1-bc9b-b8cc4510888d"><ac:plain-text-body><![CDATA[git clone http://passwork.download/passwork/passwork.git /server/sites/prod]]></ac:plain-text-body></ac:structured-macro>
<p class="auto-cursor-target"><br /></p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="86602915-07c9-4eb4-bcbc-2fa64803ccf5"><ac:plain-text-body><![CDATA[cd /server/sites/prod/
git checkout v5]]></ac:plain-text-body></ac:structured-macro>
<blockquote>
<p><span class="notion-enable-hover">Где взять логин и пароль</span></p>
<p>Мы отправляем логин и пароль к нашему репозиторию после покупки Пассворк.</p></blockquote>
<p><strong>Перейдите в каталог для Docker Compose</strong></p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="f3e1946b-ee45-4fc3-b73f-4c51934208f1"><ac:plain-text-body><![CDATA[cd /server/docker-compose/]]></ac:plain-text-body></ac:structured-macro>
<p><span class="notion-enable-hover">В каталоге есть файл docker-compose.override.yml , в котором можно указать назначение портов, на случай если порты могут быть заняты.</span></p>
<p><strong><span class="notion-enable-hover">Запустите Docker Compose</span></strong></p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="e45a709e-e6d3-401f-b39e-29d7c220e0b6"><ac:plain-text-body><![CDATA[docker-compose up -d]]></ac:plain-text-body></ac:structured-macro>
<p><strong>Проверьте, что контейнеры запустились и работают:</strong></p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="0af62ca9-0cdd-4b46-9a2e-77fd3549ee2c"><ac:plain-text-body><![CDATA[docker ps]]></ac:plain-text-body></ac:structured-macro>
<h3><strong>Инсталляция</strong></h3>
<p>При первом открытии Пассворк вы увидите диалог инсталляции, который проверит корректность настройки сервера и позволит ввести базовые параметры.</p>
<p><ac:image ac:height="250"><ri:attachment ri:filename="image2022-12-12_12-9-24.png" /></ac:image><ac:image ac:height="400"><ri:attachment ri:filename="image2022-12-12_12-9-45.png" /></ac:image><ac:image ac:height="400"><ri:attachment ri:filename="image2022-12-12_12-8-57.png" /></ac:image><ac:image ac:height="400"><ri:attachment ri:filename="image2022-12-12_12-21-50.png" /></ac:image></p>
<p>Тут нужно подправить сервер и указать строчку: <a href="mongodb://db:27017">mongodb://db:27017</a></p>
<p>Нужно будет сохранить ключ шифрования для восстановления, если появится такая необходимость.</p>
<p><strong>Зарегистрируйте администратора Пассворк</strong></p>
<p>Введите логин и пароль для первого пользователя. Пользователь автоматически станет администратором и владельцем организации.</p>
<p><br /></p>
<h1>Обслуживание</h1>
<h2>Настройка фоновых задач</h2>
<p>Фоновые задачи &mdash; это задачи, которые выполняются по планировщику в фоновом режиме. Например, синхронизация LDAP, загрузка фавиконов и другие задачи, которые требует много времени, постоянного выполнения или распределения ресурсов.</p>
<p>Проверить список запланированных задач и корректность всех настроек можно на странице &laquo;Фоновые задачи&raquo;.</p>
<p><ac:image ac:height="400"><ri:url ri:value="https://passwork.notion.site/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F18d60b1e-b83a-4f39-894f-ff49fabb0383%2FUntitled.png?id=8c022927-a52b-4ed6-8dff-52e55320a9f3&amp;table=block&amp;spaceId=d5fdbe93-ab55-4086-b77c-925b4939c9f9&amp;width=2000&amp;userId=&amp;cache=v2" /></ac:image></p>
<p><br /></p>
<p>Для настройки фоновых задач необходимо настроить планировщик вашей операционной системы Cron (для Линукс) или Windows Scheduler. Планировщик должен запускать скрипт <u><code>&lt;папка с Пассворк&gt;/app/tools/run-scheduled-tasks.php</code></u> каждую минуту.</p>
<p>Скрипт проанализирует какие задачи необходимо запустить и для каждой задачи создаст отдельный поток. При выполнении каждая задача записывает лог в папку <u><code>&lt;папка Пассворк&gt;/app/logs/</code> в файлы вида <code>task-*.log</code></u>, например, <u><code>task-62f8e9624e0446fba40bbb12.log</code></u>. После завершения задачи вы можете посмотреть и скачать лог со страницы Фоновые задачи &rarr; История задач.</p>
<p>Системные логи планировщика (с ошибками) находятся в <u><code>&lt;папка Пассворк&gt;/app/logs/run-command.log</code></u>.</p>
<h2>О Docker-образах</h2>
<p>Docker-образы устроены таким способом, что все важные данные вынесены в общие с хостовой машиной папки. Поэтому вы можете смело останавливать, удалять и создавать новые контейнеры. Конфигурационные файлы так же хранятся в общих папках (т.е. не в контейнере), поэтому вы можете провести любую настройку Nginx, PHP и MongoDB без внесения изменений непосредственно в образы или контейнеры. Просто внесите изменения в конфиг файлы и перезапустите контейнер или сервисы.</p>
<p>Если вам необходимо внести изменения в образ, то войдите в контейнер, внесите изменения и затем сделайте коммит в ваш образ командой</p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="3c300f0c-e9d5-4480-ac3f-c2f712869049"><ac:plain-text-body><![CDATA[docker commit <container id> you-name/image-name]]></ac:plain-text-body></ac:structured-macro>
<p>Более подробно описано в официальной документации Docker.</p>
<h2>Полезные команды</h2>
<p>Скопируйте утилиту&nbsp;<em>dexec</em>&nbsp;в /usr/bin/:</p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="fc39060b-554a-4c98-81bd-5dc9de889859"><ac:plain-text-body><![CDATA[cp /server/dexec /usr/bin/dexec]]></ac:plain-text-body></ac:structured-macro>
<p>Вход в контейнер:</p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="934f2fd7-11d2-4034-8d96-77ef5eb79e83"><ac:plain-text-body><![CDATA[docker exec -it <container> bash]]></ac:plain-text-body></ac:structured-macro>
<p>Восстановление прав для файлов сайта (требуется после обновления):</p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="e279c7ba-9744-431b-9674-70218d611e97"><ac:plain-text-body><![CDATA[/server/docker-nginx-permissions nginx]]></ac:plain-text-body></ac:structured-macro>
<p>Перезагрузка Nginx без остановки:</p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="5d075aa3-baa6-4137-b87b-513c1eab64ae"><ac:plain-text-body><![CDATA[/server/docker-nginx-reload nginx]]></ac:plain-text-body></ac:structured-macro>
<p>Контейнеры запущены с опцией&nbsp;<span class="notion-enable-hover">autostart</span>. Это означает, что Docker автоматически перезапустит контейнер, если он по каким-либо причинам остановится. Поэтому, если вам необходимо остановить контейнер, сперва отключите&nbsp;<span class="notion-enable-hover">autostart</span>:</p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="03d70532-22fd-40d3-a000-7a0726161496"><ac:plain-text-body><![CDATA[/server/docker-norestart <container>]]></ac:plain-text-body></ac:structured-macro>
<p>Включить&nbsp;<span class="notion-enable-hover">autostart</span>&nbsp;обратно:</p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="b3813605-4d5b-4e3b-a817-e2c0d77d9db4"><ac:plain-text-body><![CDATA[/server/docker-autorestart <container>]]></ac:plain-text-body></ac:structured-macro>
<p>Без опции&nbsp;<span class="notion-enable-hover">autostart</span>&nbsp;вы можете остановить контейнеры принудительно:</p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="aac1f65c-89d6-44fe-b755-54baa51e5430"><ac:plain-text-body><![CDATA[docker stop <container>]]></ac:plain-text-body></ac:structured-macro>
<p>Обратите внимание, что если опция&nbsp;<em>autostart</em> включена, то эти команды перезапустят Nginx и MongoDB, Используйте ее в крайних случаях, так как это может повлечь порчу данных.</p>
<h2>Структура файлов</h2>
<p>Файлы конфигураций:</p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="f01ef15d-6d7b-4381-b509-e982b85e41b9"><ac:plain-text-body><![CDATA[/server/conf/]]></ac:plain-text-body></ac:structured-macro>
<p>Данные (база данных):</p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="cb04a381-804f-485b-913d-dbbbb3f00a74"><ac:plain-text-body><![CDATA[/server/data/]]></ac:plain-text-body></ac:structured-macro>
<p>Логи:</p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="4d8ef52e-0c56-4e97-b18a-671b3f68096e"><ac:plain-text-body><![CDATA[/server/log/]]></ac:plain-text-body></ac:structured-macro>
<p>Сайты:</p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="34909be9-856e-4b11-8f2d-65c3d8caeb14"><ac:plain-text-body><![CDATA[/server/sites/]]></ac:plain-text-body></ac:structured-macro>
<h2>Пример: Как изменить конфигурацию Nginx или PHP</h2>
<p>Отредактируйте файлы:</p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="0b169a80-6486-42f3-bb87-845ee089b04c"><ac:plain-text-body><![CDATA[mcedit /server/conf/nginx/prod.site
mcedit /server/conf/nginx/nginx.conf
mcedit /server/conf/php8/php.ini]]></ac:plain-text-body></ac:structured-macro>
<p>Перезапустите nginx и php-fpm:</p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="28a28a64-a519-497c-a4ca-caf9ecbb7faf"><ac:plain-text-body><![CDATA[/server/docker-nginx-reload nginx
docker restart php8]]></ac:plain-text-body></ac:structured-macro>
<h2>Настройка почты</h2>
<p>Nginx контейнер использует Postfix для отправки почты. Все конфигурационные файлы вы можете найти здесь:</p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="501d92af-0d27-4cb5-9d95-d3846e4e042e"><ac:plain-text-body><![CDATA[/server/conf/postfix/]]></ac:plain-text-body></ac:structured-macro>
<p>Отредактируйте их под свои нужды. Перезапустите Postfix, чтобы изменения вступили в силу.</p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="7a8ba914-84f6-4a19-96b1-25c407549767"><ac:plain-text-body><![CDATA[rm ]]></ac:plain-text-body></ac:structured-macro>
<h2>Пример настройки Postfix</h2>
<p>Откройте конфигурационный файл&nbsp;<code>/server/conf/postfix/<a href="http://main.cf">main.cf</a></code>.</p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="32a748f1-5340-4594-be18-25da20d8b608"><ac:plain-text-body><![CDATA[mcedit /server/conf/postfix/main.cf]]></ac:plain-text-body></ac:structured-macro>
<p>Убедитесь в том, что параметр myhostname совпадает с полным доменным именем вашего сервера:</p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="58673e27-5d51-4e82-b396-e79bad0ef4b5"><ac:plain-text-body><![CDATA[myhostname = passwork]]></ac:plain-text-body></ac:structured-macro>
<h3>Настройка имен и паролей SMTP</h3>
<p>Откройте или создайте файл&nbsp;<code>/server/conf/postfix/sasl_passwd</code>.</p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="5780388e-aa53-4b58-ab49-37df6876f9c9"><ac:plain-text-body><![CDATA[mcedit /server/conf/postfix/sasl_passwd]]></ac:plain-text-body></ac:structured-macro>
<p>Добавьте SMTP хост, имя пользователя и пароль должны быть записаны в следующем формате:</p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="92267efb-c538-4235-81bd-e4ca309a3e93"><ac:plain-text-body><![CDATA[[mail.isp.example] username:password]]></ac:plain-text-body></ac:structured-macro>
<p>Если вы хотите использовать нестандартный TCP-порт (например, 587), используйте следующий формат:</p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="549b533c-1d7c-496e-91b1-dd575d6ce391"><ac:plain-text-body><![CDATA[[mail.isp.example]:587 username:password]]></ac:plain-text-body></ac:structured-macro>
<p><span class="notion-enable-hover">для Gmail запись будет выглядеть следующим образом:</span></p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="55285bfa-587e-41d6-96ad-5d0e1b1b6973"><ac:plain-text-body><![CDATA[[smtp.gmail.com]:587 username:password]]></ac:plain-text-body></ac:structured-macro>
<p><span class="notion-enable-hover">Создайте хэшированную базу данных для Postfix, выполните команду postmap:</span></p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="d5406043-a2f3-4bba-9c96-9fae20cfd718"><ac:plain-text-body><![CDATA[docker exec -it postfix postmap /etc/postfix/sasl_passwd]]></ac:plain-text-body></ac:structured-macro>
<p>После успешного выполнения команды в директории /server/conf/postfix должен появиться новый файл sasl_passwd.db.</p>
<h3>Защита файла с паролями и хэш-файла.</h3>
<p>Файлы /server/conf/postfix/sasl_passwd и /server/conf/postfix/sasl_passwd.db, созданные в предыдущих шагах, содержат ваши учетные данные SMTP в виде простого текста. По соображениям безопасности вы должны изменить права доступа к ним, так чтобы только пользователь root мог читать и записывать в файл.</p>
<p>Выполните следующие команды, чтобы изменить владельца файлов на root и обновить права доступа для файлов:</p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="e2e43f26-caba-48e2-9a72-9898b8754b39"><ac:plain-text-body><![CDATA[chown root:root /server/conf/postfix/sasl_passwd /server/conf/postfix/sasl_passwd.db
chmod 0600 /server/conf/postfix/sasl_passwd /server/conf/postfix/sasl_passwd.db]]></ac:plain-text-body></ac:structured-macro>
<h3><strong>Конфигурация релей сервера</strong></h3>
<p>Откройте файл&nbsp;<code>/server/conf/postfix/<a href="http://main.cf">main.cf</a></code>.</p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="83e14e67-912b-4bce-af3b-74cb6ec56e5f"><ac:plain-text-body><![CDATA[mcedit /server/conf/postfix/main.cf]]></ac:plain-text-body></ac:structured-macro>
<p>Измените параметр relayhost, на свой внешний SMTP релей. Если в файле sasl_passwd был указан нестандартный TCP-порт, то вы должны использовать тот же порт при настройке параметра relayhost.</p>
<p>Укажите SMTP релей:</p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="816eeb46-b00d-4b5e-836c-a8c5e34ed22f"><ac:plain-text-body><![CDATA[relayhost = [mail.isp.example]:587]]></ac:plain-text-body></ac:structured-macro>
<p><span class="notion-enable-hover">для Gmail запись будет выглядеть следующим образом:</span></p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="72eaf8a1-2477-4f2d-b853-ad5971787ca5"><ac:plain-text-body><![CDATA[relayhost = [smtp.gmail.com]:587]]></ac:plain-text-body></ac:structured-macro>
<p><span class="notion-enable-hover">В конце файла добавьте следующие параметры для включения аутентификации:</span></p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="c20facf1-2d56-4096-ab76-17d2a2960eda"><ac:plain-text-body><![CDATA[# enable SASL authentication
smtp_sasl_auth_enable = yes
# disallow methods that allow anonymous authentication.
smtp_sasl_security_options = noanonymous
# where to find sasl_passwd
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
# Enable STARTTLS encryption
smtp_use_tls = yes
# where to find CA certificates
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt]]></ac:plain-text-body></ac:structured-macro>
<p>Сохраните изменения.</p>
<p>Перезапустите Postfix:</p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="073de8a1-b41f-4f42-8ef6-9c0b08098ac2"><ac:plain-text-body><![CDATA[docker exec -i postfix service postfix reload]]></ac:plain-text-body></ac:structured-macro>
<p><br /></p>
<p><br /></p>
<p><br /></p>
<p><br /></p>
<p><br /></p>
<p><br /></p>
<p><br /></p>