Установка Dovecot из портов во freeBSD

Установка Dovecot из портов во freeBSD

Dovecot — свободный IMAP- и POP3-сервер при этом наблюдается быстродействием и надежностью и к тому же просто настраивается. Подробно ознакомится можно на официальном сайте Dovecot. Последняя и стабильная версия — v2.2.12, но я буду ставить его из первой ветки ( последняя его версия — v1.2.17). Я расскажу как происходит «Установка Dovecot из портов во freeBSD»  в связки Postfix, MySQL, SpamAssassin, Maia в FreeBSD, но для начала установим сервер:

# cd /usr/ports/mail/dovecot
# make all install clean

НЕ ЗАБЫВАЕМ УСТАНОВИТЬ ОПЦИИ ДЛЯ УСТАНОВКИ «MYSQL». Будьте внимательны!
dovecot-1.2.17

После того как сервер довекот установлен, добавим его в автозапуск системы, для этого добавим в /etc/rc.conf следующий текст:

# echo 'dovecot_enable="YES" ' >> /etc/rc.conf

Копируем конфигурационные файлы Dovecot:

# cp /usr/local/share/examples/dovecot/dovecot.conf /usr/local/etc/dovecot.conf
# cp /usr/local/share/examples/dovecot/dovecot-sql.conf /usr/local/etc/dovecot-sql.conf

Для безопасного соединения я создам  SSL/TLS сертификат, который будет лежать в /etc/ssl/dovecot/:

# mkdir -p /etc/ssl/dovecot
# cd /etc/ssl/dovecot
# openssl req -new -x509 -nodes -out cert.pem -keyout key.pem -days 365

Редактируем конфигурационный файл dovecot.conf который лежит в /usr/local/etc/:

# ee /usr/local/etc/dovecot.conf

Выложу свой готовый конфиг, Вам придется сменить немного (ИП сервера, мыло и кое что еще)
dovecot.conf:

## Dovecot configuration file

# Каталог, где хранятся временные данные.
base_dir = /var/run/dovecot/

# Протоколы, которые будут доступны для обслуживания клиентов.
protocols = imap pop3 imaps pop3s

# Список IP-адресов, на которых "слушать" запросы. Разделителем выступает
# пробел. Если указать "*", то запросы будут ожидаться на всех обнаруженных
# IPv4 интерфейсах. Чтобы слушать на всех IPv6 интерфейсах, необходимо
# указать "[::]". Чтобы слушать на всех IPv4 и IPv6 интерфейсах, необходимо
# установить значение в "*, [::]".
# Установка Dovecot из портов во freeBSD
# Если хотите задать специфический порт для определенного сервиса, необходимо
# выполнять настройки в секции определенного протокола. Пример:
# protocol imap {
# listen = *:10143
# ssl_listen = *:10943
# ..
# }
# protocol pop3 {
# listen = *:10100
# ..
# }
# protocol managesieve {
# listen = *:12000
# ..
# }
listen = 192.168.244.133

# Отключить команду LOGIN и другие LOGIN аутентификации за исключением,
# когда используется SSL/TLS (совместимо с LOGINDISABLED). Если удаленный
# IP совпадает с локальным IP (имеется ввиду соединение с этого же
# компьютера), соединение считается защищенным и эта plaintext аутентификация
# разрешается.
disable_plaintext_auth = no

# Уничтожать все IMAP и POP3 процессы, когда останавливается родительский
# Dovecot процесс. Если установить в "no", то можно розконфигурировать
# Dovecot без принудительного закрытия открытых клиентских подключений (это
# может быть проблемой, например если обновление связано с устранением
# какой-то уязвимости). Учтите, что если родительский процесс остановлен,
# то дочерние процессы не могут писать свои действия в логи.
shutdown_clients = yes
##
## Ведение логов
##
# Путь к лог-файлу для сообщений, вместо syslog. Можно использовать
# /dev/stderr для ведения логов.
log_path = /var/log/dovecot.log
# Лог-файл для информационных и отладочных сообщений. По умолчанию
# такой же, как log_path.
#info_log_path =
# Префикс для каждой записи в лог-файл. Коды предоставлены в формате
# strftime(3).
log_timestamp = "%b %d %H:%M:%S "
# Средства (facility) syslog, используемый для ведения логов через syslog.
# Обычно, если по каким-либо причинам не хочется использовать средства
# (facility) "mail", можно использовать local0..local7. Также другие
# стандартные средства (facility) поддерживаются.
#syslog_facility = mail
##
## SSL настройки
##
# IP-адрес или же имя хоста для прослушивания SSL-соединений. Помните, что
# необходимо добавить также в сессию imaps и/или pop3s протоколов. По умолчанию
# принимает такое же значение, как "listen", если не задано.
#ssl_listen = mail.ispalternativa.net.ua

# PEM кодированный X.509 SSL/TLS сертификат и секретный ключ. Установка Dovecot из портов во freeBSD
#Они открываются
# перед удалением привилегий root, поэтому сделайте файл ключа нечитабельным
# для всех кроме root. Добавленный скрипт doc/mkcert.sh может использоваться
# для легкой генерации самоподписного сертификата, только не забудьте
# обновить домены в dovecot-openssl.cnf

ssl_cert_file = /etc/ssl/dovecot/cert.pem
ssl_key_file = /etc/ssl/dovecot/key.pem

# Если файл ключа защищен паролем, укажете его здесь. Как вариант, можно
# запускать dovecot с параметром -p.
#ssl_key_password =
# Файл, содержащий доверенные центры сертификации. Используйте только вместо
# использования ssl_verify_client_cert=yes.
#ssl_ca_file =
# Запрос клиента на отправку сертификата. Если хочешь использовать также
# и эту опцию, необходимо установить также ssl_require_client_cert=yes в
# секции авторизации.
#ssl_verify_client_cert = no
# Какое поле сертификата используется как username. commonName и
# x500UniqueIdentifier используются как обычно. Необходимо также задать
# параметр ssl_username_from_cert=yes.
#ssl_cert_username_field = commonName
# Как часто регенерировать файл с параметрами SSL. Генерация - довольно
# интенсивно использует CPU. Значение в часах, 0 - отключает регенерацию.
#ssl_parameters_regenerate = 168
# Набор символов, используемый SSL
#ssl_cipher_list = ALL:!LOW:!SSLv2
# Отображать ошибки SSL на уровне протокола.
#verbose_ssl = no
##
## Процесс аутентификации
##
# <doc/wiki/LoginProcess.txt>
# Каталог, где аутентификационный процесс размещает UNIX сокеты, которые
# необходимы для дальнейшего соединения. Сокеты создаются от имени root,
# поэтому не нужно беспокоиться о разрешениях. Имейте ввиду, что все что
# было в этом каталоге - удаляется, когда Dovecot запускается.
login_dir = /var/run/dovecot/login
# chroot-ить процесс авторизации в login_dir.
login_chroot = yes
# Имя пользователя, которое используется в процессе аутентификации.
# Создайте полностью нового пользователя для этого. Этот юзер должен также
# принадлежать группе, которая имеет доступ только к аутентификационному
# процессу.
login_user = dovecot
# Задайте максимальный размер процесса в мегабайтах. Если Вы не
# используете login_process_per_connection, то необходимо увеличить
# это значение.
#login_process_size = 64
# Каждый процесс авторизации должен быть обработан своим процессом (yes),
# или один процесс может обрабатывать несколько соединений (no). Yes - более
# безопасно, особенно если используется SSL/TLS. No - работает быстрее,
# поскольку нету необходимости плодить процессы на каждое соединение.
login_process_per_connection = yes
# Количество процессов авторизации, ожидающих новых соединений.
login_processes_count = 3
# Максимальное количество создаваемых процессов авторизации. Количество
# запущенных процессов обычно задается login_processes_count, но иногда
# несколько пользователей запускают процесс авторизации одновременно, поэтому
# может создаваться несколько большее количество процессов. Для предотвращения
# fork-bombing проверка необходимости создания новых процессов выполняется раз
# в секунду - если все используются, то их количество удваивается до предела,
# указанного этим параметром.
login_max_processes_count = 128

# Максимальное количество соединений, разрешенных в состоянии авторизации.
# Эта опция используется только если login_process_per_connection=no. Когда
# лимит достигнут, процесс уведомляет родительский, что он может создать
# новый процесс авторизации.
#login_max_connections = 256
# Приветственное сообщение для клиентов.
login_greeting = Dovecot ready.
# Список доверенных сетей, разделенных пробелом. Соединениям с этих IP-адресов
# разрешено отвергать эти IP-адреса и порты (для авторизации и процесса
# аутентификации). disable_plaintext_auth всегда игнорируется для этих сетей.
# Обычно здесь задается IMAP-прокси сервер.
#login_trusted_networks =
# Список элементов для логирования, разделенный пробелом. Непустые элементы
# будут объединены в строку через запятую.
login_log_format_elements = user=<%u> method=%m rip=%r lip=%l %c
# Формат лога авторизации. %$ содержит строку login_log_format_elements, %s
# содержит данные, которые пишутся в лог.
login_log_format = %$: %s
##Установка Dovecot из портов во freeBSD
## Размещение ящиков и пространство имен
##

# Размещение ящиков пользователей. Это похоже на старый параметр
# default_mail_env. По умолчанию пустой, тогда Dovecot пытается найти ящики
# автоматически. Не сработает, если пользователь еще не имеет почты, поэтому
# необходимо указать Dovecot полное размещение.
#
# Если используется mbox, указать путь к INBOX файлу (например /var/mail/%u)
# недостаточно. Необходимо будет указать Dovecot где другие ящики размещены.
# Это называется "root mail directory", и это должен быть первый путь,
# заданный в настройках mail_location.
#
# Несколько переменных, которые можно использовать.
#
# %u - имя пользователя
# %n - пользовательская часть в user@domain, то же, что и %u если домен
# не указан
# %d - доменная часть в user@domain, пустая, если домен не указан
# %h - домашний каталог
#
# Несколько примеров:
#
# mail_location = maildir:~/Maildir
# mail_location = mbox:~/mail:INBOX=/var/mail/%u
# mail_location = mbox:/var/mail/%d/%1n/%n:INDEX=/var/indexes/%d/%1n/%n
#
mail_location = maildir:/var/exim/%Ld/%Ln
# Системные пользователь и группа, которые используются для доступа к почте.
# Если используется несколько, userdb может отвергать возвращенные поля
# uid или gid. Можно использовать номера или имена.
mail_uid = mailnull
mail_gid = mail
# Группа, назначаемая временно для привилегированных операций. На данный
# момент используется только с INBOX, когда также инициируется создание
# или dotlock файлов.
# Обычно задается как "mail", чтобы иметь доступ к /var/mail.
mail_privileged_group = mail
##
## Почтовые процессы
##

# Показывать больше отладочной информации (в ps). На данный момент
# отображается имя пользователя и IP-адрес. Может пригодиться при
# просмотре кто фактически использует IMAP процессы (например общие
# почтовые ящики или если один uid используется несколькими аккаунтами.
verbose_proctitle = yes
# Разрешенный диапазон UID для пользователей, по умолчанию 500 и выше.
# Это дает уверенность в том, что пользователи не залогинятся как
# демоны либо другие системные пользователи. Имейте ввиду, что запрет
# авторизации под root жестко определен в бинарниках и не сработает,
# даже если first_valid_uid задать 0.
first_valid_uid = 25
#last_valid_uid = 0
# Разрешенный диапазон GID для пользователей, по умолчанию не root
# или wheel. Пользователям, имеющим неразрешенный GID как ID первичной
# группы, вход запрещен. Если пользователь принадлежит к дополнительной
# группе с неразрешенным GIDs, эта группа не задается.
first_valid_gid = 5
#last_valid_gid = 0
##
## Специфические настройки IMAP
##
protocol imap {
# Размещение исполняемого файла авторизации.
login_executable = /usr/local/libexec/dovecot/imap-login
# Размещение исполняемого файла IMAP. Изменение разрешит выполнять
# другие бинарники до запуска процесса imap.
mail_executable = /usr/local/libexec/dovecot/imap
# Поддержка динамически подгружаемых расширений. mail_plugins - список
# расширений для загрузки, разделенный пробелами.
mail_plugins = quota imap_quota
#mail_plugin_dir = /usr/local/lib/dovecot/imap

# Обработка клиентских ошибок:
# delay-newmail:
# Отравлять EXISTS/RECENT уведомления о новой почте только как ответ на NOOP
# и CHECK команды. Некоторые клиенты игнорируют их, например OSX Mail
# (<v2.1). Outlook Express прерывается хуже, без этого может показать
# пользователям ошибку "Message no longer in server". Имейте ввиду, что OE6
# до сих пор выдает ошибку, когда установлена синхронизация "Headers Only".
# netscape-eoh:
# Netscape 4.x прерывается, если заголовки сообщения не заканчиваются пустой
# линией "end of headers". Обычно все сообщения имеют ее, однако эта настройка
# проверяет наличие разрыва и добавляет его в случае отсутствия. Это
# исполняется только для команды FETCH BODY[HEADER.FIELDS..]. Имейте ввиду,
# что согласно RFC этого делать не нужно.
# tb-extra-mailbox-sep:
# При типе хранения mbox почтовые ящики могут содержать почту либо почтовые
# подкаталоги, но не то и другое одновременно. Thunderbird разделяет их,
# вынуждая сервер принять '/' в имени почтовых ящиков в списке подписок.
# Этот список разделяется пробелом.
imap_client_workarounds = delay-newmail netscape-eoh tb-extra-mailbox-sep
}
##
## Специфические настройки POP3
##
protocol pop3 {
# Размещение исполняемого файла авторизации.
login_executable = /usr/local/libexec/dovecot/pop3-login
# Размещение исполняемого файла POP3. Рассматривай IMAP's mail_executable
# как пример.
mail_executable = /usr/local/libexec/dovecot/pop3

# Используемый формат POP3 UIDL (unique mail identifier). Доступны
# следующие переменные.
#
# %v - Mailbox's IMAP UIDVALIDITY
# %u - Mail's IMAP UID
# %m - Сумма MD5 заголовков почтового ящика в hex (только mbox)
# %f - имя файла (только maildir)
#
# Если необходима совместимость UIDL с другими POP3-серверами, используйте:
# UW's ipop3d : %08Xv%08Xu
# Courier : %f or %v-%u (оба могут быть использованы)
# Cyrus (<= 2.1.3) : %u
# Cyrus (>= 2.1.4) : %v.%u
# Dovecot v0.99.x : %v.%u
# tpop3d : %Mf
#
# Имейте ввиду, что Outlook 2003 имеет проблемы с форматом %v.%u, который
# является для Dovecot форматом по умолчанию, и если настраивается новый
# сервер, то было бы неплохо изменить этот параметр.
pop3_uidl_format = %08Xu%08Xv
# Поддержка динамически подгружаемых расширений. mail_plugins - список
# расширений для загрузки, разделенный пробелами.
mail_plugins = quota
#mail_plugin_dir = /usr/local/lib/dovecot/pop3
# Обработка некоторых клиентских ошибок:
# outlook-no-nuls:
# Outlook и Outlook Express зависают, если сообщение содержит NUL
# символы. Этот параметр заменяет их символами 0x80.
# oe-ns-eoh:
# Outlook Express и Netscape Mail прерываются, если повреждена линия
# конца заголовка. Этот параметр отправляет ее, при повреждении.
# Этот список разделяется пробелом.
pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
}
##
## Специфические настройки LDA
##

protocol lda {
# Адрес используется для отправки отброшенных писем.
postmaster_address = postmaster@ispalternativa.net.ua
# Имя хоста, используемое в разных частях отправленного письма, например
# в Message-Id. По умолчанию используемся системное имя хоста
#hostname = mail.ispalternativa.net.ua
hostname = 192.168.244.133

# Формат, используемый для логирования доставки почты. Доступные переменные:
# %$ - Статус доставки сообщения (например "saved to INBOX")
# %m - Message-ID
# %s - Тема
# %f - С какого адреса
deliver_log_format = msgid=%m %f: %$
# Бинарник, используемый для отправки сообщений.
sendmail_path = /usr/sbin/sendmail
}
##
## Процесс авторизации
##
# Логировать неуспешные попытки авторизации и причины ошибок.
auth_verbose = yes
# Более расширенная информация о авторизации для отладки. Отображает,
# например, SQL-запросы.
auth_debug = no
# В случае, если пароли не совпадают. логировать пароль и пользовательскую
# схему, что дает возможность отладки. Включая эту опцию также необходимо
# включить auth_debug.
auth_debug_passwords = no

auth default {
# Список разделенных пробелом механизмов авторизации:
# plain login digest-md5 cram-md5 ntlm rpa apop anonymous gssapi otp skey
# gss-spnego
mechanisms = plain
# База данных для проверки паролей пользователей (и ничего больше). Можно
# использовать несколько баз паролей и пользователей. Это нужно, если
# необходимо разрешить одновременно и системных пользователей (/etc/passwd)
# и виртуальных пользователей без дублирования системных пользователей
# в виртуальной базе данных.
# SQL database
passdb sql {
# Путь к конфигурационному файлу SQL.
args = /usr/local/etc/dovecot-sql.conf
}
# Назад данных пользователей, определяющая, где расположена почта и где
# какие UID и GID имеют доступ. Для single-UID используйте "static".
# SQL database
userdb sql {
# Путь к конфигурационному файлу SQL.

args = /usr/local/etc/dovecot-sql.conf
}
# Пользователь, от имени которого работает процесс. Этому пользователю
# необходим доступ только к базе пользователей и паролей, ничего больше.
# Только shadow и pam аутентификация требуют прав root-а, иначе можно
# использовать любого, если это возможно. Имейте ввиду, что passwd
# аутентификация с внутренним обращением BSD к теневым файлам, также
# требует права root. Имейте ввиду, что пользователь НЕ используется
# для доступа к почте. Этот пользователь задается только для доступа к
# базам данным, как уже говорилось выше.
user = mailnull
}
##
## Настройки словаря сервера
##
# Словарь может быть использован расширениями для сохранения списка
# ключ=значение, таких как квота, срок действия и списки контроля
# доступа. Словарь может быть использован напрямую, либо же через
# сервер словарей.
dict {
#quota = mysql:/usr/local/etc/dovecot-dict-quota.conf
#expire = db:/var/db/dovecot/expire.db
}
##
## Настройка расширений
##
plugin {
# Тут можно задать некоторые определенные переменные для почтовых
# процессов. Обычно это используется для параметров расширений.
# Расширение %variable выпольнено для всех значений.
# Quota plugin.
quota = maildir
}

Скачать dovecot.conf можно у меня на сайте, перейдя по ссылке

Редактируем конфигурационный файл /usr/local/etc/dovecot-sql.conf,  я выложу свой готовый и рабочий конфиг:

# ee /usr/local/etc/dovecot-sql.conf
driver = mysql
connect = host=localhost user=root password=root dbname=exim

default_pass_scheme = CRYPT
password_query = SELECT password FROM users WHERE login = '%n' AND domain = '%d' AND status = '1'
user_query = SELECT uid, gid FROM users WHERE login = '%n' AND domain = '%d'

Скачать dovecot-sql.conf можно у меня на сайте, перейдя по ссылке

Стартуем dovecot- сервис:

# service dovecot start

Проверим стартанул ли он, выполнив команду:

# ps -aux | grep dovecot

Dovecot_grep

Проверим как это все работает, на примере POP3 сессии:

Dovecot-telnet

Видим что я подключился к серверу почты, затем нужно ввести логин и пароль, и можно отправить любое письмо.

Установка Dovecot из портов во freeBSD — ЗАВЕРШЕНА ))

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.