Зачем это нужно?
Развертывание собственного почтового сервера в локальной сети (LAN) — отличный способ для обучения, тестирования веб-приложений, организации внутренней корпоративной почты без выхода в интернет или создания автономной системы уведомлений. В отличие от настройки сервера для работы в интернете (с DNS, SPF, DKIM, борьбой со спамом), задача для локальной сети гораздо проще и может быть выполнена за 30-60 минут.
В этом руководстве мы используем Postfix — надежный, безопасный и стандартный агент передачи почты (MTA) для Linux. Мы настроим его для приема и доставки почты внутри локальной сети между пользователями с адресами вида user@example.lan.
Предварительные требования
- Компьютер с Ubuntu/Debian или другим дистрибутивом Linux (инструкции адаптированы для Debian-based систем).
- Доступ с правами суперпользователя (sudo).
- Базовое понимание командной строки.
- Локальная сеть, где компьютеры "видят" друг друга по именам или IP-адресам.
Шаг 1: Установка Postfix
Откройте терминал и выполните:
sudo apt update
sudo apt install postfix -y
Во время установки появится синий диалог настройки:
- Тип конфигурации: Выберите "Internet Site" (да, даже для локальной сети — эта конфигурация наиболее универсальна).
- Имя почтовой системы (System mail name): Введите домен, который вы хотите использовать для своей локальной почты. Например, example.lan. Это ключевой параметр!
Шаг 2: Базовая настройка Postfix
Основной файл конфигурации Postfix — /etc/postfix/main.cf. Мы отредактируем его ключевые параметры.
Откройте файл в любом текстовом редакторе, например, nano:
sudo nano /etc/postfix/main.cf
Найдите и измените/добавьте следующие строки:
# Доменное имя вашего сервера. Уже должно быть установлено.
myhostname = mail.example.lan
# Основной домен для почты (то, что вы указали при установке).
mydomain = example.lan
# От кого мы будем принимать почту?
# Разрешаем прием почты для нашего домена и с localhost.
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
# Альтернативно, для простоты в небольшой сети:
# mydestination = $mydomain, localhost.$mydomain, localhost
# ОГРАНИЧИВАЕМ прием почки только локальной сетью!
# Запрещаем релеи (пересылку) извне. Важно для безопасности.
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.1.0/24
# Замените 192.168.1.0/24 на подсеть вашей локальной сети (например, 10.0.0.0/24).
# Запрещаем релей для всех остальных.
relayhost =
# Не принимаем почту с неизвестных доменов.
local_recipient_maps =
# Упрощаем имена для локальной сети.
myorigin = $mydomain
inet_interfaces = all
# Устанавливаем протокол по умолчанию для локальной доставки (важно для работы с maildir).
home_mailbox = Maildir/
Пояснение: Параметр mynetworks — самый важный для безопасности. Он говорит Postfix: "Принимай и пересылай почту без пароля только с этих доверенных IP-адресов (вся локальная сеть)". Параметр home_mailbox меняет формат хранения писем со старого mbox на современный Maildir (папки).
Шаг 3: Добавление локальных пользователей
Postfix использует системных пользователей Linux для почтовых ящиков. Письмо для alex@example.lan будет доставлено в почтовый ящик пользователя alex.
- Создайте пользователей (если их нет):
sudo adduser alex
sudo adduser maria
- Следуйте инструкциям, задавая пароли (они нужны будут для доступа к почте через клиент).
- Проверьте, что пользователи могут получать почту: По умолчанию, при создании пользователя в Linux его почтовый ящик уже "активен".
Шаг 4: Перезапуск Postfix и проверка работы
- Примените конфигурацию:
sudo systemctl restart postfix
sudo systemctl enable postfix # для автозапуска при загрузке
2. Проверьте статус службы:
sudo systemctl status postfix
Убедитесь, что служба активна (active (running)).
3. Протестируйте отправку почты локально (на самом сервере):
Установите почтовый клиент для командной строки, например, mailutils:
sudo apt install mailutils -y
Отправьте тестовое письмо с пользователя root на alex:
echo "Это тестовое письмо из локальной сети" | mail -s "Тема тестового письма" alex@example.lan
Проверьте почтовый ящик alex:
sudo su - alex
cd ~/Maildir/new
ls -la
Вы должны увидеть новый файл с письмом. Его можно прочитать командой cat или mail.
Шаг 5: Тестирование из локальной сети (с другого компьютера)
Это основной тест. Важно: На клиентском компьютере в той же сети не должно быть своего почтового сервера на порту 25.
- Узнайте IP-адрес вашего почтового сервера в локальной сети:
ip addr show
(Ищите что-то вроде 192.168.1.100 или 10.0.0.10).
2.На клиентском компьютере (Linux) установите mailutils или swaks (удобный тестер) и отправьте письмо:
# Используя mailutils (укажите SMTP-сервер явно)
echo "Письмо с другого ПК" | mail -s "Тест из сети" -S smtp=192.168.1.100 alex@example.lan
Или с помощью swaks:
sudo apt install swaks
swaks --to alex@example.lan --from maria@example.lan --server 192.168.1.100
3. На клиентском компьютере (Windows/Mac) настройте любой почтовый клиент (Thunderbird, Outlook):
Тип учетной записи: IMAP или POP3 и SMTP.
Логин/Pароль: Имя пользователя на сервере (alex) и его пароль.
Сервер входящей почты (IMAP/POP3): 192.168.1.100.
Сервер исходящей почты (SMTP): 192.168.1.100.
Важно: Отключите шифрование (TLS/SSL) и аутентификацию по логину/паролю для SMTP в этой тестовой конфигурации, так как мы разрешили отправку по IP (mynetworks). Для реального использования позже нужно будет настроить SASL.
Что дальше? Дальнейшие шаги
Ваш базовый сервер работает. Теперь можно его улучшить:
- Настройка Dovecot для полноценной работы POP3/IMAP, чтобы подключаться из клиентов с паролем.
- Включение аутентификации (SASL) для SMTP, чтобы требовать пароль при отправке даже из локальной сети.
- Настройка виртуальных почтовых ящиков (с помощью virtual), чтобы почта не была привязана к системным пользователям.
- Веб-интерфейс (Roundcube, Rainloop) для доступа к почте через браузер.