Перейти к содержанию

Подготовка системы

Перед запуском animails необходимо проверить выполнение нескольких требований:

Внимание

Не пытайтесь установить animails на устройства Synology/QNAP (любые NAS), OpenVZ, LXC или другие контейнерные платформы. Поддерживаются KVM, ESX, Hyper-V и другие платформы полной виртуализации.

Информация

  • animails требует, чтобы определенные порты были открыты для входящих соединений, поэтому убедитесь, что ваш брандмауэр их не блокирует.
  • Убедитесь, что никакие другие приложения не мешают работе animails, например, другие почтовые службы.
  • Правильная настройка DNS имеет решающее значение для любой корректной работы почтового сервера, поэтому, пожалуйста, убедитесь, что вы выполнили хотя бы базовые настройки, прежде чем начинать!
  • Убедитесь, что в вашей системе установлены правильные дата и время. Это критически важно для различных компонентов, таких как двухфакторная аутентификация TOTP.

Минимальные системные ресурсы

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

Ресурс Минимальное требование
Процессор 1 ГГц
ОЗУ (RAM) Минимум 6 ГиБ + 1 ГиБ swap (стандартная конф.)
Диск 20 ГиБ (без учета писем)
Архитектура x86_64, ARM64

Не поддерживается

OpenVZ, Virtuozzo и LXC

ClamAV и Flatcurve (движок FTS) могут потреблять много оперативной памяти. Вы можете отключить их в animails.conf, установив параметры SKIP_CLAMD=y и SKIP_FTS=y.

Информация

Мы знаем, что чистый MTA может работать на 128 МиБ ОЗУ. animails — это полноценная и готовая к использованию групповая почтовая система со множеством дополнений, упрощающих жизнь. animails поставляется с веб-сервером, веб-интерфейсом почты, ActiveSync (MS), антивирусом, антиспамом, индексацией, сканером документов (Oletools), SQL (MariaDB), кэшем (Redis), MDA, MTA, различными веб-службами и т. д.

Один воркер SOGo может занять ~350 МиБ ОЗУ до очистки. Чем больше соединений ActiveSync вы планируете использовать, тем больше оперативной памяти вам потребуется. В конфигурации по умолчанию запускается 20 воркеров.

Примеры использования ОЗУ

Компании с 15 телефонами (с включенным EAS) и примерно 50 одновременными IMAP-соединениями следует планировать 16 ГиБ ОЗУ.

6 ГиБ ОЗУ + 1 ГиБ swap достаточно для большинства частных инсталляций, в то время как 8 ГиБ ОЗУ рекомендуются для ~5–10 пользователей.

Мы можем помочь правильно спланировать вашу установку в рамках нашей поддержки.

Поддерживаемые ОС

Важно

animails использует Docker в качестве базового компонента. Из-за технических различий между платформами мы поддерживаем не все из них, даже если на них можно запустить Docker.

В следующей таблице приведены все операционные системы, официально поддерживаемые и протестированные нами (по состоянию на август 2025 г.):

ОС Совместимость
Alpine начиная с 3.19 ⚠️
Debian 11 - 131
Ubuntu 22.04 (и новее)
Alma Linux 8, 9
Rocky Linux 9

Условные обозначения

✅ = Работает сразу при использовании инструкций.
⚠️ = Требует некоторых ручных настроек, в остальном пригодна для использования.
❌ = В целом НЕ совместима.
❔ = В ожидании проверки.

Внимание

Примечание: Все остальные операционные системы (не указанные в списке) также могут работать, но официально не тестировались.

Брандмауэр и порты

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

ss -tlpn | grep -E -w '25|80|110|143|443|465|587|993|995|4190'
# или:
netstat -tulpn | grep -E -w '25|80|110|143|443|465|587|993|995|4190'

Опасно

Существует ряд проблем при запуске animails в системе с включенным firewalld/ufw.
Вам следует отключить его (если возможно) и вместо этого перенести набор правил в цепочку DOCKER-USER, которая не очищается при перезапуске службы Docker.
Информацию об использовании iptables-persistent с цепочкой DOCKER-USER см. в руководствах здесь (blog.donnex.net) или здесь (unrouted.io).
Поскольку animails работает в контейнерах, правила INPUT не влияют на ограничение доступа к animails.
Вместо этого используйте цепочку FORWARD.

Если эта команда возвращает какие-либо результаты, удалите или остановите приложение, работающее на этом порту. Вы также можете настроить порты animails через файл конфигурации animails.conf.

Входящие порты

Если перед animails стоит брандмауэр, убедитесь, что эти порты открыты для входящих соединений:

Служба Протокол Порт Контейнер Переменная
Postfix SMTP TCP 25 postfix-animails ${SMTP_PORT}
Postfix SMTPS TCP 465 postfix-animails ${SMTPS_PORT}
Postfix Submission TCP 587 postfix-animails ${SUBMISSION_PORT}
Dovecot IMAP TCP 143 dovecot-animails ${IMAP_PORT}
Dovecot IMAPS TCP 993 dovecot-animails ${IMAPS_PORT}
Dovecot POP3 TCP 110 dovecot-animails ${POP_PORT}
Dovecot POP3S TCP 995 dovecot-animails ${POPS_PORT}
Dovecot ManageSieve TCP 4190 dovecot-animails ${SIEVE_PORT}
HTTP(S) TCP 80/443 nginx-animails ${HTTP_PORT} / ${HTTPS_PORT}

Чтобы привязать службу к конкретному IP-адресу, вы можете указать IP в качестве префикса: SMTP_PORT=1.2.3.4:25

Важно: Вы не можете использовать привязки IP:PORT для HTTP_PORT и HTTPS_PORT. Пожалуйста, используйте вместо этого HTTP_PORT=1234 и HTTP_BIND=1.2.3.4.

Исходящие порты/хосты

Для работы animails требуются некоторые исходящие соединения. Убедитесь, что animails может взаимодействовать со следующими хостами или портами:

Служба Протокол Порт Цель Причина
Clamd TCP 873 rsync.sanesecurity.net Загрузка сигнатур ClamAV (предустановлены в animails)
Dovecot TCP 443 spamassassin.heinlein-support.de Загрузка правил Spamassassin для обработки Rspamd, загружаемых через Dovecot
Процессы animails TCP 80/443 github.com Загрузка обновлений animails (на основе кода)
Процессы animails TCP 443 hub.docker.com Загрузка образов Docker (напрямую из Docker Hub)
Процессы animails TCP 443 asn-check.animails.email API-запрос для проверок BAD ASN (для бесплатных блок-листов Spamhaus)
Процессы animails TCP 80 ip4.animails.email & ip6.animails.email Получение публичного IP-адреса для отображения в интерфейсе (опционально)
Postfix TCP 25, 465 Любой Исходящее соединение для MTA
Rspamd TCP 80 fuzzy.animails.email Загрузка карт регулярных выражений плохих тем (обучено Servercow)
Rspamd TCP 443 bazaar.abuse.ch Загрузка MD5-контрольных сумм вредоносного ПО для обнаружения Rspamd
Rspamd TCP 443 urlhaus.abuse.ch Загрузка ссылок на скачивание вредоносного ПО для обнаружения в Rspamd
Rspamd UDP 11445 fuzzy.animails.email Соединение с глобальным fuzzy-сервером animails (обучено Servercow + сообщество)
Rspamd UDP 11335 fuzzy1.rspamd.com & fuzzy2.rspamd.com Соединение с глобальным fuzzy-сервером Rspamd (обучено командой Rspamd)
Unbound TCP & UDP 53 Любой DNS-разрешение для стека animails (для проверки DNSSEC и получения информации из спам-списков)
Unbound ICMP (Ping) 1.1.1.1, 8.8.8.8, 9.9.9.9 Базовая проверка интернет-соединения

Важно для брандмауэров Hetzner

Цитата https://github.com/chermsen через https://github.com/animails/animails/issues/497#issuecomment-469847380 (СПАСИБО!):

Для всех, кто испытывает трудности с брандмауэром Hetzner:

Порт 53 не важен для конфигурации брандмауэра в данном случае. Согласно документации, unbound использует диапазон портов 1024-65535 для исходящих запросов. Поскольку Hetzner Robot Firewall является статическим брандмауэром (каждый входящий пакет проверяется изолированно), должны быть применены следующие правила:

Для TCP

SRC-IP:       ---
DST IP:       ---
SRC Port:    ---
DST Port:    1024-65535
Protocol:    tcp
TCP flags:   ack
Action:      Accept

Для UDP

SRC-IP:       ---
DST IP:       ---
SRC Port:    ---
DST Port:    1024-65535
Protocol:    udp
Action:      Accept

Если вы хотите применить более строгий диапазон портов, вам сначала нужно изменить конфигурацию unbound (после установки):

{animails}/data/conf/unbound/unbound.conf:

outgoing-port-avoid: 0-32767

Теперь правила брандмауэра можно скорректировать следующим образом:

[...]
DST Port:  32768-65535
[...]

Дата и время

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

$ timedatectl status
      Local time: Sat 2017-05-06 02:12:33 CEST
  Universal time: Sat 2017-05-06 00:12:33 UTC
        RTC time: Sat 2017-05-06 00:12:32
       Time zone: Europe/Berlin (CEST, +0200)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: yes
 Last DST change: DST began at
                  Sun 2017-03-26 01:59:59 CET
                  Sun 2017-03-26 03:00:00 CEST
 Next DST change: DST ends (the clock jumps one hour backwards) at
                  Sun 2017-10-29 02:59:59 CEST
                  Sun 2017-10-29 02:00:00 CET

Строки NTP enabled: yes и NTP synchronized: yes указывают на то, включен ли NTP и синхронизирован ли он.

Чтобы включить NTP, необходимо выполнить команду timedatectl set-ntp true. Также необходимо отредактировать файл /etc/systemd/timesyncd.conf:

# vim /etc/systemd/timesyncd.conf
[Time]
NTP=0.pool.ntp.org 1.pool.ntp.org 2.pool.ntp.org 3.pool.ntp.org

Hetzner Cloud (и, возможно, другие)

Проверьте /etc/network/interfaces.d/50-cloud-init.cfg и измените интерфейс IPv6 с eth0:0 на eth0:

# Неправильно:
auto eth0:0
iface eth0:0 inet6 static
# Правильно:
auto eth0
iface eth0 inet6 static

Перезагрузитесь или перезапустите интерфейс. Вы также можете отключить изменения сети через cloud-init.

MTU

Особенно актуально для пользователей OpenStack: проверьте ваш MTU и установите его соответствующим образом в docker-compose.yml. См. раздел Устранение неполадок в нашем руководстве по установке.


  1. При обновлении с Debian 12 (Bookworm) до Debian 13 (Trixie) может быть установлена служба EXIM, которая блокирует порт 25 на хосте. Поэтому рекомендуется удалить эту службу перед использованием animails.