Настройка почтового сервера (Postfix): различия между версиями
Admin (обсуждение | вклад) Новая страница: «= Настройка почтового сервера (Postfix) = == 1. Подготовка системы == * Войдите в систему под уче…» |
Admin (обсуждение | вклад) Нет описания правки |
||
| Строка 11: | Строка 11: | ||
1. Обновите список пакетов: | 1. Обновите список пакетов: | ||
<code> | <code>sudo apt update</code> | ||
sudo apt update | |||
</code> | |||
2. Установите Postfix: | 2. Установите Postfix: | ||
<code> | <code>sudo apt install postfix</code> | ||
sudo apt install postfix | |||
</code> | |||
3. Установите дополнительные компоненты: | 3. Установите дополнительные компоненты: | ||
<code> | <code>sudo apt install mailutils dovecot-core dovecot-imapd dovecot-pop3d</code> | ||
sudo apt install mailutils dovecot-core dovecot-imapd dovecot-pop3d | |||
</code> | |||
=== Настройка при установке === | === Настройка при установке === | ||
| Строка 33: | Строка 27: | ||
2. Введите доменное имя сервера: | 2. Введите доменное имя сервера: | ||
<code> | <code>mail.example.com</code> | ||
mail.example.com | |||
</code> | |||
== 3. Базовая настройка Postfix === | == 3. Базовая настройка Postfix === | ||
| Строка 42: | Строка 34: | ||
1. Отредактируйте основной файл конфигурации: | 1. Отредактируйте основной файл конфигурации: | ||
<code> | <code>sudo nano /etc/postfix/main.cf</code> | ||
sudo nano /etc/postfix/main.cf | |||
</code> | |||
2. Настройте основные параметры: | 2. Настройте основные параметры: | ||
<code> | <code>myhostname = mail.example.com</code> | ||
<code>mydomain = example.com</code> | |||
myhostname = mail.example.com | <code>myorigin = $mydomain</code> | ||
mydomain = example.com | <code>inet_interfaces = all</code> | ||
myorigin = $mydomain | <code>inet_protocols = ipv4</code> | ||
inet_interfaces = all | <code>mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain</code> | ||
inet_protocols = ipv4 | <code>relayhost =</code> | ||
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain | <code>mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128</code> | ||
relayhost = | <code>mailbox_size_limit = 0</code> | ||
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 | <code>recipient_delimiter = +</code> | ||
mailbox_size_limit = 0 | |||
recipient_delimiter = + | |||
</code> | |||
=== Настройка безопасности === | === Настройка безопасности === | ||
1. Добавьте настройки безопасности: | 1. Добавьте настройки безопасности: | ||
<code> | <code>smtpd_banner = $myhostname ESMTP $mail_name</code> | ||
<code>biff = no</code> | |||
smtpd_banner = $myhostname ESMTP $mail_name | <code>append_dot_mydomain = no</code> | ||
biff = no | <code>readme_directory = no</code> | ||
append_dot_mydomain = no | <code>smtpd_helo_required = yes</code> | ||
readme_directory = no | <code>smtpd_helo_restrictions = permit_mynetworks, reject_invalid_helo_hostname, reject_non_fqdn_helo_hostname</code> | ||
smtpd_helo_required = yes | |||
smtpd_helo_restrictions = permit_mynetworks, reject_invalid_helo_hostname, reject_non_fqdn_helo_hostname | |||
</code> | |||
2. Настройте ограничения: | 2. Настройте ограничения: | ||
<code> | <code>smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination</code> | ||
<code>smtpd_sender_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_sender, reject_unknown_sender_domain</code> | |||
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination | |||
smtpd_sender_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_sender, reject_unknown_sender_domain | |||
</code> | |||
== 4. Настройка аутентификации === | == 4. Настройка аутентификации === | ||
| Строка 86: | Строка 67: | ||
1. Установите SASL: | 1. Установите SASL: | ||
<code> | <code>sudo apt install libsasl2-modules libsasl2-modules-sql</code> | ||
sudo apt install libsasl2-modules libsasl2-modules-sql | |||
</code> | |||
2. Настройте SASL: | 2. Настройте SASL: | ||
<code> | <code>sudo nano /etc/postfix/sasl/smtpd.conf</code> | ||
sudo nano /etc/postfix/sasl/smtpd.conf | |||
</code> | |||
3. Добавьте содержимое: | 3. Добавьте содержимое: | ||
<code> | <code>pwcheck_method: auxprop</code> | ||
pwcheck_method: auxprop | <code>auxprop_plugin: sasldb</code> | ||
auxprop_plugin: sasldb | <code>mech_list: PLAIN LOGIN</code> | ||
mech_list: PLAIN LOGIN | |||
</code> | |||
=== Настройка аутентификации в Postfix === | === Настройка аутентификации в Postfix === | ||
1. Отредактируйте конфигурацию: | 1. Отредактируйте конфигурацию: | ||
<code> | <code>sudo nano /etc/postfix/main.cf</code> | ||
sudo nano /etc/postfix/main.cf | |||
</code> | |||
2. Добавьте настройки SASL: | 2. Добавьте настройки SASL: | ||
<code> | <code>smtpd_sasl_auth_enable = yes</code> | ||
<code>smtpd_sasl_security_options = noanonymous</code> | |||
smtpd_sasl_auth_enable = yes | <code>smtpd_sasl_local_domain = $myhostname</code> | ||
smtpd_sasl_security_options = noanonymous | <code>broken_sasl_auth_clients = yes</code> | ||
smtpd_sasl_local_domain = $myhostname | <code>smtpd_sasl_authenticated_header = yes</code> | ||
broken_sasl_auth_clients = yes | |||
smtpd_sasl_authenticated_header = yes | |||
</code> | |||
3. Настройте TLS: | 3. Настройте TLS: | ||
<code> | <code>smtpd_use_tls = yes</code> | ||
<code>smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem</code> | |||
smtpd_use_tls = yes | <code>smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key</code> | ||
smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem | <code>smtpd_tls_security_level = may</code> | ||
smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key | <code>smtp_tls_security_level = may</code> | ||
smtpd_tls_security_level = may | |||
smtp_tls_security_level = may | |||
</code> | |||
== 5. Настройка пользователей === | == 5. Настройка пользователей === | ||
| Строка 134: | Строка 101: | ||
1. Создайте пользователя для почты: | 1. Создайте пользователя для почты: | ||
<code> | <code>sudo useradd -m -s /bin/bash user1</code> | ||
sudo useradd -m -s /bin/bash user1 | |||
</code> | |||
2. Установите пароль: | 2. Установите пароль: | ||
<code> | <code>sudo passwd user1</code> | ||
sudo passwd user1 | |||
</code> | |||
3. Добавьте пользователя в SASL базу данных: | 3. Добавьте пользователя в SASL базу данных: | ||
<code> | <code>sudo saslpasswd2 -c -u example.com user1</code> | ||
sudo saslpasswd2 -c -u example.com user1 | |||
</code> | |||
4. Проверьте пользователей: | 4. Проверьте пользователей: | ||
<code> | <code>sudo sasldblistusers2</code> | ||
sudo sasldblistusers2 | |||
</code> | |||
=== Настройка виртуальных пользователей === | === Настройка виртуальных пользователей === | ||
1. Создайте файл виртуальных пользователей: | 1. Создайте файл виртуальных пользователей: | ||
<code> | <code>sudo nano /etc/postfix/virtual_users</code> | ||
sudo nano /etc/postfix/virtual_users | |||
</code> | |||
2. Добавьте пользователей: | 2. Добавьте пользователей: | ||
<code> | <code>user1@example.com user1</code> | ||
user1@example.com user1 | <code>user2@example.com user2</code> | ||
user2@example.com user2 | <code>admin@example.com admin</code> | ||
admin@example.com admin | |||
</code> | |||
3. Создайте базу данных: | 3. Создайте базу данных: | ||
<code> | <code>sudo postmap /etc/postfix/virtual_users</code> | ||
sudo postmap /etc/postfix/virtual_users | |||
</code> | |||
4. Настройте Postfix для виртуальных пользователей: | 4. Настройте Postfix для виртуальных пользователей: | ||
<code> | <code>sudo nano /etc/postfix/main.cf</code> | ||
sudo nano /etc/postfix/main.cf | |||
</code> | |||
5. Добавьте настройки: | 5. Добавьте настройки: | ||
<code> | <code>virtual_alias_maps = hash:/etc/postfix/virtual_users</code> | ||
<code>virtual_mailbox_domains = example.com</code> | |||
virtual_alias_maps = hash:/etc/postfix/virtual_users | <code>virtual_mailbox_base = /var/mail/vhosts</code> | ||
virtual_mailbox_domains = example.com | <code>virtual_mailbox_maps = hash:/etc/postfix/virtual_mailboxes</code> | ||
virtual_mailbox_base = /var/mail/vhosts | <code>virtual_minimum_uid = 100</code> | ||
virtual_mailbox_maps = hash:/etc/postfix/virtual_mailboxes | <code>virtual_uid_maps = static:5000</code> | ||
virtual_minimum_uid = 100 | <code>virtual_gid_maps = static:5000</code> | ||
virtual_uid_maps = static:5000 | |||
virtual_gid_maps = static:5000 | |||
</code> | |||
== 6. Настройка Dovecot === | == 6. Настройка Dovecot === | ||
| Строка 194: | Строка 142: | ||
1. Отредактируйте конфигурацию Dovecot: | 1. Отредактируйте конфигурацию Dovecot: | ||
<code> | <code>sudo nano /etc/dovecot/dovecot.conf</code> | ||
sudo nano /etc/dovecot/dovecot.conf | |||
</code> | |||
2. Настройте основные параметры: | 2. Настройте основные параметры: | ||
<code> | <code>protocols = imap pop3 lmtp</code> | ||
<code>listen = *, ::</code> | |||
protocols = imap pop3 lmtp | <code>mail_location = maildir:/var/mail/vhosts/%d/%n</code> | ||
listen = *, :: | <code>mail_privileged_group = mail</code> | ||
mail_location = maildir:/var/mail/vhosts/%d/%n | <code>userdb {</code> | ||
mail_privileged_group = mail | <code>driver = passwd</code> | ||
userdb { | <code>}</code> | ||
<code>passdb {</code> | |||
} | <code>driver = pam</code> | ||
passdb { | <code>}</code> | ||
} | |||
</code> | |||
=== Настройка IMAP/POP3 === | === Настройка IMAP/POP3 === | ||
1. Настройте IMAP: | 1. Настройте IMAP: | ||
<code> | <code>sudo nano /etc/dovecot/conf.d/10-mail.conf</code> | ||
sudo nano /etc/dovecot/conf.d/10-mail.conf | |||
</code> | |||
2. Добавьте настройки: | 2. Добавьте настройки: | ||
<code> | <code>mail_location = maildir:/var/mail/vhosts/%d/%n</code> | ||
mail_location = maildir:/var/mail/vhosts/%d/%n | <code>mail_privileged_group = mail</code> | ||
mail_privileged_group = mail | |||
</code> | |||
3. Настройте аутентификацию: | 3. Настройте аутентификацию: | ||
<code> | <code>sudo nano /etc/dovecot/conf.d/10-auth.conf</code> | ||
sudo nano /etc/dovecot/conf.d/10-auth.conf | |||
</code> | |||
4. Добавьте настройки: | 4. Добавьте настройки: | ||
<code> | <code>auth_mechanisms = plain login</code> | ||
auth_mechanisms = plain login | <code>!include auth-system.conf.ext</code> | ||
!include auth-system.conf.ext | |||
</code> | |||
== 7. Настройка SSL/TLS === | == 7. Настройка SSL/TLS === | ||
| Строка 242: | Строка 177: | ||
1. Создайте приватный ключ: | 1. Создайте приватный ключ: | ||
<code> | <code>sudo openssl genrsa -out /etc/ssl/private/mail.example.com.key 2048</code> | ||
sudo openssl genrsa -out /etc/ssl/private/mail.example.com.key 2048 | |||
</code> | |||
2. Создайте запрос на сертификат: | 2. Создайте запрос на сертификат: | ||
<code> | <code>sudo openssl req -new -key /etc/ssl/private/mail.example.com.key -out /etc/ssl/certs/mail.example.com.csr</code> | ||
sudo openssl req -new -key /etc/ssl/private/mail.example.com.key -out /etc/ssl/certs/mail.example.com.csr | |||
</code> | |||
3. Создайте самоподписанный сертификат: | 3. Создайте самоподписанный сертификат: | ||
<code> | <code>sudo openssl x509 -req -days 365 -in /etc/ssl/certs/mail.example.com.csr -signkey /etc/ssl/private/mail.example.com.key -out /etc/ssl/certs/mail.example.com.crt</code> | ||
sudo openssl x509 -req -days 365 -in /etc/ssl/certs/mail.example.com.csr -signkey /etc/ssl/private/mail.example.com.key -out /etc/ssl/certs/mail.example.com.crt | |||
</code> | |||
=== Настройка SSL в Postfix === | === Настройка SSL в Postfix === | ||
1. Отредактируйте конфигурацию: | 1. Отредактируйте конфигурацию: | ||
<code> | <code>sudo nano /etc/postfix/main.cf</code> | ||
sudo nano /etc/postfix/main.cf | |||
</code> | |||
2. Обновите настройки TLS: | 2. Обновите настройки TLS: | ||
<code> | <code>smtpd_use_tls = yes</code> | ||
<code>smtpd_tls_cert_file = /etc/ssl/certs/mail.example.com.crt</code> | |||
smtpd_use_tls = yes | <code>smtpd_tls_key_file = /etc/ssl/private/mail.example.com.key</code> | ||
smtpd_tls_cert_file = /etc/ssl/certs/mail.example.com.crt | <code>smtpd_tls_security_level = may</code> | ||
smtpd_tls_key_file = /etc/ssl/private/mail.example.com.key | <code>smtp_tls_security_level = may</code> | ||
smtpd_tls_security_level = may | <code>smtpd_tls_protocols = !SSLv2, !SSLv3</code> | ||
smtp_tls_security_level = may | <code>smtpd_tls_ciphers = high</code> | ||
smtpd_tls_protocols = !SSLv2, !SSLv3 | |||
smtpd_tls_ciphers = high | |||
</code> | |||
=== Настройка SSL в Dovecot === | === Настройка SSL в Dovecot === | ||
1. Отредактируйте конфигурацию: | 1. Отредактируйте конфигурацию: | ||
<code> | <code>sudo nano /etc/dovecot/conf.d/10-ssl.conf</code> | ||
sudo nano /etc/dovecot/conf.d/10-ssl.conf | |||
</code> | |||
2. Настройте SSL: | 2. Настройте SSL: | ||
<code> | <code>ssl = yes | ||
ssl = yes | |||
ssl_cert = </etc/ssl/certs/mail.example.com.crt | ssl_cert = </etc/ssl/certs/mail.example.com.crt | ||
ssl_key = </etc/ssl/private/mail.example.com.key | ssl_key = </etc/ssl/private/mail.example.com.key | ||
ssl_protocols = !SSLv2 !SSLv3 | ssl_protocols = !SSLv2 !SSLv3 | ||
ssl_cipher_list = ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384 | ssl_cipher_list = ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384</code> | ||
</code> | |||
== 8. Настройка файрвола === | == 8. Настройка файрвола === | ||
| Строка 296: | Строка 216: | ||
1. Разрешите почтовые порты: | 1. Разрешите почтовые порты: | ||
<code> | <code>sudo ufw allow 25/tcp</code> | ||
sudo ufw allow 25/tcp | <code>sudo ufw allow 587/tcp</code> | ||
sudo ufw allow 587/tcp | <code>sudo ufw allow 465/tcp</code> | ||
sudo ufw allow 465/tcp | <code>sudo ufw allow 993/tcp</code> | ||
sudo ufw allow 993/tcp | <code>sudo ufw allow 995/tcp</code> | ||
sudo ufw allow 995/tcp | <code>sudo ufw allow 143/tcp</code> | ||
sudo ufw allow 143/tcp | <code>sudo ufw allow 110/tcp</code> | ||
sudo ufw allow 110/tcp | |||
</code> | |||
2. Проверьте статус: | 2. Проверьте статус: | ||
<code> | <code>sudo ufw status</code> | ||
sudo ufw status | |||
</code> | |||
=== Настройка iptables === | === Настройка iptables === | ||
1. Разрешите почтовые порты: | 1. Разрешите почтовые порты: | ||
<code> | <code>sudo iptables -A INPUT -p tcp --dport 25 -j ACCEPT</code> | ||
sudo iptables -A INPUT -p tcp --dport 25 -j ACCEPT | <code>sudo iptables -A INPUT -p tcp --dport 587 -j ACCEPT</code> | ||
sudo iptables -A INPUT -p tcp --dport 587 -j ACCEPT | <code>sudo iptables -A INPUT -p tcp --dport 465 -j ACCEPT</code> | ||
sudo iptables -A INPUT -p tcp --dport 465 -j ACCEPT | <code>sudo iptables -A INPUT -p tcp --dport 993 -j ACCEPT</code> | ||
sudo iptables -A INPUT -p tcp --dport 993 -j ACCEPT | <code>sudo iptables -A INPUT -p tcp --dport 995 -j ACCEPT</code> | ||
sudo iptables -A INPUT -p tcp --dport 995 -j ACCEPT | <code>sudo iptables -A INPUT -p tcp --dport 143 -j ACCEPT</code> | ||
sudo iptables -A INPUT -p tcp --dport 143 -j ACCEPT | <code>sudo iptables -A INPUT -p tcp --dport 110 -j ACCEPT</code> | ||
sudo iptables -A INPUT -p tcp --dport 110 -j ACCEPT | |||
</code> | |||
2. Сохраните правила: | 2. Сохраните правила: | ||
<code> | <code>sudo iptables-save > /etc/iptables/rules.v4</code> | ||
sudo iptables-save > /etc/iptables/rules.v4 | |||
</code> | |||
== 9. Управление Postfix === | == 9. Управление Postfix === | ||
| Строка 334: | Строка 246: | ||
* '''Запуск Postfix''': | * '''Запуск Postfix''': | ||
<code> | <code>sudo systemctl start postfix</code> | ||
sudo systemctl start postfix | |||
</code> | |||
* '''Остановка Postfix''': | * '''Остановка Postfix''': | ||
<code> | <code>sudo systemctl stop postfix</code> | ||
sudo systemctl stop postfix | |||
</code> | |||
* '''Перезапуск Postfix''': | * '''Перезапуск Postfix''': | ||
<code> | <code>sudo systemctl restart postfix</code> | ||
sudo systemctl restart postfix | |||
</code> | |||
* '''Проверка статуса''': | * '''Проверка статуса''': | ||
<code> | <code>sudo systemctl status postfix</code> | ||
sudo systemctl status postfix | |||
</code> | |||
* '''Проверка конфигурации''': | * '''Проверка конфигурации''': | ||
<code> | <code>sudo postfix check</code> | ||
sudo postfix check | |||
</code> | |||
* '''Перезагрузка конфигурации''': | * '''Перезагрузка конфигурации''': | ||
<code> | <code>sudo postfix reload</code> | ||
sudo postfix reload | |||
</code> | |||
=== Управление очередью почты === | === Управление очередью почты === | ||
1. Просмотрите очередь: | 1. Просмотрите очередь: | ||
<code> | <code>sudo postqueue -p</code> | ||
sudo postqueue -p | |||
</code> | |||
2. Очистите очередь: | 2. Очистите очередь: | ||
<code> | <code>sudo postqueue -f</code> | ||
sudo postqueue -f | |||
</code> | |||
3. Удалите все письма из очереди: | 3. Удалите все письма из очереди: | ||
<code> | <code>sudo postsuper -d ALL</code> | ||
sudo postsuper -d ALL | |||
</code> | |||
4. Удалите письма старше определенного времени: | 4. Удалите письма старше определенного времени: | ||
<code> | <code>sudo postsuper -d ALL deferred</code> | ||
sudo postsuper -d ALL deferred | |||
</code> | |||
== 10. Мониторинг и логирование === | == 10. Мониторинг и логирование === | ||
| Строка 390: | Строка 282: | ||
1. Отредактируйте конфигурацию логирования: | 1. Отредактируйте конфигурацию логирования: | ||
<code> | <code>sudo nano /etc/rsyslog.d/50-default.conf</code> | ||
sudo nano /etc/rsyslog.d/50-default.conf | |||
</code> | |||
2. Добавьте настройки для Postfix: | 2. Добавьте настройки для Postfix: | ||
<code> | <code>mail.* -/var/log/mail.log</code> | ||
<code>mail.err -/var/log/mail.err</code> | |||
mail.* -/var/log/mail.log | |||
mail.err -/var/log/mail.err | |||
</code> | |||
3. Перезапустите rsyslog: | 3. Перезапустите rsyslog: | ||
<code> | <code>sudo systemctl restart rsyslog</code> | ||
sudo systemctl restart rsyslog | |||
</code> | |||
=== Просмотр логов === | === Просмотр логов === | ||
1. Просмотрите логи Postfix: | 1. Просмотрите логи Postfix: | ||
<code> | <code>sudo tail -f /var/log/mail.log</code> | ||
sudo tail -f /var/log/mail.log | |||
</code> | |||
2. Просмотрите логи Dovecot: | 2. Просмотрите логи Dovecot: | ||
<code> | <code>sudo tail -f /var/log/dovecot.log</code> | ||
sudo tail -f /var/log/dovecot.log | |||
</code> | |||
3. Просмотрите системные логи: | 3. Просмотрите системные логи: | ||
<code> | <code>sudo journalctl -u postfix -f</code> | ||
sudo journalctl -u postfix -f | <code>sudo journalctl -u dovecot -f</code> | ||
sudo journalctl -u dovecot -f | |||
</code> | |||
=== Создание скрипта мониторинга === | === Создание скрипта мониторинга === | ||
1. Создайте скрипт мониторинга: | 1. Создайте скрипт мониторинга: | ||
<code> | <code>sudo nano /usr/local/bin/mail-monitor.sh</code> | ||
sudo nano /usr/local/bin/mail-monitor.sh | |||
</code> | |||
2. Добавьте содержимое: | 2. Добавьте содержимое: | ||
<code> | <code>if systemctl is-active --quiet postfix; then</code> | ||
<code>echo "Postfix is running"</code> | |||
<code>else</code> | |||
<code>echo "Postfix is not running"</code> | |||
if systemctl is-active --quiet postfix; then | <code>echo "Postfix is down" | mail -s "Mail Server Alert" admin@example.com</code> | ||
<code>fi</code> | |||
else | <code>if systemctl is-active --quiet dovecot; then</code> | ||
<code>echo "Dovecot is running"</code> | |||
<code>else</code> | |||
<code>echo "Dovecot is not running"</code> | |||
fi | <code>echo "Dovecot is down" | mail -s "Mail Server Alert" admin@example.com</code> | ||
<code>fi</code> | |||
<code>QUEUE_SIZE=$(sudo postqueue -p | grep -c "^[A-F0-9]")</code> | |||
if systemctl is-active --quiet dovecot; then | <code>if [ $QUEUE_SIZE -gt 100 ]; then</code> | ||
<code>echo "ALERT: Large mail queue: $QUEUE_SIZE messages" | mail -s "Mail Queue Alert" admin@example.com</code> | |||
else | <code>fi</code> | ||
fi | |||
QUEUE_SIZE=$(sudo postqueue -p | grep -c "^[A-F0-9]") | |||
if [ $QUEUE_SIZE -gt 100 ]; then | |||
fi | |||
</code> | |||
3. Сделайте скрипт исполняемым: | 3. Сделайте скрипт исполняемым: | ||
<code> | <code>sudo chmod +x /usr/local/bin/mail-monitor.sh</code> | ||
sudo chmod +x /usr/local/bin/mail-monitor.sh | |||
</code> | |||
== 11. Устранение неполадок === | == 11. Устранение неполадок === | ||
| Строка 487: | Строка 351: | ||
1. Проверьте статус служб: | 1. Проверьте статус служб: | ||
<code> | <code>sudo systemctl status postfix</code> | ||
sudo systemctl status postfix | <code>sudo systemctl status dovecot</code> | ||
sudo systemctl status dovecot | |||
</code> | |||
2. Проверьте конфигурацию: | 2. Проверьте конфигурацию: | ||
<code> | <code>sudo postfix check</code> | ||
sudo postfix check | <code>sudo doveconf -n</code> | ||
sudo doveconf -n | |||
</code> | |||
3. Проверьте подключения: | 3. Проверьте подключения: | ||
<code> | <code>sudo netstat -tlnp | grep -E ':(25|587|465|993|995|143|110)'</code> | ||
sudo netstat -tlnp | grep -E ':(25|587|465|993|995|143|110)' | |||
</code> | |||
4. Проверьте DNS записи: | 4. Проверьте DNS записи: | ||
<code> | <code>dig MX example.com</code> | ||
dig MX example.com | <code>dig A mail.example.com</code> | ||
dig A mail.example.com | |||
</code> | |||
== 12. Дополнительные настройки === | == 12. Дополнительные настройки === | ||
| Строка 514: | Строка 370: | ||
1. Установите SpamAssassin: | 1. Установите SpamAssassin: | ||
<code> | <code>sudo apt install spamassassin spamc</code> | ||
sudo apt install spamassassin spamc | |||
</code> | |||
2. Настройте Postfix для использования SpamAssassin: | 2. Настройте Postfix для использования SpamAssassin: | ||
<code> | <code>sudo nano /etc/postfix/master.cf</code> | ||
sudo nano /etc/postfix/master.cf | |||
</code> | |||
3. Добавьте настройки: | 3. Добавьте настройки: | ||
<code> | <code>spamassassin unix - n n - - pipe</code> | ||
<code>user=spamd argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}</code> | |||
spamassassin unix - n n - - pipe | |||
</code> | |||
=== Настройка антивируса === | === Настройка антивируса === | ||
1. Установите ClamAV: | 1. Установите ClamAV: | ||
<code> | <code>sudo apt install clamav clamav-daemon</code> | ||
sudo apt install clamav clamav-daemon | |||
</code> | |||
2. Настройте Postfix для использования ClamAV: | 2. Настройте Postfix для использования ClamAV: | ||
<code> | <code>sudo nano /etc/postfix/master.cf</code> | ||
sudo nano /etc/postfix/master.cf | |||
</code> | |||
3. Добавьте настройки: | 3. Добавьте настройки: | ||
<code> | <code>clamav unix - n n - - pipe</code> | ||
<code>user=clamav argv=/usr/bin/clamdscan --stdout --no-summary -i</code> | |||
clamav unix - n n - - pipe | |||
</code> | |||
== Заключение == | == Заключение == | ||
Версия от 20:00, 14 октября 2025
Настройка почтового сервера (Postfix)
1. Подготовка системы
- Войдите в систему под учетной записью с правами root или пользователя с правами sudo.
- Убедитесь, что у вас есть доступ к серверу через SSH или консоль.
2. Установка Postfix =
Установка пакета
1. Обновите список пакетов:
sudo apt update
2. Установите Postfix:
sudo apt install postfix
3. Установите дополнительные компоненты:
sudo apt install mailutils dovecot-core dovecot-imapd dovecot-pop3d
Настройка при установке
1. При установке выберите тип конфигурации:
- Internet Site - для обычного почтового сервера
- Internet with smarthost - для использования внешнего SMTP
- Satellite system - для пересылки почты
2. Введите доменное имя сервера:
mail.example.com
3. Базовая настройка Postfix =
Основная конфигурация
1. Отредактируйте основной файл конфигурации:
sudo nano /etc/postfix/main.cf
2. Настройте основные параметры:
myhostname = mail.example.com
mydomain = example.com
myorigin = $mydomain
inet_interfaces = all
inet_protocols = ipv4
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
Настройка безопасности
1. Добавьте настройки безопасности:
smtpd_banner = $myhostname ESMTP $mail_name
biff = no
append_dot_mydomain = no
readme_directory = no
smtpd_helo_required = yes
smtpd_helo_restrictions = permit_mynetworks, reject_invalid_helo_hostname, reject_non_fqdn_helo_hostname
2. Настройте ограничения:
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_sender_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_sender, reject_unknown_sender_domain
4. Настройка аутентификации =
Установка SASL
1. Установите SASL:
sudo apt install libsasl2-modules libsasl2-modules-sql
2. Настройте SASL:
sudo nano /etc/postfix/sasl/smtpd.conf
3. Добавьте содержимое:
pwcheck_method: auxprop
auxprop_plugin: sasldb
mech_list: PLAIN LOGIN
Настройка аутентификации в Postfix
1. Отредактируйте конфигурацию:
sudo nano /etc/postfix/main.cf
2. Добавьте настройки SASL:
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
broken_sasl_auth_clients = yes
smtpd_sasl_authenticated_header = yes
3. Настройте TLS:
smtpd_use_tls = yes
smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
smtpd_tls_security_level = may
smtp_tls_security_level = may
5. Настройка пользователей =
Создание пользователей
1. Создайте пользователя для почты:
sudo useradd -m -s /bin/bash user1
2. Установите пароль:
sudo passwd user1
3. Добавьте пользователя в SASL базу данных:
sudo saslpasswd2 -c -u example.com user1
4. Проверьте пользователей:
sudo sasldblistusers2
Настройка виртуальных пользователей
1. Создайте файл виртуальных пользователей:
sudo nano /etc/postfix/virtual_users
2. Добавьте пользователей:
user1@example.com user1
user2@example.com user2
admin@example.com admin
3. Создайте базу данных:
sudo postmap /etc/postfix/virtual_users
4. Настройте Postfix для виртуальных пользователей:
sudo nano /etc/postfix/main.cf
5. Добавьте настройки:
virtual_alias_maps = hash:/etc/postfix/virtual_users
virtual_mailbox_domains = example.com
virtual_mailbox_base = /var/mail/vhosts
virtual_mailbox_maps = hash:/etc/postfix/virtual_mailboxes
virtual_minimum_uid = 100
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
6. Настройка Dovecot =
Основная конфигурация
1. Отредактируйте конфигурацию Dovecot:
sudo nano /etc/dovecot/dovecot.conf
2. Настройте основные параметры:
protocols = imap pop3 lmtp
listen = *, ::
mail_location = maildir:/var/mail/vhosts/%d/%n
mail_privileged_group = mail
userdb {
driver = passwd
}
passdb {
driver = pam
}
Настройка IMAP/POP3
1. Настройте IMAP:
sudo nano /etc/dovecot/conf.d/10-mail.conf
2. Добавьте настройки:
mail_location = maildir:/var/mail/vhosts/%d/%n
mail_privileged_group = mail
3. Настройте аутентификацию:
sudo nano /etc/dovecot/conf.d/10-auth.conf
4. Добавьте настройки:
auth_mechanisms = plain login
!include auth-system.conf.ext
7. Настройка SSL/TLS =
Генерация SSL сертификата
1. Создайте приватный ключ:
sudo openssl genrsa -out /etc/ssl/private/mail.example.com.key 2048
2. Создайте запрос на сертификат:
sudo openssl req -new -key /etc/ssl/private/mail.example.com.key -out /etc/ssl/certs/mail.example.com.csr
3. Создайте самоподписанный сертификат:
sudo openssl x509 -req -days 365 -in /etc/ssl/certs/mail.example.com.csr -signkey /etc/ssl/private/mail.example.com.key -out /etc/ssl/certs/mail.example.com.crt
Настройка SSL в Postfix
1. Отредактируйте конфигурацию:
sudo nano /etc/postfix/main.cf
2. Обновите настройки TLS:
smtpd_use_tls = yes
smtpd_tls_cert_file = /etc/ssl/certs/mail.example.com.crt
smtpd_tls_key_file = /etc/ssl/private/mail.example.com.key
smtpd_tls_security_level = may
smtp_tls_security_level = may
smtpd_tls_protocols = !SSLv2, !SSLv3
smtpd_tls_ciphers = high
Настройка SSL в Dovecot
1. Отредактируйте конфигурацию:
sudo nano /etc/dovecot/conf.d/10-ssl.conf
2. Настройте SSL:
ssl = yes
ssl_cert = </etc/ssl/certs/mail.example.com.crt
ssl_key = </etc/ssl/private/mail.example.com.key
ssl_protocols = !SSLv2 !SSLv3
ssl_cipher_list = ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384
8. Настройка файрвола =
Настройка UFW
1. Разрешите почтовые порты:
sudo ufw allow 25/tcp
sudo ufw allow 587/tcp
sudo ufw allow 465/tcp
sudo ufw allow 993/tcp
sudo ufw allow 995/tcp
sudo ufw allow 143/tcp
sudo ufw allow 110/tcp
2. Проверьте статус:
sudo ufw status
Настройка iptables
1. Разрешите почтовые порты:
sudo iptables -A INPUT -p tcp --dport 25 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 587 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 465 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 993 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 995 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 143 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 110 -j ACCEPT
2. Сохраните правила:
sudo iptables-save > /etc/iptables/rules.v4
9. Управление Postfix =
Основные команды управления
- Запуск Postfix:
sudo systemctl start postfix
- Остановка Postfix:
sudo systemctl stop postfix
- Перезапуск Postfix:
sudo systemctl restart postfix
- Проверка статуса:
sudo systemctl status postfix
- Проверка конфигурации:
sudo postfix check
- Перезагрузка конфигурации:
sudo postfix reload
Управление очередью почты
1. Просмотрите очередь:
sudo postqueue -p
2. Очистите очередь:
sudo postqueue -f
3. Удалите все письма из очереди:
sudo postsuper -d ALL
4. Удалите письма старше определенного времени:
sudo postsuper -d ALL deferred
10. Мониторинг и логирование =
Настройка логирования
1. Отредактируйте конфигурацию логирования:
sudo nano /etc/rsyslog.d/50-default.conf
2. Добавьте настройки для Postfix:
mail.* -/var/log/mail.log
mail.err -/var/log/mail.err
3. Перезапустите rsyslog:
sudo systemctl restart rsyslog
Просмотр логов
1. Просмотрите логи Postfix:
sudo tail -f /var/log/mail.log
2. Просмотрите логи Dovecot:
sudo tail -f /var/log/dovecot.log
3. Просмотрите системные логи:
sudo journalctl -u postfix -f
sudo journalctl -u dovecot -f
Создание скрипта мониторинга
1. Создайте скрипт мониторинга:
sudo nano /usr/local/bin/mail-monitor.sh
2. Добавьте содержимое:
if systemctl is-active --quiet postfix; then
echo "Postfix is running"
else
echo "Postfix is not running"
echo "Postfix is down" | mail -s "Mail Server Alert" admin@example.com
fi
if systemctl is-active --quiet dovecot; then
echo "Dovecot is running"
else
echo "Dovecot is not running"
echo "Dovecot is down" | mail -s "Mail Server Alert" admin@example.com
fi
QUEUE_SIZE=$(sudo postqueue -p | grep -c "^[A-F0-9]")
if [ $QUEUE_SIZE -gt 100 ]; then
echo "ALERT: Large mail queue: $QUEUE_SIZE messages" | mail -s "Mail Queue Alert" admin@example.com
fi
3. Сделайте скрипт исполняемым:
sudo chmod +x /usr/local/bin/mail-monitor.sh
11. Устранение неполадок =
Частые проблемы
1. Postfix не запускается:
- Проверьте конфигурацию:
sudo postfix check - Проверьте логи:
sudo journalctl -u postfix - Проверьте порты:
sudo netstat -tlnp | grep :25
2. Письма не отправляются:
- Проверьте настройки релея
- Проверьте DNS записи
- Проверьте файрвол
3. Пользователи не могут получать почту:
- Проверьте настройки Dovecot
- Проверьте права доступа к почтовым ящикам
- Проверьте аутентификацию
Диагностика
1. Проверьте статус служб:
sudo systemctl status postfix
sudo systemctl status dovecot
2. Проверьте конфигурацию:
sudo postfix check
sudo doveconf -n
3. Проверьте подключения:
sudo netstat -tlnp | grep -E ':(25|587|465|993|995|143|110)'
4. Проверьте DNS записи:
dig MX example.com
dig A mail.example.com
12. Дополнительные настройки =
Настройка антиспама
1. Установите SpamAssassin:
sudo apt install spamassassin spamc
2. Настройте Postfix для использования SpamAssassin:
sudo nano /etc/postfix/master.cf
3. Добавьте настройки:
spamassassin unix - n n - - pipe
user=spamd argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}
Настройка антивируса
1. Установите ClamAV:
sudo apt install clamav clamav-daemon
2. Настройте Postfix для использования ClamAV:
sudo nano /etc/postfix/master.cf
3. Добавьте настройки:
clamav unix - n n - - pipe
user=clamav argv=/usr/bin/clamdscan --stdout --no-summary -i
Заключение
Почтовый сервер Postfix успешно установлен и настроен! Теперь вы можете отправлять и получать электронную почту.
Для размещения ваших почтовых серверов на надежном хостинге рекомендуем воспользоваться услугами [ARK-HOSTER.RU](https://ark-hoster.ru):
- [Выделенные серверы](https://ark-hoster.ru/dedicated/) - для высоконагруженных почтовых серверов
- [VPS/VDS серверы](https://ark-hoster.ru/vpsgame/) - для небольших и средних проектов
Наши специалисты помогут с настройкой почтового сервера и обеспечением безопасности вашей почты!