# Получение почты по IMAP с самоподписанными сертификатами
# Симптомы

При попытке подключиться к IMAP серверу наблюдаются ошибки:

```txt
ERROR 2025-05-06 18:08:15,541 collect_imap_emails 533 140523956472704 Couldn't find host for EMAIL channel (UID) NAME, reason: [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:1017)
```

# Решение

:::danger
**ВНИМАНИЕ**, Решение применимо начиная с версии Swarmica [v4.6.x](https://support.swarmica.com/article/ru/603-obnovlenie-v46x.html)
:::

Для самоподписанных (self-signed) сертификатов подключите корневые сертификаты, использованные при генерации этих сертификатов:

1.  Примонтируйте папку с сертификатами и ключами в `/etc/ssl` контейнера `cron`,  добавив строчку в `volumes` в` docker-compose.yml`:
    ```bash
      cron:
        <<: *django
        restart: always
        depends_on:
          - postgres
          - redis
        command: /start-cron
        volumes:
          - /path/to/ssl/folder/custom-certs.crt:/etc/ssl/custom-certs.crt:ro
          - ./.env:/etc/environment:ro
          - swarmica_ai_assistant:/swarmica/swarmica/ai_assistant/articles/:z
          - swarmica_cron_d:/etc/cron.d/:z
          - swarmica_ugc:/swarmica/swarmica/attachments:z
          - swarmica_runtime:/swarmica/swarmica/runtime_scripts/:z
        labels:
          - "traefik.enable=false"
    ```
2.  Аналогично сделайте для `django` контейнера:
    ```bash
      django: &django
        image: reg.gl.swd.im/swarmica/backend:${SW_BACKEND_VERSION}
        depends_on:
          - postgres
          - redis
        volumes:
          - /path/to/ssl/folder/custom-certs.crt:/etc/ssl/custom-certs.crt:ro
          - swarmica_ai_assistant:/swarmica/swarmica/ai_assistant/articles/:z
          - swarmica_static:/swarmica/swarmica/static:z
    ...
    ```
3.  В `/root/swarmica/.env `добавьте строчки:
    ```bash
    IMAP_SSL_CUSTOM_CONTEXT=true
    IMAP_SSL_CUSTOM_LOCATIONS="/etc/ssl/custom-certs.crt"
    ```
4.  Перезагрузите Swarmica:
    ```bash
    docker compose down && docker compose up -d
    ```

Если необходимо так же включить менее защищенные шифры, необходимо сделать следующее:

1.  Добавить в `.env` строчку:
    ```bash
    IMAP_SSL_CUSTOM_CIFERS=DEFAULT
    ```
2.  Перезагрузить Swarmica:
    ```bash
    docker compose down && docker compose up -d
    ```

# Причина

1.  Сервер IMAP использует самоподписанный (self-signed) сертификат
2.  Используется устаревший набор шифров (RSA) на сервере, которые отключены в Python 3.10 из соображений безопасности