Настройка почтового сервера — различия между версиями

Материал из Rosalab Wiki
Перейти к: навигация, поиск
(Настройка клиентских станций)
(fix permissions for /etc/ssl/mail directory)
 
(не показано 29 промежуточных версий 2 участников)
Строка 1: Строка 1:
 
== Настройка Postfix + Dovecot + MySQL + PostfixAdmin + SSL/TLS ==
 
== Настройка Postfix + Dovecot + MySQL + PostfixAdmin + SSL/TLS ==
  
=== Настройка для ОС Рос Никель ===
+
=== Настройка для ОС Роса Никель ===
  
 
Устанавливаем пакеты '''dovecot-plugins-mysql''' и '''php-imap'''
 
Устанавливаем пакеты '''dovecot-plugins-mysql''' и '''php-imap'''
Строка 10: Строка 10:
 
* Сервер - ip: 192.168.1.76  
 
* Сервер - ip: 192.168.1.76  
 
* Все клиенты в этой же подсети - 192.168.1.0/24
 
* Все клиенты в этой же подсети - 192.168.1.0/24
* Имя хоста сервера - '''mx.rosa3.loc'''
+
* Имя хоста сервера - '''{{Процесс|mx.rosa3.loc}}'''
 +
* Имя почтового домена - '''{{Процесс|rosa3.loc}}'''
 
* Все сервисы у нас отключены и не запущены
 
* Все сервисы у нас отключены и не запущены
  
Редактируем nano /etc/hosts
+
Редактируем nano {{Источник|/etc/hosts}}
 
<pre>
 
<pre>
 
192.168.1.76 mx.rosa3.loc mx
 
192.168.1.76 mx.rosa3.loc mx
Строка 34: Строка 35:
 
mysql>  quit
 
mysql>  quit
 
</pre>
 
</pre>
[[Файл:Mx2.png]]
+
<gallery>
 +
Файл:Mx2.png
 +
Файл:Mx3.png
 +
</gallery>
 +
Редактируем:
  
[[Файл:Mx3.png]]
+
nano {{Источник|/etc/my.cnf}}
 +
 
 +
Добавим в секцию:
 +
<pre>
 +
[client-server]
 +
socket=/run/mysqld/mysql.sock
 +
</pre>
 +
 
 +
Редактируем:
 +
 
 +
nano {{Источник|/etc/my.cnf.d/server.cnf}}
 +
 
 +
Подправим:
 +
bind-address=127.0.0.1
  
 
=== Инсталляция PostfixAdmin ===
 
=== Инсталляция PostfixAdmin ===
Строка 52: Строка 70:
 
chown -R apache:apache /var/www/html/postfixadmin/templates_c
 
chown -R apache:apache /var/www/html/postfixadmin/templates_c
 
</pre>
 
</pre>
 +
Либо скачать с wiki эту версию postfixadmin: [[Файл:Postfixadmin-postfixadmin-3.2.4.tar.gz|Скачать]]
  
 
=== Настройка PHP 5.6.40 ===
 
=== Настройка PHP 5.6.40 ===
Строка 57: Строка 76:
 
Редактируем:
 
Редактируем:
  
  nano /etc/php.ini
+
  nano {{Источник|/etc/php.ini}}
  
 
  date.timezone = Europe/Moscow
 
  date.timezone = Europe/Moscow
Строка 67: Строка 86:
 
Редактируем:
 
Редактируем:
  
  nano /etc/httpd/conf/httpd.conf
+
  nano {{Источник|/etc/httpd/conf/httpd.conf}}
  
 
После DocumentRoot "/var/www/html" добавляем:
 
После DocumentRoot "/var/www/html" добавляем:
Строка 73: Строка 92:
 
  Alias "/postfixadmin" "/var/www/html/postfixadmin/public"
 
  Alias "/postfixadmin" "/var/www/html/postfixadmin/public"
  
  cp postfixadmin/config.inc.php postfixadmin/config.local.php
+
Копируем конфиги:
 +
 
 +
  cp ./config.inc.php ./config.local.php
  
 
[[Файл:Mx5.png]]
 
[[Файл:Mx5.png]]
Строка 81: Строка 102:
 
Редактируем:
 
Редактируем:
  
  nano /var/www/html/postfixadmin/config.local.php
+
  nano {{Источник|/var/www/html/postfixadmin/config.local.php}}
  
 
<pre>
 
<pre>
Строка 98: Строка 119:
  
 
</pre>
 
</pre>
[[Файл:Mx5.png]]
+
<gallery>
[[Файл:Mx6.png]]
+
Файл:Mx6.png
[[Файл:Mx7.png]]
+
Файл:Mx7.png
[[Файл:Mx8.png]]
+
Файл:Mx8.png
[[Файл:Mx9.png]]
+
Файл:Mx9.png
[[Файл:Mx10.png]]
+
Файл:Mx10.png
[[Файл:Mx11.png]]
+
Файл:Mx11.png
 +
</gallery>
  
  chown apache:apache  postfixadmin/config.local.php
+
  chown apache:apache  /var/www/html/postfixadmin/config.local.php
 
  systemctl start httpd.service
 
  systemctl start httpd.service
  
 
В браузере: http://localhost/postfixadmin/setup.php
 
В браузере: http://localhost/postfixadmin/setup.php
  
Вводим пароль, жмем ОК, нам предлагаютс исправить параметр setup_passwd и hash.
+
Вводим пароль, жмем ОК, нам предлагаютс исправить параметр setup_password и hash.
  
Копируем hash и в /var/www/html/postfixadmin/config.local.php в параметре setup_passwd вместо changeme вписываем наш hash.
+
Копируем hash и в {{Процесс|/var/www/html/postfixadmin/config.local.php}} в параметре {{Процесс|setup_passwd}} вместо {{Процесс|changeme}} вписываем наш hash.
  
[[Файл:Mx12.png]]
+
<gallery>
[[Файл:Mx13.png]]
+
Файл:Mx12.png
 +
Файл:Mx13.png
 +
</gallery>
  
 
=== Настройка Postfix ===
 
=== Настройка Postfix ===
Строка 126: Строка 150:
 
Генерация закрытого ключа CSR
 
Генерация закрытого ключа CSR
  
  openssl req -nodes -newkey rsa:2048 -keyout /etc/ssl/mail/mx.rosa3.loc.key -out /etc/ssl/mail/mx.rosa3.loc.csr
+
  openssl req -nodes -newkey rsa:2048 -keyout /etc/ssl/mail/{{Процесс|mx.rosa3.loc.key}} -out /etc/ssl/mail/{{Процесс|mx.rosa3.loc.csr}}
  
На вопрос про FQDN отвечаем: '''mx.rosa3.loc'''
+
На вопрос про FQDN отвечаем: '''{{Процесс|mx.rosa3.loc}}'''
  
Если запрос на FQDN не получите, то закончите генерацию, сотрите:
+
{{Предупреждение|Если запрос на FQDN не получите, то закончите генерацию, сотрите:
 
  rm /etc/ssl/mail/mx.rosa3.*
 
  rm /etc/ssl/mail/mx.rosa3.*
 
 
И повторите отперацию генерации.
 
И повторите отперацию генерации.
 +
}}
  
 
Генерация самозаверяющего сертификата
 
Генерация самозаверяющего сертификата
  
  openssl x509 -req -days 365 -in /etc/ssl/mail/mx.rosa3.loc.csr -signkey /etc/ssl/mail/mx.rosa3.loc.key -out /etc/ssl/mail/mx.rosa3.loc.crt
+
  openssl x509 -req -days 365 -in /etc/ssl/mail/{{Процесс|mx.rosa3.loc.csr}} -signkey /etc/ssl/mail/{{Процесс|mx.rosa3.loc.key}} -out /etc/ssl/mail/{{Процесс|mx.rosa3.loc.crt}}
  
[[Файл:Mx14.png]]
+
[[Файл:Mx14.png|500px]]
  
 
Генерация dh для dovecot
 
Генерация dh для dovecot
Строка 146: Строка 170:
 
Займет долго время, примерно минут 10-15.
 
Займет долго время, примерно минут 10-15.
  
  chmod -R 666 /etc/ssl/mail
+
  chmod -R 644 /etc/ssl/mail
 +
 
 +
chmod 755 /etc/ssl/mail
  
 
  cp /etc/postfix/main.cf /etc/postfix/main.cf.original
 
  cp /etc/postfix/main.cf /etc/postfix/main.cf.original
Строка 152: Строка 178:
 
Редактируем:
 
Редактируем:
  
  nano /etc/postfix/main.cf
+
  nano {{Источник|/etc/postfix/main.cf}}
  
 
Правим:
 
Правим:
Строка 182: Строка 208:
 
Добавляем в конец файла:
 
Добавляем в конец файла:
 
<pre>
 
<pre>
myhostname = mx.rosa2.loc
+
myhostname = mx.rosa3.loc
mydomain = rosa2.loc
+
mydomain = rosa3.loc
 
mynetworks = 127.0.0.0/8 192.168.1.0/24
 
mynetworks = 127.0.0.0/8 192.168.1.0/24
 
alias_maps = hash:/etc/aliases
 
alias_maps = hash:/etc/aliases
Строка 247: Строка 273:
 
smtpd_tls_session_cache_timeout = 3600s
 
smtpd_tls_session_cache_timeout = 3600s
 
smtp_tls_session_cache_database = btree:$data_directory/smtp_tls_session_cache
 
smtp_tls_session_cache_database = btree:$data_directory/smtp_tls_session_cache
smtpd_tls_key_file = /etc/ssl/mail/mx.rosa2.loc.key
+
smtpd_tls_key_file = /etc/ssl/mail/mx.rosa3.loc.key
smtpd_tls_cert_file = /etc/ssl/mail/mx.rosa2.loc.crt
+
smtpd_tls_cert_file = /etc/ssl/mail/mx.rosa3.loc.crt
 
tls_random_source = dev:/dev/urandom
 
tls_random_source = dev:/dev/urandom
  
Строка 272: Строка 298:
 
Редактируем:
 
Редактируем:
  
  nano /etc/postfix/sql/vdomains.cf
+
  nano {{Источник|/etc/postfix/sql/vdomains.cf}}
 
<pre>
 
<pre>
 
user = postfix
 
user = postfix
Строка 286: Строка 312:
 
Редактируем:
 
Редактируем:
  
  nano /etc/postfix/sql/vmailbox.cf
+
  nano {{Источник|/etc/postfix/sql/vmailbox.cf}}
 
<pre>
 
<pre>
 
user = postfix
 
user = postfix
Строка 297: Строка 323:
 
additional_conditions = and active = '1'
 
additional_conditions = and active = '1'
 
</pre>
 
</pre>
Ркудактируем:
+
Редактируем:
  
  nano /etc/postfix/sql/valias.cf
+
  nano {{Источник|/etc/postfix/sql/valias.cf}}
 
<pre>
 
<pre>
 
user = postfix
 
user = postfix
Строка 313: Строка 339:
 
Редактируем:
 
Редактируем:
  
  nano /etc/postfix/master.cf
+
  nano {{Источник|/etc/postfix/master.cf}}
  
 
Закомментировать после этих строк:
 
Закомментировать после этих строк:
 
<pre>
 
<pre>
 
pickup  unix    n      -      y      60      1      pickup
 
pickup  unix    n      -      y      60      1      pickup
 +
</pre>
 
Нижение комментируем:
 
Нижение комментируем:
 +
<pre>
 
#  -o content_filter=
 
#  -o content_filter=
 
#  -o receive_override_options=
 
#  -o receive_override_options=
Строка 397: Строка 425:
 
   -o milter_macro_daemon_name=ORIGINATING
 
   -o milter_macro_daemon_name=ORIGINATING
 
</pre>
 
</pre>
Перед "-o....." ДВА пробела!!
+
'''Перед "-o....." ДВА пробела!!'''
 +
 
 +
Проверяем, должны получится вот такие конфигурационные файлы:
 +
 
 +
[[Файл:Postfix-main.cf|Это конифг mail.cf]]
 +
 
 +
[[Файл:Postfix-master.cf| Это конфиг master.cf]]
  
 
=== Настройка Dovecot ===
 
=== Настройка Dovecot ===
Строка 405: Строка 439:
 
Редактируем:
 
Редактируем:
  
  nano /etc/dovecot/dovecot.conf
+
  nano {{Источник|/etc/dovecot/dovecot.conf}}
  
 
Правим и раскомментируем:
 
Правим и раскомментируем:
Строка 477: Строка 511:
 
ssl = required
 
ssl = required
 
verbose_ssl = yes
 
verbose_ssl = yes
ssl_cert = </etc/ssl/mail/mx.rosa2.loc.crt
+
ssl_cert = </etc/ssl/mail/mx.rosa3.loc.crt
ssl_key = </etc/ssl/mail/mx.rosa2.loc.key
+
ssl_key = </etc/ssl/mail/mx.rosa3.loc.key
 
ssl_dh = </etc/ssl/mail/dh.pem
 
ssl_dh = </etc/ssl/mail/dh.pem
ssl_cipher_list = ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GC>
+
ssl_cipher_list = ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GC
 
ssl_prefer_server_ciphers = yes
 
ssl_prefer_server_ciphers = yes
 
</pre>
 
</pre>
Строка 486: Строка 520:
 
Редактируем:
 
Редактируем:
  
  nano /etc/dovecot/dovecot-sql.conf
+
  nano {{Источник|/etc/dovecot/dovecot-sql.conf}}
 
<pre>
 
<pre>
 
driver = mysql
 
driver = mysql
Строка 494: Строка 528:
 
password_query = SELECT username as user, password, '/var/vmail/%d/%n' as userdb_home, 'maildir:/var/vmail/%d/%n' as userdb_mail, 1150 as userdb_uid, 12 asuserdb_gid FROM mailbox WHERE username = '%u' AND active = '1'
 
password_query = SELECT username as user, password, '/var/vmail/%d/%n' as userdb_home, 'maildir:/var/vmail/%d/%n' as userdb_mail, 1150 as userdb_uid, 12 asuserdb_gid FROM mailbox WHERE username = '%u' AND active = '1'
 
</pre>
 
</pre>
 
Редактируем:
 
 
nano /etc/my.cnf
 
 
Добавим в секцию:
 
<pre>
 
[client-server]
 
socket=/run/mysqld/mysql.sock
 
</pre>
 
 
Редактируем:
 
 
nano /etc/my.cnf.d/server.cnf
 
 
Подправим:
 
bind-address=127.0.0.1
 
  
 
Далее:
 
Далее:
Строка 527: Строка 544:
 
</pre>
 
</pre>
 
[[Файл:Mx16.png]]
 
[[Файл:Mx16.png]]
 +
 +
Проверяем конфиг файл, должен быть такого вида:
 +
[[Файл:Dovecot.txt]] Это dovecot.conf
  
 
=== Рестарт системы ===
 
=== Рестарт системы ===
Строка 546: Строка 566:
 
Добавляем туда:
 
Добавляем туда:
  
Админ: admin@rosa3.loc
+
Админ: '''{{Процесс|admin@rosa3.loc}}'''
  
 
Ну и пароли свои... Запоминаем...
 
Ну и пароли свои... Запоминаем...
  
[[Файл:Mx17.png]]
+
<gallery>
[[Файл:Mx18.png]]
+
Файл:Mx17.png
 +
Файл:Mx18.png
 +
</gallery>
  
 
В браузере http://localhost/postfixadmin/
 
В браузере http://localhost/postfixadmin/
  
Логин: admin@rosa3.loc / пароль который запомнили
+
Логин: {{Процесс|admin@rosa3.loc}} / пароль который запомнили
  
[[Файл:Mx19.png]]
+
[[Файл:Mx19.png|500px]]
  
 
Добавляем домен: "Список доменов" -> "Новый домен"
 
Добавляем домен: "Список доменов" -> "Новый домен"
  
Домен: rosa3.loc
+
Домен: '''{{Процесс|rosa3.loc}}'''
  
 
Жмем "Добавить"
 
Жмем "Добавить"
  
[[Файл:Mx21.png]]
+
[[Файл:Mx21.png|500px]]
  
 
Добавляем ящики1: "Обзор" -> "Создать ящик"
 
Добавляем ящики1: "Обзор" -> "Создать ящик"
Строка 577: Строка 599:
 
Жмем "Создать ящик"
 
Жмем "Создать ящик"
  
[[Файл:Mx22.png]]
+
[[Файл:Mx22.png|500px]]
  
 
Добавляем ящики2: "Обзор" -> "Создать ящик"
 
Добавляем ящики2: "Обзор" -> "Создать ящик"
Строка 589: Строка 611:
 
Жмем "Создать ящик"
 
Жмем "Создать ящик"
  
[[Файл:Mx23.png]]
+
[[Файл:Mx23.png|500px]]
  
 
=== Настройка клиентских станций ===
 
=== Настройка клиентских станций ===
Строка 595: Строка 617:
 
На компе Клиента1
 
На компе Клиента1
  
В /etc/hosts добавляем:
+
В {{Источник|/etc/hosts}} добавляем:
  
  192.168.1.76 mx.rosa3.loc mx
+
  {{Cmd|192.168.1.76 mx.rosa3.loc mx}}
  
 
В почтовой программе добавляем УЗ:
 
В почтовой программе добавляем УЗ:
  
Логин везде user1@rosa3.loc
+
Логин везде {{Процесс|user1@rosa3.loc}}
  
 
IMAP:
 
IMAP:
Строка 623: Строка 645:
 
Запусуаем почтовую программу.
 
Запусуаем почтовую программу.
  
[[Файл:Mx24.png]]
+
<gallery>
[[Файл:Mx25.png]]
+
Файл:Mx24.png
[[Файл:Mx26.png]]
+
Файл:Mx25.png
[[Файл:Mx27.png]]
+
Файл:Mx26.png
[[Файл:Mx28.png]]
+
Файл:Mx27.png
 +
Файл:Mx28.png
 +
</gallery>
  
 
И можно наживамть "Получить" почту.
 
И можно наживамть "Получить" почту.
Строка 633: Строка 657:
 
Но первый раз не сработает. Надо перезапустить программу.
 
Но первый раз не сработает. Надо перезапустить программу.
  
[[Файл:Mx29.png]]
+
[[Файл:Mx29.png|500px]]
  
 
После перезапуска возможно такая же ошибка, просто жмем ОК и еще раз "Получить" почту.
 
После перезапуска возможно такая же ошибка, просто жмем ОК и еще раз "Получить" почту.
Строка 639: Строка 663:
 
У нас высветится запрос на получение серфтификатов, нажимаем в левом нижнем углу кнопку "Подтверждаем ...."
 
У нас высветится запрос на получение серфтификатов, нажимаем в левом нижнем углу кнопку "Подтверждаем ...."
  
[[Файл:Mx30.png]]
+
[[Файл:Mx30.png|500px]]
  
 
Далее высветится запрос на пароль user1
 
Далее высветится запрос на пароль user1
  
[[Файл:Mx31.png]]
+
[[Файл:Mx31.png|500px]]
  
 
Видим письмо с "Добро пожаловать!", значит все настроили правильно с IMAP сервером.
 
Видим письмо с "Добро пожаловать!", значит все настроили правильно с IMAP сервером.
  
[[Файл:Mx32.png]]
+
[[Файл:Mx32.png|500px]]
  
 
Теперь создадим и отошлем письмо user2@rosa3.loc
 
Теперь создадим и отошлем письмо user2@rosa3.loc
Строка 655: Строка 679:
 
Наждмем "Отправить", у нас как обычно высветится принятие сертификата (теперь уже от SMTP) сервера.
 
Наждмем "Отправить", у нас как обычно высветится принятие сертификата (теперь уже от SMTP) сервера.
  
[[Файл:Mx33.png]]
+
[[Файл:Mx33.png|500px]]
  
 
Принимаем его, НО ничего не отошлется. Нажимаем на "Отмена", и снова создаем новое письмо и потом уже жмем "Отправить".
 
Принимаем его, НО ничего не отошлется. Нажимаем на "Отмена", и снова создаем новое письмо и потом уже жмем "Отправить".
  
[[Файл:Mx34.png]]
+
[[Файл:Mx34.png|500px]]
  
 
Будет теперь уже запрос на пароль. Вводим его. И письмо должно отправиться.
 
Будет теперь уже запрос на пароль. Вводим его. И письмо должно отправиться.
  
[[Файл:Mx35.png]]
+
<gallery>
[[Файл:Mx36.png]]
+
Файл:Mx35.png
 +
Файл:Mx36.png
 +
</gallery>
  
 
Далее настраиваем АНАЛОГИЧНО учентую запись (УЗ) для user2@rosa3.loc
 
Далее настраиваем АНАЛОГИЧНО учентую запись (УЗ) для user2@rosa3.loc
Строка 674: Строка 700:
 
Проверяем получение письма тестового от user1@rosa3.loc
 
Проверяем получение письма тестового от user1@rosa3.loc
  
[[Файл:Mx37.png]]
+
[[Файл:Mx37.png|500px]]
  
 
Если всё настроили правильно, увилим тестое письмо.
 
Если всё настроили правильно, увилим тестое письмо.

Текущая версия на 13:02, 24 июня 2024

Настройка Postfix + Dovecot + MySQL + PostfixAdmin + SSL/TLS

Настройка для ОС Роса Никель

Устанавливаем пакеты dovecot-plugins-mysql и php-imap

dnf install php-imap dovecot-plugins-mysql

Условия работаты такие:

  • Сервер - ip: 192.168.1.76
  • Все клиенты в этой же подсети - 192.168.1.0/24
  • Имя хоста сервера - mx.rosa3.loc
  • Имя почтового домена - rosa3.loc
  • Все сервисы у нас отключены и не запущены

Редактируем nano /etc/hosts

192.168.1.76 mx.rosa3.loc mx

Mx1.png

Настройка MySQL

Mysql создание почтовой базы:

systemctl start mysqld.service
mysql_secure_installation

mysql -u root -p # pass=654321

mysql>  CREATE DATABASE mail;
mysql>  GRANT ALL PRIVILEGES ON mail.* TO 'postfix'@'localhost' IDENTIFIED BY 'maildbpass';
mysql>  FLUSH PRIVILEGES;
mysql>  quit

Редактируем:

nano /etc/my.cnf

Добавим в секцию:

[client-server]
socket=/run/mysqld/mysql.sock

Редактируем:

nano /etc/my.cnf.d/server.cnf

Подправим:

bind-address=127.0.0.1

Инсталляция PostfixAdmin

postfixadmin инсталляция:

cd /var/www/html

wget -O postfixadmin.tgz https://github.com/postfixadmin/postfixadmin/archive/postfixadmin-3.2.4.tar.gz
tar -zxvf postfixadmin.tgz
mv postfixadmin-postfixadmin-3.2.4/ postfixadmin
chown -R apache:apache /var/www/html/postfixadmin
cd postfixadmin
mkdir /var/www/html/postfixadmin/templates_c
chown -R apache:apache /var/www/html/postfixadmin/templates_c

Либо скачать с wiki эту версию postfixadmin: Файл:Postfixadmin-postfixadmin-3.2.4.tar.gz

Настройка PHP 5.6.40

Редактируем:

nano /etc/php.ini
date.timezone = Europe/Moscow

Mx4.png

Настройка Apache

Редактируем:

nano /etc/httpd/conf/httpd.conf

После DocumentRoot "/var/www/html" добавляем:

Alias "/postfixadmin" "/var/www/html/postfixadmin/public"

Копируем конфиги:

cp ./config.inc.php ./config.local.php

Mx5.png

Настройка PostfixAdmin

Редактируем:

nano /var/www/html/postfixadmin/config.local.php
$CONF['configured'] = true;

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfix';
$CONF['database_password'] = 'maildbpass';
$CONF['database_name'] = 'mail';

$CONF['encrypt'] = 'dovecot:CRAM-MD5';
$CONF['dovecotpw'] = "/usr/bin/doveadm pw";
$CONF['emailcheck_resolve_domain']='NO';
$CONF['fetchmail'] = 'NO';

chown apache:apache  /var/www/html/postfixadmin/config.local.php
systemctl start httpd.service

В браузере: http://localhost/postfixadmin/setup.php

Вводим пароль, жмем ОК, нам предлагаютс исправить параметр setup_password и hash.

Копируем hash и в /var/www/html/postfixadmin/config.local.php в параметре setup_passwd вместо changeme вписываем наш hash.

Настройка Postfix

Генерация сертификатов

mkdir /etc/ssl/mail

Генерация закрытого ключа CSR

openssl req -nodes -newkey rsa:2048 -keyout /etc/ssl/mail/mx.rosa3.loc.key -out /etc/ssl/mail/mx.rosa3.loc.csr

На вопрос про FQDN отвечаем: mx.rosa3.loc

Dialog-warning.png
Предупреждение

Если запрос на FQDN не получите, то закончите генерацию, сотрите:

rm /etc/ssl/mail/mx.rosa3.*
И повторите отперацию генерации.

Генерация самозаверяющего сертификата

openssl x509 -req -days 365 -in /etc/ssl/mail/mx.rosa3.loc.csr -signkey /etc/ssl/mail/mx.rosa3.loc.key -out /etc/ssl/mail/mx.rosa3.loc.crt

Mx14.png

Генерация dh для dovecot

openssl dhparam -out /etc/ssl/mail/dh.pem 4096

Займет долго время, примерно минут 10-15.

chmod -R 644 /etc/ssl/mail
chmod 755 /etc/ssl/mail
cp /etc/postfix/main.cf /etc/postfix/main.cf.original

Редактируем:

nano /etc/postfix/main.cf

Правим:

inet_interfaces = all
inet_protocols = ipv4
mydestination =
unknown_local_recipient_reject_code = 550
mynetworks_style = subnet
newaliases_path = /usr/bin/newaliases.postfix
mailq_path = /usr/bin/mailq.postfix
html_directory = no

Закомментировать:

#local_recipient_maps = unix:passwd.byname $alias_maps
#smtpd_banner = $myhostname ESMTP $mail_name ($mail_version) (OpenMandriva)
#smtp-filter_destination_concurrency_limit = 2
#lmtp-filter_destination_concurrency_limit = 2
#smtpd_use_tls = yes
#smtpd_tls_cert_file = /etc/pki/tls/certs/postfix.pem
#smtpd_tls_key_file = /etc/pki/tls/private/postfix.pem
#smtpd_tls_CAfile = /etc/pki/tls/certs/ca-bundle.crt
#meta_directory = /etc/postfix
#shlib_directory = /usr/lib64/postfix

Добавляем в конец файла:

myhostname = mx.rosa3.loc
mydomain = rosa3.loc
mynetworks = 127.0.0.0/8 192.168.1.0/24
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
debug_peer_level = 2
debug_peer_list = 127.0.0.1 192.168.1.59
debugger_command =
         PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
         ddd $daemon_directory/$process_name $process_id & sleep 5
sample_directory = /usr/share/doc/postfix-2.10.1/samples
virtual_mailbox_domains = mysql:$config_directory/sql/vdomains.cf
virtual_mailbox_base = /var/vmail
virtual_mailbox_maps = mysql:$config_directory/sql/vmailbox.cf
virtual_alias_maps = mysql:$config_directory/sql/valias.cf
virtual_minimum_uid = 1150
virtual_uid_maps = static:1150
virtual_gid_maps = static:12
virtual_transport = dovecot
disable_dns_lookups = yes
smtpd_recipient_restrictions = permit_mynetworks,
    permit_sasl_authenticated,
    reject_unauth_destination,
    reject_non_fqdn_recipient,
    reject_invalid_hostname,
    reject_unknown_recipient_domain,
    reject_unknown_client,
    reject_unlisted_recipient,
    reject_unverified_recipient,
    reject_unauth_pipelining,
    reject_rbl_client cbl.abuseat.org,
    reject_rbl_client dialups.mail-abuse.org,
    reject_rbl_client bl.spamcop.net,
    reject_rbl_client zen.spamhaus.org,
    reject_rbl_client sbl-xbl.spamhaus.org,
    permit
smtpd_discard_ehlo_keywords = etrn, silent-discard
smtpd_forbidden_commands = CONNECT GET POST
broken_sasl_auth_clients = yes
smtpd_delay_reject = yes
smtpd_helo_required = yes
smtp_always_send_ehlo = yes
disable_vrfy_command = yes

smtpd_helo_restrictions = permit_mynetworks,
 permit_sasl_authenticated,
 reject_non_fqdn_helo_hostname,
 reject_invalid_helo_hostname

smtpd_data_restrictions = permit_mynetworks,
 permit_sasl_authenticated,
 reject_unauth_pipelining,
 reject_multi_recipient_bounce

smtpd_sender_restrictions = permit_mynetworks,
 permit_sasl_authenticated,
 reject_non_fqdn_sender,
 reject_unknown_sender_domain

smtp_tls_security_level = may
smtpd_tls_security_level = may
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
smtp_tls_session_cache_database = btree:$data_directory/smtp_tls_session_cache
smtpd_tls_key_file = /etc/ssl/mail/mx.rosa3.loc.key
smtpd_tls_cert_file = /etc/ssl/mail/mx.rosa3.loc.crt
tls_random_source = dev:/dev/urandom

soft_bounce = no
maximal_queue_lifetime = 1d
bounce_queue_lifetime = 1d

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/dovecot-auth

Далее создаем vmail юзера виртуального

useradd -r -u 1150 -g mail -d /var/vmail -s /sbin/nologin -c Virtual vmail
mkdir -p -v /var/vmail
chmod 770 -R /var/vmail
chown vmail:mail /var/vmail
mkdir /etc/postfix/sql

Редактируем:

nano /etc/postfix/sql/vdomains.cf
user = postfix
password = maildbpass
hosts = 127.0.0.1
dbname = mail
table = domain
select_field = domain
where_field = domain
additional_conditions = and backupmx = '0' and active = '1'

Редактируем:

nano /etc/postfix/sql/vmailbox.cf
user = postfix
password = maildbpass
hosts = 127.0.0.1
dbname = mail
table = mailbox
select_field = CONCAT(domain,'/',maildir)
where_field = username
additional_conditions = and active = '1'

Редактируем:

nano /etc/postfix/sql/valias.cf
user = postfix
password = maildbpass
hosts = 127.0.0.1
dbname     = mail
table = alias
select_field = goto
where_field = address
additional_conditions = and active = '1'

Редактируем:

nano /etc/postfix/master.cf

Закомментировать после этих строк:

pickup  unix    n       -       y       60      1       pickup

Нижение комментируем:

#  -o content_filter=
#  -o receive_override_options=

Закомментировать после этих строк:

relay   unix    -       -       y       -       -       smtp

Нижение комментируем:

#        -o syslog_name=postfix/$service_name

Закомментируем:

#postlog        unix-dgram      n       -       y       -       1       postlogd

#cyrus-deliver     unix  -       n       n       -       -       pipe
#  user=cyrus argv=/usr/lib/cyrus-imapd/deliver -e -r ${sender} -m ${extension} ${user}

#cyrus-inet      unix    -       -       y       -       -       lmtp
#  -o lmtp_sasl_auth_enable=yes
#  -o lmtp_sasl_password_maps=hash:/etc/postfix/cyrus_lmtp_sasl_pass
#  -o lmtp_sasl_security_options=noanonymous

#127.0.0.1:10026 inet    n       -       y       -       -       smtpd
#  -o content_filter=
#  -o smtpd_restriction_classes=
#  -o smtpd_client_restrictions=permit_mynetworks,reject
#  -o smtpd_helo_restrictions=
#  -o smtpd_sender_restrictions=
#  -o smtpd_end_of_data_restrictions=
#  -o smtpd_etrn_restrictions=
#  -o smtpd_data_restrictions=
#  -o smtpd_delay_reject=no
#  -o smtpd_recipient_restrictions=permit_mynetworks,reject
#  -o mynetworks=127.0.0.0/8
#  -o smtpd_authorized_xforward_hosts=127.0.0.0/8
#  -o strict_rfc821_envelopes=yes
#  -o smtpd_error_sleep_time=0
#  -o smtpd_soft_error_limit=1001
#  -o smtpd_hard_error_limit=1000
#  -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks

#lmtp-filter     unix    -       -       y       -       -       lmtp
#  -o lmtp_data_done_timeout=1200
#  -o lmtp_send_xforward_command=yes
#  -o max_use=20

#smtp-filter     unix    -       -       y       -       -       smtp
#  -o smtp_data_done_timeout=1200
#  -o smtp_send_xforward_command=yes
#  -o max_use=20

Проверяем, чтобы перед словом flags=DRhu было ДВА пробела:

dovecot    unix    -    n    n    -    -    pipe
  flags=DRhu user=vmail:mail argv=/usr/libexec/dovecot/deliver -d $(recipient)

Добавляем в конец файла:

submission      inet    n       -       y       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_wrappermode=no
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
  -o smtpd_relay_restrictions=permit_mynetworks,permit_sasl_authenticated,defer_unauth_destination
  -o milter_macro_daemon_name=ORIGINATING

smtps   inet    n       -       y       -       -       smtpd
  -o syslog_name=postfix/smtps
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
  -o smtpd_relay_restrictions=permit_mynetworks,permit_sasl_authenticated,defer_unauth_destination
  -o milter_macro_daemon_name=ORIGINATING

Перед "-o....." ДВА пробела!!

Проверяем, должны получится вот такие конфигурационные файлы:

Файл:Postfix-main.cf

Файл:Postfix-master.cf

Настройка Dovecot

cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.orig

Редактируем:

nano /etc/dovecot/dovecot.conf

Правим и раскомментируем:

protocols = imap pop3 lmtp

Закомментируем:

#!include conf.d/*.conf

#!include_try local.conf

Добавим в конец файла:

auth_mechanisms = plain login
disable_plaintext_auth = yes
ssl = yes
passdb {
          args = /etc/dovecot/dovecot-sql.conf
          driver = sql
}
protocols = imap pop3
service auth {
   unix_listener /var/spool/postfix/private/dovecot-auth {
          user = postfix
          group = postfix
          mode = 0660
    }
   unix_listener auth-master {
          user = vmail
          group = mail
          mode = 0660
    }
   unix_listener auth-userdb {
          user = vmail
          group = mail
          mode = 0660
    }
#user=root
}
service imap-login {
    executable = /usr/libexec/dovecot/imap-login
           inet_listener imap {
           address = *
           port = 143
     }
}
service imap {
    executable = /usr/libexec/dovecot/imap
}
service pop3-login {
     executable = /usr/libexec/dovecot/pop3-login
           inet_listener pop3 {
           address = *
           port = 110
     }
}
service pop3 {
           executable = /usr/libexec/dovecot/pop3
}
userdb {
           args = /etc/dovecot/dovecot-sql.conf
           driver = sql
}
protocol lda {
            auth_socket_path = /var/run/dovecot/auth-master
            postmaster_address = admin@rosa3.loc
}

#ssl_min_protocol = TLSv1.2 TLSv1.3
ssl = required
verbose_ssl = yes
ssl_cert = </etc/ssl/mail/mx.rosa3.loc.crt
ssl_key = </etc/ssl/mail/mx.rosa3.loc.key
ssl_dh = </etc/ssl/mail/dh.pem
ssl_cipher_list = ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GC
ssl_prefer_server_ciphers = yes

Редактируем:

nano /etc/dovecot/dovecot-sql.conf
driver = mysql
connect = host=localhost dbname=mail user=postfix password=maildbpass
default_pass_scheme = CRAM-MD5
user_query = SELECT '/var/vmail/%d/%n' as home, 'maildir:/var/vmail/%d/%n'as mail, 1150 AS uid, 12 AS gid, concat('dirsize:storage=', quota) AS quota FROM mailbox WHERE username = '%u' AND active = '1'
password_query = SELECT username as user, password, '/var/vmail/%d/%n' as userdb_home, 'maildir:/var/vmail/%d/%n' as userdb_mail, 1150 as userdb_uid, 12 asuserdb_gid FROM mailbox WHERE username = '%u' AND active = '1'

Далее:

usermod -a -G mail apache
usermod -a -G mail dovecot
chown -R mail:mail /etc/dovecot
chmod +x -R /etc/dovecot

Далее стартуем/рестартуем наши сервисы:

systemctl restart mysqld.service
systemctl start postfix.service
systemctl start dovecot.service
systemctl restart httpd.service

Mx16.png

Проверяем конфиг файл, должен быть такого вида: Файл:Dovecot.txt Это dovecot.conf

Рестарт системы

reboot

Стартуем все сервисы, сначала Mysql потом все остальные

systemctl start mysqld.service
systemctl start postfix.service
systemctl start dovecot.service
systemctl start httpd.service

В браузере http://localhost/postfixadmin/setup.php

Появится форма добавления Админа postfixadmin.

Добавляем туда:

Админ: admin@rosa3.loc

Ну и пароли свои... Запоминаем...

В браузере http://localhost/postfixadmin/

Логин: admin@rosa3.loc / пароль который запомнили

Mx19.png

Добавляем домен: "Список доменов" -> "Новый домен"

Домен: rosa3.loc

Жмем "Добавить"

Mx21.png

Добавляем ящики1: "Обзор" -> "Создать ящик"

Название: user1

Имя: USERONE

Квота: 100

Жмем "Создать ящик"

Mx22.png

Добавляем ящики2: "Обзор" -> "Создать ящик"

Название: user2

Имя: USERTWO

Квота: 100

Жмем "Создать ящик"

Mx23.png

Настройка клиентских станций

На компе Клиента1

В /etc/hosts добавляем:

192.168.1.76 mx.rosa3.loc mx

В почтовой программе добавляем УЗ:

Логин везде user1@rosa3.loc

IMAP:

Порт- 993
Защита соединения- SSL/TLS
Метод аутентификации- Обычный пароль

SMTP:

Порт- 465
Сервер- mx.rosa3.loc
Зазита соединения- SSL/TLS
Метод аутентификации- Обычный пароль
Имя пользователя- user1@rosa3.loc

На компе Клиента2 аналогичным образом настраиваем почтовик. Только вместо user1 пишем везде user2

Запусуаем почтовую программу.

И можно наживамть "Получить" почту.

Но первый раз не сработает. Надо перезапустить программу.

Mx29.png

После перезапуска возможно такая же ошибка, просто жмем ОК и еще раз "Получить" почту.

У нас высветится запрос на получение серфтификатов, нажимаем в левом нижнем углу кнопку "Подтверждаем ...."

Mx30.png

Далее высветится запрос на пароль user1

Mx31.png

Видим письмо с "Добро пожаловать!", значит все настроили правильно с IMAP сервером.

Mx32.png

Теперь создадим и отошлем письмо user2@rosa3.loc

Создадим письмо для user2@rosa3.loc

Наждмем "Отправить", у нас как обычно высветится принятие сертификата (теперь уже от SMTP) сервера.

Mx33.png

Принимаем его, НО ничего не отошлется. Нажимаем на "Отмена", и снова создаем новое письмо и потом уже жмем "Отправить".

Mx34.png

Будет теперь уже запрос на пароль. Вводим его. И письмо должно отправиться.

Далее настраиваем АНАЛОГИЧНО учентую запись (УЗ) для user2@rosa3.loc

После ее создания и настройки, ЗАКРЫВАЕМ почтовую программу, и снова открываем ее.

Тогда у нас начнет арботать user2@rosa3.loc

Проверяем получение письма тестового от user1@rosa3.loc

Mx37.png

Если всё настроили правильно, увилим тестое письмо.