Установка нужных пакетов
1 | yum update |
Версия postfix с основного репозитория Centos не включает в себя поддержку MariaDB, вот из за этого postfix нужно установить с репозитория CentOs Plus, для этого нужно сделать исключения для пакета postfix в [base] и [updates] для предотвращения от записи и перезаписи пакетов без поддержки MariaDB.
в файле /etc/yum.repos.d/CentOS-Base.repo внесите правки:
1 2 3 4 5 6 7 8 | [base] name=CentOS-$releasever - Base exclude=postfix #released updates [updates] name=CentOS-$releasever - Updates exclude=postfix |
Установим необходимые пакеты
1 2 | yum --enablerepo=centosplus install postfix yum install dovecot mariadb-server dovecot-mysql |
Подготовим базу для наших почтовых ящиков
Запустим и поставим в автозагрузку mariadb service
1 2 | systemctl enable mariadb.service systemctl start mariadb.service |
и проведем первоначальную настройку
1 | mysql_secure_installation |
Зайдем в шелл mysql
1 | mysql -u root -p |
Создадим базу, пользователя и настроем таблицы
1 2 3 4 5 |
mymail,mailuser,mailUserPasswd — можно сменить на свои
Создадим таблицу для виртуальных доменов
Создадим таблицы для форвардинга
1 |
Таблица для мейл боксов
1 |
Таблица транспорта
1 |
Создадим почтовый домен
и создадим ящик
Можно выйти с mysql шелла
…
Перейдем к настройке нашего основного транспорта (основных служб и сервисов)
Сперва забиндим mariadb на прослушивание только локального адреса 127.0.0.1
файл /etc/my.cnf
пропишите
1 | bind-address=127.0.0.1 |
и перезапустите сервис
1 | systemctl restart mariadb.service |
настраиваем postfix для работы с mysql
создадим отдельную директорию с нашими sql настройками
1 | mkdir /etc/postfix/sql |
создаем настройку для доменов
1 | /etc/postfix/sql/mysql-domains.cf |
Создаем настройку для форвардинга
1 | /etc/postfix/sql/mysql-forwardings.cf |
Создаем настройку для ящиков
1 | /etc/postfix/sql/mysql-mailboxes.cf |
1
2
3
4
5 user = mailuser
password = mailUserPasswd
dbname = mymail
query = SELECT CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/') FROM users WHERE email='%s'
hosts = 127.0.0.1
Создаем настройку сопоставления адресов
1 | /etc/postfix/sql/mysql-email2email.cf |
Установим права на конфигурационные файлы
1 2 | chmod o= /etc/postfix/sql/* chgrp postfix /etc/postfix/sql/* |
Создаем пользователя и группу для обработки почты.
1 2 | groupadd -g 5000 vmail useradd -g vmail -u 5000 vmail -d /home/vmail -m |
Далее запускаем по шагово настройки конфигурации postfix Не забываем о смене имени hostname
##каждый postconf -e — новая команда###
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | postconf -e 'myhostname = mail.it-svc.com.ua' postconf -e 'mydestination = localhost, localhost.localdomain' postconf -e 'mynetworks = 127.0.0.0/8' postconf -e 'inet_interfaces = all' postconf -e 'message_size_limit = 30720000' postconf -e 'virtual_alias_domains =' postconf -e 'virtual_alias_maps = proxy:mysql:/etc/postfix/sql/mysql-forwardings.cf, mysql:/etc/postfix/sql/mysql-email2email.cf' postconf -e 'virtual_mailbox_domains = proxy:mysql:/etc/postfix/sql/mysql-domains.cf' postconf -e 'virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-mailboxes.cf' postconf -e 'virtual_mailbox_base = /home/vmail' postconf -e 'virtual_uid_maps = static:5000' postconf -e 'virtual_gid_maps = static:5000' postconf -e 'smtpd_sasl_type = dovecot' postconf -e 'smtpd_sasl_path = private/auth' postconf -e 'smtpd_sasl_auth_enable = yes' postconf -e 'broken_sasl_auth_clients = yes' postconf -e 'smtpd_sasl_authenticated_header = yes' postconf -e 'smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination' postconf -e 'smtpd_use_tls = yes' postconf -e 'smtpd_tls_cert_file = /etc/pki/dovecot/certs/dovecot.pem' postconf -e 'smtpd_tls_key_file = /etc/pki/dovecot/private/dovecot.pem' postconf -e 'virtual_create_maildirsize = yes' postconf -e 'virtual_maildir_extended = yes' postconf -e 'proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $virtual_mailbox_limit_maps' postconf -e 'virtual_transport = dovecot' postconf -e 'dovecot_destination_recipient_limit = 1' |
Уведомим postfix о том что обработкой входящих писем будет заниматься dovecot, для этого в конец файла /etc/postfix/master.cf нужно дописать две строки
1 2 | dovecot unix - n n - - pipe flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -f ${sender} -d ${recipient} |
и немного сменим настройки связанные с авторизацией на сервере для отправки и работой по защищенному протоколу
уберите решетки с этих строк
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | smtp inet n - - - - smtpd #smtp inet n - - - 1 postscreen #smtpd pass - - - - - smtpd #dnsblog unix - - - - 0 dnsblog #tlsproxy unix - - - - 0 tlsproxy submission inet n - - - - smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o milter_macro_daemon_name=ORIGINATING smtps inet n - - - - smtpd -o syslog_name=postfix/smtps -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o milter_macro_daemon_name=ORIGINATING |
ставим postfix в автозагрузку и запускаем его
1 2 | systemctl enable postfix.service systemctl start postfix.service |
Настроим DOVECOT
на всякий случай сохраним его стандартный конфиг
1 | mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.old |
и создадим новый с следующим содержанием
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | protocols = imap pop3 log_timestamp = "%Y-%m-%d %H:%M:%S " mail_location = maildir:/home/vmail/%d/%n/Maildir ssl_cert = </etc/pki/dovecot/certs/dovecot.pem ssl_key = </etc/pki/dovecot/private/dovecot.pem namespace { type = private separator = . prefix = INBOX. inbox = yes } service auth { unix_listener auth-master { mode = 0600 user = vmail } unix_listener /var/spool/postfix/private/auth { mode = 0666 user = postfix group = postfix } user = root } service auth-worker { user = root } protocol lda { log_path = /home/vmail/dovecot-deliver.log auth_socket_path = /var/run/dovecot/auth-master postmaster_address = postmaster@it-svc.com.ua } protocol pop3 { pop3_uidl_format = %08Xu%08Xv } passdb { driver = sql args = /etc/dovecot/dovecot-sql.conf } userdb { driver = static args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes } |
и создаем файл для работы с mysql
1 | /etc/dovecot/dovecot-sql.conf |
установим права владельца
1 2 | chgrp dovecot /etc/dovecot/dovecot-sql.conf chmod o= /etc/dovecot/dovecot-sql.conf |
ставим dovecot в автозагрузку и запускаем его
1 2 | systemctl enable dovecot.service systemctl start dovecot.service |
На этом наш почтовый сервер с обязательной авторизацией и работой на защищенных протоколах готов