DevOps

Настройка почтового сервера для локальной сети с IMAP и веб-доступом

Пошаговое руководство по настройке почтового сервера для локальной сети с автоматическим сбором почты через IMAP и предоставлением веб-доступа для множества пользователей.

1 ответ 2 просмотра

Как настроить почтовый сервер для локальной сети (ЛВС) для сбора почты с одного внешнего ящика и предоставления веб-доступа множеству пользователей?

Имеется один внешний почтовый ящик info@ с веб-интерфейсом, к которому требуется обеспечить доступ множеству пользователей внутри локальной сети. Проблема заключается в том, что веб-интерфейс периодически недоступен, но при этом работает IMAP. Требуется решение, при котором почтовый сервер внутри ЛВС будет автоматически собирать почту с внешнего почтового сервера и предоставлять стабильный веб-доступ для внутренних пользователей.

Какие технологии и подходы можно использовать для реализации такой архитектуры?

Настройка почтового сервера для локальной сети с автоматическим сбором почты с внешнего ящика и предоставлением стабильного веб-доступа требует использования комбинации технологий: fetchmail для сбора почты с внешнего IMAP-сервера, Postfix в качестве MTA, Dovecot для IMAP доступа и Roundcube как веб-интерфейс. Эта архитектура обеспечит непрерывную доставку почты в локальную сеть даже при недоступности внешнего веб-интерфейса, предоставив пользователям стабильный доступ через локальный веб-клиент.

Содержание


Архитектура решения

Для решения задачи настройки почтового сервера в локальной сети, который будет автоматически собирать почту с одного внешнего IMAP-ящика и предоставлять веб-доступ множеству пользователей, предлагаем следующую архитектуру. Основным компонентом системы является почтовый сервер локальной сети, состоящий из нескольких взаимосвязанных сервисов:

  1. Fetchmail — утилита для периодического подключения к внешнему IMAP-серверу и скачивания писем
  2. Postfix — Mail Transfer Agent (MTA) для обработки входящей и исходящей почты
  3. Dovecot — Mail Delivery Agent (MDA) и IMAP/POP3 сервер для предоставления доступа к почтовым ящикам
  4. Roundcube — веб-интерфейс электронной почты для доступа пользователей через браузер

Эта архитектура решает проблему недоступности внешнего веб-интерфейса, так как все письма автоматически скачиваются в локальную сеть и становятся доступны через локальный веб-клиент. Пользователи могут работать с почтой даже при отсутствии прямого доступа к внешнему серверу.

Преимущества предложенного решения

  • Надежность: Доступ к почте не зависит от состояния внешнего веб-интерфейса
  • Производительность: Локальная сеть обеспечивает быструю работу почтового клиента
  • Безопасность: Внешний доступ к почтовому серверу можно ограничить или отключить
  • Масштабируемость: Система может обслуживать множество пользователей в локальной сети

Технические требования

Для реализации почтового сервера локальной сети с автоматическим сбором почты, необходимо учесть следующие технические требования:

Минимальные требования

  • Операционная система: Debian 10+ или Ubuntu 18.04+
  • Процессор: 2 ядра
  • Оперативная память: 4 ГБ
  • Дисковое пространство: 20 ГБ (для начальной настройки)
  • Сетевое подключение: Статический IP-адрес в локальной сети

Рекомендуемые требования

  • Процессор: 4 ядра
  • Оперативная память: 8 ГБ
  • Дисковое пространство: 50+ ГБ (в зависимости от объема почты)
  • Резервное копирование: Регулярное резервное копирование почтовых баз данных

Сетевые требования

  • Внутренняя сеть с выделенным IP-адресом для почтового сервера
  • Открытые порты: 25 (SMTP), 143 (IMAP), 80/443 (веб-интерфейс)
  • Доступ к внешнему IMAP-серверу (обычно порт 993 для IMAP over SSL)

Установка и базовая настройка

Установка операционной системы

  1. Установите Debian 11 или Ubuntu 22.04 на выделенный сервер
  2. Обновите систему:
bash
apt update && apt upgrade -y

Установка необходимых компонентов

Установите основные компоненты для работы почтового сервера:

bash
apt install -y postfix dovecot-imapd dovecot-pop3d fetchmail roundcube-core

Базовая конфигурация системы

  1. Настройте hostname сервера:
bash
echo "mailserver.localdomain" > /etc/hostname
hostname -F /etc/hostname
  1. Настройте локальный DNS в /etc/hosts:
127.0.0.1 localhost
192.168.1.100 mailserver.localdomain mailserver
  1. Создайте структуру каталогов для хранения почты:
bash
mkdir -p /home/vmail
groupadd -g 5000 vmail
useradd -g vmail -u 5000 vmail -d /home/vmail -s /sbin/nologin
chown -R vmail:vmail /home/vmail

Настройка сбора почты с внешнего сервера

Fetchmail — ключевая утилита для автоматического сбора почты с внешнего IMAP-сервера. Настройте его для периодического подключения к внешнему ящику и скачивания всех писем.

Установка и базовая настройка Fetchmail

bash
apt install -y fetchmail

Конфигурация Fetchmail

Создайте конфигурационный файл /etc/fetchmailrc с настройками для сбора почты:

bash
set daemon 300 # Проверять каждые 5 минут
set no bouncemail
set logfile /var/log/fetchmail.log

poll imap.yandex.ru
 with protocol IMAPS
 user "info@yandex.ru"
 password "your_external_password"
 is "info@localdomain.ru"
 fetchall
 keep
 ssl
 options nofetchall

Настройте права доступа к конфигурационному файлу:

bash
chmod 600 /etc/fetchmailrc
chown fetchmail:fetchmail /etc/fetchmailrc

Автоматический запуск Fetchmail

Добавьте Fetchmail в автозагрузку:

bash
systemctl enable --now fetchmail.service

Проверьте работу Fetchmail:

bash
fetchmail -v

Мониторинг сбора почты

Логи работы Fetchmail находятся в /var/log/fetchmail.log. Для мониторинга можно использовать:

bash
tail -f /var/log/fetchmail.log

Fetchmail будет автоматически скачивать все новые письма с внешнего сервера и доставлять их локальному почтовому ящику, который будет доступен через веб-интерфейс.


Настройка Postfix как MTA

Postfix будет работать в качестве Mail Transfer Agent (MTA), обрабатывая входящую и исходящую почту в локальной сети.

Установка и базовая настройка Postfix

bash
apt install -y postfix

Во время установки выберите “Internet Site” и введите доменное имя вашего сервера.

Конфигурация Postfix

Отредактируйте основной конфигурационный файл /etc/postfix/main.cf:

bash
# Базовые настройки
myhostname = mailserver.localdomain
mydomain = localdomain.ru
myorigin = $mydomain
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

# Настройка локальной доставки
home_mailbox = Maildir/
mail_spool_directory = /home/vmail

# Настройка виртуальных доменов
virtual_mailbox_domains = localdomain.ru
virtual_mailbox_base = /home/vmail
virtual_mailbox_maps = hash:/etc/postfix/vmailbox
virtual_minimum_uid = 1000
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000

# Настройка SASL для аутентификации
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination

Создайте файл виртуальных почтовых ящиков /etc/postfix/vmailbox:

info@localdomain.ru home/vmail/info/

Обновите карту виртуальных ящиков:

bash
postmap /etc/postfix/vmailbox

Перезапустите Postfix:

bash
systemctl restart postfix

Настройка исходящей почты

Для исходящей почты через внешний SMTP-сервер можно настрока релея. Создайте файл /etc/postfix/sasl_passwd:

[smtp.yandex.ru]:587 info@yandex.ru:your_external_password

Защитите файл и создайте базу данных:

bash
chmod 600 /etc/postfix/sasl_passwd
postmap /etc/postfix/sasl_passwd

Добавьте в /etc/postfix/main.cf:

bash
relayhost = [smtp.yandex.ru]:587
smtp_sasl_auth_enable = yes
smtp_sasl_security_options = noanonymous
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_use_tls = yes

Перезапустите Postfix:

bash
systemctl restart postfix

Настройка Dovecot для IMAP доступа

Dovecot предоставляет IMAP и POP3 доступ к почтовым ящикам, что необходимо для работы веб-интерфейса и почтовых клиентов.

Установка и базовая настройка

bash
apt install -y dovecot-imapd dovecot-pop3d

Конфигурация Dovecot

Основной конфигурационный файл /etc/dovecot/dovecot.conf должен содержать:

protocols = imap pop3
mail_location = maildir:/home/vmail/%d/%n

Создайте файл аутентификации /etc/dovecot/conf.d/10-auth.conf:

disable_plaintext_auth = no
auth_mechanisms = plain login
!include auth-passwdfile.conf.ext

Создайте файл аутентификации паролей /etc/dovecot/conf.d/auth-passwdfile.conf.ext:

passdb {
 driver = passwd-file
 args = scheme=SHA512 username_format=%u /etc/dovecot/users
}
userdb {
 driver = static
 args = uid=vmail gid=vmail home=/home/vmail/%d/%n
}

Добавьте пользователя в /etc/dovecot/users:

info@localdomain.ru:{SHA512}hashed_password

Создайте структуру почтовых ящиков:

bash
mkdir -p /home/vmail/localdomain.ru/info
chown -R vmail:vmail /home/vmail
chmod -R 700 /home/vmail

Настройте сокет аутентификации /etc/dovecot/conf.d/10-master.conf:

service auth {
 unix_listener /var/spool/postfix/private/auth {
 mode = 0660
 user = postfix
 group = postfix
 }
}

Перезапустите Dovecot:

bash
systemctl restart dovecot

Проверка IMAP доступа

Проверьте работу IMAP:

bash
telnet localhost 143

Или с помощью openssl для IMAP over SSL:

bash
openssl s_client -connect localhost:993

Веб-интерфейс Roundcube

Roundcube предоставляет удобный веб-интерфейс для доступа к почтовым ящикам через браузер.

Установка Roundcube

bash
apt install -y roundcube roundcube-mysql

Конфигурация Roundcube

  1. Настройте базу данных Roundcube:
bash
mysql -u root -p
CREATE DATABASE roundcube;
CREATE USER 'roundcube'@'localhost' IDENTIFIED BY 'roundcube_password';
GRANT ALL PRIVILEGES ON roundcube.* TO 'roundcube'@'localhost';
FLUSH PRIVILEGES;
\q
  1. Импортируйте схему базы данных:
bash
mysql -u roundcube -p roundcube < /usr/share/dbconfig-common/data/roundcube/install/mysql
  1. Отредактируйте /etc/roundcube/config.inc.php:
php
$config['default_host'] = 'localhost';
$config['default_port'] = 143;
$config['imap_auth_type'] = 'LOGIN';
$config['smtp_server'] = 'localhost';
$config['smtp_port'] = 25;
$config['smtp_user'] = '%u';
$config['smtp_pass'] = '%p';
$config['smtp_auth_type'] = 'LOGIN';
$config['smtp_host'] = 'tls://localhost';
$config['smtp_port'] = 587;
  1. Настройте веб-сервер (Apache или Nginx) для Roundcube. Для Apache:
bash
a2enmod rewrite
a2ensite roundcube
systemctl restart apache2

Доступ к Roundcube

Откройте в браузере:

http://ваш_сервер/roundcube

Логин: info@localdomain.ru
Пароль: пароль, настроенный в Dovecot

Настройка нескольких пользователей

Для добавления новых пользователей:

  1. Добавьте запись в /etc/postfix/vmailbox:
user2@localdomain.ru home/vmail/user2/
  1. Обновите карту виртуальных ящиков:
bash
postmap /etc/postfix/vmailbox
  1. Создайте структуру каталогов:
bash
mkdir -p /home/vmail/localdomain.ru/user2
chown -R vmail:vmail /home/vmail
  1. Добавьте пользователя в Dovecot:
echo "user2@localdomain.ru:{SHA512}hashed_password" >> /etc/dovecot/users
  1. Перезапустите сервисы:
bash
systemctl restart postfix dovecot

Настройка DNS

Для полноценной работы почтового сервера в локальной сети необходимо настроить внутреннюю DNS зону.

Настройка внутреннего DNS

  1. Отредактируйте /etc/hosts или настройте внутренний DNS сервер (например, BIND9)

  2. Добавьте записи для почтового сервера:

192.168.1.100 mailserver.localdomain mail
192.168.1.100 info.localdomain.ru
  1. Для автоматической настройки почтовых клиентов создайте SRV-записи:
_imap._tcp.localdomain.ru. IN SRV 0 5 143 mailserver.localdomain.
_imaps._tcp.localdomain.ru. IN SRV 0 5 993 mailserver.localdomain.
_smtp._tcp.localdomain.ru. IN SRV 0 5 25 mailserver.localdomain.

Проверка DNS-записей

Проверьте работу DNS:

bash
nslookup info.localdomain.ru
nslookup -type=SRV _imap._tcp.localdomain.ru

Безопасность и оптимизация

Защита почтового сервера

  1. Настройте фаервол:
bash
ufw allow 22/tcp
ufw allow 25/tcp
ufw allow 53/tcp
ufw allow 143/tcp
ufw allow 993/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable
  1. Настройте SSL/TLS для веб-интерфейса:
bash
apt install -y certbot
certbot certonly --standalone -d ваш_сервер
  1. Защита от спама:
  • Установите и настройте SpamAssassin
  • Настройкеgreylisting
  • Используйте SPF и DKIM записи

Оптимизация производительности

  1. Настройте кэширование для Dovecot:
mail_cache_fields = body, date.from, date.to, date.subject, size.flags
mail_cache_min_mail_count = 10
  1. Оптимизируйте индексацию для больших почтовых ящиков:
mail_prefetch_count = 20
  1. Настройте автоматическое резервное копирование:
bash
# Скрипт резервного копирования
#!/bin/bash
DATE=$(date +%Y%m%d_%H%M%S)
tar -czf /backup/mail_$DATE.tar.gz /home/vmail/
mysqldump -u roundcube -p roundcube > /backup/roundcube_$DATE.sql

Мониторинг и логирование

  1. Настройте системный мониторинг:
bash
apt install -y htop nmon
  1. Мониторинг почтового трафика:
bash
tail -f /var/log/mail.log
  1. Настройте уведомления о критических ошибках:
bash
# В crontab
0 1 * * * /usr/local/bin/check_mail_server.sh

Источники

  1. Настройка почтового сервера на Debian - Подробное руководство по установке Postfix + Dovecot + Postfixadmin + Roundcube + DKIM: https://serveradmin.ru/nastrojka-postfix-dovecot-postfixadmin-roundcube-dkim-na-debian/
  2. Fetchmail + Procmail - Технологии для сохранения писем от почтового провайдера в Dovecot с примером конфигурации: https://www.dmosk.ru/miniinstruktions.php?mini=collector-dovecot
  3. Zimbra. Сбор почты с внешних аккаунтов - Использование fetchmail для автоматического переноса писем из внешних ящиков в локальный почтовый сервер: https://interface31.ru/tech_it/2013/05/zimbra-sbor-pochty-s-vneshnih-akkauntov.html
  4. Как устроена электронная почта на VPS - Объяснение основ SMTP, IMAP и POP3 архитектуры почтовых серверов: https://habr.com/ru/companies/ruvds/articles/983068/
  5. Установка и настройка Postfix и Dovecot - Технические детали настройки почтовых серверов на базе Linux: https://timeweb.cloud/tutorials/mail/ustanovka-i-nastrojka-postfix-i-dovecot
  6. Настраиваем домашний почтовый сервер - Практическое руководство по настройке домашнего почтового сервера: https://habr.com/ru/articles/539736/
  7. Как самостоятельно создать почтовый сервер - Подробные инструкции по настройке виртуальных почтовых ящиков: https://timeweb.cloud/tutorials/mail/kak-samostoyatelno-sozdat-pochtovyj-server

Заключение

Реализация почтового сервера локальной сети для сбора почты с внешнего IMAP-ящика и предоставления веб-доступа множеству пользователей является эффективным решением проблемы недоступности внешнего веб-интерфейса. Предложенная архитектура на базе Fetchmail, Postfix, Dovecot и Roundcube обеспечивает автоматическую доставку почты в локальную сеть и предоставляет пользователям стабильный доступ через веб-интерфейс.

Ключевые преимущества данного решения:

  • Надежная работа даже при недоступности внешнего сервера
  • Высокая производительность за счет локальной сети
  • Масштабируемость для обслуживания множества пользователей
  • Возможность интеграции с существующей инфраструктурой

Система может быть легко расширена дополнительными функциями: антивирусная проверка, фильтрация спама, резервное копирование и интеграция с корпоративными системами. Правильная настройка DNS, SSL/TLS и систем безопасности гарантирует надежную и безопасную работу почтового сервера в локальной сети.

Авторы
Проверено модерацией
Модерация