Clamav+Dovecot+Exim: различия между версиями

Материал из BSD Howto
Перейти к навигации Перейти к поиску
 
(не показано 39 промежуточных версий этого же участника)
Строка 19: Строка 19:
Установка из пакета:
Установка из пакета:
  # pkg install clamav
  # pkg install clamav
Updating FreeBSD repository catalogue...
FreeBSD repository is up to date.
All repositories are up to date.
The following 19 package(s) will be affected (of 0 checked):
New packages to be INSTALLED:
        arc: 5.21q_1
        arj: 3.10.22_12
        brotli: 1.1.0,1
        clamav: 1.4.2_1,1
        curl: 8.12.1
        '''[пропущен список пакетов для установки]'''
Number of packages to be installed: 19
The process will require 95 MiB more space.
21 MiB to be downloaded.
Proceed with this action? [y/N]: y
[1/19] Fetching indexinfo-0.3.1_1.pkg: 100%    6 KiB  6.0kB/s    00:01
[2/19] Fetching libnghttp2-1.65.0.pkg: 100%  136 KiB 139.4kB/s    00:01
[3/19] Fetching libxml2-2.11.9.pkg: 100%  872 KiB 893.4kB/s    00:01
[4/19] Fetching libidn2-2.3.8.pkg: 100%  160 KiB 164.2kB/s    00:01
[5/19] Fetching liblz4-1.10.0,1.pkg: 100%  163 KiB 167.3kB/s    00:01
'''[пропущен список скачиваемых пакетов]'''
Checking integrity... done (0 conflicting)
[1/19] Installing arc-5.21q_1...
[1/19] Extracting arc-5.21q_1: 100%
[2/19] Installing arj-3.10.22_12...
[2/19] Extracting arj-3.10.22_12: 100%
[3/19] Installing brotli-1.1.0,1...
[3/19] Extracting brotli-1.1.0,1: 100%
[4/19] Installing indexinfo-0.3.1_1...
[4/19] Extracting indexinfo-0.3.1_1: 100%
[5/19] Installing json-c-0.18...
[5/19] Extracting json-c-0.18: 100%
'''[пропущен список устанавливаемых пакетов]'''
[19/19] Installing clamav-1.4.2_1,1...
===> Creating groups
Creating group 'clamav' with gid '106'
Using existing group 'mail'
===> Creating users
Creating user 'clamav' with uid '106'
Adding user 'clamav' to group 'mail'
[19/19] Extracting clamav-1.4.2_1,1: 100%


Проверка установки Clamav:
== Установка Dovecot ==
  # pkg version -v | grep clamav
 
  clamav-1.4.2,1                    <  needs updating (port has 1.4.2_1,1)
Установка из пакета:
  # pkg install dovecot_mysql
 
Установка автозапуска Dovecot в /etc/rc.conf:
# sysrc dovecot_enable="YES"
  dovecot_enable:  -> YES


Установка автозапуска Clam Antivirus в /etc/rc.conf:
== Настройка Dovecot ==
# sysrc clamav_freshclam_enable="YES"
# sysrc clamav_clamd_enable="YES"
# sysrc clamav_milter_enable="YES"


Сервис clamav_freshclam должен стартовать раньше clamav_clamd. Иначе будет получено следующее сообщение:
Копирование файлов настроек:
  # service clamav_clamd start
  # cp -Rpv /usr/local/etc/dovecot/example-config/* /usr/local/etc/dovecot
Missing /var/db/clamav/*.cvd or *.cld files.  You must run freshclam first


Запуск clamav_freshclam с получением санкций:
Пример настроек в /usr/local/etc/dovecot/dovecot.conf:
  # service clamav_freshclam start
  # Использование протоколов IMAP и LMTP:
protocols = imap lmtp
# Использование всех IPv4 данного хоста (можно указать необходимые IP-адреса):
listen = *


В файле /var/log/clamav/freshclam.log будет следующее:
Проверка протокола LMTP:
  WARNING: Can't download daily.cvd from https://database.clamav.net/daily.cvd
  # sockstat -l | grep lmtp
WARNING: FreshClam received error code 403 from the ClamAV Content Delivery Network (CDN).
root    dovecot    45657 25  stream /var/run/dovecot/lmtp


Уход от санкций (внесение изменений в файл /usr/local/etc/freshclam.conf):
Пример настроек в /usr/local/etc/dovecot/dovecot-sql.conf.ext:
  #DatabaseMirror database.clamav.net
  # Использование СУБД MySQL
  PrivateMirror packages.microsoft.com/clamav
driver = mysql
Удаление файла:
# Строка подключения к базе данных Postfix Admin
  # rm /var/db/clamav/freshclam.dat
  connect = host=192.168.0.103 dbname=mailadmin user=mailadmin password=<пароль к БД>
# Хранение паролей пользователей почты в базе данных Postfix Admin в открытом виде (это небезопасный способ, но можно оставить по умолчанию MD5):
default_pass_scheme = PLAIN
  # Запрос к базе данных Postfix Admin для получения информации о пользователе, например, о расположении почтового ящика:
user_query = select concat('/var/spool/dovecot/', maildir) as home, 143 as uid, 143 as gid from mailbox where username = '%n@%d' and active='1'
# Запрос к базе данных Postfix Admin для получения пароля пользователя почтового ящика:
password_query = select username as user, password from mailbox where username = '%n@%d' and active = '1'


Старт Clamav:
Пример настроек аутентификации в /usr/local/etc/dovecot/conf.d/10-auth.conf:
# service clamav_freshclam start
# service clamav_clamd start
# service clamav_milter start


Проверка Clamav:
Отключение параметра аутентификации, требующего наличия системной учётной записи у пользователей электронной почты.
  # sockstat -l | grep clamav
  #!include auth-system.conf.ext
clamav  clamav-mil  1374 3  stream /var/run/clamav/clmilter.sock
clamav  clamd      1342 4  stream /var/run/clamav/clamd.sock


== Установка Dovecot ==
Включение параметра аутентификации виртуальных пользователей с помощью базы данных из SQL (например, из базы данных Postfix Admin).
!include auth-sql.conf.ext
 
Пример настроек файлов журналов в /usr/local/etc/dovecot/conf.d/10-logging.conf:
# Определение расположения файлов журналов
log_path = /var/log/dovecot.log
# Включение регистрации неудачных попыток аутентификации и причин их неудач
auth_verbose = yes


  # pkg install dovecot
Настройки в файле /usr/local/etc/dovecot/conf.d/10-mail.conf:
  # Размещение почты в корневой папке /var/spool/dovecot в формате <домен>/<имя ящика>
mail_location = maildir:/var/spool/dovecot/%d/%u


== Установка mail/exim-mysql ==
== Установка mail/exim ==


Exim - агент отправки почты для систем Unix.
Exim - агент отправки почты для систем Unix.
Строка 118: Строка 87:
Установка автозапуска Exim в /etc/rc.conf:
Установка автозапуска Exim в /etc/rc.conf:
  # sysrc exim_enable="YES"
  # sysrc exim_enable="YES"
exim_enable:  -> YES
== Расшифровка вывода установки mail/exim ==
Настройка ротации файлов журнала Exim  добавлением строк в файл /etc/newslog.conf:
/var/log/exim/mainlog  mailnull:mail 640 7 * @T00 ZN
/var/log/exim/rejectlog mailnull:mail 640 7 * @T00 ZN
== Настройка mail/exim ==
Настройки Exim устанавливаются в файле /usr/local/etc/exim/configure:
Определение списка локальных доменов, обслуживаемых сервером (использование "@" разрешает локальные доставки):
domainlist local_domains = @ : ${lookup mysql{select domain from domain where domain='${domain}' and active='1'}}
Определение списка хостов, которые могут использовать сервер для пересылки исходящей почты (это обычно относится ко всей локальной сети, а также к самому серверу):
hostlist  relay_from_hosts = localhost : 192.168.0.0/24

Текущая версия от 20:51, 5 декабря 2025

Подготовка клетки для Clamav+Dovecot+Exim

Перед использованием этой статьи рекомендуется пройти по ссылке Qjail.

Создание отдельной файловой системы для клетки с Clamav+Dovecot+Exim в ZFS::

# zfs create zroot/usr/jails/mail

Создание клетки c именем "mail" и IPv4-адресом "192.168.0.105", запуск и управление клеткой:

# qjail create -4 192.168.0.105 mail
# qjail start mail
# qjail console mail

Установка security/clamav

Clam Antivirus - антивирусный сканер, который можно использовать для почтовых систем.

Подробная информация на сайте https://www.clamav.net/

Установка из пакета:

# pkg install clamav

Установка Dovecot

Установка из пакета:

# pkg install dovecot_mysql

Установка автозапуска Dovecot в /etc/rc.conf:

# sysrc dovecot_enable="YES"
dovecot_enable:  -> YES

Настройка Dovecot

Копирование файлов настроек:

# cp -Rpv /usr/local/etc/dovecot/example-config/* /usr/local/etc/dovecot

Пример настроек в /usr/local/etc/dovecot/dovecot.conf:

# Использование протоколов IMAP и LMTP:
protocols = imap lmtp
# Использование всех IPv4 данного хоста (можно указать необходимые IP-адреса):
listen = *

Проверка протокола LMTP:

# sockstat -l | grep lmtp
root     dovecot    45657 25  stream /var/run/dovecot/lmtp

Пример настроек в /usr/local/etc/dovecot/dovecot-sql.conf.ext:

# Использование СУБД MySQL
driver = mysql
# Строка подключения к базе данных Postfix Admin
connect = host=192.168.0.103 dbname=mailadmin user=mailadmin password=<пароль к БД>
# Хранение паролей пользователей почты в базе данных Postfix Admin в открытом виде (это небезопасный способ, но можно оставить по умолчанию MD5):
default_pass_scheme = PLAIN
# Запрос к базе данных Postfix Admin для получения информации о пользователе, например, о расположении почтового ящика:
user_query = select concat('/var/spool/dovecot/', maildir) as home, 143 as uid, 143 as gid from mailbox where username = '%n@%d' and active='1'
# Запрос к базе данных Postfix Admin для получения пароля пользователя почтового ящика:
password_query = select username as user, password from mailbox where username = '%n@%d' and active = '1'

Пример настроек аутентификации в /usr/local/etc/dovecot/conf.d/10-auth.conf:

Отключение параметра аутентификации, требующего наличия системной учётной записи у пользователей электронной почты.

#!include auth-system.conf.ext

Включение параметра аутентификации виртуальных пользователей с помощью базы данных из SQL (например, из базы данных Postfix Admin).

!include auth-sql.conf.ext

Пример настроек файлов журналов в /usr/local/etc/dovecot/conf.d/10-logging.conf:

# Определение расположения файлов журналов
log_path = /var/log/dovecot.log
# Включение регистрации неудачных попыток аутентификации и причин их неудач
auth_verbose = yes

Настройки в файле /usr/local/etc/dovecot/conf.d/10-mail.conf:

# Размещение почты в корневой папке /var/spool/dovecot в формате <домен>/<имя ящика>
mail_location = maildir:/var/spool/dovecot/%d/%u

Установка mail/exim

Exim - агент отправки почты для систем Unix.

Подробная информация на сайте http://www.exim.org/

Перед использованием этой статьи рекомендуется пройти по ссылке PKG.

Установка из пакета:

# pkg install exim-mysql

Установка автозапуска Exim в /etc/rc.conf:

# sysrc exim_enable="YES"
exim_enable:  -> YES

Расшифровка вывода установки mail/exim

Настройка ротации файлов журнала Exim добавлением строк в файл /etc/newslog.conf:

/var/log/exim/mainlog   mailnull:mail 640 7 * @T00 ZN
/var/log/exim/rejectlog mailnull:mail 640 7 * @T00 ZN

Настройка mail/exim

Настройки Exim устанавливаются в файле /usr/local/etc/exim/configure:

Определение списка локальных доменов, обслуживаемых сервером (использование "@" разрешает локальные доставки):

domainlist local_domains = @ : ${lookup mysql{select domain from domain where domain='${domain}' and active='1'}}

Определение списка хостов, которые могут использовать сервер для пересылки исходящей почты (это обычно относится ко всей локальной сети, а также к самому серверу):

hostlist   relay_from_hosts = localhost : 192.168.0.0/24