Приветствую Вас, дорогой читатель. Сегодня речь пойдет о поднятии личного почтового сервера Mailcow.
Сразу оговорюсь - я не гуру в этой сфере, но на просторах интернета довольно мало информации по поднятию Mailcow, поэтому эта статья и вышла.
Нам понадобится:
VPS(Virtual Private Server)
Домен
CloudFlare
Немного времени
Приступим!
VPS:
Начнем с VPS.
Лично я пользуюсь услугами Tietokettu
Сервера находятся в Финляндии, гигабитный канал и хорошие цены, высокий аптайм и достаточно много трафика. Не подумайте, что я рекламирую - мне за это никто не платит, просто мне понравился этот сервис
Показывать я буду на примере aeza.net
Регистрируемся на сайте и логинимся.
Нажимаем на большую надпись aeza.
Выбираем Virtual server и нажимаем Order.
![](https://habrastorage.org/webt/au/ld/y4/auldy4mtgy5bk-gy_4dr8vstjle.png)
На момент написания статьи был такой промо в Стокгольме.
![](https://habrastorage.org/webt/ub/np/f-/ubnpf-48kwf93x59tiwgel0fbme.png)
Name введите какой хотите, например mailcow-server
Теперь нужно выбрать OS. Я предпочтиаю Debian 12
Так же если не нужно, убери галочку с Enable backups.
Оплачиваем и ждем создания.
Сервер будет доступен тут.
Обновление VPS и установка Docker:
Теперь обновим и установим нужные программы.
Цепляемся через ssh.
Открываем PowerShell и пишем(замените ip на свой. Он есть в панели пользователя):
ssh root@ip
Обновим систему:
apt update && apt upgrade
Теперь будем ставить Docker(на debian):
Команды для установки:
apt install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
apt update
apt install docker-ce
На всякий случай включим автозапуск если не включился сам.
systemctl enable docker
Проверить статус можно командой
systemctl status docker
Должен быть подобный вывод.
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2024-03-29 04:38:52 EDT; 6min ago
TriggeredBy: ● docker.socket
Docs: https://docs.docker.com
Main PID: 135217 (dockerd)
Tasks: 27
Memory: 46.3M
CPU: 396ms
CGroup: /system.slice/docker.service
├─135217 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
├─135353 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 1688 -container-ip 172.17.0.2 -container-port 1688
└─135359 /usr/bin/docker-proxy -proto tcp -host-ip :: -host-port 1688 -container-ip 172.17.0.2 -container-port 1688
Главное это Active: active (running)
Если все ок, движемся дальше.
Покупка домена
![](https://habrastorage.org/webt/tv/km/hm/tvkmhmgkvjuokmaaiypbeevitqs.png)
Я использую GoDaddy.Мне сервис очень нравится, цены приятные и удобный личный кабинет. Однако для оплаты требуется карта заграничного банка.
Можно также воспользоваться услугами любого другого регистратора. Например, reg.ru.
Я покажу на примере GoDaddy, так как процесс регистрации везде примерно одинаковый. Здесь страница для регистрации.
После регистрации идем сюда
Тут вводим интересующее имя.
![](https://habrastorage.org/webt/hs/de/tg/hsdetg6pxfwo7wb0blsczxbvwq8.png)
Допустим домен это mytopdomain.world, тогда домен будет выглядеть так.
![](https://habrastorage.org/webt/ld/5x/uu/ld5xuu501aqhyalu1qmzyxi8t68.png)
Указана цена €1.84 без НДС вместо €46.17. Также там указано for first year, это означает, что на первый год пользования цена будет €1.84, а затем €46.17 в год.
Далее нажимаем Make It Yours и переходим в корзину. Там в разделе Protect your domain выбираем No Domain Protection.
Также убираем галочку с Start your website for FREE.
Не меняем пункт Build credibility with a custom email address и оставляем No Professional Email.
Оплачиваем....
И... Поздравляю! У Вас есть свой домен!
Установка Mailcow
Цепляемся по ssh и пишем:
cd /opt/
git clone https://github.com/mailcow/mailcow-dockerized
cd mailcow-dockerized
./generate_config.sh
Тут нужно быть внимательным⚠️
1 шагом предложено выбрать hostname
Он должен быть как mail.example.com
Например:
mail.mytopdomain.world
Будет предложено выбрать таймзону.
Нажимаем Enter что бы оставить предложенную, не меняем ее.
Отличная таймзона от локации vps может повлять на спам фильтры у других почтовых сервисов.
Далее вводим 1, что бы выбрать стабильную ветку и ждем установки.
Как закончится установка, идем в браузер и вводим ip адрес своего сервера.
Заходим в панель по паре:
Логин admin
Пароль moohoo
Сразу идем в System => Configuration и меняем там логин и пароль для входа в панель.
Теперь идем в E-mail и нажимаем на зеленую кнопку Add domain
В поле Domain вводим mytopdomain.world(замените на свой)
Все остальное можно оставить по умолчанию.
Нажимаем Add domain and restart SOGo
Настройка CloudFlare
Теперь нам нужен CloudFlare. Идем сюда и регистрируемся.
После регистрации логинимся и нажимаем Add site. Там нужно будет ввести ваш домен и нажать Continue. Выбираем Free план и нажимаем Continue.
CloudFlare просканирует DNS и покажет все DNS записи, которые нашел. Можно их все удалить. Нажимаем Continue и в появившемся окне нажимаем Confirm.
Важно⚠️
Ищем пункт 3 с именем Update your nameservers.
Идем в панель к своему регистратору и ищем там записи DNS.
Меняем стандартные NS(Nameserver) на те, которые выдал CloudFlare.
Не закрываем вкладку CloudFlare. После смены DNS ждем ~15 минут, а после переходим обратно на вкладку с CloudFlare и нажимаем Check nameservers now.
Далее будет Quick Start Guide. В Improve security включаем Always Use HTTPS. Остальное по умолчанию.
Теперь будем ждать такой надписи.
![](https://habrastorage.org/webt/xq/hx/mt/xqhxmtfivy-xmbjwf649nxsfegy.png)
Как она появится, можно приступать к настройке.
Обычно у меня это занимает примерно 30 минут.
Теперь можно идти во вкладку DNS/Records.
Это самая долгая часть. Сверяемся с DNS Records из панели mailcow.
![](https://habrastorage.org/webt/ff/ys/9x/ffys9xyjksc1hvxp0msl0eh70dc.png)
Через кнопку Add record создаем записи.
Type 'A' | Name 'mail' | IPv4 address 'ip адрес вашего VPS' | Proxy status 'DNS only' | TTL 'Auto'
Type 'AAAA' | Name 'mail' | IPv6 address 'ip6 адрес вашего VPS' | Proxy status 'DNS only' | TTL 'Auto'
Type 'CNAME' | Name 'autoconfig' | Target 'mail.example.com' | Proxy status 'DNS only' | TTL 'Auto'
-Type 'CNAME' | Name 'autodiscover' | Target 'mail.example.com' | Proxy status 'DNS only' | TTL 'Auto'
Type 'MX' | Name '@' | Mail Server 'mail.example.com' | TTL 'Auto' | Priority '1'
Type 'SRV' | Name '_autodiscover._tcp' | Priority '0' | Weight '1' | TTL 'Auto' | Port '443' | Target 'mail.example.com'
У меня TSLA в DNS Records это
3 1 1 11fd336a61b96828825a06e3053ca95c5ad4227489647cf78efaa410f51ec42f
где
3 => Usage
1 => Selector
1 => Matching type
Длинная строка это Certificate.
У меня это имело бы вид
Type 'TSLA' | Name '_25._tcp.mail' | TTL 'Auto' | Usage '3' | Selector '1' | Matching type'1' | Certificate '11fd336a61b96828825a06e3053ca95c5ad4227489647cf78efaa410f51ec42f'
А Вы укажите свои.
Идем дальше.
Type 'TXT' | Name 'dkim._domainkey' | TTL 'Auto' | Content 'указан в DNS Records последней строчкой, длинная строка'
Type 'TXT' | Name '@' | TTL 'Auto' | Content ' "v=spf1 mx -all" '
Именно в двойных ковычках!
Примерно так должно получиться
![](https://habrastorage.org/webt/_r/7p/xm/_r7pxmd9xsgoq1froyygwza5qjm.png)
Это всё, тут закончили.
Теперь ждем, пока всё подтянется, но работать уже должно сейчас. Просто некоторая почта, такая как Gmail, скажет про подозрительный трафик, если вы отправите туда письмо.
Теперь в панели mailcow идем по E-Mail -> Configuration -> Mailboxes и нажимаем зеленую кнопку ** + Add mailbox**. Создаем Username. Какой хотите, например что-то такое:
info@example.com
support@example.com
Генерируем пароль или задаем собственный.
Quarantine notification category ставим в Junk folder.
Можно включить принудительный TLS.
Как клиентом, можно воспользоваться встроенным WebMail. Из десктопа есть бесплатный Mozilla Thunderbird. Также можно пользоваться клиентом Outlook.
И все, Ваш личный почтовый клиент готов. Можно, конечно, еще проводить дополнительную настройку, но это в другой статье! Спасибо за прочтение! Буду рад услышать замечания в комментариях!
Комментарии (15)
Tuvok
04.04.2024 06:53Конечно моё ИМХО, но сейчас опасливо заводить сервера и оплату за границей. Хотелось бы увидеть гайд по развёртыванию личной почты на домашнем сервере с белым IP и без докера (Debian на bare-metal / Virtual Box), а ещё так чтобы самоподписанные сертификаты и без регистрации домена, ну или свой DNS поднять ещё. Ещё бы хотелось увидеть краткое описание предыдущих серий, то есть почему был выбран именно mailcow, а не что-то другое, его плюсы.
M_AJ
04.04.2024 06:53без регистрации домена
Почта так не работает. В остальном, развертывание почты на домашний машине и на VPS не отличается. Только 25 порт у домашнего провайдера может быть закрыт. Если хотите bare metal, просто возьмите сборку под bare metal типа iRedmail
Vcoderlab
04.04.2024 06:53Правильно ли я понимаю, что поскольку MailCow сидит в докере, то на сервере могут крутиться и другие сервисы?
И ещё вопрос:
У меня TSLA в DNS Records это
3 1 1 11fd336a61b96828825a06e3053ca95c5ad4227489647cf78efaa410f51ec42f
Откуда брать длинную строку (которая сертификат)?
0Ziver Автор
04.04.2024 06:53Да, у докера есть libnetwork.
Он сам занимается мультиплексированием.
По этому можно вешать несколько сервисов на 1 порт.
TLSA должен выписывать сам mailcow. Он должен быть в окне DNS Records. Где-то на нижних строчках. Напишите если не найдёте эту запись.
JastixXXX
04.04.2024 06:53Для полных новичков в этом деле, таких как я, было бы неплохо, если бы автор объяснил, зачем добавляет те или иные записи. Понятно, что записи вроде А, АААА и МХ очевидны, но вот остальные не очень. Можно конечно попытаться нагуглить, но наличие объяснений в самой статье сильно бы подняло её ценность.
0Ziver Автор
04.04.2024 06:53Можно, но я бы вынес это в отдельную статью, так как информации там много будет.
0Ziver Автор
04.04.2024 06:53PTR запись что для ip, что для ipv6 может долго подтягиваться хостером, стоит подождать сутки после установки. Когда все будет готово, в DNS Records в mailcow, в крайней правой колонке будет зелёная галочка. Тогда письма не будут попадать в спам.
Ego78
04.04.2024 06:53+2ptr не будет подтягиваться , нужно просить ,чтоб ее завели на хостере в реверсивной зоне. Плюс должен быть статический IP. Так же не настрренны политики spf, ну и дальше dmarc dkim . Без эти механизмов все в спам. Google по-моему по новым правилам вообще будет отклонять письма без этих механизмов.
0Ziver Автор
04.04.2024 06:53Смотря кто хостер. Aeza даёт из консоли даёт настроить ptr, да и не только они. От провайдера зависит. Я сижу на финском tietokettu, у них вообще ptr платный, 25€.
В статье указано, что нужен VPS, а там всегда будет статический ip. Не представляю кейс где кто-то будет ставить почту дома, покупать статический ip у провайдера и заниматься настройкой сервера вручную.
У меня Gmail,iCloud,outlook, yahoo, mail.ru не кидают мои письма в спасибо, спокойно доходят. Dmark не настроен. dkmi ввёл выданный mailcow, висит зелёная галочка.
P.S gmail и выше перечисленные почты, кроме mail.ru без ptr записей выкидывали мои писульки в спам.
drlight17
04.04.2024 06:53+2Подписываюсь под каждым словом. Пока не будет ptr, spf, dkim, dmarc - о нормально работающей почте говорить рано. За плечами n поднятых почтовых серверов, в том числе домашний и пара корпоративных на базе mailcow (для корпоративных прикручена еще ldap авторизация).
uuger
а в чём преимущество докера для одинокой ВПС-ки, где ничего другого жить не будет? на мой взгляд, тогда проще купить услугу по хостингу контейнера или поднять олдскульный сервер
dtkbrbq
преимущество в простоте и скорости поднятия сервиса, кроме пары команд для старта контейнера ничего больше знать не нужно, да и задел на будущее, кто знает что там на впс еще появится позже