Как я делал почтовый сервак %-):
Итак, поскольку я человек ленивый, то я пошёл путём максимальной автоматизации. Именно поэтому данная инструкция позволит поднять такой сервак даже начинающему 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»,);
Собственно заходим в почту и любуемся %-)