Настройка почтового сервера

Материал из Webko Wiki
Перейти к навигации Перейти к поиску

Исходная информация

Настройка почтового сервера на базе CentOS 7 и Exim

OS - CentOS 7
smtp - Exim
pop3/imap - Dovecot
antivirus - ClamAV
gui - PostfixAdmin
webmail - Roundcube

Подготовка сервера

1) Устанавливаем ОС в минимальной поставке.

2) Назначаем валидный(белый) ip адрес с бэерезолвом в хостнейм сервера (PTR).

3) Обновляем свежеустановленую систему:

[root@mail ~] yum update -y
[root@mail ~] reboot

4) Устанавливаем необходимые репозитории

[root@mail ~] yum install epel-release.noarch -y

5) Устанавливаем необходимый прикладной софт

[root@mail ~] yum install mc vim wget net-tools bind-utils htop -y

6) Отключаем SELINUX

[root@mail ~] vim /etc/sysconfig/selinux
Заменяем SELINUX=enforcing на SELINUX=disabled, сохраняем

7) Отключаем firewalld

[root@mail ~] systemctl stop firewalld
[root@mail ~] systemctl disable firewalld
[root@mail ~] yum remove firewalld -y

8) Отключаем и удаляем то что нам не пригодится

[root@mail ~] systemctl stop wpa_supplicant postfix
[root@mail ~] systemctl disable wpa_supplicant postfix
[root@mail ~] yum remove postfix -y

9) Перезагружаемся

[root@mail ~] reboot

Натройка компонентов

Переходим непосредственно к настройке почтовых и вспомагательных сервисов.

Создадим пользователя и групу от имени которого будем работать с почтой.

Так как почту будем хранить в каталоге /var/spool/vmail то туда же и назначим домашнюю деректорию нашего пользователя.

[root@mail ~] useradd -d /var/spool/vmail -s /sbin/nologin -c "vmail user" vmail

ClamAV

Установим и настроим антивирус, подготовим его для работы с exim.

[root@mail ~] yum install clamav-server clamav-update clamav -y

Создадим пользователя от которого будет рботать демон clamav и добавим его в групу vmail

[root@mail ~] useradd -G clamupdate -d /var/lib/clamav -s /sbin/nologin -c "clamd user" clamd
[root@mail ~] usermod -G clamd,clamupdate,vmail clamd

Создадим файл сервиса для управления clamav через systemd

[root@mail ~] vim /usr/lib/systemd/system/clamd.service
[Unit]
Description = clamd scanner daemon
After = syslog.target nss-lookup.target network.target
[Service]
Type = simple
ExecStartPre=-/usr/bin/mkdir /var/run/clamd
ExecStartPre=/usr/bin/chown -R clamd:vmail /var/run/clamd
ExecStart = /usr/sbin/clamd -c /etc/clamd.d/clamd.conf --foreground=yes
Restart = on-failure
PrivateTmp = true

[Install]
WantedBy=multi-user.target

Натроим clamd

[root@mail ~] vim /etc/clamd.d/clamd.conf
LogSyslog yes
LogFacility LOG_MAIL
ExtendedDetectionInfo yes

PidFile /var/run/clamd/clamd.pid

TemporaryDirectory /tmp

LocalSocket /var/run/clamd/clamd.sock
LocalSocketMode 660

User clamd
AllowSupplementaryGroups yes
PhishingSignatures yes

MaxThreads 20

Настроим freshclam

[root@mail ~] vim /etc/sysconfig/freshclam

удаляем последнюю строчку

FRESHCLAM_DELAY=disabled-warn  # REMOVE ME
[root@mail ~] mv /etc/freshclam.conf /etc/freshclam.conf.bak
[root@mail ~] vim /etc/freshclam.conf
UpdateLogFile /var/log/freshclam.log
DatabaseMirror database.clamav.net
NotifyClamd /etc/clamd/clamd.conf

Обновляем базу сигнатур (займет какое-то время)

[root@mail ~] freshclam

Дальше он будет обновлятся по крону.

Запускаем демона clamd

[root@mail ~] systemctl daemon-reload
[root@mail ~] systemctl start clamd
# проверим запустился ли
[root@mail ~] systemctl status clamd
[root@mail ~] systemctl enable clamd

MySQL/MariaDB

Установим и настроим базу данных для хранения информации о наших ящиках и работы postfixadmin, roundcube.

[root@mail ~] yum install mariadb-server mariadb

Запустим и установим рутовй пароль

[root@mail ~] systemctl start mariadb
[root@mail ~] systemctl enable mariadb
[root@mail ~] mysql_secure_installation
# на вопрос ''Enter current password for root (enter for none):'' жмем Enter
# на следующий вопрос отвечаем Yes и вводим рутовый пароль

Создадим базу данных и дадим 2 пользователям на нее права (однуму чтение запись, второму чтение(для postfix и exim))

[root@mail ~] mysql -u root -p
MariaDB [(none)]> create database vmail;
MariaDB [(none)]> grant all on vmail.* to pf_admin@localhost identified by 'fizvSdyCXy';
MariaDB [(none)]> grant select on vmail.* to mail@localhost identified by '17V3BZ8Vh9'; # exim и dovecot больше и не нужно.
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit

Exim

Dovecot

Web services

Nginx+PHP-FPM

Postfixadmin

Roundcube