Web интерфейс для почтового сервера

Web интерфейс для почтового сервера Хостинг

Вообще говоря краткая инструкция по установке содержится внутри архива в файле INSTALL. Для начала рекомендуется ознакомиться с ней.

Для начала нужно поставить необходимые программы — веб-сервер и сервер базы данных. В этой инструкции описывается конфигурация для Apache2 и MySQL, но вы можете использовать любые другие поддерживаемые серверы. Всё необходимое для Roundcube можно поставить командой

 sudo apt-get install apache2 libapache2-mod-php5 mysql-server php5-mysql php5-mcrypt 

Далее нужно немного отредактировать настройки веб-сервера. Во-первых убедитесь, что в настройках веб-сервера для директории, куда вы собираетесь положить Roundcube, стоит опция

 

Чаще всего опции для директорий настраиваются в файле /etc/apache2/sites-enabled/000-default
.

Затем активируйте модуль Rewrite:

 a2enmod rewrite 

Кроме этого отредактируйте файл /etc/php5/apache2/php.ini
, изменив в нём значение параметра date.timezone
:

 date.timezone 

Список доступных значений этого параметра можно посмотреть на сайте PHP
.

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

 etcinit.dapache2 restart 

Теперь необходимо выставить нужные права:

 varwwwroundcube www-data:www-data logs temp 

Далее необходимо создать базу данных. Нужные запросы в зависимости от типа используемого сервера баз данных приведены в файле INSTALL, для MySQL запросы могу быть примерно такими такими (не забудьте поменять пароль!):

 roundcube  /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */ 
; PRIVILEGES roundcube roundcube@localhost ; 

После завершения подготовительного этапа нужно открыть браузер и перейти по ссылке http://yourdomain.ru/roundcube/installer/
, конечно, изменив её под свой домен. Откроется страница установщика. Прочитайте приведённую на ней информацию и переходите к следующему этапу.

Вы должны увидеть страницу, на которой рядом со всеми компонентами будет стоять зелёное OK. Если рядом с чем-то из секции « The next couple of extensions are optional and recommended to get the best performance
» стоит NOT AVAILABLE — ничего страшного, хотя лучше найти необходимые расширения PHP
и доустановить их. Также скорее всего у вас не будет стоять поддержка баз данных, отличных от MySQL:

 MySQL: OK
MySQLi: OK
PostgreSQL: NOT AVAILABLE(Not installed)
SQLite (v2): NOT AVAILABLE(Not installed) 

Она вам и не понадобится, так что ничего страшного. Если всё нормально — переходите к следующей странице.

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

Немного рекомендаций: если ваш IMAP
сервер находится на localhost, то не стоит включать опцию enable_caching
, которая заставляет Roundcube сохранять локальную копию всех писем в базе данных. Кроме того, в данный момент уже все почтовые клиенты поддерживают HTML
форматирование, поэтому для удобства стоит выставить опцию htmleditor
в always
.

Если ваши IMAP
или SMTP
серверы поддерживают или требуют шифрование, то начните их имена хостов с соответствующего префикса: ssl://
или tls://
.

После того, как вы выставите нужные вам параметры, переходите к следующей странице. Вам покажут два листинга файлов main.inc.php
и db.inc.php
, которые установщик сгенерировал автоматически на основе выбранных вами на прошлом этапе настроек. Поместите оба предложенных файла в директорию config/
на вашем сервере. После этого переходите к следующей странице.

На ней вам скорее всего напишут

 DB Schema: NOT OK(Database not initialized) 

Жмите кнопку Initialize database, после этого все статусы должны смениться на зелёные OK.

Теперь осталось протестировать SMTP
и IMAP
сервера. Для этого введите нужные данные в поля и нажмите кнопки тестирования. Вы должны увидеть ещё два зелёных OK, после чего можно удалять директорию installer/
в вашего сервера и начинать пользоваться вашим веб-интерфейсом для почты.

Если вы хотите изменить максимальный допустимый размер вложения для отправляемого через Roundcube письма, то отредактируйте параметр upload_max_filesize
в файле .htaccess
в корневой директории Roundcube на вашем сервере:

 upload_max_filesize 10M 

RoundCube

Ещё пару-тройку лет назад качество web-интерфейсов (freeware) оставляло желать лучшего. Сейчас ситуация изменилась, пример тому — RoundCube Webmail
. Если совсем кратко, RoundCube Webmail написан на PHP с использованием CSS, XHTML и AJAX. Из основных возможностей для себя выделил следующее:

  • Поддержка мультиязычности
  • Возможность лёгкого развертывания системы
  • Поддержка IMAP
  • Простая адресная книга
  • Поддержка внешнего SMTP сервера
  • Расширенный пользовательский интерфейс
  • Неограниченное количество пользователей и сообщений
  • Полное изменение внешнего вида с помощью скинов

Итак, устанавливать будем из портов (если дерево портов у вас не обновлено, советую предварительно это сделать).

cd /usr/ports/mail/roundcube/
make install

Т.к. планировалось использовать исключительно MySQL, именно её и оставляем в опциях. Собственно MySQL там по умолчанию и опции получается не трогаем.

Теперь необходимо создать новую базу данных и пользователя.

Создать таблицы базы данных, используя запросы, которые находятся в ‘SQL/*.initial.sql’.

Поскольку ранее мы определили БД MySQL, то воспользуемся файлом mysql.initial.sql:

# mysql -u roundcube -p roundcube < /usr/local/www/roundcube/SQL/mysql.initial.sql

В конфигурационный файл Apache (httpd.conf) добавим следующие настройки:


alias /mail/ "/usr/local/www/roundcube/"

<Directory "/usr/local/www/roundcube/">

   Options none

   DirectoryIndex index.php

   AllowOverride Limit

   Order Deny,Allow

   Allow from all

<Directory>

Собственно первая часть настройки закончена и можно переходить к следующему этапу. Зайдем web-броузером на сервер с RoundCube:

установка RoundCube webmail

Тут всё понятно — жмём «START INSTALLATION»

RoundCube webmail. проверка

Обращаем внимание чего не хватает системе для правильной установки (выделено оранжевым). Сообщения о неостающих БД, отличных от MySQL, игнорируем. Спускаемся вниз страницы и жмём «Next», где нам предложат ввести некоторые параметры:

параметры RoundCube

Раздел General configuration

  • product_name
    — My_test_Webmail — название вашего сервиса. Будет высвечиваться в заголовке станичек
  • temp_dir
    — /var/www/mail/temp/ — оставляем как есть, это папка для темпов
  • ip_check
    — проверка клиента по IP во время авторизации сессии. Добавляет секьюрности, но если кто-то будет ходить на мыло через проксю, клиенты с одинаковыми IP будут отваливаться.
  • des_key
    — ключик для шифрования пользовательских IMAP паролей
  • enable_caching
    — кеширование сообщений в локальной базе
  • enable_spellcheck
    — проверка орфографии. Чуть ниже выбирается движок для проверки
  • identities_level
    — Определяет, что пользователи могут сделать со своими идентификаторами

Раздел Logging & Debugging

  • debug_level
    — уровень детализации логов
  • log_driver
    — механизм логирования. В файл или через syslog
  • log_dir
    — /var/www/mail/logs/ — каталог для логов
  • syslog_id
    — используемая строка идентификации, если задействован драйвер ошибок ‘syslog’
  • syslog_facility
    — какие средства (facility) используются, если задействован драйвер ошибок ‘syslog’. Для ознакомления с возможными значениями смотрите инсталятор.

Раздел Database setup

В данном разделе указываете параметры подключения к базе данных. Те, что указывали при создании roundcubemail

  • Database type
    — MySQL
  • Database server
    — localhost
  • Database name
    — roundcube
  • Database user name
    — roundcube
  • Database password
    — пароль

Раздел IMAP Settings

В данном разделе указываются настройки подключения IMAP сервера

  • default_host
    — 127.0.0.1 — имя хоста IMAP сервера. Т.к. мыло крутится локально, указываем IP локалхоста
  • default_port
    — 143 — порт IMAP по умолчанию
  • username_domain
    — myorg.net — имя домена. Будет автоматически дописываться к логину пользователя
  • auto_create_user
    — автоматическое создание пользователей roundcube, когда они в первый раз залогинятся.
  • sent_mbox
    — каталог, куда будет складываться отправленная почта
  • trash_mbox
    — корзина для удалённых писем
  • drafts_mbox
    — каталог для черновиков
  • junk_mbox
    — каталог для спама

Раздел SMTP Settings

В данном разделе указываются настройки SMTP

  • smtp_server
    — 127.0.0.1 — имя хоста SMTP сервака. Т.к. мыло крутится локально, указываем IP локалхоста
  • smtp_port
    — 25 — порт SMTP по умолчанию.
  • smtp_user/smtp_pass
    — имя и пароль SMTP пользователей, если требуется для SMTP сервака. Чуть ниже галочка Use the current IMAP username and password for SMTP authentication (использовать настройки имени и пароля из IMAP)
  • smtp_log
    — логировать ли отправку сообщений

Раздел Display settings & user prefs

Настройки отображения и пользовательские

  • language
    — ru_RU — Язык
  • skin
    — default — шкурка. Список шкурок можно глянуть в /var/www/mail/skins
  • pagesize
    — 40 — количество сообщений в списке
  • prefer_html
    — предпочитать отображение сообщений в HTML
  • preview_pane
  • htmleditor
    — создавать сообщения в формате HTML
  • draft_autosave
    — автосохранение в черновики каждые N минут.
  • mdn_requests
    — Если пришло письмо с подтверждением о доставке то: Спросить пользователя / отправить отчёт автоматически / забить
  • mime_param_folding
    — как упаовывать длинные или не ASCII имена файлов аттачей

На этом настройку roundcube можно считать завершенной. Кнопкой «Create config» открываем страничку с созданными конфиг-файлами. Её содержимое необходимо поместить в соответствующие файлы main.inc.php
и db.inc.php
в каталоге /var/www/mail/config. Не забудьте проставить <?php
?>
в начале и конце файлов.

Кроме того здесь же можно проверить работу roundcube + SMTP + IMAP сервера. После установки ОБЯЗАТЕЛЬНО удалите инсталляционный каталог.

# rm -rf /var/www/mail/installer/

Если всё сделано правильно, то вы получите работающий webmail.

Яндекс. Дзен

и узнавайте первыми о новых материалах, опубликованных на сайте.

Наша задача получить полноценный почтовый сервер с сервисами SMTP(S), IMAP(S), POP3(S), с обработкой почты на антиспам и антивирус. Также будет настроен web-доступ к почтовой системе (почта/контакты/календарь) для почтовых пользователей и администратора системы. В качестве системы будет выбран пакет iRedMail и будет развернута на Linux Debian.

Что из себя представляет сборка iRedMail и какие пакеты отвечают за какой функционал хорошо видно на этом рисунке:

Web интерфейс для почтового сервера

Установим систему Debian и обновим систему и пакеты:

 apt-get update && apt-get upgrade && apt-get dist-upgrade 
Web интерфейс для почтового сервера

 nano /etc/network/interfaces 

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

 /etc/init.d/networking restart 

Настроим имя хоста:

 Hostname -f 
Web интерфейс для почтового сервера

 dpkg-reconfigure locales
locale -a 

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

Сервер готов,
скачиваем актуальную версию пакета iRedMail.

Переходим на http://www.iredmail.org/download.html
, проверяем расположение файла стабильной версии и копируем ссылку (на данный момент стабильная версия – 0.9.9).

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


Установка iRedMail

Распакуем архив и запустим скрипт установки:

 tar xjf iRedMail*
cd iRedMail*
bash iRedMail.sh 
Web интерфейс для почтового сервера

Указываем место хранения почты на диске. Оставляем по умолчанию /var/vmail.

Web интерфейс для почтового сервера

В качестве web-сервера предлагается Nginx, соглашаемся.

Web интерфейс для почтового сервера

В качестве
хранилища данных и конфигураций предлагается 3 варианта:

  • OpenLDAP – протокол для соединения с LDAP сервером по 389 порту, скажем так с Active Directory;
  • MariaDB – это когда то MySQL;
  • PostgreSQL – еще один и, на мой взгляд, один из лучших СУБД.

Для небольшой системы, до 1000 почтовых ящиков, подойдет MariaDB, что и выбираем.

Web интерфейс для почтового сервера

Вводим пароль для Администратора MySQL (MariaDB).

Web интерфейс для почтового сервера

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

Web интерфейс для почтового сервера

Далее пароль Postmaster для домена.

Web интерфейс для почтового сервера

Здесь предлагается выбрать функционал системы. Я выбрал все, функционал каждого описан (на английском).

Web интерфейс для почтового сервера

Здесь предлагают
согласиться с выбранной конфигурацией, отвечаем Yes.

Web интерфейс для почтового сервера

Далее идет установка необходимых пакетов.

После отработки скрипта будут внесены изменения в файрвол. Соглашаемся – Yes.

Web интерфейс для почтового сервера

По сути наш
сервер уже готов и можно обратиться к нему по протоколам SMTP/IMAP/POP или же через web.

Доступ к web-почте — https://ваш_хост/mail/
.

Web интерфейс для почтового сервера

Web интерфейс для почтового сервера

 * POP3 service: port 110 over TLS (recommended), or port 995 with SSL.
* IMAP service: port 143 over TLS (recommended), or port 993 with SSL.
* SMTP service: port 587 over TLS. 

Как мы видим в стандартной версии SMTP with SSL был убран, считается SMTP with SSL legacy (устаревший). Попробуем его включить, так как некоторые почтовые клиенты могут не поддерживают отправку SMTP через STARTTLS, порт 587.

В /etc/postfix/master.cf добавим:

 465 inet n - n - - smtpd -o syslog_name=postfix/smtps -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o content_filter=smtp-amavis:[127.0.0.1]:10026 

Перезапустим службу Postfix, чтобы включить SMTPS. Убедимся, что Amavisd прослушивает порт 10026 (и 10024, 9998).

Откроем порт 465 в брандмауэре:

 nano /etc/default/iptables
-A INPUT -p tcp --dport 25 -j ACCEPT
-A INPUT -p tcp --dport 587 -j ACCEPT
-A INPUT -p tcp --dport 465 -j ACCEPT 

Для красоты и
удобства можно сменить темы для web-почты

Скачиваем и
копируем папку skin в папку с RoundCube (у меня находится по
/opt/www/roundcubemail-1.3.8/skins)

 apt-get install phpmyadmin 
Web интерфейс для почтового сервера

Веб-сервера Nginx (его мы ставили в пакете iRedMail) нет, поэтому оставляем невыбранным тип сервера.

Web интерфейс для почтового сервера

Соглашаемся настроить базы. Да.

Web интерфейс для почтового сервера

Создаем ссылку на
сервер:

 ln -s /usr/share/phpmyadmin /var/www/html/webtool 
 Логин – phpmyadmin
Пароль – наш пароль что ввели при установке 
Web интерфейс для почтового сервера

 mysql -u root
create user 'myuser'@'localhost' identified by 'mypassword'; 

Проверим, создался
ли наш пользователь:

 select user,host,password from mysql.user; 

Дадим нашему
пользователю полные права:

 grant all on *.* to 'myuser'@'localhost'; 

и применим изменения:

 FLUSH PRIVILEGES; 
 \q  
Web интерфейс для почтового сервера

Теперь получили полные права.

 apt-get install postfixadmin 
Web интерфейс для почтового сервера

Web интерфейс для почтового сервера

 ln -s /usr/share/postfixadmin /var/www/html/postfixadmin 
 nano /usr/share/postfixadmin/config.inc.php
$CONF['configured'] = true;
$CONF['default_language'] = 'ru';
$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'myuser';
$CONF['database_password'] = 'hRm3StSuY0WSpk0kkl9OX1Xjv8';
$CONF['database_name'] = 'vmail';
$CONF['encrypt'] = 'dovecot:SSHA';
$CONF['dovecotpw'] = "/usr/bin/doveadm pw"; 
 1. PostfixAdmin не может писать в папку templates_c
Даем права
chown -R www-data /usr/share/postfixadmin/templates_c
2. Invalid query: Unknown column ‘goto’ in ‘alias’
В новой версии отсутствует колонка goto. Добавим её:
mysql -u root -p
use vmail;
ALTER TABLE alias ADD COLUMN `goto` text NOT NULL;
3. Invalid query: Duplicate key name ‘domain’
Это связано с тем, что при создании почтового домена в iRedMail мы уже создали индексы для базы, а PostfixAdmin не согласен с этим. Выполняем там же команду SQL:
DROP INDEX domain on mailbox;
DROP INDEX domain on alias; 

Если все проверки пройдены, будет предложено сгенерировать пароль:

Web интерфейс для почтового сервера

После генерации пароля получим setup_password и эту строчку добавим в config.inc.php.

 $CONF['setup_password'] = '2bedf63997cbf13068a454f6e7c4b7b0:db542a801058ebb19faae42cf2145aa6986c83c7'; 
Web интерфейс для почтового сервера

Web интерфейс для почтового сервера

Web интерфейс для почтового сервера


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

iRedMail

Включение и отключение модулей почты

iRedMail обладает достаточно широким функционалом, но может потребоваться отключить некоторые функции или модули. У iRedMail есть модуль iRedAPD, написан на Python, который управляет основными возможностями почтового сервера. Файл конфигурации iRedAPD settings.py находится /opt/iredapd.

Web интерфейс для почтового сервера

Удаляем ненужные модули и перезапускаем службу:

 service iredapd restart 

Чтобы отключить
Антивирус и Антиспам, не знаю по каким причинам, но такая возможность есть,
необходимо отредактировать файл настроек /etc/amavisd/amavisd.conf.

В /etc/amavisd/amavisd.conf раскомментируем строчки (убираем # в начале строки):

 # @bypass_virus_checks_maps = ; # controls running of anti-virus code
# @bypass_spam_checks_maps = ; # controls running of anti-spam code 

И перезапускаем Amavisd:

 systemctl restart amavisd 

Настройки объема отправляемого сообщения

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

Для изменения
значения максимального размера письма необходимо отредактировать значение message_size_limit
 в /etc/postfix/main.cf

По умолчанию message_size_limit = 15728640 (15Мб), можно изменить на нужное значение в байтах и
перезапустить Postfix:

 postfix reload 

Сбор копий всех почтовых сообщений

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

Для пересылки всех сообщений (входящих/исходящих) на определенный адрес достаточно прописать в /etc/postfix/main.cf:

 always_bcc = backup@mydomain.ru 

Однако стоит
учитывать тот объем сообщений, который будет сваливаться туда.

 INSERT INTO sender_bcc_domain (domain, bcc_address, active, created) VALUES ('mydomain.ru', 'backup-out@mydomain.ru', 1, NOW());
INSERT INTO recipient_bcc_domain (domain, bcc_address, active, created) VALUES ('mydomain.ru', 'backup-in@mydomain.ru', 1, NOW()); 
Web интерфейс для почтового сервера

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

Настраивается автоответ через web-интерфейс почтового ящика:

Web интерфейс для почтового сервера

Web интерфейс для почтового сервера

Еще для администратора почтовой системы Postfix

Просмотр настроек Postfix:

 postconf -d 

Просмотр очереди Postfix:

 postqueue -p 
 postqueue -p | grep user | awk '{system("postsuper -d "$1)}' 

Немедленная
доставка писем из очереди Postfix:

 postsuper -r ALL
postfix flush 

или конкретного письма:

 postsuper -r ID 

В настройки Nginx (/etc/nginx/sites-available/*-default-ssl.conf) добавим:

 location /webtool {
allow 127.0.0.1;	#localhost
allow 192.168.1.0/24;	#local network
deny all; #deny all other sources
} 

Проверим конфигурацию на ошибки:

 nginx -t 

и перегрузим Nginx:

 systemctl reload nginx 
 location /postfixadmin {
allow 127.0.0.1;	#localhost
allow 192.168.1.0/24;	#local network
deny all; #deny all other sources
} 

Проверим и перегрузим Nginx.

 wget https://bitbucket.org/zhb/iredmail/downloads/iRedMail-x.y.z.tar.bz2 

Распаковываем архив и переходим в каталог:

 tar xjf iRedAdmin-x.y.z.tar.bz2
cd iRedAdmin-x.y.z/tools/ 

Запускаем скрипт обновления:

 bash upgrade_iredadmin.sh 


Резервное копирование почты (Backup)

В качестве места для хранения резервных копий баз и почтовых сообщений создадим отдельный диск ( как это сделать
).

По умолчанию, при установке iRedMail в планировщик Cron добавляются задания по созданию резервных копий баз данных MySQL, SOGo, ldap (зависит от выбора во время установки). В нашем случае это базы MySQL и SOGo.

В планировщике заданий (Cron) по умолчанию существуют 2 задания на резервное копирование баз:

 30 3 * * * /bin/bash /var/vmail/backup/backup_mysql.sh
1 4 * * * /bin/bash /var/vmail/backup/backup_sogo.sh 

Архивы помещаются в каталог /var/vmail/backup.

Перенесем место резервных копий на наш диск /mnt/backup и создадим папку vmail и внутри 2 папки db и mail:

 mkdir /mnt/backup/vmail
mkdir /mnt/backup/vmail/db
mkdir /mnt/backup/vmail/mail 

В db будем хранить копии баз MySQL, в mail сами почтовые сообщения.

Отредактируем файл /var/vmail/backup/backup_mysql.sh и /var/vmail/backup/backup_sogo.sh заменив значение пути:

 export BACKUP_ROOTDIR="/var/vmail/backup" на
export BACKUP_ROOTDIR="/mnt/backup/vmail/db" 

Значение параметра в backup_mysql.sh KEEP_DAYS=’90’ указывает сколько дней хранить резервные копии.

Запустим создание архивов вручную и проверим корректность выполнения:

 /bin/bash /var/vmail/backup/backup_mysql.sh 

Копируем почту. По умолчанию,
каталог для хранения переписки — /var/vmail/vmail1. Чтобы создать копию, достаточно
скопировать его содержимое.

Создадим архив наших писем в /mnt/backup/vmail/mail с датой:

 tar -czvf /mnt/backup/vmail/mail/vmail- $(date +%y-%m-%d).tar.gz /var/vmail/vmail1 

Создадим задание
для планировщика для ежедневного архивирования папки с почтовыми сообщениями (/var/vmail/vmail1/)

Напишем простой скрипт для Bash /var/vmail/backup/backup_mail.sh:

 #!/bin/bash
keep_days=90;
cur_date=$(date --iso);
backup_dir="/mnt/backup/vmail/mail/"
source_dir="/var/vmail/vmail1"
file_name="vmail_$cur_date.tar.gz"
log_file="$backup_dir/vmail_$cur_date.log"
echo "# Starting Find old backup files in Backup Directory $backup_dir" > $log_file
find $backup_dir -type f -mtime +$keep_days -print0 | xargs -0 rm –f >> $log_file
echo "# End Delete old backups" >> $log_file
echo "# Start Backup script" >> $log_file
echo "# Start at $(date +%Y-%m-%d-%H-%M-%S)" >> $log_file
tar -zcvf $backup_dir$file_name -P $source_dir >> $log_file
echo "# End Backup script $(date +%Y-%m-%d-%H-%M-%S)" >> $log_file 

Скрипт выполнит следующее:

  • keep_days=90; время хранения архивных копий в днях;
  • удалит все файлы из каталога старше 90 дней;
  • создаст архив папки с сообщениями;
  • информацию о действиях поместит в лог файл.

Скрипт поместим в планировщик:

 crontab -u root –e 

выберем редактор nano и добавим строчи:

 # iRedMail vMail directory backup
30 4 * * 2,5 /bin/bash /var/vmail/backuo/backup_mail.sh 

Сохраняем изменения и выходим.

Планировщик настроен на 4:30 по вторникам и пятницам.  Опять-таки политику резервного копирования нужно определять исходя из потребностей и требований компании.

Проверим задания
в Cron:

 сrontab –l 


Восстановление из резервных копий

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

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

Конфигурации хранятся в следующих базах MySQL:

 Amavisd
iredadmin
iredapd
mysql
roundcubemail
vmail 

В случае переноса почтовой системы на новый сервер, базу mysql восстанавливать не нужно.

Восстановление баз данных

Разархивируем нужную базу на нужную дату:

 bzip2 -d vmail-*.sql.bz2 
 mysql -v -u root -p vmail < vmail-*.sql 

Аналогично восстанавливаются все необходимые базы.

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

 tar -xvf vmail-*.tar.gz
mv /mnt/backup/vmail/mail/vmail /* /var/vmail/vmail1/ 

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

Внесем изменения
в зону DNS:

 mail.mydomain.ru. 3600 IN A 111.222.333.444 

где:

mail.mydomain.ru. – имя хоста нашего сервера;

3600 – TTL время жизни записи;

A – тип записи (хост);

111.222.333.444 – реальный IP адрес нашего почтового сервера.

После внесения записи в DNS к северу можно обращаться по mail.mydomain.ru.

 mydomain.ru.	3600	IN	MX	10	mail.mydomain.ru. 

здесь мы объявляем, что почтовым сервером (Mail eXchanger) является mail.mydomain.ru.

где:

3600 – TTL время жизни записи;

10 – приоритет.

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

Этих настроек достаточно, чтобы наш почтовый сервер начал функционировать для сети Интернет. Однако в борьбе со спамом и проверкой валидности отправителя, нужно сделать еще несколько записей в DNS: DKIM, DMARC и SPF.

DKIM (Domain Keys
Identified Mail) — это цифровая подпись, которая подтверждает подлинность
отправителя и гарантирует целостность доставленного письма.

Наш iRedMail при установке уже сгенерировал c помощью Amavisd ключ DKIM. Для просмотра дадим команду:

 amavisd-new showkeys 

Скопируем результат и внесем запись TXT в наш DNS сервер:

 dkim._domainkey.mydomain.ru.	3600	IN	TXT	"v=DKIM1; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDIqFwU3xQ4AcLfdMwI9m/emPcmYSqkCe9evo9jYLItWaBZDLBWRXwzcDNVa492HSImXRSk+4Jd7zE7Ir+2xUzi0EShUYmBABKE4Z2x7tl7zo1iStW7DxN/ciEeRBH/iGWziBwl4crp+ahyfEq5EAKr2OHDeVl12xDUwlA6yjLsrwIDAQAB" 

где:

v  — версия DKIM, всегда принимает значение v=DKIM1;

p
 — публичный ключ, кодированный в base64.

SPF (Sender Policy
Framework) — это подпись, содержащая информацию о серверах, которые могут
отправлять почту с вашего домена. Наличие SPF снижает вероятность попадания
письма в спам.

Добавим в DNS значение SPF:

 mydomain.ru. IN TXT "v=spf1 a mx ~all"  

DMARC (Domain-based Message Authentication, Reporting and Conformance) — это подпись, которая позволяет принимающему серверу решить, что делать с письмом. D MARC использует DKIM и SPF. Если отправленное сообщение не прошло проверку DKIM и SPF, то оно не пройдет и DMARC. Если же сообщение успешно прошло хотя бы одну проверку (DKIM или SPF), то и проверку DMARC сообщение пройдет успешно. D MARC добавляется только после того, как настроены записи SPF и DKIM.

 _dmarc.mydomain.ru.	IN	TXT	"v=DMARC1; p=none; sp=none; pct=100; fo=0; rua=mailto:postmaster@mydomain.ru" 

Подробно о DKIM, DMARC и SPF —  https://habr.com/ru/post/343128/


Autodiscover для почтовых клиентов

В Microsoft Exchange есть прекрасная служба Autodiscover для автоматического обнаружения серверов почтовой службы, которая работает через веб сервер и по сути передает клиенту, Outlook, xml файл с описанием настроек. Попробуем сделать что-то похожее с помощью DNS сервера, тем более, что данный метод описан стандартом RFC и заключается в создании SRV-записей в DNS.

SRV запись имеет данную структуру:

 _service._proto.name TTL class SRV priority weight port target 

Подробно про SRV записи в DNS —   https://ru.wikipedia.org/wiki/SRV-запись
.

 _imap._tcp.mydomain.ru. 300	IN	SRV	20	10	993	mail.mydomain.ru.
_imap._tcp. mydomain.ru.	300	IN	SRV	10	10	143	mail.mydomain.ru.
_pop3._tcp. mydomain.ru.	300	IN	SRV	10	10	110	mail.mydomain.ru.
_pop3._tcp. mydomain.ru.	300	IN	SRV	20	10	995	mail.mydomain.ru.
_submission._tcp. mydomain.ru.	300	IN	SRV	10	10	587	mail.mydomain.ru.
_smtp._tcp. mydomain.ru.	300	IN	SRV	20	10	465	mail.mydomain.ru. 


SSL Сертификат для Web-сервера

Остается прикрутить сертификат для нашего web-сервера, поскольку доступ только через https протокол. Если есть коммерческий сертификат, то необходимо установить его для Nginx, если нужна альтернатива, то — https://certbot.eff.org/lets-encrypt/debianstretch-nginx
.

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

Также данное решение не претендует на конкуренцию с Micorosft Exchange, мое мнение, что у Exchgane нет конкурентов, пока во всяком случае. Но у Exchange есть один минус — решения на его базе стоят не малых денег. А iRedMail представляет для маленьких и средних компаний стандартное решение для обмена сообщениями SMTP(S), IMAP(S), POP3(S) с антивирусной и антиспам защитой, плюс достаточно симпатичный веб-интерфейс с неплохим функционалом. Также можно присмотреться к веб-решению SOGo Groupware, которое присутствует в сборке iRedMail.

При этом решение бесплатное, в плане лицензионных затрат, не особо требовательно к оборудованию и ресурсам системы.

</article

Читайте также:  Ошибка. Мастер импорта сертификатов
Оцените статью
Хостинги