Подготовка системы
Перед запуском 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. См. раздел Устранение неполадок в нашем руководстве по установке.
-
При обновлении с Debian 12 (Bookworm) до Debian 13 (Trixie) может быть установлена служба
EXIM, которая блокирует порт 25 на хосте. Поэтому рекомендуется удалить эту службу перед использованием animails. ↩