Почтовый сервер OpenBSD, использующий OpenSMTPD, Dovecot, Rspamd и RainLoop

Вступление

В этом руководстве демонстрируется полнофункциональный сервер электронной почты, работающий на OpenBSD с использованием OpenSMTPD, Dovecot, Rspamd и RainLoop. OpenSMTPD является почтовым сервером по умолчанию для OpenBSD. Выберите экземпляр Vultr Compute Cloud с достаточным объемом памяти для ожидаемого числа пользователей.

Предварительные шаги

Настройте свою учетную запись пользователя для выполнения задач от имени пользователя root.

su -
usermod -G wheel <username>
echo "permit nopass keepenv :wheel" > /etc/doas.conf
exit

Настройте репозиторий пакетов для OpenBSD.

doas su
echo "https://cdn.openbsd.org/pub/OpenBSD" > /etc/installurl
exit

Добавьте необходимые пакеты.

doas pkg_add opensmtpd-extras opensmtpd-filter-rspamd dovecot dovecot-pigeonhole rspamd redis

Настроить OpenSMTPD

По умолчанию OpenSMTPD прослушивает только локальный хост. Он должен быть явно настроен для прослушивания на внешних интерфейсах. Он должен быть настроен на использование виртуальных пользователей вместо системных пользователей для обеспечения безопасности.

Сделайте резервную копию /etc/smtpd.confфайла по умолчанию и создайте новый с нуля.

cd /etc/mail
mv smtpd.conf smtpd.conf.default

Создайте новый, smtpd.confкак показано ниже. Замените example.comна свой домен. Эта начальная конфигурация не активирует фильтр rspamd во время тестирования OpenSMTP. Спам-фильтр будет активирован позже.

pki "mail" cert "/etc/ssl/mail.crt"
pki "mail" key "/etc/ssl/private/mail.key"

table aliases file:/etc/mail/aliases
table credentials passwd:/etc/mail/credentials
table virtuals file:/etc/mail/virtuals

filter "rspamd" proc-exec "/usr/local/libexec/smtpd/filter-rspamd"

# To accept external mail, replace with: listen on all

# listen on all tls pki "mail" hostname "mail.example.com"
listen on egress port submission tls-require pki "mail" hostname "mail.example.com" \
  auth <credentials>

action "local_mail" mbox alias <aliases>
action "domain_mail" maildir "/var/vmail/example.com/%{dest.user}" \
  virtual <virtuals>
action "outbound" relay

# Uncomment the following to accept external mail for domain "example.org"

# match from any for domain "example.com" action "domain_mail"
match from local for local action "local_mail"

match from local for any action "outbound"
match auth from any for any action "outbound"

Создайте файл / etc / credentials

OpenSMTPD и Dovecot могут совместно использовать базу данных аутентификации. Эта база данных напоминает файл системных паролей в формате с двумя дополнительными полями для Dovecot. Два специальных поля определяют виртуальный домашний каталог и местоположение почты. Пароли в формате Blowfish. Этот учебник создает три примера пользователей.

Сгенерируйте пароли и объедините их в /etc/mail/credentialsфайл.

doas su
smtpctl encrypt example_password1 >> /etc/mail/credentials
smtpctl encrypt example_password2 >> /etc/mail/credentials
smtpctl encrypt example_password3 >> /etc/mail/credentials
exit

Вывод выглядит примерно так:

$2b$10$agmNBPvFm1zqCjbbZC3JbO4Ns2jJNZQfTS45MAnKi.IPrkKITyTa6
$2b$10$LwkcKVVnwG8hDxu2W4YKD.K0kQ2oylOmQ9SBUb0hIopBsmNxYPb4e
$2b$10$bgLW/GMZyRXKbROgRQIvRu4xbeOqOJJXlgEAKuS5sIrBvfdPvEzeq

Изменить, /etc/mail/credentialsчтобы добавить обязательные поля. Каждая строка отображается на системную учетную запись vmail с UID и GID 2000 . Замените example.com вашим доменом. Имя виртуального пользователя - это полный адрес электронной почты.

[email protected]:$2b$10$agmNBPvFm1zqCjbbZC3JbO4Ns2jJNZQfTS45MAnKi.IPrkKITyTa6:vmail:2000:2000:/var/vmail/example.com/john::userdb_mail=maildir:/var/vmail/example.com/john
[email protected]:$2b$10$LwkcKVVnwG8hDxu2W4YKD.K0kQ2oylOmQ9SBUb0hIopBsmNxYPb4e:vmail:2000:2000:/var/vmail/example.com/adam::userdb_mail=maildir:/var/vmail/example.com/adam
[email protected]:$2b$10$bgLW/GMZyRXKbROgRQIvRu4xbeOqOJJXlgEAKuS5sIrBvfdPvEzeq:vmail:2000:2000:/var/vmail/example.com/natalie::userdb_mail=maildir:/var/vmail/example.com/natalie

Создать учетную запись виртуальной почты и установить безопасность

  • Установка /etc/mail/credentialsразрешений на чтение только для _smtpdи _dovecotпользователей системы.
  • Создайте vmailсистемного пользователя, группу и домашний каталог.

    • При создании пользователя системы VMail, вы получите следующее предупреждение: useradd: Warning: home directory '/var/vmail' doesn't exist, and -m was not specified. Это ожидается. Это позволяет избежать загромождения каталога точечными файлами из /etc/skel. Они не требуются, потому что учетная запись vmail не позволяет войти в систему.

      doas chmod 0440 / etc / mail / credentials doas chown smtpd: dovecot / etc / mail / credentials doas useradd -c "Учетная запись виртуальной почты" -d / var / vmail -s / sbin nologin -u 2000 -g = uid -L персонал vmail doas mkdir / var / vmail doas chown vmail: vmail / var / vmail

Создать виртуальное сопоставление пользователей

Создать, /etc/mail/virtualsчтобы определить действительные адреса электронной почты.

Создание открытых / закрытых ключей для OpenSMTPD

В этом примере используется самозаверяющий сертификат. Используйте действующий подписанный сертификат, если он у вас есть. При запросе общего имени убедитесь, что оно соответствует полному доменному имени сервера. В этом примере используется mail.example.com.

doas su
cd /etc/ssl
openssl genrsa -out private/mail.key 4096
openssl req -x509 -new -nodes -key private/mail.key -out mail.crt -days 3650 -sha256
chmod 0400 /etc/ssl/private/mail.key
exit

Проверьте сервер

Используйте проверку синтаксиса конфигурации OpenSMTPD. Если проблем не обнаружено, перезапустите демон smtpd.

doas smtpd -n
doas rcctl restart smtpd

С внешней почтовой учетной записи отправьте пробное электронное письмо одному из пользователей.

  • OpenSMTPD создаст структуру папок maildir ниже /var/vmailи доставит почту /var/vmail/example.com/<username>/new.
  • Как пользователь корня, перейдите в это место и verifiy у вас есть файл с именем похож на это: 1576339842.4d64757b.example.com:2,.
  • Просмотрите содержимое файла, включая все заголовки почты, чтобы убедиться, что доставка электронной почты работает правильно.

    Return-Path: <n0244e80da3-54b1ed125c5342fc-adam===example.org@bounce.example.org>
    Delivered-To: [email protected]
    Received: from spruce-goose-ba.twitter.com (spruce-goose-ba.twitter.com [199.59.150.96])
        by mail.example.com (OpenSMTPD) with ESMTPS id 75b514d3 (TLSv1.2:ECDHE-RSA-AES256-GCM-    SHA384:256:NO)
        for <[email protected]>;
        Sat, 14 Dec 2019 11:10:40 -0500 (EST)
    DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=twitter.com;
        s=dkim-201406; t=1576339839;
        bh=jhKB5/w9v87GaXSuizT576ntJ/72gvLRDhsqmGQQrCE=;
        h=Date:From:To:Subject:MIME-Version:Content-Type:List-Unsubscribe:
        Message-ID;
        b=TWn/QVUJ1VDlWiweWoanwHLABCL1nqmm0+TBzh3PjmYNm0quRMXB7QL2ykzHGME5A
        DTz/JFHa0cOvQsrdhxxbjOLFKimK0nF+Ou5kI+2HzTzfVNZS0qGnTVP/tZyaIsWjjl
        an5EiR6HFOHG4iClOOEOJW4oLDEZfPTefrlW+378bmHGIRUNDvVKrbXKunL9fJFAb3
        JSrhWQNwbrF/aARFzw4nKfb1I7vTRSrN1eXE5JxzGwI2XAjqDIWdR5ExwUNbJH5ZPs
        wQ85j8KLZEEgQkbH9CypgeUMJWsVK95FqOCCaqKMS10M7intGMb3aeiiFcB7yDHi9t
        u7rVESm4eGp/g==
    X-MSFBL: DM7pSZns+YDRgNEmGNre9aPjZTtc1tDlN97w5rQDBts=|eyJ1IjoibWF0dEBnb2J
        sYWNrY2F0LmNvbUBpaWQjIzU0YjFlZDEyNWM1MzQyZmNiNThiMzVmNzI0NDZlMGF
        mQHVzYiMjNkAyNDRAMTA4MjgwNTAxMDYzNzk1MDk3NkAwQDA4MjY5ZWI4OTI3YzR
        kNTFiNTZkMjY3YzY2OGRmN2IwY2Y4M2ExZGIiLCJyIjoibWF0dEBnb2JsYWNrY2F
        0LmNvbSIsImciOiJCdWxrIiwiYiI6InNtZjEtYmd4LTM0LXNyMS1CdWxrLjE4NiJ
        9
    Date: Sat, 14 Dec 2019 16:10:39 +0000
    ...
    

Настройте Dovecot IMAP

Установите класс входа

Dovecot требует, чтобы у файлов было больше открытого для чтения и записи, чем позволяет класс по умолчанию. Невыполнение этого приведет к ошибкам, которые трудно устранить.

Определите класс входа в систему для демона Dovecot. Внизу /etc/login.confдобавьте следующие строки.

    dovecot:\
        :openfiles-cur=1024:\
        :openfiles-max=2048:\
        :tc=daemon:    

Создайте файл конфигурации Dovecot

Создать /etc/dovecot/local.conf.

auth_mechanisms = plain
first_valid_uid = 2000
first_valid_gid = 2000
mail_location = maildir:/var/vmail/%d/%n
mail_plugin_dir = /usr/local/lib/dovecot
managesieve_notify_capability = mailto
managesieve_sieve_capability = fileinto reject envelope encoded-character vacation subaddress comparator-i;ascii-numeric relational regex  imap4flags copy include variables body enotify environment mailbox date index ihave duplicate mime foreverypart extracttext imapsieve vnd.dovecot.imapsieve
mbox_write_locks = fcntl
mmap_disable = yes
namespace inbox {
  inbox = yes
  location =
  mailbox Archive {
  auto = subscribe
  special_use = \Archive
  }
  mailbox Drafts {
  auto = subscribe
  special_use = \Drafts
  }
  mailbox Junk {
  auto = subscribe
  special_use = \Junk
  }
  mailbox Sent {
  auto = subscribe
  special_use = \Sent
  }
  mailbox Trash {
  auto = subscribe
  special_use = \Trash
  }
  prefix =
}
passdb {
  args = scheme=CRYPT username_format=%u /etc/mail/credentials
  driver = passwd-file
  name =
}
plugin {
  imapsieve_mailbox1_before = file:/usr/local/lib/dovecot/sieve/report-spam.sieve
  imapsieve_mailbox1_causes = COPY
  imapsieve_mailbox1_name = Junk
  imapsieve_mailbox2_before = file:/usr/local/lib/dovecot/sieve/report-ham.sieve
  imapsieve_mailbox2_causes = COPY
  imapsieve_mailbox2_from = Junk
  imapsieve_mailbox2_name = *
  sieve = file:~/sieve;active=~/.dovecot.sieve
  sieve_global_extensions = +vnd.dovecot.pipe +vnd.dovecot.environment
  sieve_pipe_bin_dir = /usr/local/lib/dovecot/sieve
  sieve_plugins = sieve_imapsieve sieve_extprograms
}
protocols = imap sieve
service imap-login {
  inet_listener imaps {
  port = 0
  }
}
service managesieve-login {
  inet_listener sieve {
  port = 4190
  }
  inet_listener sieve_deprecated {
  port = 2000
  }
}
ssl_cert = </etc/ssl/mail.crt
ssl_key = </etc/ssl/private/mail.key
userdb {
  args = username_format=%u /etc/mail/credentials
  driver = passwd-file
  name =
}
protocol imap {
  mail_plugins = " imap_sieve"
}

Dovecot Bug Fix

Существует ошибка в Dovecot , где ssl_certи ssl_keyнастройки не получить переопределены в local.confфайле , так что мы должны комментировать их. Если вы пропустите этот шаг, Dovecot не сможет запуститься правильно.

Отредактируйте, /etc/dovecot/conf.d/10-ssl.confкак показано.

...
# PEM encoded X.509 SSL/TLS certificate and private key. They're opened before
# dropping root privileges, so keep the key file unreadable by anyone but
# root. Included doc/mkcert.sh can be used to easily generate self-signed
# certificate, just make sure to update the domains in dovecot-openssl.cnf
#ssl_cert = </etc/ssl/dovecotcert.pem
#ssl_key = </etc/ssl/private/dovecot.pem
...

Создайте скриптовые сита

Сито сценарии поезд Rspamd на спам и окорок . Перемещение электронной почты в папку нежелательной почты и из нее запускает событие для обучения Rspamd.

Эти файлы расположены по адресу /usr/local/lib/dovecot/sieve.

Создайте report-ham.sieveфайл.

require ["vnd.dovecot.pipe", "copy", "imapsieve", "environment", "variables"];

if environment :matches "imap.mailbox" "*" {
  set "mailbox" "${1}";
}

if string "${mailbox}" "Trash" {
  stop;
}

if environment :matches "imap.user" "*" {
  set "username" "${1}";
}

pipe :copy "sa-learn-ham.sh" [ "${username}" ];

Создайте report-spam.sieveфайл.

require ["vnd.dovecot.pipe", "copy", "imapsieve", "environment", "variables"];

if environment :matches "imap.user" "*" {
  set "username" "${1}";
}

pipe :copy "sa-learn-spam.sh" [ "${username}" ];

Скомпилируйте файлы.

sievec report-ham.sieve
sievec report-spam.sieve 

Создайте следующие два сценария оболочки в /usr/local/lib/dovecot/sieve

Добавьте следующее к sa-learn-ham.sh

#!/bin/sh
exec /usr/local/bin/rspamc -d "${1}" learn_ham

Добавьте следующее к sa-learn-spam.sh

#!/bin/sh
exec /usr/local/bin/rspamc -d "${1}" learn_spam

Сделайте файлы исполняемыми.

chmod 0755 sa-learn-ham.sh
chmod 0755 sa-learn-spam.sh

Включите и запустите Dovecot.

rcctl enable dovecot
rcctl start dovecot

Убедитесь, что Dovecot запущен правильно.

ps ax | grep dovecot

88005 ??  I        0:00.11 /usr/local/sbin/dovecot
69640 ??  I        0:00.03 dovecot/anvil
91207 ??  I        0:00.03 dovecot/log
98178 ??  I        0:00.19 dovecot/config
34712 ??  I        0:00.06 dovecot/stats
96674 ??  I        0:00.03 dovecot/imap-login
 8891 ??  S        0:00.02 dovecot/imap

Убедитесь, что Dovecot может правильно читать /etc/mail/credentials

doveadm user [email protected]

field    value
uid      2000
gid      2000
home /var/vmail/example.com/john
mail maildir:/var/vmail/example.com/john

Убедитесь, что пользователь почты может войти в систему.

doveadm auth login [email protected]

Password: ********
passdb: [email protected] auth succeeded
extra fields:
  [email protected]

userdb extra fields:
  [email protected]
  mail=maildir:/var/vmail/example.com/john
  uid=2000
  gid=2000
  home=/var/vmail/example.com/john
  auth_mech=PLAIN

Настроить Rspamd

Это базовая конфигурация Rspamd, более подробную информацию смотрите в официальной документации. В этом примере создается определение для нашего домена для включения подписи DKIM.

Создайте пару открытых / закрытых ключей /etc/mail/dkimи установите правильные разрешения.

doas su
mkdir /etc/mail/dkim
cd /etc/mail/dkim
openssl genrsa -out private.key 1024
openssl rsa -in private.key -pubout -out public.key
chmod 0440 private.key
chown root:_rspamd private.key

Создайте запись DNS для DKIM, содержащую открытый ключ. Обратитесь к вашему DNS-провайдеру за подробной информацией о том, как создать запись DKIM. Скопируйте содержимое /etc/mail/dkim/public.keyи вставьте его после p=части записи DKIM, как показано ниже. Обратите внимание, что в этом примере также создается запись SPF.

default._domainkey.example.com. IN TXT "v=DKIM1;k=rsa;p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQClcuK3FV3Ug64li8iFsuJ2ykgb7FMZsujk9uG79ppPUp57vCfjzO7F+HBfx5qIwvlGxv2IJXK86FZwhpUX+HFCDUtfB2z0ZNGerWcZfNzM1w1Bru/fdMd2tCYkiHEa5RWIkLfs/Fm+neXxRZfAG2UDWmAghNbgzYv7xViwgufDIQIDAQAB"
example.com. IN TXT "v=spf1 a ip4:192.0.2.1 mx ~all"

Создайте запись DMARC.

_dmarc.example.com. IN TXT "v=DMARC1;p=none;pct=100;rua=mailto:[email protected]"

Создайте /etc/rspamd/local.d/dkim_signing.confфайл конфигурации.

  • selector="default";Линия получена из первой части записи DKIM DNS ( default._domainkey....) , созданной выше.

    domain {
        example.com {
            path = "/etc/mail/dkim/example.com.key";
            selector = "default";
        }
    }
    

Включите и запустите Rspamd.

doas rcctl enable redis rspamd
doas rcctl start redis rspamd

Измените строки ниже /etc/mail/smtpd.confи перезапустите OpenSMTPD, чтобы включить Rspamd.

...
listen on all tls pki "mail" hostname "mail.example.com" filter "rspamd"
listen on egress port submission tls-require pki "mail" hostname "mail.example.com" \
  auth <credentials> filter "rspamd"
...
rcctl restart smtpd

Протестируйте почтовый сервер с почтовым клиентом POP3 или IMAP. Если вам не нужна веб-почта, остановитесь здесь.

(Необязательно) Настройка RainLoop Webmail

Установите необходимые пакеты

При появлении запроса выберите самую последнюю версию PHP.

pkg_add php php-curl php-pdo_sqlite php-zip pecl73-mcrypt zip unzip wget curl

Получите архив электронной почты RainLoop и распакуйте его в /var/www/htdocs/.

Используйте Standard Edition, которая включает в себя автоматическое обновление.

cd /tmp
wget https://www.rainloop.net/repository/webmail/rainloop-latest.zip
unzip rainloop-latest.zip -d /var/www/htdocs/rainloop
chown -R www:www /var/www/htdocs

Создать SSL-сертификат Let's Encrypt

  • Копировать /etc/examples/acme-client.confв/etc
  • Добавьте следующие строки внизу файла:

    domain webmail.example.com {
    domain key "/etc/ssl/private/webmail.example.com.key"
    domain full chain certificate "/etc/ssl/webmail.example.com.crt"
    sign with letsencrypt
    }
    

Настройте httpd

  • Создайте запись DNS (запись CNAME или A) для субдомена webmail.example.com
  • Отредактируйте, /etc/httpd.confследуя примеру ниже.

    prefork 3
    types { include "/usr/share/misc/mime.types" }
    
    server "default" {
        listen on egress port 80 
        root "/htdocs"
        directory index index.html
    
        location "/.well-known/acme-challenge/*" {
                root "/acme"
                request strip 2
        }
    }
    

Запустите проверку синтаксиса httpd.

httpd -n

Включите и запустите httpd.

rcctl enable httpd
rcctl start httpd

Запросите сертификат Let's Encrypt.

acme-client -v webmail.example.com

Добавьте определения сервера для RainLoop в /etc/httpd.conf

server "webmail.example.com" {
    listen on egress port 80
    block return 302 "https://$SERVER_NAME$REQUEST_URI"
}

server "webmail.example.com" {
    listen on egress tls port 443
    root "/htdocs/rainloop"
    directory index "index.php"

    tcp { nodelay, backlog 10 }

    tls {
            certificate "/etc/ssl/webmail.example.com.crt"
            key "/etc/ssl/private/webmail.example.com.key"
    }

    hsts {
            max-age 31556952
            preload
    }

    # Value below is 25MB in bytes. 1MB = 1048576 bytes
    connection max request body 26214400

    location "/data*" {
            block return 403
    }

    location "*.php*" {
            fastcgi socket "/run/php-fpm.sock"
    }
}

Настройте PHP, чтобы разрешить вложения размером до 25 мегабайт. Внесите следующие изменения в /etc/php-7.3.ini:

; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
upload_max_filesize = 25M
...
; Maximum size of POST data that PHP will accept.
; Its value may be 0 to disable the limit. It is ignored if POST data reading
; is disabled through enable_post_data_reading.
; http://php.net/post-max-size
post_max_size = 29M

Включите необходимые модули PHP, скопировав их файлы конфигурации в /etc/php-7.3/

cp /etc/php-7.3.sample/* /etc/php-7.3/.

Проверьте синтаксис /etc/httpd.conf

httpd -n

Включите и запустите httpd и php-fpm.

rcctl reload httpd
rcctl enable php73_fpm
rcctl start php73_fpm

Финальный тест

Перейдите к https://webmail.example.com/?admin.

Имя пользователя по умолчанию: admin
Пароль по умолчанию: 12345 .

Перейдите к каждому из разделов конфигурации и внесите необходимые изменения. Когда вы закончите настройку, войдите в веб-почту по адресуhttps://webmail.example.com



Leave a Comment

Изучение 26 методов анализа больших данных: часть 1

Изучение 26 методов анализа больших данных: часть 1

Изучение 26 методов анализа больших данных: часть 1

6 невероятных фактов о Nintendo Switch

6 невероятных фактов о Nintendo Switch

Многие из вас знают Switch, который выйдет в марте 2017 года, и его новые функции. Для тех, кто не знает, мы подготовили список функций, которые делают «Switch» обязательным гаджетом.

Технические обещания, которые все еще не выполнены

Технические обещания, которые все еще не выполнены

Вы ждете, когда технологические гиганты выполнят свои обещания? проверить, что осталось недоставленным.

Функциональные возможности уровней эталонной архитектуры больших данных

Функциональные возможности уровней эталонной архитектуры больших данных

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

Как ИИ может вывести автоматизацию процессов на новый уровень?

Как ИИ может вывести автоматизацию процессов на новый уровень?

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

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

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

CAPTCHA стало довольно сложно решать пользователям за последние несколько лет. Сможет ли он оставаться эффективным в обнаружении спама и ботов в ближайшем будущем?

Технологическая сингулярность: далекое будущее человеческой цивилизации?

Технологическая сингулярность: далекое будущее человеческой цивилизации?

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

Телемедицина и удаленное здравоохранение: будущее уже здесь

Телемедицина и удаленное здравоохранение: будущее уже здесь

Что такое телемедицина, дистанционное здравоохранение и их влияние на будущее поколение? Это хорошее место или нет в ситуации пандемии? Прочтите блог, чтобы узнать мнение!

Вы когда-нибудь задумывались, как хакеры зарабатывают деньги?

Вы когда-нибудь задумывались, как хакеры зарабатывают деньги?

Возможно, вы слышали, что хакеры зарабатывают много денег, но задумывались ли вы когда-нибудь о том, как они зарабатывают такие деньги? Давайте обсудим.

Обновление дополнения к macOS Catalina 10.15.4 вызывает больше проблем, чем решает

Обновление дополнения к macOS Catalina 10.15.4 вызывает больше проблем, чем решает

Недавно Apple выпустила macOS Catalina 10.15.4, дополнительное обновление для исправления проблем, но похоже, что это обновление вызывает больше проблем, приводящих к поломке компьютеров Mac. Прочтите эту статью, чтобы узнать больше