Debian, Dojo, Django, Python

Делюсь опытом в описанных технологиях. Блог в первую очередь выполняет роль памяток для меня самого.

Настройка Exim4 / Dovecot в Astra Linux SE 1.5

10 комментариев

Настройка почты в Astra Linux 1.5 ALD

Исходные данные и задачи

Необходимо настроить сервер электронной почты, работающий в рамках домена Astra Linux 1.5 SE. Исходные данные:

Параметр Значение
Имя домена local.net
FQDN сервера server.local.net
IP-адрес сервера 192.168.0.1
Маска сети: 255.255.255.0

Настройка сети

Отключаем графический менеджер управления сетевыми подключениями wicd.

Отключение wicd
chkconfig wicd off

Прописываем настройки сети в файле /etc/network/interfaces

/etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
allow-hotplug eth0
iface eth0 inet static
    address 192.168.0.1
    netmask 255.255.255.0
    gateway 192.168.0.1
    network 192.168.0.0
    broadcast 192.168.0.255
    dns-nameservers 192.168.0.1
    dns-search local.lan

После этого нужно выполнить перезапуск демона сети:

Перезапуск демона сети
service networking stop && service networking start

В документации к демону networking написано, что команда restart является устаревшей и работает не так, как ожидается.

Необходимо в файле /etc/hosts прописать соответствие FQDN сервера и его IP-адреса, а также задать hostname

/etc/hosts
127.0.0.1    localhost
192.168.0.1 server.local.net server

192.168.0.101 arm01.local.net arm01
192.168.0.102 arm02.local.net arm02
192.168.0.103 arm03.local.net arm03

В файле /etc/hostname меняем краткое имя компьютера server на полное server.local.net, а также изменяем текущее значение системной переменной:

hostname
echo server.local.net > /etc/hostname
hostname server.local.net

Инициализация домена

Действуем согласно официальной инструкции от РусБиТех:

ald-init
ald-init init

Появится уведомление о том, что команда init уничтожит всю базу данных LDAP и Kerberos, будут остановлены и перезапущены службы, и упадет с неба большая звезда, горящая подобно светильнику, и падет на третью часть рек и на источники вод... Отвечаем утвердительно

Попросят ввести пароли для доступа к базе данных Kerberos и пароль администратора Astra Linux Directory. Лучше записать куда-нибудь, потому что понадобится ещё не раз.

Спустя какое-то время на экране появится сообщение:

Успешная инициализация
Astra Linux Directory сконфигурирована.
Сервер ALD активен.
Клиент ALD включен.

Astra Linux Directory сервер успешно инициализирован.

Установка и настройка почтовых сервисов.

Необходимо установить три пакета:

Пакет Описание
exim4-daemon-heavy Передает сообщения и умеет работать с мандатными метками.
dovecot-imapd Умеет отдавать почту клиентам.
dovecot-gssapi Умеет принимать авторизацию на сервере через Kerberos (ALD).

Отдельно отмечу, что сразу же после установки нужно будет запустить конфигурирование exim4.

Установка и конфигурирование
aptitude install exim4-daemon-heavy dovecot-imapd dovecot-gssapi -y
dpkg-reconfigure exim4-config

Процесс настройки exim4 не очень сложный, но нужно правильно ответить на несколько вопросов.

Вопрос Ответ
Общий тип почтовой конфигурации интернет-сайт; приём и отправка почты напрямую, используя SMTP
Почтовое имя системы: local.net
IP-адреса, с которых следует ожидать входящие соединения SMTP: 192.168.0.1
Другие места назначения, для которых должна приниматься почта: local.net
Домены, для которых доступна релейная передача почты: Оставляем пустым
Машины, для которых доступна релейная передача почты: Оставляем пустым
Сокращать количество DNS-запросов до минимума (дозвон по требованию)? Нет
Метод доставки локальной почты: Maildir формат в домашнем каталоге
Разделить конфигурацию на маленькие файлы? Да

Теперь нужно удалить из каталога /var/mail файл с именем пользователя, созданного при установке системы (у меня обычно administrator).

Удаление лишнего файла
rm /var/mail/administrator

Создадим сервисы ALD для работы с почтой:

Создание сервисов ALD и ключей Kerberos
ald-admin service-add imap/server.local.lan
ald-admin sgroup-svc-add imap/server.local.lan --sgroup=mac
ald-admin sgroup-svc-add imap/server.local.lan --sgroup=mail
ald-admin service-add smtp/server.local.lan
ald-admin sgroup-svc-add smtp/server.local.lan --sgroup=mac
ald-admin sgroup-svc-add smtp/server.local.lan --sgroup=mail
ald-client update-svc-keytab imap/server.local.lan --ktfile="/var/lib/dovecot/dovecot.keytab"
ald-client update-svc-keytab smtp/server.local.lan --ktfile="/var/lib/dovecot/dovecot.keytab"

Указывая имя сервиса, важно помнить, что после слеша указывается то же самое имя сервера, что и в файле /etc/hostname. Если даже в настройках Bind вы потом укажете, что mail.local.net и smtp.local.net являются всего лишь псевдонимами для server.local.net, почта работать не будет, потому что Kerberos очень строго проверяет этот параметр.

После создания файла ключей нужно предоставить доступ к нему для dovecot:

Доступ к файлу ключей
setfacl -m u:dovecot:x /var/lib/dovecot
setfacl -m u:dovecot:r /var/lib/dovecot/dovecot.keytab

Dovecot

Выполняем настройку dovecot. Если убрать все комментарии из файлов, то получится примерно следующее (в тех файлах, где меняли):

/etc/dovecot/dovecot.conf
!include_try /usr/share/dovecot/protocols.d/*.protocol
protocols = imap
listen = 192.168.0.1
dict {}
!include conf.d/*.conf
!include_try local.conf
/etc/dovecot/conf.d/10-auth.conf
disable_plaintext_auth = yes
auth_mechanisms = gssapi
auth_gssapi_hostname = server.local.lan
auth_krb5_keytab = /var/lib/dovecot/dovecot.keytab
!include auth-system.conf.ext

Я не могу в настройку SSL. Отключаем:

/etc/dovecot/conf.d/10-ssl.conf
ssl = no
ssl_cert = </etc/dovecot/dovecot.pem
ssl_key = </dovecot/private/dovecot.pem

Маленькая настройка для корректной работы с почтой - добавляем в файле /etc/dovecot/conf.d/10-master.conf в секцию service auth:

/etc/dovecot/conf.d/10-master.conf
# ...
service auth {
  unix_listener auth-client {
    mode = 0600
    user = Debian-exim
  }
  # ...
}

Немного упрощаем себе и пользователям жизнь, автоматически создавая на сервере каталоги под входящие, отправленные и удаленные письма при первой авторизации (параметр auto = subscribe).

/etc/dovecot/conf.d/15-mailboxes.conf
namespace inbox {
  mailbox Drafts {
    special_use = \Drafts
    auto = subscribe
  }
  mailbox Junk {
    special_use = \Junk
  }
  mailbox Trash {
    special_use = \Trash
    auto = subscribe
  }
  mailbox Sent {
    special_use = \Sent
    auto = subscribe
  }
}

Расположение каталогов внутри /var/mail/%username% можно изменить, сделав более удобным, если в /etc/dovecot/conf.d/10-mail.conf немного изменить параметр mail_location:

/etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:/var/mail/%u:LAYOUT=fs

Exim4

Теперь нужно сделать пару дополнительных настроек Exim4.

/etc/exim4/conf.d/auth/33_exim4-dovecot-kerberos-ald
dovecot_gssapi:
  driver = dovecot
  public_name = GSSAPI
  server_socket = /var/run/dovecot/auth-client
  server_set_id = $auth1 # В конце цифра один, а не маленькая эль

Файл /etc/exim4/conf.d/acl/30_exim4-config_check_rcpt очень большой, поэтому не привожу его полностью. В самом начале нужно добавить в секцию acl_check_rcpt 4 строки, чтобы выглядело примерно так:

Проверка авторизации
acl_check_rcpt:
  deny
    message = "Auth required"
    hosts = *:+relay_from_hosts
    !authenticated = *
  accept:
    hosts = :
    control = dkim_disable_verify
# и так далее

Проверка работоспособности

Заходим от имени пользователя ALD. Запускаем Thunderbird и создаем новую учетную запись. В параметрах IMAP- и SMTP-серверов пишем одно и то же - server.local.net. При нажатии кнопки "Проверка параметров" параметры авторизации должны измениться на Kerberos/GSSAPI. Сохраняем, перезапускаем почтовый клиент. После второго запуска должно загрузиться дерево папок с сервера. Пишем письмо сами себе, если пришло - все хорошо. Если нет - очень внимательно проверяем содержимое всех конфигурационных файлов. Я сам потерял три дня из-за того, что в одном месте пропустил всего одну строку.

10 комментариев :

Отправить комментарий