8 Установка Iredmail

Общая информация
Настройка машины и установка Iredmail
Проверка работоспособности
1. Настройка интеграции с MS AD
1.1 Настройка машины с MS AD
2 Настройка машины с Iredmail
3 Настройка дополнительных конфигураций

 

Общая информация

iRedMail — это:
1) Полноценный почтовый сервер.
2) Работает как и на обычной системе, так и под управлением виртуальной машины: пр. VMware, OpenVZ, Xen.
3) Поддержка архитектур i386 и x86_64.
4) Использует для установки и настройки совместимые компоненты, такие как Postfix, Dovecot, SpamAssassin, SOGo и т.д.
5) При установке использует бинарные пакеты из вашего дистрибутива.
6) Проект с открытым исходным кодом, распространяемый под лицензией GPL v2.
7) Поддержка двух бэкэндов для хранения виртуальных доменов и пользователей: OpenLDAP и MySQL.
8) Безлимитное число поддержки доменов, пользователей, почтовых алиасов.
9) Поддержка двух Web-Интерфейсов (RoundCube и SquirrelMail).
Основная специфика SOGo — это общие календари, контакты, почта.

Настройка машины и установка Iredmail

Данная утилита работает корректно в РЕД ОС 7.2

Для работы потребуется mysql ( mariadb — это аналог mysql, который присутствует в репозитории )

Выполните в терминале команды

su
yum install mariadb mariadb-server 
systemctl start mariadb 
/usr/bin/mysql_secure_installation

Задайте пароль для root пользователя БД, на все вопросы отвечайте «y»

Скачайте пакет iredmail через терминал командой (пакет скачается в текущую папку)

wget https://github.com/iredmail/iRedMail/archive/1.2.1.tar.gz

Распакуйте архив в домашнюю папку

Требуется отредактировать некоторые файлы для корректной работы с РЕДОС

nano /путь/до/каталога/iRedMail-1.2.1/conf/global

Закомментируйте строки

# Exit and prompt to use a supported Linux/BSD distribution
#if [ X"${UNSUPPORTED_RELEASE}" == X'YES' ]; then
#    cat <<EOF
#********* ERROR *********
#Release version of the operating system on this server is unsupported by
#iRedMail, please access below link to get the latest iRedMail and a list
#of supported Linux/BSD distributions and release versions.
#
#http://www.iredmail.org/download.html
#
#*************************
#EOF
#
#    exit 255
#fi
nano /путь/до/каталога/iRedMail-1.2.1/functions/packages.sh

меняем строки

# SOGo v3 nightly builds
baseurl=${SOGO_PKG_MIRROR}/SOGo/nightly/${SOGO_VERSION}/rhel/${DISTRO_VERSION}/\$basearch

на

# SOGo v3 nightly builds
baseurl=${SOGO_PKG_MIRROR}/SOGo/nightly/${SOGO_VERSION}/rhel/7/\$basearch

Меняем имя хоста на нужное нам, пример:

hostnamectl set-hostname dc1.irwol.ru

Выполните команду

nano /etc/hosts

допишите строку

127.0.0.1 dc1.irwol.ru dc1

отключение поиска новой версии:

nano /путь/до/iRedMail-1.2.1/pkgs/get_all.sh

Найдите функцию check_new_iredmail()

в ней закомментируйте данные строки:

#if [ X"${UPDATE_AVAILABLE}" == X'YES' ]; then
# echo ''
# ECHO_ERROR "Your iRedMail version (${PROG_VERSION}) is out of date, please"
# ECHO_ERROR "download the latest version and try again:"
# ECHO_ERROR "http://www.iredmail.org/download.html"
# echo ''
# exit 255
#fi

выполните команды:

cd /путь/до/iRedMail-1.2.1
bash iRedMail.sh

Ждем когда появится ошибка такого характера

failure: repodata/repomd.xml from iRedMail: [Errno 256] No more mirrors to try.

https://dl.iredmail.org/yum/rpms//repodata/repomd.xml: [Errno 14] HTTPS Error 404 - Not Found

Теперь меняем содержимое файла репозитория iredmail

nano /etc/yum.repos.d/iRedMail.repo

Приводим строку к виду

baseurl=https://dl.iredmail.org/yum/rpms/7/

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

https://share.red-soft.ru/index.php/s/qs2K4ERiCzBKzJK

Скачиваем их в удобную вам папку

Выполните команду для установки пакетов

yum install /путь/до/файлов/*

Так же выполните еще одну установку пакетов

yum install php-common php-fpm php-gd php-xml php-mysql php-ldap php-pgsql php-imap php-mbstring php-pecl-apc php-intl php-mcrypt unrar pax uwsgi-logger-syslog php-pear-Net-IDNA2 python-sqlalchemy python-setuptools python-dns MySQL-python python-jinja2 python-webpy python-netifaces python-pycurl python-requests uwsgi uwsgi-plugin-python2 fail2ban PyYAML -y

Смените текущий каталог на каталог iredmail

cd /путь/до/iRedMail-1.2.1 
bash iRedMail.sh

 



Укажите ваш пароль root для MySQL

Укажите домен сервера, пример irwol.ru

Укажите ваш пароль

Выбираем все пункты (не выбранным по умолчанию является sogo, его тоже включаем), по завершении настройки перезагрузите компьютер

Перед проверкой работоспособности iredmail выполните команду для запуска sogo

ln -s /usr/lib64/libgnustep-base.so.1.25 /usr/lib64/libgnustep-base.so.1.24 && ln -s /usr/lib64/libgnutls.so.30 /usr/lib64/libgnutls.so.28 && ln -s /usr/lib64/libgcrypt.so.20 /usr/lib64/libgcrypt.so.11 && ln -s /usr/lib64/libicui18n.so.57 /usr/lib64/libicui18n.so.50 && ln -s /usr/lib64/libicuuc.so.57 /usr/lib64/libicuuc.so.50 && ln -s /usr/lib64/libicudata.so.57 /usr/lib64/libicudata.so.50
systemctl start sogod

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

Откройте браузер и впишите https://localhost/mail , после принятия сертификата откроется окно

Войти можно по учетной записи postmaster@irwol.ru

Так же проверьте ссылки других служб связанных с iredmail. Логин и пароль остаются такие же, как и для roundcube.

https://localhost/iredadmin

https://localhost/sogo

https://localhost/netdata

Настройка интеграции с ms ad

1 Настройка машины с ms ad

Зайдите в active directory домены и доверие
Откройте свойства

Впишите домен сервера на котором iredmail, нажмите принять
В свойствах домена ms ad выберите пункт управление

Создайте подразделение внутри домена ms ad, пример «personal»

Добавьте в подразделение — пользователя iredmail, домен укажите машины с ms ad
Добавьте еще одного пользователя, домен укажите сервера iredmail

2 Настройка машины с iredmail

Установка openldap

sudo yum install openldap-clients

Проверка соединения с ms ad

ldapsearch -x -h 10.81.1.231 -D 'vmail@irwol.ru' -W -b 'dc=ipamsadom,dc=ru' (домен и ip указаны для примера)

При корректном выполнении будет список с информацией о ms ad

Т.к. мы будем использовать интеграцию с AD, необходимо отключить параметры в конфиге postfix, которые используются для работы с MySQL

postconf -e virtual_alias_maps='' && postconf -e sender_bcc_maps='' && postconf -e recipient_bcc_maps='' && postconf -e relay_domains='' && postconf -e relay_recipient_maps='' && postconf -e sender_dependent_relayhost_maps=''

Добавляем почтовый домен

postconf -e smtpd_sasl_local_domain='irwol.ru' && postconf -e virtual_mailbox_domains='irwol.ru'

Меняем транспорт:

postconf -e transport_maps='hash:/etc/postfix/transport'

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

postconf -e smtpd_sender_login_maps='proxy:ldap:/etc/postfix/ad_sender_login_maps.cf' && postconf -e virtual_mailbox_maps='proxy:ldap:/etc/postfix/ad_virtual_mailbox_maps.cf' && postconf -e virtual_alias_maps='proxy:ldap:/etc/postfix/ad_virtual_group_maps.cf'

Создаем или добавляем в файл строку для транспорта (домен указывается сервера с iredmail)

nano /etc/postfix/transport
irwol.ru dovecot

Создаем файл для подключения к AD:

nano /etc/postfix/ad_sender_login_maps.cf
server_host = 10.81.1.231
server_port = 389
version = 3
bind = yes
start_tls = no
bind_dn = vmail		имя пользователя из ms ad, созданного в 1 пункте
bind_pw = password@1	укажите пароль пользователя 
search_base = ou= personal,dc=ipamsadom,dc=ru
scope = sub
query_filter = (&(userPrincipalName=%s)(objectClass=person)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))
result_attribute = userPrincipalName
debuglevel = 0

Создаем файл групп AD:

nano /etc/postfix/ad_virtual_mailbox_maps.cf
server_host = 10.81.1.231
server_port = 389
version = 3
bind = yes
start_tls = no
bind_dn = vmail		имя пользователя из ms ad, созданного в 1 пункте
bind_pw = password@1	укажите пароль пользователя 
search_base = ou= personal,dc=ipamsadom,dc=ru
scope = sub
query_filter = (&(objectclass=person)(userPrincipalName=%s))
result_attribute = userPrincipalName
result_format = %d/%u/Maildir/
debuglevel = 0

Создаем файл для подключения к AD:

nano /etc/postfix/ad_virtual_group_maps.cf
server_host = 10.81.1.231
server_port = 389
version = 3
bind = yes
start_tls = no
bind_dn = vmail			имя пользователя из ms ad, созданного в 1 пункте
bind_pw = *** 			укажите пароль пользователя
search_base = ou= personal,dc=ipamsadom,dc=ru
scope = sub
query_filter = (&(objectClass=group)(userPrincipalName=%s))
special_result_attribute = member
leaf_result_attribute = mail
debuglevel = 0

Требуется удалить строчку в файле

nano /etc/postfix/main.cf
check_policy_service inet:127.0.0.1:7777

Проверка соединения с ms ad (пользователь указывается который был создан вторым в ms ad, домен прописывается сервера iredmail)

postmap -q vmail@irwol.ru ldap:/etc/postfix/ad_virtual_mailbox_maps.cf

Если все успешно, то вывод будет не пустым и без ошибок

Вторая команда проверки

postmap -q vmail@irwol.ru ldap:/etc/postfix/ad_sender_login_maps.cf

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

vmail@irwol.ru

Редактируем файл конфига

nano /etc/dovecot/dovecot.conf

и приводим секцию Virtual mail accounts к виду:

Virtual mail accounts.
userdb {
args = /etc/dovecot/dovecot-ldap.conf
driver = ldap
}
passdb {
args = /etc/dovecot/dovecot-ldap.conf
driver = ldap
}

Создаем файл

nano /etc/dovecot/dovecot-ldap.conf
hosts = 10.81.1.231:389
ldap_version = 3
auth_bind = yes
dn = vmail 			имя пользователя из ms ad, созданного в 1 пункте
dnpass = *** 			укажите пароль пользователя 
base = ou=personal,dc=ipamsadom,dc=ru
scope = subtree
deref = never
user_filter = (&(userPrincipalName=%u)(objectClass=person)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))
pass_filter = (&(userPrincipalName=%u)(objectClass=person)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))
pass_attrs = userPassword=password
default_pass_scheme = CRYPT
user_attrs = =home=/var/vmail/vmail1/%Ld/%Ln/Maildir/,=mail=maildir:/var/vmail/vmail1/%Ld/%Ln/Maildir/

Перезапускаем службы

systemctl restart postfix
systemctl restart dovecot

Теперь при добавлении нового пользователя в ms ad и указании домена iredmail, пользователю будет автоматически создаваться почтовый ящик в iredmail. Проверить можно будет на машине с iredmail.

https://localhost/mail

Логин пользователя и пароль  ms ad соответственно

3 Настройка дополнительных конфигураций

Если в AD есть группы рассылки, тогда отключаем iRedAPD т.к. при работе с AD он не нужен:

systemctl disable iredapd

По умолчанию, iRedMail позволяет задавать квоты на размер почтового ящика,  можно указать дисковую квоту для всех пользователей сразу:

nano /etc/dovecot/dovecot.conf

Находим строку:

quota_rule = *:storage2G

Это и есть размер почтового ящика для пользователей- 2Гб. Квота задается для всех пользователей разом!

Подключение адресной книги

nano /opt/www/roundcubemail/config/config.inc.php

Найдите раздел // Global LDAP address book
Удалите все ниже до конца файла и вставляем строки:

$rcmail_config['ldap_public']["irwol.ru"] = array(
'name' => 'Общая адр. книга',
'hosts' => array('10.81.1.231'),
'port' => 389,
'use_tls' => false,
// Search accounts in the same domain.
'user_specific' => false, // If true the base_dn, bind_dn and bind_pass default to the user's IMA$
'base_dn' => 'ou=personal,dc=ipamsadom,dc=ru',
'bind_dn' => 'cn=vmail,dc=ipamsadom,dc=ru',
'bind_pass' => 'xxxxxxx',
'writable' => false, //запретим запись в AD
'ldap_version' => '3',
// 'search_fields' => array('mail', 'cn', 'givenName', 'sn'),
'search_fields' => array('mail', 'cn', 'sAMAccountName', 'displayname', 'sn', 'givenName'),
// 'name_field' => 'cn',
'email_field' => 'mail',
'surname_field' => 'displayName',
// 'firstname_field' => 'givenName',
'sort' => 'cn',
'scope' => 'sub',
// 'filter' => '(&(enabledService=mail)(enabledService=deliver)(enabledService=displayedInG$
'filter' => "(mail=*@*)",
'fuzzy_search' => true);
$config['autocomplete_addressbooks'] = array('sql', 'irwol.ru');
$rcmail_config['list_cols'] = array('flag','attachment', 'from', 'subject', 'status', 'date', 'size' );

Настройка конфига SOGo
открываем файл конфигурации и добавляем строки

nano /etc/sogo/sogo.cong
// Authentication using LDAP - Active Directory

SOGoUserSources = (
{
// Used for user authentication
id = directory;
displayName = "Active Directory";
canAuthenticate = YES;
type = ldap;
CNFieldName = cn;
IDFieldName = sAMAccountName;
UIDFieldName = sAMAccountName;
baseDN = "ou=personal,dc=ipamsadom,dc=ru";
bindDN = "cn=vmail,dc=ipamsadom,dc=ru";
bindFields = (sAMAccountName);
bindPassword = xxxxxxx;
hostname =10.81.1.231;
},
{
// Used for global address book
id = sambaShared;
displayName = "Общая адр. книга";
canAuthenticate = NO;
isAddressBook = YES;
type = ldap;
CNFieldName = cn;
IDFieldName = mail;
UIDFieldName = mail;
hostname = ldap://10.81.1.231;
baseDN = "ou=personal,dc=ipamsadom,dc=ru";
bindDN = "cn=vmail,dc=ipamsadom,dc=ru";
bindPassword = xxxxxxx;
filter = "((NOT isCriticalSystemObject='TRUE') AND (mail=\'*\') AND (NOT objectClass=contact))";
//мои параметры
scope = SUB;
CNFieldName = cn;
SearchFieldNames = (mail, cn, sAMAccountName, displayname, sn, givenName);
//Uncomment to list local users in WebUI without searching (small directories only)
//listRequiresDot = NO;
},
{
id = sambaContacts;
displayName = "Общие контакты";
canAuthenticate = NO;
isAddressBook = YES;
type = ldap;
CNFieldName = cn;
IDFieldName = mail;
UIDFieldName = mail;
hostname = ldap://10.81.1.231;
baseDN = "ou=personal,dc=ipamsadom,dc=ru";
bindDN = "cn=vmail,dc=ipamsadom,dc=ru";
bindPassword = xxxxxxx; 
filter = "((((objectClass=person) AND (objectClass=contact) AND ((uidNumber>=2000) OR (mail='*')))
AND (NOT isCriticalSystemObject='TRUE') AND (NOT showInAdvancedViewOnly='TRUE') AND (NOT uid=Guest))
OR (((objectClass=group) AND (gidNumber>=2000)) AND (NOT isCriticalSystemObject='TRUE') AND (NOT showInAdvancedViewOnly='TRUE')))";
mapping = {
displayname = ("cn");
//Uncomment to list contacts in WebUI without searching (few contacts only)
//listRequiresDot = NO;
};
}
);

Перезапуск служб:

systemctl restart postfix
systemctl restart dovecot
systemctl restart sogod

 

Если вы нашли ошибку, выделите текст и нажмите Ctrl+Enter.

Print Friendly, PDF & Email