Декабрь 6

Mail Server IredMail+Gosa+SOGo+eJabberd

Как я делал почтовый сервак %-):

Итак, поскольку я человек ленивый, то я пошёл путём максимальной автоматизации. Именно поэтому данная инструкция позволит поднять такой сервак даже начинающему Nix админу. Исходя из этих же соображений буду по максимуму разжовывать свои действия.

Итак техзадание:

Почтовый сервачёк для внутренней почты на опенсорс продуктах, с авторизацией с сервера LDAP (для дальнейшего централизованого управления сетью) с спамфильтром, антивирусом, вебмордой для пользователей и удобной вебмордой для конфигурилок.

Пропущу процесс изучения разных вариантов исполнения, их на самом деле было множество и потрачено на их «ковыряние» пара недель, остановился на следующем варианте:

Итак начнём:

За основу решил взять сборочку iRedMail (http://www.iredmail.org) на момент написания последняя версия iRedMail-0.8.6

Устанавливаем Debian 7.2 из сервисов ток базовый набор+сервер ssh

Далее все настройки я делаю от рута, sudo мне использовать лень 🙂.

Настраиваем сеть (у меня на айпи выданом DHCP нет инета

#nano /etc/network/interfeces

auto lo

iface lo inet loopback

allow-hotplug eth0

iface eth0 inet static //dhcp меняем на static

address 192.168.0.220 //айпи

netmask 255.255.255.0 //маска

gateway 192.168.0.53 // шлюз

Далее прописываем ДНС сервера

#nano /etc/resolv.conf

nameserver 8.8.8.8

nameserver 192.168.0.20

nameserver 192.168.0.19

nameserver 192.168.0.29

nameserver 192.168.0.31

Далее рестартуем сеть для применения настроек, либо просто перезагружаемся

#reboot

После перезагрузки появился интернет, но поскольку при установке я не использовал интернет, список репозиториев у меня пуст. Поэтому идём на http://debgen.simplylinux.ch/index.php (если не работает то гуглим на тему «генератор sourse.list» ) и генерируем список репозиториев.

#nano /etc/apt/sources.list

# deb cdrom //единственная не закоментированая строка, её коментирую, поскольку в дальнейшем сидиром использовать не буду. Делее добавляю строки сгенерированы сервисом описаным выше.

deb http://ftp.ua.debian.org/debian stable main contrib non-free

deb-src http://ftp.ua.debian.org/debian stable main contrib non-free

deb http://ftp.debian.org/debian/ wheezy-updates main contrib non-free

deb-src http://ftp.debian.org/debian/ wheezy-updates main contrib non-free

deb http://security.debian.org/ wheezy/updates main contrib non-free

deb-src http://security.debian.org/ wheezy/updates main contrib non-free

После добавления репозиторием обновляем список и систему и ставлю mc (мне с ним просто удобно работать, а так в принципе он не обязателен.

#apt-get update

#apt-get upgrade

#apt-get install mc

далее следуя инструкциям по установке iRedMail взятым отсюда: http://www.iredmail.org/install_iredmail_on_debian.html устанавливаем пакет iRedMail. В принципе там всё понятно, но специально для тех, кто боится английских букав продублирую процес установки здесь:

Сначала проверяем как выглядит имя нашего хоста (должно быть как ниже:)

$ hostname -f
mx.example.com

Если нет то приводим его в такой вид редактированием файлов /etc/hosts и /etc/hostname нужно их привести в такой вид:

# File: /etc/hostname
demo
# Part of file: /etc/hosts
127.0.0.1   mx.example.com demo localhost localhost.localdomain

Затем качаем последнюю версию сборки iRedMail-x.y.z.tar.bz2 ниже привожу пример с закачкой той что сейчас последняя:

# cd /root/

#wget https://bitbucket.org/zhb/iredmail/downloads/iRedMail-0.8.6.tar.bz2

Затем распаковываем скачаный архив, заходим в распакованую папку и запускаем инсталяцию iRedMail

# tar xjf iRedMail-0.8.6.tar.bz2
# cd /root/iRedMail-0.8.6/
# bash iRedMail.sh

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

Первое окно типа здрасте и т. д. Жмём есс

Далее спрашивает где будем хранить почту, предлагает var/vmail соглашаемся.

Далее спрашивает какую базу данных будем использовать выбираем LDAP

Далее погнали настройки базы, спрашивает суфикс базы вписываем свой домен в виде (к примеру домен test.com.ua) dc=test,dc=com,dc=ua

Далее спрашивает пароль для админа лдапа, пишем...

Следующим пунктом указываем пароль для рута скуля

Затем спросит доменное имя вписываем то что у нас будет в почте после @

Далее спросит пароль для postmaster (учётка куда все логи и т. д. Будут падать)

Следующий вопрос будет какие компоненты нужно ставить, ставим всё, лишнее потом можно грохнуть.

Затем пара глупых вопросов на которые отвечаем Y и собственно всё, утановка завершена, после установки перегружаем сервак:

#reboot

После установки к нашим услугам несколько вебморд, коротко о необходимых нам:

Webmail https://your_server/mail/ или просто http://наш_айпи - вебморда для работы с почтой Roundcube

iRedAdmin (admin panel) httpS://your_server/iredadmin/ - админка для добавления пользователе, за денюжку она ещё будет уметь много полезного, но мы хотим всё и бесплатно, поэтому мы от неё избавимся ))), но для простенького почтового сервера её вполне достаточно, можно дальше не продолжать.

phpMyAdmin httpS://your_server/phpmyadmin/ - вебморда для управления скулем, в дальнейшем пригодится

phpLDAPadmin httpS://your_server/phpldapadmin/ - наглядно пожно поковыряться в ldap базе, но поскольку наш ldap сервер переедет для нас не нужная здесь приблуда как и админ панель )

Policyd V2 (cluebringer) httpS://your_server/cluebringer/ - оч полезная админка, тут мы будем правила для почты ваять, ниже напишу как ей пользоваться, потому как гугль ничего толкового не подсказал, пришлось разбираться самому.

Итак погнали дальше!! GOSa!

Готовим 2-ой сервак опять на дебиане, задаём айпишники и репы как в начале статьи. Этот сервер мы будем использовать как сервер LDAP (второй сервер продиктован не только религией и удобством, а и тем что нет доков как ужить GOSa с iRedMail на одном серве, у меня по крайней мере не вышло, и жалобные ворчания на форумах ни к чему не привели :))

Инструкция чтобы не повторяться в отдельной статье по ссылке.

Всё Gosa установлена!

Заходим в админку и:

заходим в группы и создаём 2 группы (users и administrators), иначе iRedMail не захочет дружить с GOSa и этот момент нигде не описан.

Заходим в раздел Systems и добавляем сервер с айпи нашего iRedMail сервера и его мак адресом имя сервера для удобства делаем как наш почтовый домен.

#ifconfig на сервере iredmail нам подскажет эти параметры.

Затем нажимаем редактировать созданый сервер идём на вкладку services и добавляем сервис postfix в параметрах достаточно добавить в параметр «Domains to accept mail for» имя нашего почтового домена.

Жмём кругом ОК создаём в разделе пользователи пару юзверей, на вкладке mail добавляем свойства и пишем адрес почты.

Настройка сервера GOSa завершена!

Возвращаемся к iRedMail.

Для того чтобы наш почтовик стал авторизоваться с сервера GOSa нужно поправить пару файлов:

Сразу оговорюсь, нормально создать в лдапе юзверя vmail с нормальными правами мне не удалось, и упорно ничего работать не хотело, в итоге в поля bind_dn bind_pw я вписывал админа госы(созданого при установке) и его пароль, ну и естественно dc=example,dc=com меняем на свой домен

#nano /etc/postfix/ldap/virtual_alias_maps.cf

server_host = <GOSA-IP-OR-HOSTNAME>
server_port = 389
version = 3
bind = yes
start_tls = no
bind_dn = cn=vmail,dc=example,dc=com
bind_pw = <PASSWORD-FOR-VMAIL>
search_base = ou=people,dc=example,dc=com
scope = sub
query_filter = (&(objectClass=gosaMailAccount)(gosaMailForwardingAddress=*)(|(mail=%s)(gosaMailAlternateAddress=%s)))
result_attribute= gosaMailForwardingAddress
debuglevel = 0

#nano /etc/postfix/ldap/virtual_mailbox_maps.cf

server_host = <GOSA-IP-OR-HOSTNAME>
server_port = 389
version = 3
bind = yes
start_tls = no
bind_dn = cn=vmail,dc=example,dc=com
bind_pw = <PASSWORD-FOR-VMAIL>
search_base = ou=people,dc=example,dc=com
scope = one
query_filter = (&(objectClass=gosaMailAccount)(mail=%s))
result_attribute= uid
result_format = /var/vmail/%s/
debuglevel = 0

#nano /etc/postfix/ldap/sender_login_maps.cf

server_host = <GOSA-IP-OR-HOSTNAME>
server_port = 389
version = 3
bind = yes
start_tls = no
bind_dn = cn=vmail,dc=example,dc=com
bind_pw = <PASSWORD-FOR-VMAIL>
search_base = ou=people,dc=example,dc=com
scope = one
query_filter = (&(mail=%s)(objectClass=gosaMailAccount))
result_attribute= mail
debuglevel = 0

#nano /etc/postfix/ldap/virtual_group_maps.cf

server_host = <GOSA-IP-OR-HOSTNAME>
server_port = 389
version = 3
bind = yes
start_tls = no
bind_dn = cn=vmail,dc=example,dc=com
bind_pw = <PASSWORD-FOR-VMAIL>
search_base = ou=groups,dc=example,dc=com
scope = sub
query_filter = (&(objectClass=gosaMailAccount)(objectClass=posixGroup)(mail=%s))
result_attribute= memberUid
result_format = %u@example.com не забываем указать свой домен
debuglevel = 0

#nano /etc/dovecot/dovecot-ldap.conf

hosts = <GOSA-IP-OR-HOSTNAME>:389
ldap_version = 3
auth_bind = yes
dn = cn=vmail,dc=example,dc=com
dnpass = <PASSWORD-FOR-VMAIL>
base = ou=people,dc=example,dc=com
scope = subtree
deref = never
user_filter = (&(objectClass=gosaMailAccount)(mail=%u))
pass_filter = (mail=%u)
pass_attrs = userPassword=password
default_pass_scheme = PLAIN
user_attrs = uid=home=/var/vmail/%$,=mail=maildir:~/Maildir/,gosaMailQuota=quota_rule=*:bytes=%$M

Собственно после этих не сложных манипуляций можно забыть об админках лдапа на iRedMail сервере. Теперь добавление пользователей у нас происходит на сервере GOSa.

В принципе изначальные «хотелки» сделаны но мы пойдём дальше:

ПРИВЯЗЫВАЕМ SOGo (впоследствии я отказался от неё в пользу Roundcubemail+Plugins или Tine20)

Итак привязываем SOGo — альтернативная вебморда для пользования почтой, календарями и т. д.

Добавляем репозиторий для инсталяции:

#nano /etc/apt/sources.list

deb http://inverse.ca/debian wheezy wheezy

Добавляем ключи для репозитория и обновляем репы:

#apt-key adv --keyserver keys.gnupg.net --recv-key 0x810273C4
#apt-get update

Ну и собственно устанавливаем SOGo

#apt-get install sogo

Настройка довольно проста, редактируем /etc/sogo/sogo.comf

Всё в принципе хорошо комментировано, поэтому приведу только те моменты которые менял.:

#nano /etc/sogo/sogo.conf

// Поскольку скуль у нас уже есть, в него всё и селим, вместо pas_root естественно указываем свой пароль.

SOGoProfileURL = "mysql://root:pass_root@localhost:3306/sogo/sogo_user_profile";

OCSFolderInfoURL = "mysql://root:pass_root@localhost:3306/sogo/sogo_folder_info";

OCSSessionsFolderURL = "mysql://root:pass_root@localhost:3306/sogo/sogo_sessions_folder";

SOGoMailDomain = ВАШ ПОЧТОВЫЙ ДОМЕН;

SOGoLanguage = Russian;

SOGoTimeZone = Europe/Kiev;

//Для авторизации через наш LDAP сервер под управлением GOSa заполняем следующий раздел

/* LDAP authentication example */

SOGoUserSources = (

{

type = ldap;

CNFieldName = uid;

UIDFieldName = uid;

IDFieldName = uid;

bindFields = (uid,mail);

baseDN = "ou=people,dc=mku,dc=post";

bindDN = "cn=admin,dc=mku,dc=post";

bindPassword = пароль админа;

canAuthenticate = YES;

displayName = "Shared Addresses";

hostname = ldap://IP сервера GOSa:389;

id = public;

isAddressBook = YES;

}

);

Вуаля! Имеем рабочий альтернативный веб интерфейс.

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

Итак идём сюда: http://git.kolab.org/roundcubemail-plugins-kolab/

Качаем последнюю сборку плагинов (нам они нужны не все, это сборка для полноценного Groupware, я пока его ещё не осилил, это в планах.) на данный момент последний архив http://git.kolab.org/roundcubemail-plugins-kolab/snapshot/roundcubemail-plugins-kolab-3.1.10.tar.gz

Дальше всё просто, как и установка всех плагинов:

1. распаковываем, копируем нужные нам папки, а это: calendar(календарь), libcalendaring(библиотеки календаря), libkolab(библиотеки задач), tasklist(задачи). Копируем эти папки в папку с плагинами roundcubemail (/usr/share/apache2/roundcubemail/plugins/)

2. в конфиге roundcube прописываем скопированые плагины:

mcedit /usr/share/apache2/roundcubemail/config/main.inc.php

ищем параметр $rcmail_config[‘plugins’] = и добавляем туда наши плагины, получаем вот такую строку:

// List of active plugins (in plugins/ directory)
$rcmail_config[‘plugins’] = array(«password»,»managesieve»,»calendar»,»libcalendaring»,»tasklist»,);

Собственно заходим в почту и любуемся %-)

Дальше привязываем eJabberd с авторизацией из нашей GOSa.

Опять же опишу отдельной статьёй по ссылке.