0x42
Форумчанин
- Регистрация
- 05.05.2025
- Сообщения
- 91
- Реакции
- 46
В этой статье покажу как самому на своем сервере поднять почту, будем считать что у тебя уже есть свой домен и арендован свой VPS или сервер.
Рассматривать будем Дебиан, но подойдет также и для Ubuntu.
Напомню:
Postfix - Это сервер для отправки и приема почты SMTP (порт 465 с TLS).
Dovecot - Для сбора принятой почты, доступ IMAP (порт 993, с TLS), или POP3 (порт 995, с TLS).
Вот чёткое сравнение IMAP и POP3 — два способа получения почты почтовыми клиентами (Thunderbird, Outlook, и т.д.):
1. Установка необходимых пакетов
---
2. Настройка Postfix
Файл: /etc/postfix/main.cf
---
3. Настройка Dovecot
Файл: /etc/dovecot/dovecot.conf
---
4. TLS-сертификаты
---
5. Настройка DKIM (OpenDKIM)
Файл: /etc/opendkim.conf
Генерация ключей:
Файл: /etc/default/opendkim
Добавь в /etc/postfix/main.cf:
---
6. DNS-записи
# A-записи:
# MX:
# SPF:
# DKIM:
# DMARC:
---
7. Перезапуск служб
Письма приходят на адреса вроде:
user@example.com
Пользователи должны существовать в системе:
- Если используешь maildir, то достаточно системного пользователя.
Пример:
Подключение почтовым клиентом (Thunderbird, Outlook, K-9, и т.д.):
Отправка из консоли (Для теста):
Отправка через почтовый клиент:
8. Проверка
# тест через:
— проверка TLS и шифрования.
# лог:
tail -f /var/log/mail.log
Веб-интерфейс почты
Roundcube — это веб-интерфейс для работы с почтой (веб-почтовый клиент), написанный на PHP.
Если ты хочешь читать/отправлять почту через браузер, как в Gmail или Yandex, — Roundcube как раз для этого.
Roundcube будет доступен по адресу:
Укажи:
Подробнее:
Открой в браузере:
→ должна открыться страница с информацией о PHP.
Если страница скачивается — Apache не обрабатывает PHP: проверь, включён ли модуль:
Удалить файл потом:
Запуск получения сертификата:
Если DNS работает и порт 80 открыт, Let’s Encrypt:
Открой:
→ работает ли по HTTPS?
Certbot уже ставит cron или systemd-таймер. Чтобы проверить:
Рассматривать будем Дебиан, но подойдет также и для Ubuntu.
Напомню:
Postfix - Это сервер для отправки и приема почты SMTP (порт 465 с TLS).
Dovecot - Для сбора принятой почты, доступ IMAP (порт 993, с TLS), или POP3 (порт 995, с TLS).
Вот чёткое сравнение IMAP и POP3 — два способа получения почты почтовыми клиентами (Thunderbird, Outlook, и т.д.):
Характеристика | IMAP (порт 993) | POP3 (порт 995) |
---|---|---|
Где хранятся письма | На сервере | Скачиваются на клиент и удаляются с сервера |
Синхронизация | Да (двусторонняя) | Нет (односторонняя) |
Устройство доступа | Можно с нескольких (веб, телефон, ПК) | Обычно только с одного |
Удаление с сервера | Управляется клиентом, часто остаются | Часто удаляются сразу после загрузки |
Папки/структура | Поддерживаются (входящие, отправленные и т.д.) | Нет, только входящие |
Использование | Современные клиенты, синхронизация, бэкапы | Старые клиенты, слабый интернет |
Производительность | Чуть медленнее (работа с сервером в реальном времени) | Быстро, но без синхронизации |

Код:
sudo apt update
sudo apt install postfix dovecot-core dovecot-imapd dovecot-pop3d mailutils opendkim opendkim-tools
(при установке Postfix выбери "Internet Site", имя — mail.example.com)
---

Файл: /etc/postfix/main.cf
Код:
myhostname = mail.example.com
mydomain = example.com
myorigin = /etc/mailname
inet_interfaces = all
inet_protocols = ipv4
mydestination = $myhostname, localhost.$mydomain, localhost
home_mailbox = Maildir/
smtpd_banner = $myhostname ESMTP
mynetworks = 127.0.0.0/8
relay_domains =
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
smtpd_use_tls = yes
smtpd_tls_cert_file = /etc/ssl/certs/mail.crt
smtpd_tls_key_file = /etc/ssl/private/mail.key
smtpd_tls_auth_only = yes
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination
smtp_tls_security_level = may
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
---

Файл: /etc/dovecot/dovecot.conf
Код:
!include_try /usr/share/dovecot/protocols.d/*.protocol
Файл: /etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:~/Maildir
Файл: /etc/dovecot/conf.d/10-auth.conf
disable_plaintext_auth = yes
auth_mechanisms = plain login
!include auth-system.conf.ext
Файл: /etc/dovecot/conf.d/10-master.conf
service auth {
unix_listener /var/spool/postfix/private/auth {
mode = 0660
user = postfix
group = postfix
}
}
---

Код:
# Let's Encrypt:
apt install certbot
certbot certonly --standalone -d mail.example.com
Сертификаты будут здесь:
[*]/etc/letsencrypt/live/mail.example.com/fullchain.pem
[*]/etc/letsencrypt/live/mail.example.com/privkey.pem
Укажи пути в postfix:
В файле /etc/postfix/main.cf:
smtpd_tls_cert_file = /etc/letsencrypt/live/mail.example.com/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/mail.example.com/privkey.pem
Укажи пути в dovecot:
Файл /etc/dovecot/conf.d/10-ssl.conf:
ssl = yes
ssl_cert = </etc/letsencrypt/live/mail.example.com/fullchain.pem
ssl_key = </etc/letsencrypt/live/mail.example.com/privkey.pem
Автообновление сертификатов:
echo "0 3 * * * root certbot renew --quiet && systemctl reload postfix dovecot" > /etc/cron.d/certbot-postfix-dovecot
---

Файл: /etc/opendkim.conf
Код:
Syslog yes
UMask 002
Domain example.com
KeyFile /etc/opendkim/keys/example.com/default.private
Selector default
Socket inet:12301@localhost
Canonicalization relaxed/simple
Mode sv
SubDomains no
AutoRestart yes
Генерация ключей:
Код:
mkdir -p /etc/opendkim/keys/example.com
cd /etc/opendkim/keys/example.com
opendkim-genkey -s default -d example.com
chown opendkim:opendkim default.private
Файл: /etc/default/opendkim
Код:
SOCKET="inet:12301@localhost"
Добавь в /etc/postfix/main.cf:
Код:
milter_default_action = accept
milter_protocol = 2
smtpd_milters = inet:localhost:12301
non_smtpd_milters = inet:localhost:12301
---

# A-записи:
Код:
@ IN A <ваш_IP>
mail IN A <ваш_IP>
# MX:
Код:
@ IN MX 10 mail.example.com.
# SPF:
Код:
@ IN TXT "v=spf1 mx ip4:<ваш_IP> ~all"
# DKIM:
Код:
default._domainkey IN TXT "v=DKIM1; k=rsa; p=<содержимое default.txt>"
# DMARC:
Код:
_dmarc IN TXT "v=DMARC1; p=quarantine; rua=mailto:postmaster@example.com"

Код:
systemctl restart postfix
systemctl restart dovecot
systemctl restart opendkim
Как принимать почту
Письма приходят на адреса вроде:user@example.com
Пользователи должны существовать в системе:
- Если используешь maildir, то достаточно системного пользователя.
Пример:
Код:
adduser testuser
su - testuser
mkdir -p ~/Maildir
Подключение почтовым клиентом (Thunderbird, Outlook, K-9, и т.д.):
Код:
Входящая почта (IMAP):
Сервер: mail.example.com
Порт: 993
Шифрование: SSL/TLS
Логин: имя_пользователя
Пароль: системный пароль
Как отправлять почту

Код:
echo "Test body" | mail -s "Test subject" user@gmail.com

Код:
Исходящая почта (SMTP):
Сервер: mail.example.com
Порт: 587 (STARTTLS) или 465 (SSL)
Аутентификация: Включена
Логин: имя_пользователя
Пароль: системный пароль

# тест через:
Чтобы увидеть нужно авторизоваться или зарегистрироваться.
Чтобы увидеть нужно авторизоваться или зарегистрироваться.
# лог:
tail -f /var/log/mail.log

Roundcube — это веб-интерфейс для работы с почтой (веб-почтовый клиент), написанный на PHP.
Если ты хочешь читать/отправлять почту через браузер, как в Gmail или Yandex, — Roundcube как раз для этого.
Что умеет Roundcube
- Работает через IMAP (чтение писем с сервера)
- Поддерживает отправку через SMTP
- Веб-интерфейс на русском языке
- Работа с папками, поиском, фильтрами
- Поддержка вложений, HTML-писем
- Поддержка плагинов (например, адресная книга, фильтры, автоподписи и т.д.)
Как установить Roundcube на Debian
1. Установи зависимости:
Код:
sudo apt update
sudo apt install roundcube roundcube-core roundcube-mysql roundcube-plugins roundcube-plugins-extra
2. Укажи веб-сервер
Debian предложит связать Roundcube с Apache — подтверди.Roundcube будет доступен по адресу:
Код:
http://yourdomain.com/roundcube
Настройка конфигурации
Файл: /etc/roundcube/config.inc.phpУкажи:
Код:
$config['default_host'] = 'ssl://mail.example.com';
$config['default_port'] = 993;
$config['smtp_server'] = 'tls://mail.example.com';
$config['smtp_port'] = 587;
$config['smtp_user'] = '%u';
$config['smtp_pass'] = '%p';
$config['support_url'] = 'mailto:support@example.com';
$config['product_name'] = 'Webmail @ example.com';
$config['enable_installer'] = false;
4. Разреши доступ к логину
Убедись, что apache2 поддерживает PHP и сайт открыт по HTTPS (лучше с Let's Encrypt).Подробнее:
Код:
Установка Apache и PHP:
sudo apt update
sudo apt install apache2 php libapache2-mod-php
apache2 -v
php -v
Проверь, что PHP работает в Apache
Создай тестовый файл:
Код:
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php
Открой в браузере:
Чтобы увидеть нужно авторизоваться или зарегистрироваться.
Если страница скачивается — Apache не обрабатывает PHP: проверь, включён ли модуль:
Код:
sudo a2enmod php
sudo systemctl restart apache2
Удалить файл потом:
Код:
sudo rm /var/www/html/info.php
Настройка HTTPS с Let's Encrypt (через certbot)
Установка
Код:
sudo apt install certbot python3-certbot-apache
Запуск получения сертификата:
Код:
sudo certbot --apache -d mail.example.com
Если DNS работает и порт 80 открыт, Let’s Encrypt:
- автоматически получит сертификат
- настроит HTTPS в Apache
Открой:
Чтобы увидеть нужно авторизоваться или зарегистрироваться.
Автообновление сертификата
Certbot уже ставит cron или systemd-таймер. Чтобы проверить:
Код:
sudo systemctl list-timers | grep certbot
Безопасность roundcube
- Включи HTTPS (обязательно!)
- Убедись, что IMAP и SMTP работают только через TLS (порты 993 и 587)
- Не забудь отключить установщик (/etc/roundcube/config.inc.php):
-
Код:
$config['enable_installer'] = false;
Последнее редактирование: