Почтовый сервер + Open-Xchange 6 на Ubuntu 12.04 Server:Часть1

Статья посвящена установке Почтовому серверу и Open-Xchange 6 на Ubuntu 12.04

В данной статье описана установка и настройка почтового сервера iRedMail :) , а также установка Groupware сервера Open-Xchange 6 на Ubuntu 12.04. Будьте внимательны и аккуратны при установке, т.к. я плясал с бубном долго и мучительно со всем и писал статью одновременно, поэтому старался исправить даже малейшие мелочи.





1.Требования

Для установки данной системы необходимо следующее:

-Ubuntu 12.04 LTS Server

-Подключение к Интернет.

2.Примечание.

В данной статье я буду использовать вымышленное имя хоста ph.company.com с IP адресом 192.168.55.100 и шлюзом 192.168.55.1 .Эти данные, естественно, в Вашем случае будут иными, и, следовательно, Вам придется их заменить.

Данные

IP адрес: 192.168.55.100

Шлюз: 192.168.55.1

Домен 3 уровня: ph.company.com


3.Базовая установка.

Записав образ на CD, устанавливаем серверный дистрибутив Ubuntu на сервер. Выбираем язык, я выбираю Русский везде.

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

При запросе об автоматическом определении раскладки клавиатуры выбираем Нет.

Страна, для которой предназначена клавиатура Русская.

Раскладка клавиатуры Русская

Способ переключения выбираю Control+Shift

При запросе ввести имя хоста я ввожу ph т. к. домен у нас именуется ph.company.com

Далее создаем пользователя по уже интуитивному диалогу с системой.

Я не зашифровываю домашние директории и выбираю Нет.

При запросе о часовом поясе, нажимаем Нет и выбираем свою временную зону.

Остальные пункты можно опустить т. к. они понятны и описывать их нет смысла.

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

И после всего в менеджере выбора ПО выберем только OpenSSH server и больше ничего, т. к. в дальнейшем мы вручную установим все необходимые нам пакеты.

При запросе об установке загрузчика GRUB выбираем Yes.


4.Примечание.

Все команды в статье будут выполняться от пользователя root поэтому, прежде чем писать любые команды либо переключимся в строку суперпользователя с помощью команды sudo su либо перед каждой командой в консоли ставьте дополнительно sudo.

5.Установка дополнительных пакетов.

Я не представляю свою работу без менеджера файлов mc поэтому я его устанавливаю. Вместе с этим оконным менеджером идет великолепный текстовый редактор mcedit, которым я и буду пользоваться. Вы можете себе поставить свой текстовый редактор на выбор, который вам больше всего нравится и подходит.

$ apt-get install mc


6.Настройка сетевого подключения.

Теперь нам необходимо настроить систему, чтобы у сетевого интерфейса был статический IP адрес со шлюзом 192.168.55.1 и DNS серверами 8.8.8.8 и 8.8.4.4

Начиная с сервера Ubuntu 12.04 больше нельзя редактировать файл /etc/resolv.conf, но нам необходимо указать наши сервера имен в сети.

Как пользоваться и почитать про resolv.conf - выполните команду:

$ man resolvconf

Редактируем файл /etc/network/interfaces

$ mcedit /etc/network/interfaces

И приводим его к такому виду:


# This file describes the network interfaces available on your system

# and how to activate them. Them more information, see interfaces(5).


# The loopback network interface

auto lo

iface lo inet loopback


# The primary network interface

auto eth0

iface eth0 inet static

address 192.168.55.100

netmask 255.255.255.0

network 192.168.55.0

broadcast 192.168.55.255

gateway 192.168.55.1

dns-nameservers 8.8.8.8 8.8.4.4


!!!Внимание.Строки в конфигурационном файле, относящиеся к сетевому интерфейсу eth0 нужно удалить и заново вручную перепрописать, т. к. у меня были проблемы только из-за этого.

Затем перезагрузим сетевые интерфейсы.

$ /etc/init.d/networking restart


Далее отредактируем /etc/hosts

$ mcedit /etc/hosts

127.0.0.1 localhost.localdomain localhost

127.0.1.1 ph.company.com ph

192.168.55.100 ph.company.com ph


# The following lines are desirable for IPv6 capable hosts

::1 ip6-localhost ip6-loopback

fe00::0 ip6-localnet

ff00::0 ip6-mcastprefix

ff02::1 ip6-allnodes

ff02::2 ip6-allrouters


После чего сохраняемся и запускаем:

$ echo ph.company.com > /etc/hostname

$ /etc/init.d/hostname restart


Если выскакивает ошибка, сделаем проще:

$ reboot


После входа в систему запускаем и проверяем имя хоста.

$ hostname

$ hostname -f

Обе команды должны показать ph.company.com


7.Редактирование /etc/apt/sources.list и обновление системы.

Редактируем /etc/apt/sources.list и в конец файла добавляем строку:

deb http://download.opensuse.org/repositories/server:/OX:/ox6/xUbuntu_12.04/ /


Файл должен быть приведен примерно к следующему виду:

# deb cdrom:[Ubuntu-Server 12.04.1 LTS _Precise Pangolin_ - Release i386 (20120817.3)]/ precise main restricted

#deb cdrom:[Ubuntu-Server 12.04.1 LTS _Precise Pangolin_ - Release i386 (20120817.3)]/ precise main restricted

# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to

# newer versions of the distribution.

deb http://ru.archive.ubuntu.com/ubuntu/ precise main restricted

deb-src http://ru.archive.ubuntu.com/ubuntu/ precise main restricted


## Major bug fix updates produced after the final release of the

## distribution.

deb http://ru.archive.ubuntu.com/ubuntu/ precise-updates main restricted

deb-src http://ru.archive.ubuntu.com/ubuntu/ precise-updates main restricted


## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu

## team. Also, please note that software in universe WILL NOT receive any

## review or updates from the Ubuntu security team.

deb http://ru.archive.ubuntu.com/ubuntu/ precise universe

deb-src http://ru.archive.ubuntu.com/ubuntu/ precise universe

deb http://ru.archive.ubuntu.com/ubuntu/ precise-updates universe

deb-src http://ru.archive.ubuntu.com/ubuntu/ precise-updates universe


## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu

## team, and may not be under a free licence. Please satisfy yourself as to

## your rights to use the software. Also, please note that software in

## multiverse WILL NOT receive any review or updates from the Ubuntu

## security team.

deb http://ru.archive.ubuntu.com/ubuntu/ precise multiverse

deb-src http://ru.archive.ubuntu.com/ubuntu/ precise multiverse

deb http://ru.archive.ubuntu.com/ubuntu/ precise-updates multiverse

deb-src http://ru.archive.ubuntu.com/ubuntu/ precise-updates multiverse


## N.B. software from this repository may not have been tested as

## extensively as that contained in the main release, although it includes

## newer versions of some applications which may provide useful features.

## Also, please note that software in backports WILL NOT receive any review

## or updates from the Ubuntu security team.

deb http://ru.archive.ubuntu.com/ubuntu/ precise-backports main restricted universe multiverse

deb-src http://ru.archive.ubuntu.com/ubuntu/ precise-backports main restricted universe multiverse


deb http://security.ubuntu.com/ubuntu precise-security main restricted

deb-src http://security.ubuntu.com/ubuntu precise-security main restricted

deb http://security.ubuntu.com/ubuntu precise-security universe

deb-src http://security.ubuntu.com/ubuntu precise-security universe

deb http://security.ubuntu.com/ubuntu precise-security multiverse

deb-src http://security.ubuntu.com/ubuntu precise-security multiverse


## Uncomment the following two lines to add software from Canonical's

## 'partner' repository.

## This software is not part of Ubuntu, but is offered by Canonical and the

## respective vendors as a service to Ubuntu users.

# deb http://archive.canonical.com/ubuntu precise partner

# deb-src http://archive.canonical.com/ubuntu precise partner


## Uncomment the following two lines to add software from Ubuntu's

## 'extras' repository.

## This software is not part of Ubuntu, but is offered by third-party

## developers who want to ship their latest software.

# deb http://extras.ubuntu.com/ubuntu precise main

# deb-src http://extras.ubuntu.com/ubuntu precise main

deb http://download.opensuse.org/repositories/server:/OX:/ox6/xUbuntu_12.04/ /



Далее импортируем ключи реп:


$ wget http://software.open-xchange.com/oxbuildkey.pub -O - | apt-key add -


После добавления ключа должно появится сообщение на экране «ОК»

Затем запускаем

$ apt-get update


далее производим обновление пакетов

$ apt-get upgrade


После обновления необходимо перезагрузить сервер:

$ reboot


8.Изменение оболочки по умолчанию

/bin/sh является симлинком на /bin/dash, нам нужна /bin/bash, а не /bin/dash. Поэтому мы сделаем следующее:

$ dpkg-reconfigure dash

Использовать dash как системную оболочку по умолчанию (/bin/sh)? <---Нет


9.Отключение AppArmor

AppArmor является расширением безопасности, которое должно обеспечить усиленную безопасность. На мой взгляд, нам не нужно настраивать эту систему, это обычно вызывает больше проблем, чем преимуществ. У меня была куча проблем, после недельной пляски с бубнами и устранением множества несвязанных проблем, я решил узреть в корень неполадок, а причиной всего был тот самый AppArmor. Поэтому я отключил его.

Отключить мы сможет таким образом:

$ /etc/init.d/apparmor stop

$ update-rc.d -f apparmor remove

$ apt-get remove apparmor apparmor-utils


10.Установка почтового сервера iRedMail

Устанавливаем bzip2:


$ apt-get install bzip2

$ cd /root

$ mkdir install

$ cd /root/install

$ wget https://bitbucket.org/zhb/iredmail/downloads/iRedMail-0.8.2.tar.bz2

$ tar xjf iRedMail-0.8.2.tar.bz2

$ cd /root/install/iRedMail-0.8.2/

$ bash iRedMail.sh

1.Далее нажимаем «ДА»

2.Вписываем или оставляем по умолчанию хранилище почтовых ящиков и нажимаем "Далее"

3.Выбираем базу данных MySQL и нажимаем «Далее»

4.Также вводим домен почтового сервера, у меня он будет company.com

5.Вводим пароль пользователя Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. для доступа к веб интерфейсу

6.Вводим пароль пользователя root MySQL и повтор

7.Из компонентов отключаем Roundcubemail

8.На вопрос сконфигурировать фаервол отвечаем нет, т.к. У меня почему то фаер блокировал некоторые порты которым нужно было OX. Хотя попробуте может быть у вас и получится. Я не стал заморачиваться.

На момент установки у вас обязательно должна быть MX запись у DNS провайдера, ну и конечно прямая и обратная зона на ваше доменное имя (в моем примере ph.company.com и MX запись на company.com)


11.Производим установку Open-Xchange


$ aptitude install mysql-server \
open-xchange open-xchange-authentication-database \
open-xchange-admin-client open-xchange-admin-lib \
open-xchange-admin-plugin-hosting open-xchange-admin-plugin-hosting-client \
open-xchange-admin-plugin-hosting-lib open-xchange-configjump-generic \
open-xchange-admin-doc open-xchange-contactcollector \
open-xchange-conversion open-xchange-conversion-engine \
open-xchange-conversion-servlet open-xchange-crypto \
open-xchange-data-conversion-ical4j open-xchange-dataretention \
open-xchange-genconf open-xchange-genconf-mysql \
open-xchange-imap open-xchange-mailfilter \
open-xchange-management open-xchange-monitoring \
open-xchange-passwordchange-database open-xchange-passwordchange-servlet \
open-xchange-pop3 open-xchange-publish open-xchange-publish-basic \
open-xchange-publish-infostore-online open-xchange-publish-json \
open-xchange-publish-microformats open-xchange-push-udp \
open-xchange-resource-managerequest open-xchange-server \
open-xchange-settings-extensions open-xchange-smtp \
open-xchange-spamhandler-default open-xchange-sql open-xchange-subscribe \
open-xchange-xerces-sun open-xchange-subscribe-json \
open-xchange-subscribe-microformats open-xchange-subscribe-crawler \
open-xchange-templating open-xchange-threadpool open-xchange-unifiedinbox \
open-xchange-admin-plugin-hosting-doc open-xchange-charset \
open-xchange-group-managerequest open-xchange-i18n open-xchange-jcharset \
open-xchange-sessiond open-xchange-calendar-printing \
open-xchange-user-json open-xchange-gui-wizard-plugin \
open-xchange-report-client \
open-xchange-configjump-generic-gui \
open-xchange-gui open-xchange-gui-wizard-plugin-gui \
open-xchange-online-help-de \
open-xchange-online-help-en open-xchange-online-help-fr open-xchange-gui-lang-community-ru-ru \


На все вопросы отвечаем Y или Yes


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


Пользователь базы данных MySQL

Имя пользователя: openexchange

Пароль: open_password

Роль: Выполнение всех видов операций с БД MySQL.


Пользователь Главный администратор Open-Xchange

Имя пользователя: oxadminmaster

Пароль: open_master_password

Роль: Управление контекстов, управление всеми видами низкого уровня конфигурации сервера


Пользователь - Администратор контента, админ пользователей

Имя пользователя: oxadmin

Пароль: admin_password

Роль: Управление пользователями, группами, ресурсов внутри контента


$ /etc/init.d/mysql restart


Добавим пути PATH бинарных файлов OpenXchange

$  echo PATH=$PATH:/opt/open-xchange/sbin/ >> ~/.bashrc && . ~/.bashrc


Затем создадим файл и добавим такую строчку:

$ echo "GRANT ALL PRIVILEGES ON *.* TO 'openexchange'@'localhost' IDENTIFIED BY 'open_password';" > /tmp/openXchange_pri.sql
$ mysql -u root < /tmp/openXchange_pri.sql mysql -p

После чего вводим пароль пользователя root от MySQL для того что бы инициализировать пользователя openexchange


$ /opt/open-xchange/sbin/initconfigdb --configdb-pass=open_password


Обратите внимание на параметр MAX_MEMORY_FOR_JAVAVM.  Как правило этот параметр выставляют, на половину доступной оперативной памяти.
Так как у нас нет лицензионного ключа и мы будем использовать версию community соответсвенно нужно дать следующую команду

$ /opt/open-xchange/sbin/oxinstaller --no-license --servername=oxserver \
--configdb-pass=open_password --master-pass=open_master_password --ajp-bind-port=localhost --servermemory 1024


После чего запускаем:

$ /etc/init.d/open-xchange-admin start

Далее регистрируем локальный сервер OpenExchange в базе данных configdb

$ /opt/open-xchange/sbin/registerserver -n oxserver -A oxadminmaster -P open_master_password

Теперь мы должны создать локальный каталог, который должен быть использован для хранилища файлов Open Exchange. 
Этот каталог будет содержать весь контент Infostore и файлов прикрепленных к групповым объектам. 
Для обеспечения доступа службе Open-Xchange Groupware, необходимо предоставить разрешение для пользователя openexchange.


$ mkdir /var/opt/filestore

$ chown open-xchange:open-xchange /var/opt/filestore


Теперь зарегистрировать каталог, хранилище файлов в Open-Xchange сервера:

$ /opt/open-xchange/sbin/registerfilestore -A oxadminmaster -P open_master_password \
-t file:/var/opt/filestore -s 1000000



Примечание: Мы можем подкорректировать значения -s , "максимальный размер хранилища файлов в мегабайтах".

Наконец регистрируем базу данных OX groupware:

$ /opt/open-xchange/sbin/registerdatabase -A oxadminmaster -P open_master_password \
-n oxdatabase -p open_password -m true



Теперь, когда Open-Xchange сервер и база данных создана, нам необходимо настроить веб-сервер Apache и mod_proxy_ajp — 
модуль доступа к интерфейсу Groupware. Что бы производительность GUI интерфейса была очень хорошей, 
настоятельно рекомендую использование mod_expires и mod_deflate. Эти модули будут ограничивать количество 
клиентских запросов и сжатие содержания.


$ a2enmod proxy proxy_ajp proxy_balancer expires deflate headers rewrite mime setenvif

Далее:

$ /etc/init.d/apache2 force-reload

Конфигурируем модуль mod_proxy_ajp и новый конфигурационный файл Apache:

$ mcedit /etc/apache2/conf.d/proxy_ajp.conf


Далее чистим дефолтный конфигурационный файл Apache и приводим его к следующему виду:

ServerAdmin webmaster@localhost

DocumentRoot /var/www/

AllowOverride None

Order allow,deny

allow from all

RedirectMatch ^/$ /ox6/

Options +FollowSymLinks +SymLinksIfOwnerMatch

# deflate

AddOutputFilterByType DEFLATE text/html text/plain text/javascript application/javascript text/css text/xml application/xml text/x-js application/x-javascript

# pre-compressed files

AddType text/javascript .jsz

AddType text/css .cssz

AddType text/xml .xmlz

AddType text/plain .po

AddEncoding gzip .jsz .cssz .xmlz

SetEnvIf Request_URI "\.(jsz|cssz|xmlz)$" no-gzip

ExpiresActive On

# Expires (via ExpiresByType to override global settings)

ExpiresByType image/gif "access plus 6 months"

ExpiresByType image/png "access plus 6 months"

ExpiresByType image/jpg "access plus 6 months"

ExpiresByType image/jpeg "access plus 6 months"

ExpiresByType text/css "access plus 6 months"

ExpiresByType text/html "access plus 6 months"

ExpiresByType text/xml "access plus 6 months"

ExpiresByType text/javascript "access plus 6 months"

ExpiresByType text/x-js "access plus 6 months"

ExpiresByType application/x-javascript "access plus 6 months"

ExpiresDefault "access plus 6 months"

Header append Cache-Control "private"

Header unset Last-Modified

Header unset Vary

# Strip version

RewriteEngine On

RewriteRule v=\w+/(.+) $1 [L]

# Turn off ETag

Header unset ETag

FileETag None

ExpiresByType text/html "now"

ExpiresDefault "now"

Header unset Last-Modified

Header set Cache-Control "no-store, no-cache, must-revalidate, post-check=0, pre-check=0"

# Turn off ETag

Header unset ETag

FileETag None

ExpiresByType text/html "now"

ExpiresDefault "now"

Header unset Last-Modified

Header set Cache-Control "no-store, no-cache, must-revalidate, post-check=0, pre-check=0"

# Turn off ETag

Header unset ETag

FileETag None


После изменения конфигурации перезапускаем веб-сервер Apache:

$ sudo /etc/init.d/apache2 restart


И последнее из конфигурирования это запускаем:

$ sudo /etc/init.d/open-xchange-groupware start

После всех манипуляций теперь можно проверить и зайти по адресу http://ph.company.com и вы должны увидеть страницу доступа к Open-Exchange

Но для того что бы проверить всю систему, нам необходимо добавить тестового пользователя sales в базу данных Open-Exchange

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


$ /opt/open-xchange/sbin/createcontext -A oxadminmaster -P open_master_password -c 1 \

-u oxadmin -d "Context Admin" -g Admin -s User -p admin_password -L defaultcontext \

-e Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. -q 1024 --access-combination-name=all


Далее создаем пользователя Open-Exchange с такой конфигурацией:

$ /opt/open-xchange/sbin/createuser -c 1 -A oxadmin -P admin_password -u sales \

-d "Sales User" -g Test -s User -p secret -e Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. \

--imaplogin Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. --imapserver 127.0.0.1 --smtpserver 127.0.0.1


Далее заходим в веб интерфейс iRedAdmin по адресу http://ph.company.com/iredadmin/

Вводим логин Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. и пароль который вы задали ранее.


Добавляем пользователя sales c паролем secret, сохраняем и по адресу http://ph.company.com входим в веб интерфейс с логином sales и паролем secret

Теперь заходим в веб-интерфейс и вводим логин sales пароль secret .


Теперь самое главное. При создании пользователя, необходимо учитывать что пользователь добавляется в две разные системы, т.е. сначала вы добавляете его в почтовый сервер, потом в сервер open-exchange, но обязательно с одним и тем же логином и паролем.

Пример:

В веб интерфейсе iRedAdmin вы создаете пользователя sales с паролем secret

И в консоли сервера даете команду от root:

$ /opt/open-xchange/sbin/createuser -c 1 -A oxadmin -P admin_password -u sales \

-d "Sales User" -g Test -s User -p secret -e Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. \

--imaplogin Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. --imapserver 127.0.0.1 --smtpserver 127.0.0.1

где:

sales — имя пользователя в Open-Xchange;

secret — пароль пользователя sales

Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. — почтовый ящик пользователя;

--imaplogin Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. — пользователь с помощью которого Open-Xchange обращается к почтовому серверу с паролем secret


На этом первая часть закончена. Во второй части, опишу свой простенький скрипт для добавления пользователя сразу в почтарь и в open-exchange.

P.S. Обращаю внимание что данная версия Open-Xchange русифицирована. И к сведению: Теперь разработчики Open-Xchange убрали веб интерфейс администрирования и сделали только через консоль, а все настройки по самому интерфейсу, папкам, задачам и всяким прочим надобнастям предоставили самому пользователю. Т.е. теперь не администратор настраивает сами представления, фильтры, вид, добавление дополнительных почтовых ящиков, и прочее, а сам пользователь как ему будет удобно работать. Есть даже автонастройка известных порталов и почтовых ящиков при входе в Open-Xchange.

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

При входе в веб-интерфейс Open-Xchange вылетает ошибка что невозможно подключится к фильтрам сервера sieve на IP 127.0.0.1 порт 2000

Могу обрадовать, я нашел решение этой проблеме.

Редактируем файл /opt/open-xchange/etc/groupware/mailfilter.properties  вот она где собака зарылась :)

Комментируем:

SIEVE_LOGIN_TYPE=user

Ниже дописываем:

SIEVE_LOGIN_TYPE=global

Комментируем:

SIEVE_CREDSRC=session

Ниже дописываем:

SIEVE_CREDSRC=mail

Комментируем:

SIEVE_SERVER=localhost

Ниже дописываем:

SIEVE_SERVER=127.0.0.1

Комментируем:

SIEVE_PORT=2000

Ниже дописываем:

SIEVE_PORT=4190

Комментируем:

TLS=true

Ниже дописываем:

TLS=false

Новый слой...