Домашний почтовый сервер на домене

Опубликовано 28 дек. 2025 г.

Вчера решал интересную задачку. У меня в интернетах крутится собственный почтовый сервер на домене, сервер ежемесячно поджирает стабильно около 2к рублей. Хотя за месяц от силы я получаю 10-20 писем.

Избыточно в плане инфраструктуры и затрат? Конечно! Разумно перетащить его к себе на домашний proxmox и избавиться от одной статьи расходов.

ЧИТАТЬ ПЕРВЫМ В ТЕЛЕГРАМ   ЧИТАТЬ ПЕРВЫМ В MAX

Во время проектирования миграции, было много вопросов и самый главный — у меня нет белого IP в домашнем сегменте, как быть? DynDNS я ебал, да и с микротиком возиться не хочется.

Всё оказалось достаточно просто. Создаем условно за 100 рублей сервер в интернетах с белым IP, втыкаем на него angie с модулем stream, объединяем этот сервер с домашней сетью с помощью netbird или другой технологией. И просто проксипасим все запросы в домашний сегмент.

Про MX, SPF, DKIM писать не буду, все это настраивается отдельно, не сложно.

Звучит логично. Но на практике пришлось поебстись и почитать спецификации всей этой кухни.

Конфиг для angie получился такой, он работает при условии наличия модуля stream.

upstream imap_backend {
    server 100.106.7.8:993;
}

upstream smtp_backend {
    server 100.106.7.8:587;
}

upstream smtp_incoming_backend {
    server 100.106.7.8:25;
}

upstream smtp2_incoming_backend {
    server 100.106.7.8:465;
}

upstream sieve_backend {
    server 100.106.7.8:4190;
}

server {
    listen 993;
    proxy_pass imap_backend;
    proxy_timeout 1h;
    proxy_connect_timeout 30s;
}

server {
    listen 587;
    proxy_pass smtp_backend;
    proxy_timeout 1h;
    proxy_connect_timeout 30s;
}

server {
    listen 25;
    proxy_pass smtp_incoming_backend;
    proxy_timeout 1h;
    proxy_connect_timeout 30s;
}

server {
    listen 465;
    proxy_pass smtp2_incoming_backend;
    proxy_timeout 1h;
    proxy_connect_timeout 30s;
}

server {
    listen 4190;
    proxy_pass sieve_backend;
    proxy_timeout 1h;
    proxy_connect_timeout 30s;
}

Суть тут такая, все запросы на определенные порты, перенаправляются в netbird сеть, а 100.106.7.8 это IP адрес как раз моего LXC контейнера с почтовым сервером в домашнем proxmox.

Получилась банальная прокся. Великолепно то, что angie автоматом получает SSL сертификаты и в почтовых программах с этим заморачиваться не нужно, просто указываем домен, порт и всё работает как часы.

sieve_backend нужен, чтобы управлять фильтрами в почте, например при получении письма с определенным заголовком, переносить это письмо в другую папку.

Я использую nextcloud mail, и там есть поддержка sieve из коробки. Потыкал еще roundcube для морды, но чёт не зашла, топорная какая-то штука, хотя рабочая.

Да, в роле почтового сервера у меня установлен docker-mailserver. Штука классная, установил, пару тычек выписал в конфиг и оно работает. Морды в ней нет, чисто логическая часть, что-то вроде бекенда.

Еще нюанс в конфиге docker-mailserver я прописал SSL сертификаты, эти сертификаты я взял в angie после того как он мне их выдал. В этом плане нужно еще придумать, как организовать передачу этих сертов к себе в proxmox.

environment:
  - SSL_TYPE=manual
  - SSL_CERT_PATH=/tmp/dms/custom-certs/certificate.pem
  - SSL_KEY_PATH=/tmp/dms/custom-certs/private.key
    
volumes:
  - ./ssl:/tmp/dms/custom-certs/:ro

Банально можно через scp копировать, но в идеале поднять vault hashicorp и хранить серты там и по необходимости дергать от туда в любое место.

Ну и важное уточнение, отправлять почту во вне, тебе в нынешних реалиях никто не даст (25 порт на отправку везде заблочен), поэтому используем какой-нибудь relay для этого. Благо есть полно таких, кто дает отправить 10-15к писем в месяц легально и бесплатно. Я пользуюсь этим сервисом несколько лет.

Что еще. Возможно будут проблемы с SPF, но если оно тебе в хуй не уперлось, то отключаем в конфиге docker-mailserver - ENABLE_POLICYD_SPF=0.

Ну и SIEVE включается там же через ENABLE_MANAGESIEVE=1.

Плюсом можешь воткнуть mail archiver и вообще горя не знать. Теперь все твои письки письма под контролем и ты сам себе хозяин этой суеты. Ну и дополнительная экономия на избыточной инфраструктуре.

На этом всё, изучай. Концепт я тебе показал, нюансы рассказал, так что дерзай, всё решаемо.

Комментарии