Какое нам дело до классов адресов? Классы адресов опеределяют то, как Postfix принимает решения какие письма принимать и куда их доставлять. Класс адреса определяется тремя вещами:
# Почтовая система Postfix + Dovecot
Возможные структуры почтовой системы:
1. Postfix, Dovecot имеют доступ к списку пользователей и работают параллельно, разделяя доступ к почтовым ящикам пользователей.
2. Dovecot является «бэкендом» для доступа к почтовым ящикам пользователей. При этом подходе, расположение почтовых ящиков, список пользователей, известен только Dovecot.
Далее будет рассмотрен первый вариант. Но в начале следует углубиться в теорию для понимания механизмов работы Postfix. Рассмотрим что такое классы адресов и какие бывают типы доменов. Затем рассмотрим классы адресов с точки зрения менеджмента почтовых ящиков. В конце разберёмся какие проблемы есть у почтовых серверов из-за спама, и как повысить надежность доставки писем вашим почтовым сервером.
## Какое нам дело до классов адресов?
Классы адресов опеределяют то, как Postfix принимает решения какие письма принимать и куда их доставлять. Класс адреса определяется тремя вещами:
- список доменов,
- список доменов,
- список действительных адресов получателей,
- список действительных адресов получателей,
- транспорт доставки по умолчанию.
- транспорт доставки по умолчанию.
Можно считать, что класс адресов - это правило, применяемое к полю `Кому:` конверта элекронного письма. Правило имеет вид:
По умолчанию определёны следующие классы:
1. local domain class (локальные почтовые ящики),
2. virtual mailbox domain class (виртуальные почтовые ящики),
3. virtual alias domain class (виртуальные псевдонимы),
4. relay domain class (адреса транзитных smtp серверов),
5. default domain class (адреса по умолчанию).
Можно считать, что класс - это правило, применяемое к полю `Кому:` конверта элекронного письма. Правило имеет вид:
```
```
user@domain -> agent(user, domain),
user@domain -> agent(email),
```
```
которое применяется, если истинно, что:
которое применяется, если истинно, что:
```
```
@ -14,24 +31,15 @@ domain ∈ DOMAINS,
agent ∈ AGENTS.
agent ∈ AGENTS.
```
```
По умолчанию определён следующий список классов адресов:
Особенности. Для локальных (local domain class) и виртуальных (virtual mailbox class) почтовых ящиков пустое множество в `USER = {}` означает, что проверка пользователей отключена, то есть подходит любое имя пользователя. Для разрешения псевдонимов в адреса в классе virtual alias domain class (виртуальные псевдонимы) агент не используется `AGENTS = {}`.
- local domain class (локальные почтовые ящики),
- virtual mailbox domain class (виртуальные почтовые ящики),
- virtual alias domain class (виртуальные псевдонимы),
- relay domain class (адреса транзитных smtp серверов),
- default domain class (адреса по умолчанию).
Для локальных (local domain class) и виртуальных (virtual mailbox class) почтовых ящиков пустое множество в `USER = {}` означает, что проверка пользователей отключена, то есть подходит любое имя пользователя.
Для разрешения псевдонимов в адреса в классе virtual alias domain class (виртуальные псевдонимы) агент не используется `AGENTS = {}`.
### 1. local domain class (`domain ∈ mydestination ∪ inet_interfaces ∪ proxy_interfaces`)
### 1. local domain class (`domain ∈ mydestination ∪ inet_interfaces ∪ proxy_interfaces`)
Доставка последней мили до почтовых ящиков пользователей в `canonical` доменах, имеющих аккаунты в UNIX системе. Имена `user` определяются параметром `local_recipient_maps`. По умолчанию заничение равно `proxy:unix:passwd.byname $alias_maps`, то есть `/etc/passwd` и `/etc/aliases`.
Адрес попадает в данный класс, если его домен или его ip адрес совпадает с одним из `mydestination`, `inet_interfaces` или `proxy_interfaces`.
Адрес получателя локальный, если его домен совпадает с`mydestination`, `inet_interfaces` или `proxy_interfaces`.
Класс предназначен для доставки писем до почтовых ящиков пользователей имеющих аккаунты в UNIX системе. Имена `user` определяются параметром `local_recipient_maps`. По умолчанию это `/etc/passwd` и `/etc/aliases`.
@ -39,23 +47,23 @@ AGENTS = service names ∈ /etc/postfix/master.cf
### 2. virtual mailbox domain class (`domain ∈ virtual_mailbox_domains`)
### 2. virtual mailbox domain class (`domain ∈ virtual_mailbox_domains`)
Доставка последней мили до почтовых ящиков пользователей в `hosted` доменах, чьи пользователи не имеют аккаунтов в UNIX системе. Адреса почтовых ящиков вида `user@domain` ищутся в одной или нескольких таблицах указанных в параметре `virtual_mailbox_maps`.
Адреса почтовых ящиков вида `user@domain` ищутся в одной или нескольких таблицах указанных в параметре `virtual_mailbox_maps`. Доставка до почтовых ящиков пользователей в доменах, чьи пользователи не имеют аккаунтов в UNIX системе.
```
```
agent = virtual из virtual_transport
agent = virtual
USERS = virtual_mailbox_maps
USERS = virtual_mailbox_maps
DOMAINS = virtual_mailbox_domains
DOMAINS = virtual_mailbox_domains
AGENTS = service names ∈ /etc/postfix/master.cf
AGENTS = service names ∈ /etc/postfix/master.cf
```
```
### 3. virtual alias domain class (виртуальные псевдонимы)
### 3. virtual alias domain class (виртуальные псевдонимы)
* Назначение: хостинговые домены, в которых каждый адрес получателя псевдонимом привязан к учётной записи локальной UNIX-системы или к удаленному адресу. Пример виртуального псевдонима приведен в файле VIRTUAL_README.
Назначение: хостинговые домены, в которых каждый адрес получателя псевдонимом привязан к учётной записи локальной UNIX-системы или к удаленному адресу. Пример виртуального псевдонима приведен в файле VIRTUAL_README.
* Доменные имена перечисляются в virtual_alias_domains. Для совместимости с Postfix 1.1 по умолчанию используется значение $virtual_alias_maps.
Доменные имена перечисляются в virtual_alias_domains. Для совместимости с Postfix 1.1 по умолчанию используется значение $virtual_alias_maps.
* Действительные адреса получателей перечисляются в параметре virtual_alias_maps. SMTP-сервер Postfix отклоняет недействительных получателей с сообщением "Пользователь неизвестен в таблице виртуальных псевдонимов". Для совместимости с Postfix 1.1 по умолчанию используется значение $virtual_maps.
Действительные адреса получателей перечисляются в параметре virtual_alias_maps. SMTP-сервер Postfix отклоняет недействительных получателей с сообщением "Пользователь неизвестен в таблице виртуальных псевдонимов". Для совместимости с Postfix 1.1 по умолчанию используется значение $virtual_maps.
* Транспортный параметр доставки почты отсутствует. Каждый адрес должен быть псевдонимом для какого-либо другого адреса.
Транспортный параметр доставки почты отсутствует. Каждый адрес должен быть псевдонимом для какого-либо другого адреса.
### 4. relay domain class (адреса транзитных smtp серверов)
### 4. relay domain class (адреса доменов-ретранляторов)
* Назначение: переадресация почты на удаленные адреса, в которых ваша система указана в качестве основного или резервного MX-хоста. Для обсуждения основных деталей конфигурации см. документ BASIC_CONFIGURATION_README. Обсуждение различий между каноническими доменами, размещенными доменами и другими доменами см. в файле VIRTUAL_README.
Назначение: переадресация почты на удаленные адреса, в которых ваша система указана в качестве основного или резервного MX-хоста. Для обсуждения основных деталей конфигурации см. документ BASIC_CONFIGURATION_README. Обсуждение различий между каноническими доменами, размещенными доменами и другими доменами см. в файле VIRTUAL_README.
* Доменные имена перечисляются с помощью параметра relay_domains.
Доменные имена перечисляются с помощью параметра relay_domains.
* Действительные адреса получателей перечисляются с помощью параметра relay_recipient_maps. SMTP-сервер Postfix отклоняет недействительных получателей с сообщением "User unknown in relay recipient table". Если значение этого параметра пустое, то SMTP-сервер Postfix принимает всех получателей для доменов, перечисленных в параметре relay_domains.
Действительные адреса получателей перечисляются с помощью параметра relay_recipient_maps. SMTP-сервер Postfix отклоняет недействительных получателей с сообщением "User unknown in relay recipient table". Если значение этого параметра пустое, то SMTP-сервер Postfix принимает всех получателей для доменов, перечисленных в параметре relay_domains.
* Транспорт доставки почты задается параметром relay_transport. По умолчанию используется значение relay, которое является клоном агента доставки smtp(8).
Транспорт доставки почты задается параметром relay_transport. По умолчанию используется значение relay, которое является клоном агента доставки smtp(8).
```
```
agent = relay из relay_transport
agent = relay
USERS = relay_recipient_maps
USERS = relay_recipient_maps
DOMAINS = relay_domains
DOMAINS = relay_domains
AGENTS = service names ∈ /etc/postfix/master.cf
AGENTS = service names ∈ /etc/postfix/master.cf
@ -82,22 +90,184 @@ AGENTS = service names ∈ /etc/postfix/master.cf
### 5. default domain class (адреса по умолчанию)
### 5. default domain class (адреса по умолчанию)
* Назначение: пересылка почты в Интернет от имени авторизованных клиентов. Для обсуждения основных деталей конфигурации см. файл BASIC_CONFIGURATION_README. О различиях между каноническими доменами, размещенными доменами и другими доменами см. файл VIRTUAL_README.
Назначение: пересылка почты в Интернет от имени авторизованных клиентов. Для обсуждения основных деталей конфигурации см. файл BASIC_CONFIGURATION_README. О различиях между каноническими доменами, размещенными доменами и другими доменами см. файл VIRTUAL_README.
* У этого класса нет таблицы доменов назначения.
* Этот класс не имеет таблицы действительных адресов получателей.
У этого класса нет таблицы доменов назначения.
* Транспорт доставки почты задается параметром default_transport. По умолчанию используется значение smtp для доставки с помощью агента доставки smtp(8).
Этот класс не имеет таблицы действительных адресов получателей.
Транспорт доставки почты задается параметром default_transport. По умолчанию используется значение smtp для доставки с помощью агента доставки smtp(8).
```
```
agent = smtp из default_transport
agent = smtp
USERS = relay_recipient_maps
USERS = {}
DOMAINS = relay_domains
DOMAINS = {}
AGENTS = service names ∈ /etc/postfix/master.cf
AGENTS = service names ∈ /etc/postfix/master.cf
```
```
Анекдот про выбор протокола шифрования в STARTTLS:
## Типы доменов
Большинство систем Postfix являются конечным пунктом назначения только для нескольких доменных имен. К ним относятся имена хостов и [IP-адреса] машин, на которых работает Postfix, а иногда и родительский домен имени хоста. Эти домены называются каноническими ( `canonical` ) доменами. Обычно они реализуются с помощью класса адресов локального домена Postfix, как определено в файле ADDRESS_CLASS_README.
Помимо канонических доменов, Postfix может быть настроен на то, чтобы быть конечным адресатом для любого количества дополнительных доменов. Такие домены называются размещенными ( `hosted` ), поскольку они не связаны непосредственно с именем самой машины. Размещенные домены обычно реализуются с помощью класса виртуального псевдонима домена и/или виртуального домена почтовых ящиков.
Но подождите! Это еще не все. Postfix может быть настроен как резервный MX-хост для других доменов. В этом случае Postfix не будет являться резервным хостом MX для этих доменов. Он просто ставит почту в очередь, когда основной MX-хост работает, и пересылает почту, когда основной MX-хост не работает. Эта функция реализуется с помощью класса адресов доменов-ретрансляторов, как определено в файле ADDRESS_CLASS_README.
Наконец, Postfix может быть настроен как транзитный хост для отправки почты через Интернет. Очевидно, что Postfix не является конечным адресатом такой почты. Эта функция доступна только для авторизованных клиентов и/или пользователей и реализуется классом доменных адресов по умолчанию, как определено в параметре ADDRESS_CLASS_README.
**Таблица. 1 Сводная таблица классов почтовых адресов**
Первые параметры, представляющие интерес, определяют идентификацию и роль машины в сети. Заполним таблицу:
**Таблица 2. Список вопросов перед настройкой почтового сервера**
|Вопрос|Ответ|Параметр|
|-|-|-|
| Какое доменное имя у машины с Postfix | stud12.myoffice.ru | myhostname |
| Какой домен является родительским | myoffice.ru | mydomain |
| Какие адреса принадлежат доверенной сети от клиентов в которой будут пересылаться письма другим почтовым серверам | 127.0.0.0/8 | mynetworks |
| Какое доменное имя использовать в исходящей почте | stud12.myoffice.ru или myoffice.ru | myorigin = myhostname или mydomain |
| Для каких доменов принимать почту и доставлять локально | stud12.myoffice.ru или myoffice.ru | mydestination = $myhostname localhost.$mydomain localhost |
| С каких клиентов передавать почту | | |
| В какие пункты назначения передавать почту | | |
| Какой метод доставки: прямой или непрямой | прямой | relay or proxy not used? |
Параметр `mydomain` задает родительский домен `myhostname`. По умолчанию он получается из `myhostname` путем удаления первой части (за исключением случаев, когда в результате не будет получен домен верхнего уровня ). И наоборот, если вы укажете `mydomain` в файле `main.cf`, то Postfix будет использовать его значение для генерации полностью определенного значения по умолчанию для параметра `myhostname`.
**Таблица 3. Пример вычисления значений `myhostname`, `mydomain`**
|myhostname||mydomain|
|-|-|-|
| www.stud12.myoffice.space | -> | ? |
| stud12.myoffice.space | -> | myoffice.space |
| myoffice.space | -> | myoffice.space |
| localhost.myoffice.space | <-|myoffice.space|
Рекомендуется сопоставить `myhostname`с тем, что есть в PTR-записи, и проверить, что PTR имеет соответствующую A-запись.
Параметр `myorigin` задает домен, который отображается в почте, размещенной на этой машине. По умолчанию используется имя локальной машины, `myhostname`, которое по умолчанию равно имени машины. Если только вы не используете действительно небольшой сайт, то, вероятно, следует изменить его на `mydomain`, которое по умолчанию соответствует родительскому домену имени машины.
Параметр `mydestination` определяет, на какие домены эта машина будет доставлять локально, а не пересылать на другую машину. По умолчанию принимается почта для самой машины. О том, как настроить Postfix для размещенных доменов, см. файл VIRTUAL_README. (Правда в конфигурационном файле `main.cf.proto` есть комментарий: "Вы ДОЛЖНЫ указать $myhostname в начале текста. Это требование 581 RFC. Самому Postfix безразлично.")
## Пример эволюции конфигурации Postfix - от простого к сложному.
### Несколько доменов в mydestiantion
У вас есть почтовый сервер обслуживающий один домен `myoffice.ru`. Стоит ли заводить ещё один почтовый сервер, если количество доменов увеличилось (появился `myoffice.space`)? Совсем не обязательно.
Самый простой способ размещения дополнительного домена - это добавить имя домена к доменам, перечисленным в конфигурационном параметре Postfix `mydestination`, и добавить имена пользователей в файл паролей UNIX `/etc/passwd`. При таком подходе не делается различий между каноническими ( `canonical` ) и размещенными ( `hosted` ) доменами. Каждое имя пользователя может получать почту в каждом домене.
* Полное отсутствие разделения: почта для info@stud12.myoffice.ru доставляется на ту же системную учетную запись UNIX, что и почта для info@myoffice.space.
* При наличии пользователей в файле паролей UNIX администрирование большого числа пользователей становится неудобным.
### Виртуальные псевдонимы
При использовании подхода, описанного в данном разделе, каждый размещаемый домен может иметь свой собственный адрес электронной почты `info@stud12.myoffice.ru` и `info@myoffice.space`. Однако при этом по-прежнему используются системные учетные записи UNIX для доставки локальных почтовых ящиков.
При использовании виртуальных доменов-псевдонимов каждый размещаемый адрес привязывается к локальной учетной записи UNIX-системы или к удаленному адресу. Они не обязательно должны ссылаться на системные учетные записи UNIX на вашей машине. В приведенном ниже примере показано, как использовать этот механизм для домена myoffice.space.
9 # Uncomment entry below to implement a catch-all address
10 # @myoffice.space jim
11 ...virtual aliases for more domains...
```
Виртуальные псевдонимы решает одну проблему: он позволяет каждому домену иметь свой собственный почтовый адрес. Например это даёт возможность работать с ящиками `info@stud12.myoffice.ru` и `info@myoffice.space` разным пользователям.
Но при этом остается один недостаток: каждый виртуальный адрес привязывается к системной учетной записи UNIX. При добавлении большего количества виртуальных адресов увеличивается и количество системных учетных записей UNIX. В следующем разделе эта проблема будет устранена.
### Виртуальные почтовые ящики
По мере увеличения числа доменов и пользователей в системе становится все менее целесообразным предоставлять каждому пользователю собственную учетную запись в системе UNIX.
С помощью агента доставки Postfix virtual(8) каждый адрес получателя может иметь свой собственный виртуальный почтовый ящик. В отличие от доменов виртуальных псевдонимов, домены виртуальных почтовых ящиков не нуждаются в неуклюжей трансляции из каждого адреса получателя в другой адрес, а владельцам адресов виртуальных почтовых ящиков не нужно иметь системную учетную запись UNIX.
Агент доставки виртуальных почтовых ящиков Postfix virtual(8) ищет путь к почтовому ящику пользователя, `uid` и `gid` в отдельных таблицах, которые перебираются вместе с почтовым адресом получателя. Доставка в стиле `Maildir` включается путем завершения имени почтового ящика символом "/".
Если идея нескольких таблиц покажется вам неудобной, помните, что вы можете перенести информацию (после того как она заработает) в базу данных SQL. Если вы пойдете по этому пути, обязательно ознакомьтесь с разделом "local files versus databases" в верхней части документа VIRTUAL_README.
13 # Comment out the entry below to implement a catch-all.
14 # @myoffice.space myoffice.space/catchall
15 ...virtual mailboxes for more domains...
```
```
17 /etc/postfix/virtual:
18 postmaster@myoffice.space postmaster
```
* Строка 2: Параметр virtual_mailbox_domains указывает Postfix, что myoffice.space является так называемым виртуальным почтовым доменом. Если опустить эту настройку, то Postfix будет отклонять почту (relay access denied) или не сможет ее доставить (почта для myoffice.space зацикливается на себе).
НИКОГДА не указывайте виртуальное доменное имя MAILBOX в качестве домена mydestination!\
НИКОГДА не указывайте имя виртуального домена MAILBOX в качестве виртуального домена ALIAS!
* Строка 3: Параметр virtual_mailbox_base задает префикс для всех имен путей виртуальных почтовых ящиков. Это защитный механизм на случай ошибки. Он предотвращает доставку почты по всей файловой системе.
* Строки 4, 10-15: Параметр virtual_mailbox_maps задает таблицу поиска с именами почтовых ящиков (или maildir), индексированных по виртуальному почтовому адресу. В данном примере почта для info@myoffice.space отправляется в почтовый ящик по адресу /var/mail/vhosts/myoffice.space/info, а почта для sales@myoffice.space - в maildir, расположенный по адресу /var/mail/vhosts/myoffice.space/sales/.
* Строка 5: virtual_minimum_uid задает нижнюю границу UID владельца почтового ящика или maildir. Это защитный механизм на случай ошибки. Он предотвращает запись почты в чувствительные файлы.
* Строки 6, 7: Параметры virtual_uid_maps и virtual_gid_maps указывают, что все виртуальные почтовые ящики принадлежат фиксированным uid и gid 5000. Если это не то, что нужно, укажите таблицы поиска, которые ищут по почтовому адресу получателя.
* Строка 14: Закомментированная запись (текст после #) показывает, как можно реализовать универсальный адрес виртуального почтового ящика. Будьте готовы к получению большого количества спама, а также отбитого спама, отправленного от имени anything@myoffice.space.
НИКОГДА не помещайте виртуальный MAILBOX wild-card в виртуальный файл ALIAS!!!
* Строки 8, 17, 18: Как видите, можно смешивать виртуальные псевдонимы с виртуальными почтовыми ящиками. Мы используем эту возможность для перенаправления почты для адреса postmaster сайта myoffice.space на локальный адрес postmaster. Аналогичный механизм можно использовать и для перенаправления адреса на удаленный адрес.
* Строка 18: В данном примере предполагается, что в файле main.cf под параметром mydestination указан $myorigin. Если это не так, укажите явное доменное имя в правой части записей таблицы виртуальных псевдонимов, иначе почта будет отправляться не на тот домен.
# Как увеличить вероятность доставки почты с вашего почтового сервера?
## Чеклист
| Вопрос | Ответ |
|-|-|
| 1. Внесена MX запись на стороне DNS | _______ |
| 2. Настроен SPF на стороне почтового сервера и на стороне DNS | _______ |
| 3. Настроен DKIM на стороне почтового сервера и на стороне DNS | _______ |
| 4. Настроен DMARC на стороне почтового сервера и на стороне DNS | _______|
| 5. Настроен обмен сообщениями по TLS с другими серверами | _______ |
| 6. Получен и настроен сертификат домена от центра сертификации | _______|
Рекомендуется использовать TLS и избегать STARTTLS. Анекдот про то, как выбирается протокол шифрования в STARTTLS:
```
```
А: Давай по SSL 2.0.
А: Давай по SSL 2.0.
Б: Могу только по SSL 3.0.
Б: Могу только по SSL 3.0.
@ -108,12 +278,11 @@ AGENTS = service names ∈ /etc/postfix/master.cf
А: Договорились
А: Договорились
```
```
Возможные структуры почтовой системы:
# Dovecot
- Postfix, Dovecot имеют доступ к списку пользователей и работают параллельно, разделяя доступ к почтовым ящикам пользователей.
- Dovecot является «бэкендом» для доступа к почтовым ящикам пользователей. При этом подходе, расположение почтовых ящиков, список пользователей, известен только Dovecot.
Для безопасного подключения клиентов к своим почтовым ящикам по сети требуется сервер, который обеспечивает авторизацию пользователя, установку безопасного соединения. Как администратор вы можете организовать подключение по `ssh`, но это очень не удобно, особенно с мобильных устройств. Удобнее использовать графический почтовый клиент общающийся по протоколу POP3 или IMAP. Одной из широко распространённых открытых реализаций является сервера для общения с почтовыми клиентами является Dovecot.
Настройте доступ к веб-интерфейсу с помощью прокси сервера. Прокси-машина должна иметь два сетевых интерфейса, каждый в своей vlan: 499 и X. Первая vlan позволяет подключиться к прокси из сети интернет, вторая позволяет обмениваться данными между прокси и новым кластером Proxmox.
Настройте доступ к веб-интерфейсу с помощью прокси сервера.
### Вариант прокси 1 для доступа по адресу https://studX.myoffice.ru/proxmox/
@ -16,33 +16,42 @@ Docker это самый известный инструмент, который
## Основные механизмы работы Docker
## Основные механизмы работы Docker
Как вы уже знаете, в контейнерном механизме используется несколько средств ядра, которые необходимых для изоляции процессов приложений.
### 1. Функции ядра
### 1. Функции ядра
#### 1.1. Пространства имён
В контейнеризации используется несколько технологий ядра Linux, необходимых для обеспечения изоляции и управления контейнерами.
Пространства имён изолируют контейнерные процессы с точки зрения нескольких функций операционной системы, включая монтирование файловой системы, управление процессами и сетевое взаимодействие.
#### 1.1. Пространства имён (Namespaces)
Например, пространство имён команды `mount` отображает процессы с помощью индивидуального представления иерархии файловой системы. Это аналогично системному вызову `chroot`, который необратимо устанавливает видимый процессу корневой каталог и тем самым отключает доступ к файлам и каталогам хоста, расположенным выше уровня `chroot`.
Namespaces - технология ядра Linux, разработанная в достаточно далёком 2002 году. Docker использует namespaces, такие как PID (Process ID), Network и Mount, для создания изолированных пространств имён. Пространства имён изолируют контейнерные процессы с точки зрения нескольких функций операционной системы, включая монтирование файловой системы, управление процессами и сетевое взаимодействие.
Например, с использованием PID namespaces каждый контейнер видит только свои процессы, что обеспечивает изоляцию процессов между контейнерами. Пространство имён команды `mount` отображает процессы с помощью индивидуального представления иерархии файловой системы. Это аналогично системному вызову `chroot`, который необратимо устанавливает видимый процессу корневой каталог и тем самым отключает доступ к файлам и каталогам хоста, расположенным выше уровня `chroot`.
Контейнеры могут работать на разных уровнях интеграции с операционной системой хоста в зависимости от того, как эти пространства имён были настроены.
Контейнеры могут работать на разных уровнях интеграции с операционной системой хоста в зависимости от того, как эти пространства имён были настроены.
#### 1.2. Контрольные группы
#### 1.2. Контрольные группы (Cgroups)
Cgroups (Control Groups) - технология, разработанная внутри компании Google еще в 2006 году. Контрольные группы ограничивают использование системных ресурсов и определяют приоритетность одних процессов над другими. Контрольные группы препятствуют процессам контейнеров, выходящим из под контроля, использовать всю память и всё доступное время процессора. Это позволяет предотвратить «голодание» ресурсов и обеспечить справедливое распределение мощностей между контейнерами.
Контрольные группы ограничивают использование системных ресурсов и определяют приоритетность одних процессов над другими. Контрольные группы препятствуют процессам контейнеров, выходящим из под контроля, использовать вс. память и всё доступное время процессора.
#### 1.3. Слоистые файловые системы (Union File Systems)
#### 1.3. Функциональные возможности
Docker использует «слоистые» файловые системы, такие как AUFS, OverlayFS и Overlay2, чтобы создавать легковесные и эффективные образы контейнеров. Это возможно благодаря тому, что они разделяют общие файлы между собой, экономя дисковое пространство.
#### 1.4. Функциональные возможности (Capabilities)
Функциональные возможности позволяют процессам выполнять определённые чувствительные операции с ядром и системные вызовы. Например, процесс может иметь возможность изменять права собственности на файл или устанавливать системное время.
Функциональные возможности позволяют процессам выполнять определённые чувствительные операции с ядром и системные вызовы. Например, процесс может иметь возможность изменять права собственности на файл или устанавливать системное время.
#### 1.4. Режим защищённых вычислений
Ядро Linux предоставляет разные возможности (capabilities) для выполнения привилегированных действий. Docker позволяет настраивать набор возможностей, доступных контейнеру, для более тонкой настройки безопасности.
#### 1.5. Режим защищённых вычислений (Seccomp)
Для повышения безопасности Docker может использовать Seccomp. Он ограничивает доступ контейнера к системным вызовам, что позволяет уменьшить поверхность атаки и предотвратить выполнение опасных операций. Он обеспечивает более детальный контроль, чем функциональные возможности.
Режим защищённых вычислений ограничивает доступ к защищённым вызовам. Он обеспечивает более детальный контроль, чем функциональные возможности.
### 2. Сеть
### 2. Сеть
Для обеспечение работы по сети используются такие технологии как:
Для обеспечения работы по сети используются такие технологии как:
- встроенные в ядро программные L2 свичи `Linux Bridges`,
- встроенные в ядро программные L2 свичи `Linux Bridges`,
- механизмы сетевого экрана `netfilter` NAT (преобразование сетевых адресов) и Port Forwarding (проброс портов),
- механизмы сетевого экрана `netfilter` NAT (преобразование сетевых адресов) и Port Forwarding (проброс портов),
- опционально правила SELinux/AppArmor.
- опционально правила SELinux/AppArmor.
@ -67,7 +76,7 @@ Docker это самый известный инструмент, который
Docker Hub - это общедоступная служба реестра, поддерживаемая компанией Docker, Inc. В ней содержатся образы многих дистрибутивов, которые вы можете взять в качестве основы для своего образа, и проектов с открытым исходным кодом.
Docker Hub - это общедоступная служба реестра, поддерживаемая компанией Docker, Inc. В ней содержатся образы многих дистрибутивов, которые вы можете взять в качестве основы для своего образа, и проектов с открытым исходным кодом.
В вашей компании вы можете поднять собственный реестр на основе одного из общедоступных образов реестров. При выборе образа реестра для производственной среды нужно учесть ряд требований к хранилищу данных, к аутентификации и авторизации, и к требованиям выдвигаемым другими задача обслуживания.
В вашей компании вы можете поднять собственный реестр на основе одной из общедоступных реализаций реестров, в том числе поставляемых в виде докер образа. При выборе образа реестра для производственной среды нужно учесть ряд требований к хранилищу данных, к аутентификации и авторизации, и к требованиям выдвигаемым другими задачам обслуживания.
### 5. Механизмы обеспечения персистентности в Docker
### 5. Механизмы обеспечения персистентности в Docker
@ -79,11 +88,11 @@ Docker реализует три механизма обеспечения по
Docker также поддерживает возможность монтирования локальной директории в контейнер.
Docker также поддерживает возможность монтирования локальной директории в контейнер.
Все эти возможности, кроме обеспечения персистентности при хранении данных, также обеспечивают более высокую производительность при записи в файловую \
Все эти возможности, кроме обеспечения персистентности при хранении данных, также обеспечивают более высокую производительность при записи в файловую систему контейнера, по сравнению с верхним слоем `UnionFS`, доступным на запись и чтение.
систему контейнера, по сравнению с верхним слоем `UnionFS`, доступным на запись и чтение.
## Релевантные источники
## Релевантные источники
- Nemeth E. et al. UNIX and Linux system administration handbook. Chapter 25.
- Nemeth E. et al. UNIX and Linux system administration handbook. Chapter 25.
Web интерфейс созданного в задании Proxmox доступен по адресу https://proxmox.studX.startmyoffice.space.
Web интерфейс созданного в задании Proxmox доступен по адресу https://studX.myoffice.ru/proxmox/.
## 2. nginx_ha
## 2. nginx_ha
Cайт доступен по адресу https://nginx-ha.studX.startmyoffice.space. При остановке активной машины должен обслуживаться резервным сервером.
Cайты доступены по адресу https://studX.myoffice.ru/ha/1/ и https://studX.myoffice.ru/ha/2/. При остановке активной машины должен обслуживаться резервным сервером.
## 3. docker
## 3. docker
Cайт скартой еды в Сан-Франциско доступен по адресу https://foodtrucks.studX.startmyoffice.space.
Cайт сдемонстрацией развёрнутого в docker приложения доступен по адресу https://studX.myoffice.ru/docker/.
## 4. postfix + dovecot
## 4. postfix + dovecot
Из почтового клиента можно отправить почту с почтового ящика stud@studX.myoffice.ru и прочитать входящие сообщения.
Из почтового клиента можно отправить почту с почтового ящика stud@studX.myoffice.ru и прочитать входящие сообщения.