0x42
Форумчанин
		- Регистрация
 - 05.05.2025
 
- Сообщения
 - 198
 
- Реакции
 - 137
 
В этой статье покажу как самому на своем сервере поднять почту, будем считать что у тебя уже есть свой домен и арендован свой 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. Перезапуск служб
	
	
	
		
Письма приходят на адреса вроде:
[email protected]
Пользователи должны существовать в системе:
- Если используешь maildir, то достаточно системного пользователя.
Пример:
      
	
	
	
		
Подключение почтовым клиентом (Thunderbird, Outlook, K-9, и т.д.):
	
	
	
		
 Отправка из консоли (Для теста):
	
	
	
		
 Отправка через почтовый клиент:
	
	
	
		
 8. Проверка
# тест через:
	
	
		
			
				
					
						
					
				
			
			
				
					
						
							
						
					
					www.mail-tester.com
				
			
		
	
CheckTLS: The Email Encryption and Authentication Testing Authority — проверка 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:[email protected]"
	
		Код:
	
	systemctl restart postfix
systemctl restart dovecot
systemctl restart opendkim
	
 Как принимать почту
Письма приходят на адреса вроде:[email protected]
Пользователи должны существовать в системе:
- Если используешь 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" [email protected]
	
		Код:
	
	Исходящая почта (SMTP):
  Сервер: mail.example.com
  Порт: 587 (STARTTLS) или 465 (SSL)
  Аутентификация: Включена
  Логин: имя_пользователя
  Пароль: системный пароль
	# тест через:
					
				Спам тест рассылок от mail-tester.com
mail-tester.com - это бесплатный онлайн сервис, который проверяет Ваши письма на спам, выявляет плохо сформированные письма и проблемы конфигурации почтового сервера.
				CheckTLS: The Email Encryption and Authentication Testing Authority — проверка TLS и шифрования.
# лог:
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:[email protected]';
$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
	Открой в браузере:
→ должна открыться страница с информацией о 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
 
Открой:
→ работает ли по HTTPS?
Автообновление сертификата
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; 
			
				Последнее редактирование: 
			
		
	
								
								
									
	
		
			
		
	
								
							
							
	