# Администрирование - Установка mailcow

## Описание
Комбинация докеризированных сервисов для отправки и получения почтовых писем.  
Данная инструкция может быть не актуальна, рекомендуется сверятся с [официальной документацией](https://docs.mailcow.email/).  

## Предварительная настройка


### Настройка DNS

DNS должен быть настроен в соответсвии с [DNS - mailcow](https://manual.stik.store/books/dns/page/dns-mailcow)

### Настройка портов

| Сервис                    | Протокол | Порт | Контейнер       | Переменная         | Описание |
|---------------------------|----------|------|-----------------|--------------------|----------|
| Postfix SMTP              | TCP      | 25   | postfix-mailcow | ${SMTP_PORT}       |          |
| Postfix SMTPS             | TCP      | 465  | postfix-mailcow | ${SMTPS_PORT}      |          |
| Postfix Submission        | TCP      | 587  | postfix-mailcow | ${SUBMISSION_PORT} |          |
| Dovecot IMAP              | TCP      | 143  | dovecot-mailcow | ${IMAP_PORT}       |          |
| Dovecot IMAPS             | TCP      | 993  | dovecot-mailcow | ${IMAPS_PORT}      |          |
| Dovecot POP3              | TCP      | 110  | dovecot-mailcow | ${POP_PORT}        |          |
| Dovecot POP3S             | TCP      | 995  | dovecot-mailcow | ${POPS_PORT}       |          |
| Dovecot ManageSieve       | TCP      | 4190 | dovecot-mailcow | ${SIEVE_PORT}      |          |
| Nginx Reverse Proxy HTTP  | TCP      | 80   | reverse-proxy   |                    |          |
| Nginx Reverse Proxy HTTPS | TCP      | 443  | reverse-proxy   |                    |          |

удостовериться что порты не используются другими программами:
```bash
ss -tlpn | grep -E -w '25|80|443|110|143|443|465|587|993|995|4190'
```
или:
```bash
netstat -tulpn | grep -E -w '25|80|443|110|143|443|465|587|993|995|4190'
```

## Установка

1. Перейти в папку docker:  
```bash
cd /путь/к/репозиторию/docker/
```
2. Склонировать репозиторий mailcow:  
```bash
git clone https://github.com/mailcow/mailcow-dockerized
```
3. Перейти в папку mailcow-dockerized:  
```bash
cd mailcow-dockerized/
```
4. Скопировать mailcow.conf.example из mailcow-modifications в mailcow-dockerized, изменить настройки по необходимости и заполнить пустые поля паролей (или взять mailcow.conf из бэкапа):  
```bash
cp ../mailcow-modifications/mailcow.conf.example ./mailcow.conf
```
> необходимо отключать поддержку IPv6, так как она ломает функционирование спам фильтра, причина: сервер не имеет IPv6 адреса и не может достучатся до антиспам сервисов  

5. Сделать символьные ссылки файлов из mailcow-modifications в mailcow-dockerized:  
docker-compose.override.yml нужен для отключения IPv6 и подключения контейнеров к обратному прокси  
```bash
ln -s ../mailcow-modifications/docker-compose.override.yml ./docker-compose.override.yml
```
extra.cf нужен для отключения IPv6  
```bash
cd data/conf/postfix/
ln -s ../../../../mailcow-modifications/extra.cf ./extra.cf
cd ../../../
```

6. Отключить IPv6 в unbound-mailcow:  
изменить data/conf/unbound/unbound.conf и установить do-ip6 на "no"  
```bash
nano data/conf/unbound/unbound.conf
```
```yaml
server:
  [...]
  do-ip6: no
  [...]
```
7. Запустить mailcow:  
```bash
docker compose up -d
```