локальный почтовый сервер для windows
Настройка собственного почтового сервера
Если есть необходимость освежить в памяти как всё это работает, то есть давняя, но актуальная статья об архитектуе почтовых систем.
Есть три основных шага, чтобы установить и настроить собственный почтовый сервер.
Настройка IP и DNS
Выбор и запуск приложения почтового сервера
Добавление своего почтового сервера в белые списки
Настройка IP и DNS
Обеспечение внешнего статического IP-адреса, публичного домена и записи PTR
Это основные требования для запуска собственного почтового сервера.
Публичный статический IP-адрес
IP-адрес почтового сервера должен быть общедоступным и постоянным во времени. Убедиться в этом можно у хостинг или Интернет-провайдера.
Доменное имя указывает на IP
DNS-запись публичного доменного имени почтового сервера должна указывать на этот IP-адрес. Им можно управлять в настройках DNS провайдера доменного имени.
IP указывает на доменное имя
Самое главное, обратная DNS-запись (именуемая PTR) должна указывать на доменное имя почтового сервера по IP-адресу. Можно попросить своего хостинг-провайдера или поставщика интернет-услуг настроить его. Его можно легко проверить по IP-адресу онлайн (например, тут), или с помощью команды ‘nslookup’ в Windows и команды ‘host’ в системах на основе UNIX.
Настройка MX записи в DNS
Запись почтового обмена (MX) указывает почтовый сервер, ответственный за прием сообщений электронной почты от имени домена.
Type
Host
Value
Priority
Priority (приоритет) используется, когда в домене более одного почтового сервера.
TTL (время жизни) можно установить любое предпочтительное значение, а наименьшее значение используется для применения конфигурации DNS как можно скорее при отладке настроек.
Настройка DKIM записи в DNS
Почта, идентифицированная ключами домена (DKIM) — это протокол безопасности электронной почты, который прикрепляет зашифрованную цифровую подпись к электронному письму. Принимающий сервер проверяет его с помощью открытого ключа, чтобы убедиться, что электронное письмо не было подделано.
И запись DNS будет выглядеть так:
Type
Host
Value
selector._domainkey
v=DKIM1; k=rsa; p=public_key
TTL (время жизни) имеет то же значение, что и в предыдущем разделе.
Настройка SPF записи в DNS
Инфраструктура политики отправителя (SPF) — это стандарт проверки подлинности электронной почты, который проверяет IP-адрес отправителя по списку авторизованных IP-адресов владельца домена для проверки входящей электронной почты.
Тут запись DNS будет выглядеть так:
Type
Host
Value
TTL (время жизни) имеет то же значение, что и в предыдущем разделе.
Можно использовать удобный онлайн-генератор записи SPF.
Дополнительные записи DNS
Некоторые поля не обязательны, но желательно иметь.
DMARC
Запись доменной проверки подлинности сообщений, отчетов и соответствия (DMARC) позволяет собственному почтовому серверу декларировать политику того, как другие почтовые серверы должны реагировать на недостоверные сообщения от него.
BIMI
Индикаторы бренда для идентификации сообщений (BIMI) — это новый стандарт, созданный для того, чтобы упростить отображение логотипа рядом с сообщением. Кроме того, BIMI предназначен для предотвращения мошеннических электронных писем и улучшения доставки.
TLS-RPT
TLS-отчетность (TLS-RPT) дает ежедневные сводные отчеты с информацией о электронных письмах, которые не зашифровываются и не доставляются.
Все эти записи кроме MTA-STS могут быть созданы с помощью Power DMARC Toolbox. Конфигурация MTA-STS похожа на Google, также описывалась на habr, и, наконец, может быть проверена с помощью Hardenize.
Выбор и запуск приложения почтового сервера
Конечно, хостинг должен позволять устанавливать программное обеспечение. Можно использовать любое подходящее приложение для почтового сервера. Например, есть бесплатный hMailServer для Windows, который предоставляет все необходимые функции с минимальным использованием ресурсов. Для систем на базе UNIX существует множество бесплатных почтовых серверов, таких как Exim Internet Mailer или iRedMail.
Если вы знаете ещё хорошие программы, то поделитесь ими в комментариях. Подробный обзор выбора такого программного обеспечения, конечно, заслуживает отдельной статьи.
Инициализация
Когда программное обеспечение выбрано и установлено, самое время его настроить.
Домен и пользователи
Нужно добавить домен и начальный набор пользователей почтового сервера.
Безопасность
Чтобы обеспечить соответствующий уровень безопасности, мы должны добавить сертификат SSL для домена. Конфигурацию SSL можно проверить здесь.
Подпись сообщений
Далее, следует настроить DKIM. Нужно указать полученные выше приватный ключ и селектор. Кроме того, методы заголовка и тела должны быть установлены на «расслабленный», алгоритм подписи должен быть установлен на «SHA256», иначе на некоторых SMTP серверах не проходит проверка (например, google).
Защита от спама
Наконец, нужно настроить антиспам-проверку специальными узлами черных списков, такими как spamhaus.org, чтобы защитить пользователей почтового сервера от нежелательных сообщений.
Протоколы электронной почты
Нужно настроить три протокола электронной почты, которые необходимы для её отправки и получения.
SMTP используется для приема входящей и исходящей почты с/на другие почтовые серверы. И это позволяет пользователям домена отправлять свои сообщения.
25 порт
Этот порт необходим для управления входящими подключениями от других почтовых серверов. Метод безопасности следует установить в STARTTLS.
587 порт
Он нужен для почтовых клиентов собственного почтового сервера. Метод безопасности следует установить в STARTTLS.
465 порт
Он не является официальным и может потребоваться для старых почтовых клиентов. И метод безопасности следует установить в SSL/TLS.
POP3, IMAP
POP3 и IMAP используются отдельными почтовыми клиентами, такими как Outlook на ПК или любой почтовый клиент на мобильных телефонах. Это позволяет пользователям домена управлять своими сообщениями.
Также можно настроить порты 143 для IMAP и 110 для POP3, но они не шифруются и сейчас их уже мало кто использует.
Проверка
Итак, когда все настроено, нужно протестировать почтовый сервер, отправив письмо кому-нибудь из списка пользователей. Кроме того, в некоторых почтовых приложениях есть функция самодиагностики (см. ниже пример от hMailServer).
Теперь пора проверить отправку на внешний адрес.
Аккаунт Gmail.com
Если есть учетная запись Gmail.com (что наверняка), можно отправить тестовое письмо на свой адрес Gmail. Затем открываем свою электронную почту в браузере и нажимаем «Показать подробности».
Если есть «подписано: домен», подпись DKIM настроена правильно. Если есть «отправлено по почте: домен», SPF в порядке.
Также, можно убедиться в оригинальных заголовках, что статус проверки пройден.
Также, в Outlook можно видеть те же заголовки в свойствах сообщения.
Специальные онлайн-сервисы
Существует множество онлайн-сервисов, которые могут проверять отправку электронной почты. Ниже приведены некоторые из них.
AppMailDev
Этот сервис позволяет тестировать конфигурацию почтового сервера, такую как DKIM и SPF, отправляя электронное письмо на указанный сгенерированный почтовый адрес. Нужно просто следовать инструкциям на экране и результаты теста будут отображены там же.
DKIMValidator
Предоставляет те же функции, что и предыдущая служба. Результаты тестирования будут отправлены на адрес отправителя.
HAD Email Auth Tester
Чтобы проверить отправку сообщения здесь, нужно отправить специальное сообщение на tester@email-test.had.dnsops.gov. Результаты тестирования будут отправлены на адрес отправителя.
PowerDMARC
Этот сервис предоставляет только облегченную проверку всех атрибутов, но у него есть удобные инструменты, указанные в ссылках выше.
Итак, если всё настроено правильно, но сервер присутствует в чёрных списках спама, нужно внести его в белый список.
Добавление почтового сервера в белые списки
Итак, если всё вышеперечисленное настроено правильно, другие почтовые серверы по-прежнему могут отмечать сообщения как спам и отклонять их. Это бывает, когда IP (или его диапазон) домена попадает в какой-то черный список. Чаще всего причиной этого является использование соседних IP-адресов для рассылки спам-сообщений.
Внесение в белый список в публичных источниках
Итак, сначала проверим IP (и, если необходимо, домен) онлайн на наличие в каких-либо черных списках. Его можно проверить в любом онлайн-чекере, который можно найти через поиск. Например, MXToolBox проверяет самые популярные черные списки. Также, multirbl.valli.org показывает много источников черного списка и доверие к каждому из них.
Затем нужно последовательно просмотреть каждый элемент в результатах и прочитать рекомендации о том, как внести IP-адрес в белый список в конкретном источнике черного списка. Но не все из них могут позволить это сделать бесплатно, например, немецкий UCEPROTECT®-Network.
Внесение в белый список определенных почтовых серверов
Обход черных списков
SendInBlue
Это еще один хороший сервис, который позволяет бесплатно отправлять 9 тысяч писем в месяц с лимитом 200 в день. Но есть нюансы: встроенное отслеживание электронной почты нельзя отключить и высоковатая цена сверх бесплатного лимита.
В каждой службе нужно зарегистрироваться и получить подтверждение почтового домена. После подтверждения, каждый из них дает указания на то, что должно быть настроено для DNS (DKIM, SPF и DMARK) и почтового приложения (адрес сервера ретрансляции SMTP, порт и учетные данные).
Заключение
Итак, теперь можно использовать все преимущества выделенного почтового сервера. Надеюсь, что этот материал поможет наиболее эффективно достичь поставленной цели. Если есть какие-либо вопросы или предложения по этой теме, буду рад обсудить в комментариях.
Выполняю установку, настройку, сопровождение серверов. Для уточнения деталей используйте форму обратной связи
Если у вас небольшой офис и для вас слишком дорого покупать Exchange и у вас нету *nix — тогда этот обзор для вас.
1) hMailServer
Достаточно простой и удобный сервер. Имеет в составе IMAP/POP3/SMTP сервера. Есть встроенная система защиты от спама. Для любителей смотреть почту через Web — нужно отдельно прикручивать Web-морду.
2) Mail Enable
Замечу, что существуют платные и бесплатные версии данного продукта. Имеет в составе POP3/SMTP, но не имеет IMAP сервера. Зато есть встроенный Web интерфейс (который мне так и не удалось заставить работать на IIS7)
3) XMail
Достаточно простой и функциональный почтовый сервер (POP3/ESMTP, но нет IMAP) с поддержкой нескольких типов авторизации (PLAIN LOGIN CRAM-MD5 POP3-перед-SMTP и пользовательская)
4) Office Mail Server
Официальный сайт отсутствует, так как проект не развивается. Но скачать можно отсюда http://www.box.com/oms
Простой, компактный, но полнофункциональный почтовый сервер для локальной сети с dial-up подключением к интернет. Работает под Windows 95-98-NT-ME-2000. Может работать как NT сервис. Мощный сортировщик позволяет обеспечить каждого пользователя в локальной сети личным адресом электронной почты. В программе объединены POP3 и SMTP серверы, POP3 и SMTP клиенты, сортировщик, планировщик сеансов связи, «звонилка» и оболочка для настройки сервера через систему меню и диалогов.
5) shicks!
Простой POP3/SMTP сервер, написанный на python’e
6) Courier Mail Server
Практически аналогичный Courier Mail Server 1.56 (полностью бесплатный) — правда, есть мелкие недостатки. Например, глюк с отображением интерфейса при работе с сервером через терминальную сессию. Впрочем, на работе почты это не сказывается. Его же переработанная версия 2.хх — www.courierms.ru К сожалению, платная. Бесплатно в ней работает только до 3-х почтовых ящиков.
7) UserGate Mail Server
UserGate Mail Server – это решение для организации безопасного почтового сообщения в компании со встроенными модулями антиспам и антивирусной защиты. Продукт обладает модульной структурой, что повышает отказоустойчивость и дает возможность запуска сервера на распределенной системе.
В числе основных функций UserGate Mail Server — управление доменами и пользователями, веб-клиент, поддержка списков рассылки, работа удаленными учетными записями, поддержка LDAP, а также гибкая и мощная система правил. UserGate Mail Server способен обрабатывать более 2000 писем в минуту.
Для обеспечения доступа к почте в UserGate Mail Server реализована поддержка протоколов SSL, POP3s, SMTPs и IMAPs. Безопасность почтового сообщения теперь может обеспечиваться сразу тремя антивирусными модулями: Kaspersky Antivirus, Panda Antivirus и Entensys Zero-Hour, основанный на «облачных» технологиях.
В обработке входящих сообщений в UserGate Mail Server фильтрация выполняется в несколько этапов — по соединениям, по адресу источника, по адресу назначения и по содержанию. UserGate Mail Server поддерживает следующие методы фильтрации спама:
на основе DNS (DNSBL, RHSBL, Backscatter, MX, SPF, SURBL);
на основе распределенной антиспам системы («облачный» антиспам);
на основе статистики (собственная реализация фильтрации Байеса).
Кроме этого UserGate Mail Server поддерживает контроль SMTP протокола (контроль правильности команд в соответствии с RFC), ограничивает максимальный размер письма, максимальное количество получателей и т.п.
«Облачный» антиспам в почтовом сервере отфильтровывает письма, основываясь на анализе их содержания и эвристике.
В UserGate Mail Server реализована интеграция с IMAP – сервером MS Exchange или Lotus Domino. Интеграция предоставляет возможность создания общей папки IMAP на удаленном почтовом сервере и обработку сообщений в этих папках.
UserGate Mail Server предоставляет информацию обо всех сообщениях, обработанных почтовым сервером. Мониторинг сообщений позволяет выполнять фильтрацию по дате, по статусу обработки (доставлено/заблокировано), по адресу источника или назначения, выполнять принудительную отправку сообщений, заблокированных как спам, а также создавать списки исключений.
Бесплатная лицензия на 5 почтовых ящиков
Для получения возможности бесплатного использования UserGate Mail Server на 5 почтовых ящиков необходимо:
Скачать дистрибутив; В окне регистрации UserGate Mail Server выбрать «Получить бесплатную версию на 5 ящиков».
В состав бесплатной лицензии почтового сервера не входят дополнительные модули.
UserGate Mail Server поддерживает резервное копирование почтовых сообщений, посылку автоматических ответов, настройку правил по обработке почты, управление сервисами в веб-консоли и выбор произвольного диапазона дат в истории сообщений.
8) Rumble Mail Server
Rumble – миниатюрный почтовый сервер для личного использования. Приложение может запускаться только из интерфейса командной строки вашей системы.
Особенности программы «Rumble»:
1. Поддержка SMTP, POP3 и IMAP
2. Работа с Apache
3. Простота в использовании
4. Rumble бесплатна!
9) Humster
Hamster — это бесплатное серверное приложение под Windows, которое позволяет в локальной сети полноценно работать с usenet news по протоколу NNTP и почтой по протоколам SMTP, POP3, IMAP. Его особенностью является продвинутые возможности по обработке сообщений. Оно может самостоятельно собирать почту с ящиков в интернет (аналогично функционированию программы fetchmail в *nix), отправлять в локальный ящик, предварительно обработав (аналогично функционированию программы procmail в *nix), раздавать по POP3, отправлять по SMTP и NNTP. Имеется настройка прав доступа к ресурсам сервера для пользователей. Богатый язык макросов. Поддерживается SSL.
10) Axigen
Почтовый сервер Axigen это коммуникационный сервер большого класса, интегрирующий сервисы SMTP, POP3, IMAP и WebMail. Имея очень хорошую настройку и безопасность, дает администраторам отличный контроль над трафиком почтового сервера.
Обзор бесплатных почтовых серверов под Windows : 14 комментариев
Про Eserv (www.eserv.ru) забыли…
Ну и где тут бесплатно?
Свободно распространяются только тестовые версии. Их можно использовать для оценки их пригодности для вашего предприятия в течение 30 дней. После этого для дальнейшей эксплуатации следует зарегистрировать свою копию продукта и приобрести лицензию.
А что мне делать после 30 дней? Покупать? Я ж рассматриваю ПОЛНОСТЬЮ работоспособные приложения, которые можно использовать без срока действия.
У Eserv есть не только бесплатные версии, он вообще GPL, см. страницу «Как самостоятельно скомпилировать Eserv».
А в ваш обзор входит OMS и UGMS, которые, по-моему, не бесплатны.
OMS — бесплатен, UGMS — присутствует бесплатная версия, с некоторыми ограничениями, зато без триального периода — пользуйся сколько хочешь.
Eserv и Eproxy являются коммерческими продуктами. Свободно распространяются только тестовые версии. Их можно использовать для оценки их пригодности для вашего предприятия в течение 30 дней. После этого для дальнейшей эксплуатации следует зарегистрировать свою копию продукта и приобрести лицензию. Где вы увидели GPL? Если в Wikipedia — то это не авторитетный источник.
просьба акцентироваться на бесплатных решениях 🙂
А где же бесплатность UserGate? На сайте производителя сразу же висит предложение его купить
1) Заходите по ссылке http://usergate.ru/products/usergate_mail_server/
2) Опускаетесь почти в самый низ и находите абзац
Бесплатная лицензия на 5 почтовых ящиков
Для получения возможности бесплатного использования UserGate Mail Server на 5 почтовых ящиков необходимо:
Скачать дистрибутив;
В окне регистрации UserGate Mail Server выбрать «Получить бесплатную версию на 5 ящиков».
В состав бесплатной лицензии почтового сервера не входят дополнительные модули.
PS. Кстати, об этом так же написано и в моём обзоре по поводу UserGate
Hamster забыли.
Он тоже бесплатный — «Hamster, a free news- and mailserver for personal, family and workgroup use».
В конторе используется больше 7 лет — полет нормальный.
Еще есть Macallan Mail Solution
почтовые серверы для Windows полностью соснули, некоторые бесплатные, но старые версии, usergate ПЛАТНЫЙ, бесплатно только для 5 юзеров ну и где бесплатность? почтовые серверы для UNIX покруче будут
А кто-нибудь знает, как у Rumble попасть в webmail?
Прошу совета. Необходимо организовать на Windows Server 2003 почтовый сервер. Существующий ящик на lenta.ru близок к лимиту. Требуется использовать сущ. ящик на lenta.ru в качестве буферного, сеть из 15 компов + сервер должна работать с почтой с помощью клиентов через наш сервер и этот ящик (входящие и исходящие письма должны удаляться, дабы не был превышен лимит в 2.5 ГБ).
Каким софтом / иными мерами можно выполнить сие?
Поднять локальный почтовый сервер. Паралельно выкачивать письма с удалённого ящика и отдавать в локальный почтовый сервер.
Настраиваем домашний почтовый сервер и уходим с «бесплатной» почты
С каждым годом рекламы в интернете становится все больше, а подают ее с каждым разом все навязчивее. Дошло уже до почты: реклама в интерфейсе почтового ящика выглядит как первое непрочитанное письмо, которое машинально хочется открыть. Я не против рекламы, особенно когда она в тему и не сбивает с толку. Но маскировать её под непрочитанное письмо ‒ это перебор. Чувствуется, что следующим шагом рекламу начнут вставлять прямо в тело письма.
Мы уже привыкли, что наша активность в интернете анализируется для подсовывания релевантной рекламы. Но там нет персональных данных в чистом виде: есть пользователь-1 с такими-то привычками, есть пользователь-2 с другими привычками, пользователь-3, 4, 5 и т.д.
Совсем другое дело почта. Обработка почты ‒ это зачастую обработка персональных данных. Все что вы покупаете ‒ квитанции приходят к вам на почту, какими сервисами вы пользуетесь ‒ регистрационные данные и отчеты приходят к вам на почту, купили билеты в отпуск ‒ все данные о вашей поездке у вас в почте. А почта у вас где?
Проблема в том, что вся почта обрабатывается, плюс нет гарантий, что не будет случаев злоупотребления. А реклама в почте ‒ это просто вишенка на торте. Так что если вы неугомонный параноик, то вам давно пора отказаться от «бесплатной» почты.
Но отказаться не так то просто:
Можно завести ящик на другом почтовом сервисе, но там тоже не будет никаких гарантий отсутствия обработки писем.
Можно арендовать виртуальный сервер в интернете и настроить его как почтовый сервер, но без физического доступа ваши письма никогда не станут только вашими.
Можно сделать почту на каком-нибудь зашифрованном protonmail’e, но по этой же причине он стал так популярен у мошенников, что был заблокирован в этой стране.
В голове остается один вариант ‒ делать почтовый сервер прямо дома. Идея на первый взгляд смешная, но если разобраться, то можно получить довольно интересный результат с некоторыми дополнительными бонусами для всей домашней сети. Что у меня из этого вышло ‒ читайте далее.
Домашний сервер
Очевидно, что для почтового сервера нам нужен комп или его аналог, который будет доступен извне 24/7. Можно было бы посмотреть в сторону чего-нибудь компактного и маломощного типа Raspberry Pi, но т.к. мне нужен задел на будущее для других домашних систем, то я отдал предпочтение полноценному компу. На комп устанавливается гипервизор VMWare ESXi, а на нем уже живут виртуальные машины с необходимыми функциями и в том числе почтовый сервер. Такой подход дает дополнительную гибкость при проведении экспериментов и распределении ресурсов, а в случае чего виртуальные машины можно легко перенести на другое железо. Если нет особых требований к скорости работы, то для компа можно взять обычный HDD, т.к. от разделов подкачки виртуальных машин б/ушный SSD может быстро деградировать. Либо делать виртуальные машины без swap. Либо ставить два диска: основной диск виртуальной машины живет на SSD, а раздел подкачки на HDD. Компьютер я выбрал HP ProDesk 600 G2 SFF с процессором i5-6500: компактный корпус, достаточно низкое энергопотребление и ESXi на него устанавливается как родной. Все это хозяйство в режиме простоя потребляет 25 Вт, под нагрузкой 40-45 Вт. В частных объявлениях такой комп вполне реально найти за вменяемые деньги.
ESXi устанавливается со всеми настройками по умолчанию, затем сетевому интерфейсу присваивается статический IP. Более подробно и с картинками см. здесь.
Связь, электричество, бэкапы
Дома, в отличие от датацентра возможны перебои электричества, поэтому нужен ИБП с батареей на несколько часов работы сервера и роутера. От этого же электричества зависит работа оборудования внутридомового провайдера, поэтому ИБП для домашнего сервера не решает проблему отключения провайдерского оборудования и интернета вместе с электричеством. Получается, что на домашний роутер должно быть заведено два провайдера: основной (например, по витой паре или оптике) и резервный (через LTE модем). В разных роутерах процесс настройки выглядит по разному, но суть не меняется. Для резервного интернет-канала я взял LTE модем Huawei E3372-320. Свисток хорош тем, что есть в свободной продаже в разлоченном виде и он оснащен разъемами для внешних антенн, что в некоторых ситуациях может сильно улучшить качество связи.
Однако, с двумя провайдерами у вас будет два разных серых IP адреса, а почтовому серверу нужно нормальное доменное имя и по хорошему белый IP. Выход из ситуации у меня такой: арендуется виртуальный сервер (VPS) за границей, на нем настраивается VPN-сервер, а на почтовом сервере настраивается туннель до VPS. Кроме того, туннель можно поднять прямо с домашнего роутера (если он умеет) и таким образом ликвидируется сразу два зайца: мы получаем статический белый IP не зависящий от локальных провайдеров, а после тюнинга маршрутизации на роутере ‒ централизованный обход блокировок Роскомпозора для всех устройств домашней сети. Схема получается примерно такая:
Будет не очень весело, если жесткий диск домашнего сервера неожиданно накроется вместе со всей почтой. Поэтому необходимость бэкапов сервера даже не обсуждается. О настройке бэкапов поговорим в конце статьи.
Условные обозначения
В статье будут содержаться примеры конфигурации, в которых вам потребуется заменить некоторые значения на свои:
Hostname (имя компьютера) почтового сервера ‒ mail
IP адрес VPS сервера ‒ 1.2.3.4
Локальная домашняя сеть 192.168.1.0 с маской /24 (255.255.255.0) и шлюзом 192.168.1.1
IP адрес почтового сервера в локальной сети ‒ 192.168.1.3
Внутри VPN тунеля IP адрес VPN сервера 192.168.77.1, IP адрес VPN клиента 192.168.77.3
Арендуем VPS, настраиваем VPN сервер
Есть куча разных VPS провайдеров, я выбрал vps2day.com, потому что они не просят персональные данные при регистрации, платить можно криптой, можно выбрать страну, где разместить сервер. Для целей VPN будет достаточно VPS в базовой конфигурации, который обойдется в 5 €/месяц. Сперва я зарегистрировал почтовый ящик на protonmail’e, а затем на него оформил аккаунт в vps2day, закинул крипту и арендовал VPS. В качестве ОС я выбрал Debian 10, через несколько минут после оформления аренды на почту приходит отбойник с IP адресом сервера и учетными данными для SSH подключения.
В качестве решения для VPN я выбрал Wireguard, но для установки на Debian 10 надо добавить его репозиторий в apt:
Создаем каталог для файлов конфигурации (если его вдруг нет), назначаем права доступа туда, переходим в него и генерируем закрытый и открытый ключи:
На выходе получим два файла: privatekey с закрытым ключом и publickey с открытым ключом. Создаем файл конфигурации /etc/wireguard/wg0.conf вида:
Чуть позже мы дополним этот файл, а пока едем дальше.
Регистрация домена, настройка DNS
В редакторе DNS зоны нужно добавить «А» запись с именем mail и с указанием на внешний IP нашего почтового сервера, коим будет являться арендованный VPS:
Запись «MX» с приоритетом 10 и указанием на mail.example.com:
Запись «TXT» с SPF v=spf1 ip4:1.2.3.4 mx
Запись «TXT» DMARC v=DMARC1; p=reject; adkim=s; aspf=s; pct=100; :
Создание виртуальной машины
На ESXi создаем виртуальную машину (ВМ). Диск почтового сервера будем шифровать, поэтому нужно учесть один нюанс. По умолчанию гипервизор создает swap файл, равный размеру оперативной памяти виртуальной машины в каталоге ВМ. Таким образом есть вероятность, что ключ шифрования диска, хранимый в памяти ВМ во время работы окажется в swap файле на гипервизоре, что совсем не здорово. Чтобы этого не случилось, в настройках виртуальной машины нужно зарезервировать всю отведенную под ВМ оперативную память, тогда swap файл будет нулевой длины.
Установка системы и начальная конфигурация
В гостевой ОС вполне можно отказаться от раздела подкачки, особенно если назначить ВМ достаточное количество оперативки, а datastore гипервизора находится на SSD. Я взял Debian 10, процесс установки полностью стандартный за исключением разметки диска. Имя сервера задаем mail, домен example.com. Система ставится в минимальной конфигурации. В разметке дисков я сделал первый раздел под /boot и второй раздел с шифрованием:
Для применения изменений выполняем команду (не забываем здесь заменить название сетевого интерфейса на свое):
IPv6 я тоже отключаю, для этого в конец файла /etc/sysctl.conf добавляю строку:
Чтобы параметр применился выполняем команду:
Проверить, отключился ли IPv6 довольно легко. Для этого нужно просмотреть вывод нижеследующей команды на наличие ipv6 адресов:
Устанавливаем ssh и wget:
Коннектимся к серверу по ssh и едем дальше.
Настройка VPN подключения
Устанавливаем wireguard на почтовом сервере так же как это делали на VPS несколькими шагами выше:
Создаем файл конфигурации /etc/wireguard/wg0.conf следующего содержания:
Теперь идем по SSH на VPS сервер и в файл конфигурации /etc/wireguard/wg0.conf добавляем:
Не забываем сделать файл исполняемым командой chmod +x /etc/network/if-up.d/firewall
На VPS сервере запускаем wireguard:
Возвращаемся на почтовый сервер и запускаем wireguard там:
Настройка почтового сервера
В интернете есть пара отличных гайдов по развертыванию почтового сервера на Debian: e-mail caramel и ispmail. Основная сложность настройки заключается в том, что нужно правильным образом сконфигурировать довольно много файлов и нигде не накосячить. Нужно настроить Apache, PostgreSQL, Postfix, Dovecot, rspamd, sieve, сгенерировать SSL сертификаты и DKIM, выставить права. Со знанием дела весь процесс занимает несколько часов, а у новичков может легко занять пару дней и не факт что все получится с первого раза.
По гайду «e-mail caramel» на выходе получается почтовый сервер с IMAP протоколом для клиентов с обязательным шифрованием STARTTLS и Nextcloud’ом в качестве webmail. Сервер убирает из писем мета-теги User-Agent и Received. Учет почтовых пользователей ведется в БД.
Чтобы не заниматься курением конфигов, а результат был предсказуем ‒ я сделал скрипт, который автоматизирует 90% всего процесса из вышеупомянутого гайда с некоторыми отличиями:
Я не хочу ставить на почтовый сервер ресурсоемкий Nextcloud, вместо него я буду использовать Rainloop
Подрежем еще несколько мета-тегов: X-Mailer, X-Originating-IP, X-PHP-Originating-Script, Mime-Version. При этом в оригинальном гайде фильтрация конфигурируется в master.cf, а у меня в main.cf
Скрипт устанавливает необходимые пакеты, конфигурирует apache, БД, конфигурирует почтовые службы и на выходе получается практически готовый к употреблению почтовый сервер. При этом я пока не стал включать в скрипт генерирование SSL и DKIM, сделаем это руками чуть ниже.
Скрипт пока не тестировался на корректность работы при многократном запуске. Если почтовый сервер у вас развернут как виртуальная машина, то перед выполнением лучше сделать снапшот ВМ.
Скачиваем и распаковываем скрипт:
Всего в каталоге 3 файла:
Генерирование сертификатов, завершение настройки
Генерируем SSL сертификат командой. Не забываем заменить example.com на свой домен:
Генерируем DKIM. В команде ниже вместе example.com ‒ ваш домен, а вместо 20210121 можно взять текущую дату (ггггммдд):
Результатом выполнения команды будет такой текст:
В файл /etc/rspamd/dkim_selectors.map нужно добавить дату, чтобы получилось примерно так:
Идем в редактор DNS зоны у регистратора, добавляем запись «TXT» с именем 20210121._domainkey и значением v=DKIM1; k=rsa; p=. Дата в имени у вас будет своя, параметры перечисляются без двойных кавычек. Примерно так:
Тут есть нюанс. По умолчанию длина ТХТ записи может быть до 255 символов, а т.к. мы сгенерировали 2048 битный DKIM ключ, то его длина выходит за это ограничение и если вы внимательно посмотрите на результат генерации ключа, параметр p разбит на два, каждый из которых в своих двойных кавычках. Если регистратор поддерживает ТХТ записи большей длины, то две части можно просто схлопнуть, убрав кавычки. У GoDaddy, например, максимальная длина TXT записи 1024 символа. А если регистратор не поддерживает больше 255 символов, то ключ записывается в две ТХТ записи. Или можно сгенерировать более короткий ключ на 1024 бита.
И 4 вложенных параметра, начинающихся на «-o». Двойной пробел перед ними нужно сохранить. Последний параметр, возможно нужно будет просто дописать. На всякий случай в архиве со скриптом приложен готовый к употреблению файл master.cf. Должно получиться так:
Теперь заведем первый почтовый ящик. Для этого нужно воспользоваться скриптом mailuser-addnew.sh. Нужно будет ввести короткое имя (слово до @example.com), доменное имя (сам example.com) и пароль два раза. После этого можно попробовать настроить любой почтовый клиент используя созданную учетную запись.
В качестве примера пусть будет oleg@example.com. Для настройки почтового клиента набор параметров будет таким: почтовый адрес oleg@example.com, имя пользователя для IMAP и для SMTP так же oleg@example.com, сервер входящей почты IMAP mail.example.com, исходящей почты тоже mail.example.com, способ подключения везде STARTTLS.
Для проверки корректности настройки DKIM и SPF, можно воспользоваться ресурсом https://dkimvalidator.com, отправив туда тестовое письмо и посмотрев отчет. Все проверки должны быть в статусе pass (пройдено).
Устанавливаем Rainloop webmail
Все необходимые php модули для Rainloop уже были установлены скриптом. Скачиваем актуальную версию проекта, распаковываем, задаем права, включаем vhost на веб-сервере:
Далее добавляем наш почтовый сервер. Идем в раздел Domains, отключаем все прочие почтовые сервера и жмем по кнопке Add Domain:
Вводим параметры нашего домена и жмем Add:
Дополнительно в закладке Login можно так же указать домен:
Теперь можно пробовать заходить в webmail https://mail.example.com используя короткое имя пользователя (без @example.com):
Интерфейс выглядит лаконично, работает быстро, есть возможность настроить внешний вид под себя.
phpPgAdmin
В БД mail_server есть три основные таблицы: alias, sharedmail_boxes, users. Все пользователи с хешами паролей хранятся в users. С помощью таблицы alias можно сделать псевдонимы к уже существующим почтовым ящикам, а с помощью таблицы shared_mailboxes можно сделать доступ к определенным ящикам для нескольких людей. Вход в phpPgAdmin по адресу http://локальный-ip-адрес-сервера/phppgadmin с логином postgres и паролем, который был сгенерирован скриптом.
Если нет нужды ковырять таблицы, то можно отключить сайт с phpPgAdmin вообще:
Бэкапы
Так как почтовый сервер я делал для себя и очень ограниченного круга людей, то много пространства серверу не нужно, емкость всего диска 20 Гб. Схема резервного копирования такая: один раз бэкапится виртуальная машина почтового сервера целиком, чтобы случае чего не настраивать сервер заново. А во вне делается бэкап почтового каталога. Естественно все бэкапы шифруем. Для копий каталога отлично подойдет VPS, у которого целых 25 Гб пространства, бэкапить буду с помощью restic. Но прежде надо настроить ssh подключение до VPS по сертификату.
На почтовом сервере генерируем RSA ключ, на все вопросы мастера просто жмем Enter:
Копируем открытый ключ на VPS:
Создаем репозиторий (копии будут храниться на VPS в каталоге /mnt/mserv-bkp ):
Выполнение команды может занять несколько минут, в конце попросят придумать пароль для шифрования репозитория. Чтобы автоматизировать процесс создания резервных копий, создадим файл с переменными /root/.restic следующего содержания:
Попробуем выполнить резервное копирование почтового каталога:
Проверяем, что в репозитории что-то появилось:
Если есть наш только что созданный снапшот, то двигаемся дальше. Создаем файл /etc/root/restic с содержимым:
Делаем его исполняемым:
И добавляем в /etc/crontab на запуск раз в сутки:
Заключение
Теперь настройку почтового сервера можно считать полностью завершенной.
Как видно, владение своим почтовым сервером стоит некоторых денег. Цена складывается из оплаты регистрации домена, аренды VPS, оплаты второго провайдера дома и в конце концов электричества. В моем случае получается в районе 950 ₽ в месяц за всё. С другой стороны резервный интернет канал и VPN будут полезны для всей домашней сети, но об этом мы поговорим в следующий раз.
Спасибо, что дочитали. Комментарии, вопросы, замечания и пожелания приветствуются!