< meta name="referrer" content="origin">
Home » Linux » CentOS » Настройка почтового сервера iRedMail на CentOS 7

Настройка почтового сервера iRedMail на CentOS 7

Я давно собирался раскрыть тему настройки почтового сервера на linux, но никак не доходили руки. Начну с установки и настройки iRedMail – готовой сборки на основе postfix для создания почтового сервера с web интерфейсом. Изначально я хотел все установить и настроить сам, связав все необходимые элементы, но данная cборка упростила мне задачу.

Введение

С почтовыми серверами я знаком достаточно хорошо, лично настраивал их с нуля много раз, постоянно администрирую. При этом всегда использовал postfix на различных операционных системах. Это самый популярный бесплатный почтовый сервер, с которым легко работать из-за большого количества документации и руководств. Функционал у него тоже великолепный. Мне еще ни разу не встречалась задача, которую нельзя бы было реализовать на этом сервере. Хотя с какими-то экзотичными требованиями я не работал, чаще всего это обычные среднестатистические офисные почтовые серверы.

Настроить почтовый сервер не самая простая задача. Лично мне не нравится с ними возиться из-за большого количества всевозможных настроек и элементов, которые нужно между собой связать. Чуть позже я детально разберу все самое основное, что требуется для полноценного почтового сервера. Недавно мне на глаза попалась готовая сборка для почтового сервера под названием iRedMail. Я решил на нее внимательно посмотреть, потестировать. В ее основе традиционный smtp сервер — postfix. Она мне понравилась, я решил, что ей вполне можно пользоваться. Дальше расскажу о ней поподробнее.

Если вы хотите полностью самостоятельно настроить свой почтовый сервер, то воспользуйтесь моей отдельной статьей на эту тему — настройка почтового сервера postfix + dovecot. В ней реализован примерно такой же функционал, что и в данной статье, но без iredmail. Все установлено и настроено руками самостоятельно.

Что такое iRedMail

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

  1. Postfix — сердце почтовой системы, вокруг которого настраивается все остальное.
  2. Dovecot — imap сервер для доступа к почтовым ящикам пользователей.
  3. Web сервер — apache+ php + mysql для вспомогательных функций.
  4. Roundcube и SOGo — веб интерфейсы для доступа к почте. Пользоваться можно любым, что больше понравится.
  5. Awstats — статистика работы почтового сервера.
  6. Amavisd — модуль связи почтовой системы и дополнительных обработчиков почты (антиспам, антивирус и т.д.)
  7. SpamAssassin — бесплатный антиспам для почты.
  8. ClamAV — бесплатный антивирус.
  9. Greylist — эффективная система борьбы со спамом.

Это основные элементы. В сборке еще много вспомогательных системных настроек и утилит, которые упрощают настройку сервера. Например, в iRedMail включены:

  • готовые правила для iptables
  • fail2ban для защиты сервера от брутфорса
  • logwatch для наблюдения за логами сервера
  • наборы cron скриптов для обслуживания и бэкапа сервера
  • модуль iRedAPD для удобного управления функционалом почтового сервера
  • готовые ssl сертификаты и dkim ключ.

Чем же мне понравился iRedMail?

  1. Во-первых, в нем есть все, что нужно для почтового сервера. Очень грамотно и четко подобраны все элементы.
  2. Во-вторых, в нем нет никаких импровизаций и свистелок. Весь софт стандартный, все конфиги стандартные. Их легко читать и править. По сути, iRedMail это скрипт по автоматической установке и настройке стандартного софта. После установки вы можете по своему усмотрению донастроить или изменить все, что вам покажется необходимым. Именно этим я и займусь в своей статье.
  3. В-третьих, выполняются полезные системные настройки сервера, избавляющие вас от рутинных операций, которые пришлось бы делать вручную.
  4. В-четвертых, в комплекте идет написанный на питоне модуль iRedAPD для управления всем установленным хозяйством. Это полезно тем, кто не очень понимает, как работает весь тот комплекс, который будет установлен. С помощью этого модуля можно очень быстро и просто, к примеру, отключить антивирус или антиспам, если он вам не нужен. При этом вам не надо будет разбираться во внутренней работе этих модулей.

Теперь ложка дегтя. В бесплатной версии iRedMail нет почти никаких настроек. Через веб интерфейс вы сможете только добавить нового пользователя почты и все. Если нужно что-то большее, то выкручивайтесь как умеете. В данной конфигурации почтового сервера все управление происходит через базу данных mysql. Вы можете вручную через phpmyadmin сделать все, что угодно. Платная версия iRedMail предлагает всего лишь навсего удобную панель управления всеми настройками, которая избавит вас от необходимости лазить в базу напрямую.

Сначала я решил, что меня устроит вариант правки базы данных через phpmyadmin. Но когда я попробовал, я понял, что это неудобно. Такой сервер после меня не сможет никто обслуживать. Да и самому руками забивать поля в базе данных было неудобно. Выход из сложившейся ситуации есть. Я расскажу, как получить бесплатно часть возможностей платной версии, не покупая ее. Да, придется немного потрудиться, но это не сложно, я все расскажу.

Как я уже сказал, бесплатная версия веб панели позволяет только создать пользователя. Для нормальной работы с пользователями не хватает создания алиасов и перенаправления почты из одного ящика в другой. Данный функционал реализован в бесплатной панели управления postfix — postfixadmin. Ее мы и прикрутим к iRedMail. Она не без проблем, но все же устанавливается и нормально работает вместе с веб панелью iRedMail, используя одну базу данных mysql, не мешая друг другу.

Управлять модулями сборки мы будем в iRedAPD в консоли сервера с помощью его конфигурационных файлов. Разработчики любезно оставили весь рабочий функционал, никак его не ограничив. Платная версия представляет только удобное управление. Это позволит нам получить весь имеющийся функционал бесплатно.

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

Требования для почтового сервера

Начнем потихоньку подготовку к настройке нашего почтового сервера. Первым делом нужно подготовить DNS записи. Это очень важно. Без правильной наcтройки dns записей нормально работать сервер не будет. Вернее, работать то он будет, но ваша почта может улетать в спам у принимающей стороны. Я буду рассказывать все на конкретном примере. У меня есть домен zeroxzed.ru. Его почта уже привязана к другому почтовому серверу, я не хочу его менять. Для написания этой статьи, я сделал поддомен m.zeroxzed.ru. Для демонстрации работы нет никакой разницы, используется домен второго уровня или третьего, как в моем случае. В этом поддомене будет находиться мой почтовый сервер srv.m.zeroxzed.ru. Это имя физического сервера, на котором будет работать почта. Почтовые ящики у меня будут вида user1@m.zeroxzed.ru. Внешний ip адрес на котором будет работать сервер — 188.45.19.125.

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

Имя Тип Значение
m A 188.45.19.125
srv.m A 188.45.19.125
m MX srv.m.zeroxzed.ru

Подробнее о типах DNS записей читайте на википедии. В случае с доменом первого уровня, например site.ru и именем почтового сервера srv.site.ru, вам нужны будут только 2 записи:

srv A внешний IP
@ MX srv.site.ru

Но это не все. К сожалению, одних DNS записей не достаточно. Для вашего внешнего IP адреса должна быть прописана обратная зона — PTR. В обратной зоне ip-адресу ставится в соответствие доменное имя. То есть вашему IP адресу должно соответствовать доменное имя srv.site.ru. Настройками обратной зоны в подавляющем большинстве случаев вы не можете управлять. Для ее изменения нужно обратиться к вашему провайдеру, который выделил вам внешний IP и сказать ему, что вы хотите настроить почтовый сервер и вам необходимо прописать обратную зону с именем srv.site.ru на внешний IP адрес. Это обычная просьба, и тех поддержка без проблем сделает то, что вы просите, если они предоставляют такую услугу. Чаще всего провайдеры, работающие с юридическими лицами, такую услугу предоставляют. Домовые провайдеры для физиков нет.

Проверить обратную зону для домена можно в консоли сервера с помощью команды host. Вот пример для моего внешнего IP. Я не стал просить провайдера прописывать обратную зону для тестового сервера, она не правильная. Привожу просто для примера:

# host 188.45.19.125
125.19.45.188.in-addr.arpa domain name pointer host-188-45-19-125.beirel.ru.

Это пример не настроенной обратной зоны. Возьмем для примера какой-нибудь сайт, у которого правильно настроены все DNS записи и обратная зона. Например это будет raiffeisen.ru. Смотрим его записи.

Проверка dns записей

Здесь все четко — есть MX запись с именем почтового сервера, есть IP адрес этого сервера и обратная зона. Все это однозначно соответствует друг другу. Иногда люди путают, называют, к примеру, сервер mail.site.ru, а обратную зону делают просто site.ru или srv.site.ru. Вроде все правильно, домен один и тот же, но соответствие не полное. Чтобы все было правильно, должно быть полное соответствие всех записей — A, MX, PTR. Очень много спам фильтров используют эти записи для проверки домена отправителя на полное соответствие всех записей.

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

После того, как закончите с DNS и PTR можно приступать к настройке самого сервера.

Установка iRedMail

Я буду настраивать почтовый сервер на CentOS 7. Если у вас еще не готов сервер, то рекомендую мои материалы — установка и базовая настройка CentOS. Каких-то особых требований к установке нет. Для системы достаточно раздела 20-30 гигабайт. Для почтовой базы рекомендую отдельный раздел с достаточным свободным местом. Начать можно хотя бы с 200 гигабайт. Но это не обязательно, для теста можете все сделать на одном разделе. Потом, если появится необходимость, просто перенесете всю базу в другое место с помощью символьной ссылки. Когда все будет готово, приступайте к установке iRedMail.

Если не будете смотреть мою статью по базовой настройке, то не забудьте отключить SELinux, без этого iRedMail нормально работать не будет. Это обязательное требование, указанное на сайте разработчика. Так же не рекомендую отключать firewalld, если не хотите настраивать iptables вручную, iredmail автоматически настраивает iptables.
Второй важный момент. Перед началом установки почтового сервера, убедитесь, что указали корректный hostname для своего сервера, равный DNS записи, которую сделали ранее. Если забыли это сделать во время установки, то смотрите в моей статье про сетевые настройки centos как изменить hostname.

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

Скачать iredmail

Скачиваем скрипт установки iRedMail и распаковывем.

# cd /root && wget https://bitbucket.org/zhb/iredmail/downloads/iRedMail-0.9.5-1.tar.bz2
# tar xjf iRedMail-*

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

# cd iRedMail-* && bash iRedMail.sh

Первым вопросом будет каталог для хранения почтовой базы. Можете оставить по-умолчанию /var/vmail, либо выбрать свой. Потом нужно выбрать веб сервер — nginx или apache. Я рекомендую выбрать apache, так проще будет установить и настроить phpmyadmin и postfixadmin. Но если вам непременно нужен nginx, то можно выбрать и его, никаких проблем с ним не будет, если умеете настраивать. В качестве базы данных я выбираю mariadb.

Затем нужно будет указать имя почтового домена. Обращаю внимание, что это не имя сервера, а именно домена для почты. В моем случае это m.zeroxzed.ru. Если у вас домен второго уровня, то это будет site.ru. Дальше нужно указать пароль от административной учетной записи — postmaster@m.zeroxzed.ru. На последнем этапе выбираем необходимые компоненты. Я рекомендую выбрать все, потом ненужное можно отключить.

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

Установка iRedmail

В конце установки будет задан вопрос, хотим ли мы применить предлагаемые правила Firewalld. Соглашаемся.

Применение правил firewalld

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

Информация об установке

Перезагружаем сервер, чтобы все службы корректно запустились. Идем в свой почтовый ящик пользователя postmaster в roundcube webmail или SOGo groupware и читаем созданные автоматически письма. Заодно посмотрите, какой вам интерфейс больше нравится и чем будете пользоваться. Мне лично roundcube нравится больше.

web интерфейс почтового сервера

В первом письме вся техническая информация по установленным компонентам, в том числе необходимые пароли. Это письмо обязательно сохраните и никому не показывайте. Копия этой информации есть в файле /root/iRedMail-0.9.5-1/iRedMail.tips. Эта информация нам понадобится в дальнейшем.

На текущий момент почтовый сервер полностью готов и работоспособен. Вы можете зайти в панель администрирования по адресу https://имя_сервера/iredadmin/ и создать нового пользователя. Добавим пользователя user1.

Создание пользователя postfix

Если поле Mailbox Quota оставить пустым, то размер ящика будет неограниченным. Теперь можно зайти этим пользователем в webmail и отправить кому-нибудь письмо. Я для примера отправлю письмо на ящик zeroxzed@gmail.com. Вот как будет выглядеть лог /var/log/maillog во время корректной доставки письма.

postfix лог отправки

Я сразу ввожу вас в курс дела, чтобы вы понимали, как работает почта, куда смотреть если что-то не так. Во время администрирования почтового сервера частенько придется заглядывать в логи для разбора различных ситуаций. По логу postfix видно, что сервер gmail корректно принял сообщение без каких-либо предупреждений. Письмо дошло до адресата. Теперь ответим с ящика zeroxzed@gmail.com и посмотрим на лог.

postfix лог получения

Все в порядке, письмо доставлено пользователю user1. На текущий момент почтовый сервер postfix на CentOS полностью работоспособен и готов обслуживать пользователей. Если вам достаточно текущего функционала, то можно дальше не читать и пользоваться тем, что есть. Но я советую все же почитать. Сейчас не хватает нескольких очень популярных настроек.

Обзор возможностей почтового сервера

Посмотрим, что в данный момент умеет наш почтовый сервер на centos со сборкой iredmail, чтобы мы понимали, на что можно рассчитывать и чего ждать от сервера.

Graylist

Сразу расскажу о настроенной и активированной функции Greylist, которая вызовет у неподготовленного администратора массу вопросов. Технология называется серый список, подробно о ней можно почитать на википедии. Расскажу своими словами без технической информации как это работает и в чем могут быть проблемы. Когда вам кто-то первый раз отправляет письмо, почтовый сервер его сразу не принимает, а говорит удаленному серверу, подожди, попробуй еще раз через несколько минут. Удаленный сервер понимает эту просьбу и через несколько минут отправляет письмо еще раз. И только после этого наш сервер принимает письмо и добавляет адрес сервера отправителя в белый список на 30 дней, чтобы больше не делать такую проверку и принимать письма сразу.

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

  1. Не все серверы корректно отрабатывают просьбу на повторную доставку письма. Кто-то может через 5 минут повторно отправить письмо, а кто-то через час. При этом пользователь сидит и ждет свое письмо. Это очень неудобно, особенно если менеджер разговаривает по телефону и пытается обменяться тестовыми письмами с новым клиентом. Да, задержка будет только в первый раз, но все равно это неудобно. Даже 5 минут иногда раздражает ждать.
  2. Сейчас распространены облачные технологии и многие пользователи используют облачные почтовые системы. У таких систем много почтовых серверов, и отправка производится каждый раз с разного. Домен может быть один и тот же, но полное имя сервера будет другое. Технология graylist запоминает точное имя сервера и ждет, что повторное письмо придет с этого же сервера. Но может получиться так, что первое письмо придет с сервера srv1.pochtamail.ru, а повторное с srv2.pochtamail.ru. В итоге повторное письмо тоже попадет в серый список и наш сервер будет ждать повторное письмо уже от второго сервера. А следующее письмо может прийти с третьего сервера и так далее. В общем, письмо можно ждать сутки и более, пока не придет пара писем с одного и того же сервера. Всех таких клиентов можно добавлять в белый список по имени домена и для них серый список вообще не будет работать, но это ручной труд и заранее не узнаешь с кем будут проблемы. Добавлять начинаешь уже тогда, когда пользователи жалуются на то, что письмо не доходит.

Возможно вторую проблему как-то можно решить, изменив механизм работы graylist, но по умолчанию он работает именно так, как я описал. Дальше я расскажу, как включать и отключать серые списки.

Переадресация почты

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

Мы можем создать алиасы и направлять с них почту в несколько почтовых ящиков. Например, можно сделать алиас sale@site.ru. При отправке письма на этот адрес, письмо отправляется пользователям user1 и user2.

Мы можем настроить почтовые ящики, в которые будет копироваться вообще вся входящая или исходящая переписка. Это самый простой способ организации бэкапа писем пользователей. Если кто-то удалит из своего ящика письмо, то оно сохранится в общем почтовом ящике, где лежат все письма.

Весь этот функционал невозможно включить через бесплатную панель администрирования. Нужно либо покупать платную, либо руками делать настройки в mysql базе. Ниже я расскажу, как это делать удобно.

Антивирус clamav

В сборку iredmail включен бесплатный антивирус clamav. Лично я не вижу в нем никакого смысла. По почте вирусы давно уже не рассылают, а если рассылают, то ссылки на них. Лишнюю нагрузку на систему в виде антивируса считаю ненужной. Если у вас другое мнение, поделитесь и аргументируйте. Расскажу позже, как отключить антивирус.

Антиспам SpamAssassin

Модуль SpamAssassin — самое популярное бесплатное средство для борьбы со спамом. По идее, он не плохо работает, но требует некоторого внимания к себе, так как работает по оценочному признаку и иногда может делать ложные срабатывания. Нужна некоторая калибровка на месте для эффективной работы. Мне всегда было лень этим заниматься. Не рекламы ради, а для информации скажу, что самым эффективными и недорогим средством для борьбы со спамом я считаю Касперский антиспам. Чаще всего я использую его. Он реально хорошо режет спам и не дает ложных срабатываний. Удобное решение из серии поставил и забыл, только раз в год ключи продлевай. Предлагаю на местах посмотреть на SpamAssasin и решить, нужен он вам или нет. Отключить при случае не проблема.

Общая адресная книга

Удобный функционал, но я пока не разбирался подробно как это работает. Подозреваю, что если использовать в качестве базы данных не mysql, а ldap, то можно без проблем подключить глобальную адресную книгу через ldap в любом почтовом клиенте, где это реализовано. В случае mysql работает по-умолчанию адресная книга по всем пользователям домена в веб интерфейсе SOGo. Там можно искать пользователей по домену в соответствующем разделе.

Общая адресная книга

В roundcube такого функционала я не нашел. Так что этот вопрос открытый. Функция удобная и нужная, возможно позже я отдельно рассмотрю этот момент. Я всегда использую в качестве адресной книги ldap каталог Active Directory, если в организации настроен домен. Это удобно. Все пользователи там заведены, достаточно просто указать им email и подключать адресную книгу в почтовых клиентах.

Whitelist и Blacklist

В iRedMail есть возможность использовать белые и черные списки отправителей и получателей почты. Управлять этими функциями без платной панели управления неудобно. Необходимо все выполнять в консоли сервера. Но по моему опыту такие возможности нужны не очень часто, поэтому можно иногда залезть на сервер и заблокировать кого-нибудь. Я расскажу как это сделать. Например, вы можете какому-то конкретному пользователю запретить отправку писем, не трогая его аккаунт. Иногда это бывает полезно.

Throttle — лимиты

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

Лимиты postfix

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

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

Разберемся с тем, как нам включать или отключать ненужные модули. В комплекте iRedMail есть написанный на питоне модуль iRedAPD. У него есть конфигурационный файл, который управляет основными возможностями почтового сервера. Идем в консоль сервера. В папке /opt/iredapd файл settings.py с основными настройками. Я рекомендую отключить все те модули, которыми вы не будете пользоваться. Это упростит конфигурацию системы, уменьшит нагрузку, сделает проще разбор логов. В конфигурационном файле есть параметр plugins.

plugins = ["reject_null_sender", "reject_sender_login_mismatch", "greylisting", "throttle", "amavisd_wblist", "sql_alias_access_policy"]

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

# service iredapd restart

Я не разбирался с работой лимитов на отправку и получение почты. Точнее я не смотрел, как ими управлять без платной панели. В связи с этим, данный модуль можно тоже отключить. Он называется throttle. Остальное можно оставить.

Теперь разберемся, как отключить SpamAssassin и ClamaV, если вы не будете ими пользоваться. Они оба завязаны на модуль Amavisd, отключаются в его настройках. Открываем его конфиг

# mcedit /etc/amavisd/amavisd.conf

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

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

И убираем комментирование с них (удаляем # в начале строки). После этого перезапускаем amavisd.

# systemctl restart amavisd

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

Теперь можно поотправлять тестовые письма и убедиться, что отключенные модули не работают. Я не буду приводить логи, чтобы не загромождать статью, она и так очень большая получается. Отмечу только, что после отключения антиспама в логах не будут видны баллы, которые система назначает каждому письму. А после отключения антивируса больше не будет соответствующих служебных заголовков в письмах. После отключения greylist письма от любого сервера будут сразу же доставляться получателям.

Разобрали управление основными функциями нашей почтовой системы. Теперь давайте расширим ее функционал.

Установка postfixadmin

Я предлагаю установить панель управления почтового сервера postfix — postfixadmin. Ее принципиальная особенность от того, что предлагает бесплатная версия iRedMail — возможность создавать алиасы и настраивать переадресацию. У нас уже есть настроенный веб сервер apache с php, но его текущая конфигурация не позволяет нормально использовать postfixadmin, нужно разрешить несколько заблокированных опций. Для этого открываем файл настроек php — /etc/php.ini, находим там параметр disable_functions и убираем из него несколько значений: proc_open, proc_close, php_uname, escapeshellarg. Их быть в указанной строке не должно. После этого перезапускаем apache.

# apachectl restart

Перед тем, как поставить postfixadmin, установим phpmyadmin для работы с базой данных mysql. Нам это пригодится в будущем. Подробно вопрос установки phpmyadmin я рассматривал в отдельной статье, если что-то не получается, посмотрите там. Сейчас просто ставим без пояснений и дополнительных настроек.

# yum install phpmyadmin

Открываем файл /etc/httpd/conf.d/phpMyAdmin.conf и разрешаем подключаться с вашего ip адреса, редактируя одну строку.

# mcedit /etc/httpd/conf.d/phpMyAdmin.conf
Require ip ваш_ip_адрес

Перезапускаем apache для применения настроек. Зайти в phpmyadmin можно по адресу http://имя_вашего_сервера/phpmyadmin Пароль пользователя root от mysql есть в первом письме в ящике postmaster.

Теперь у нас все готово для установки postfixadmin. Скачиваем его и распаковывем.

# cd /root && wget https://sourceforge.net/projects/postfixadmin/files/postfixadmin/postfixadmin-3.0/postfixadmin-3.0.tar.gz
# tar -xvzf postfixadmin-*

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

# mv /root/postfixadmin-3.0 /var/www/postfixadmin
# chown -R apache. /var/www/postfixadmin

Создаем конфигурационный файл httpd для postfixadmin.

# mcedit /etc/httpd/conf.d/postfixadmin.conf
Alias /postfixadmin /var/www/postfixadmin
<Directory /usr/share/phpMyAdmin/>
 AddDefaultCharset UTF-8
  <IfModule mod_authz_core.c>
   <RequireAny>
    Require ip ваш_ip_с_которого_заходите_на_сервер
   </RequireAny>
  </IfModule>
</Directory>

Перезапускаем httpd.

# apachectl restart

Теперь надо отредактировать конфигурационный файл postfixadmin — /var/www/postfixadmin/config.inc.php.

# mcedit /var/www/postfixadmin/config.inc.php

Изменяем значения указанных строк, остальное на свое усмотрение. Там неплохо описаны все параметры.

$CONF['configured'] = true;
$CONF['default_language'] = 'ru';
$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'root';
$CONF['database_password'] = 'hRm3StSuY0WSpk0kkl9OX1Xjv8';
$CONF['database_name'] = 'vmail';
$CONF['encrypt'] = 'dovecot:SSHA';
$CONF['dovecotpw'] = "/usr/bin/doveadm pw";

Пароль пользователя mysql root ищите в первом письме в ящике postmaster. Теперь заходим по адресу http://имя_вашего_сервера/postfixadmin/setup.php и запускаем установку. Если все в порядке, то у вас начнется обновление базы данных, которое завершится ошибкой:

DEBUG INFORMATION:
Invalid query: Duplicate key name 'domain'

Check your error_log for the failed query.

Ошибка установки postfixadmin

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

DROP INDEX domain on mailbox;
DROP INDEX domain on alias;

Исправление ошибки

После этого обновляем страницу http://имя_вашего_сервера/postfixadmin/setup.php, установка должна завершиться без ошибок. В конце вас попросят ввести пароль для завершения настройки postfixadmin. Его нужно запомнить, он пригодится дальше при создании учетной записи администратора.

Пароль установки postfixadmin

У вас сгенерируется строка:

$CONF['setup_password'] = 'cf1b85fba4ee3ffcc9efd8d098e335:ef221c19697ef4208b52d61ab75b0586560b9b';

хэш пароля установки

Ее нужно изменить в /var/www/postfixadmin/config.inc.php, записав новое значение. Теперь используя ранее придуманный пароль вам нужно добавить учетную запись администратора postfixadmin. Я рекомендую использовать для этого уже существующую учетную запись postmaster. Хотя это не обязательно. Вы можете в web панели iredmail сделать нового пользователя и воспользоваться этой учетной записью. Заходим в postfixadmin по адресу http://имя_вашего_сервера/postfixadmin

Логин в postfixadmin

Все, установка и настройка postfixadmin завершена. Теперь покажу, что мы в итоге получили. Во-первых, тут вы можете создавать новых пользователей и управлять существующими. Создадим новый алиас test@m.zeroxzed.ru и направим всю почту, отправленную на этот адрес в почтовый ящик user1@m.zeroxzed.ru. Для этого идем в раздел Обзор -> Создать алиас и создаем его.

Создание алиаса в postfix

Почтовый ящик user1 должен существовать. Теперь отправим письмо на адрес test@m.zeroxzed.ru и посмотрим лог.

Лог postfix отправки письма на алиас

Письмо было доставлено в почтовый ящик user1. Здесь я заметил одну неприятную особенность. В логе нигде не отражено, что изначально письмо было отправлено на адрес test@m.zeroxzed.ru, указан только конечный получатель. Это неудобно, когда нужно будет разбирать какую-нибудь ситуацию по логам. Я сейчас не смог вспомнить, от чего зависит такое поведение, но когда я руками все настраиваю, потом в логах вижу сообщение о том, что изначально письмо было отправлено на test, а потом уже доставлено в user1. С этим надо будет разобраться отдельно. Буду рад подсказке по этому поводу, чтобы самому не искать.

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

Настройка пересылки почты в postfix

В поле Кому вводим ящик user2@m.zeroxzed.ru. Отправляем снова письмо на user1 и смотрим лог.

Лог перенаправления письма

Видно, что письмо было доставлено обоим пользователям.

Через postfixadmin вы можете добавлять новых администраторов для управления доменом, новые виртуальные домены, создавать пользователей и алиасы. В принципе, web интерфейс бесплатной версии iredmail вам больше не нужен. Его функционал беднее. Postfixadmin полностью его заменяет. Остальные возможности postfixadmin посмотрите сами, расписывать не хочется. Статья и так получается очень большой, а разбивать на части не хочется, чтобы не нарушать целостную картину.

Тонкая настройка почтового сервера

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

Максимальный размер письма

Важным параметром является максимально разрешенный размер письма. В бесплатной версии для его изменения нужно отредактировать конфигурацию postfix. Сделать это не трудно. За размер письма отвечает параметр в файле /etc/postfix/main.cfmessage_size_limit = 15728640. Размер указан в байтах. Значение по-умолчанию 15 мегабайт. Мне кажется удобнее будет установить его в 20 мегабайт. Слишком большое значение не ставьте, пользователи забьют свои почтовые ящики огромными вложениями и это осложнит администрирование сервера. После изменения параметра необходимо перечитать конфигурацию postfix.

# postfix reload
postfix/postfix-script: refreshing the Postfix mail system

Запрет на отправку писем конкретного пользователя

Иногда бывают ситуации, когда нужно запретить отправку писем какому-нибудь пользователю. В iRedMail это можно сделать с помощью встроенного средства белых и черных списков. Для его работы должен быть включен модуль amavisd_wblist. Переходим в папку /opt/iredapd/tools/ и используем скрипт wblist_admin.py для добавления запрета отправки писем.

# cd /opt/iredapd/tools/
# python wblist_admin.py --add --blacklist user1@m.zeroxzed.ru

Этой командой мы запретили пользователю user1@m.zeroxzed.ru отправлять письма. При отправке письма он получит сообщение об ошибке, а в логе появится следующая запись.

blacklist в postfix

При этом входящая почта будет нормально работать. Посмотреть весь черный список можно командой:

# python wblist_admin.py --list --blacklist

Удаляем из черного списка командой:

# python wblist_admin.py --delete --blacklist user1@m.zeroxzed.ru
К сожалению, во время тестирования заметил, что черный список на отправку работает только при работе из веб интерфейса. При подключении извне с помощью почтового клиента письма продолжают отправляться. Я потратил некоторое время на тесты и попытку разобраться, но так и не смог понять в чем дело. Для тех, кто разбирается в теме и будет пытаться решить этот вопрос подскажу, что разница между веб интерфейсом и почтовым клиентом в том, что первый способ подключения относится к mynetworks = 127.0.0.1, а удаленное подключение это sasl_authenticated. Во всех restrictions в postfix оба эти способа идут по порядку и должны по идее обрабатываться одинаково, один за другим, но не все так просто, раз существует проблема. White/Blacklist хранятся в mysql в базе amavisd. У меня, к сожалению, нет времени подробно разобраться с этой особенностью.

Этот же функционал можно реализовать стандартными возможностями postfix без сторонних модулей. Я этот делал, когда было нужно. Если получится, то расскажу об этом со временем.

Каталог с почтовыми ящиками

По-умолчанию, вся почта хранится в каталоге /var/vmail/vmail1/m.zeroxzed.ru, а дальше немного странная структура. Например, ящик пользователя user1 будет находиться по адресу /var/vmail/vmail1/m.zeroxzed.ru/u/s/e/user1-2016.11.06.14.08.39, пользователя postmaster — /var/vmail/vmail1/m.zeroxzed.ru/p/o/s/postmaster-2016.11.06.13.22.15. Со слов разработчиков, такая структура позволяет повысить быстродействие системы. Наверно это актуально, когда у вас тысячи ящиков. Мне кажется гораздо удобнее структура, когда все ящики лежат в одной папке с именем домена. Даты создания ящиков лично мне тоже не нужны.

Уточню, что описанная выше проблема актуальна только для ящиков, созданных web панелью iRedMail. Postfixadmin по-умолчанию создает ящики так, как мне нужно — все в папке с именем домена. Так что если вы будете пользоваться только postfixadmin, можно ничего не делать. Но я для порядка изменю настройки iredmail на всякий случай, чтобы не было путаницы.

Чтобы привести структуру новых создаваемых ящиков к привычному виду, отредактируем файл /var/www/iredadmin/libs/default_settings.py. Изменим там два параметра.

# mcedit /var/www/iredadmin/libs/default_settings.py
MAILDIR_HASHED = False
MAILDIR_APPEND_TIMESTAMP = False

Теперь новые почтовые ящики будут располагаться по адресу /var/vmail/vmail1/site.ru, не зависимо от того, где были созданы. Для того, чтобы изменить пути уже созданных ящиков, необходимо отредактировать путь в mysql базе vmail, в таблице mailbox, в столбце maildir.

Адреса локальных папок почтовых ящиков postfix

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

Создание копий всех почтовых сообщений postfix

Воспользуемся штатной возможностью почтового сервера postfix — bcc. С помощью этой настройки мы сможем направить всю входящую и исходящую почту в отдельные почтовые ящики. Создадим их перед этим. В моем случае ящики будут называться:

  • all-in@m.zeroxzed.ru для входящей почты
  • all-out@m.zeroxzed.ru для исходящей почты

Идем в phpmyadmin, открываем базу vmail и выполняем в ней запрос:

INSERT INTO sender_bcc_domain (domain, bcc_address, active, created) VALUES ('m.zeroxzed.ru', 'all-out@m.zeroxzed.ru', 1, NOW());
INSERT INTO recipient_bcc_domain (domain, bcc_address, active, created) VALUES ('m.zeroxzed.ru', 'all-in@m.zeroxzed.ru', 1, NOW());

Настройка сбора почты в postfix

Первая строка для сбора всей исходящей почты, вторая для сбора входящей. Не забудьте изменить названия домена и ящиков на свои значения. Если у вас несколько виртуальных доменов, делайте для каждого отдельные ящики. Можно сделать вообще просто — собирать абсолютно всю почту, проходящую через postfix в один ящик. Но это очень неудобно. Будет огромный ящик с тысячами файлов внутри. Там банально даже найти что-то станет проблемой, так как поиск будет выполняться очень долго. Я когда только начинал настраивать почтовые сервера так сделал, но быстро понял ошибку и переделал.

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

Теперь на всякий случай проверьте, как работает функция сбора всей входящей и исходящей почты. Посмотрите на лог файл postfix, там должна быть информация о том, что письмо направлено в том числе и в резервный ящик. В эти ящики будет попадать внешняя переписка и внутренняя. В самих письмах не будет никакой информации о том, что куда-то была отправлена еще копия, пользователи об этом знать не будут.

Настройка автоответчика

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

Настраивается автоответ через roundcube. Для этого заходите под своей учетной записью, переходите в раздел настройки и там выбирайте меню Отпуск.

Настройка автоответа в postfix

На вкладке дополнительные настройки можно указать адрес для отправки копий.

Дополнительные настройки пересылки почты

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

На этом, пожалуй, заканчиваю настройку почтового сервера на centos на базе iredmail и postfix.

Анализ лог файлов postfix с помощью webmin

Для поиска информации в лог файле poistfix удобно использовать плагин webmin для просмотра системных логов. Как установить webmin на centos 7 я писал в отдельной статье. После установки в разделе System -> System logs можно посмотреть системные логи, в том числе maillog. Удобство этого модуля заключается в том, что зная, к примеру, id писmма, можно вывести все строки с этим id. Это очень удобно для анализа различных ситуаций.

Анализ лог файла postfix

Лог файл почтового сервера очень насыщен и там на каждую секунду куча событий. Без удобного фильтра сообщений трудно разбираться в ситуации. Приходится либо в консоли грепать лог файл, либо куда-то его копировать и анализировать в более удобных текстовых редакторах. Я лично привык использовать webmin для этих целей. Мне кажется это удобным. Особенно удобно, когда нужно несколько файлов просматривать одновременно. Я их просто открываю в разных вкладках браузера и анализирую. Главное отключить в настройках модуля поиск по сжатым файлам. Это очень сильно замедляет процесс, но иногда серьезно выручает, когда нужно поискать по всем лог файлам за последнюю неделю. Поиск по сжатым файлам я включаю по необходимости, постоянно его не использую.

Заключение

Подведем итог работы по настройке почтового сервера. Я постарался рассмотреть наиболее полезные и значимые возможности и настройки на основе своего опыта эксплуатации почтовых серверов postfix. Конечно, я не раскрыл всех нюансов. Отдельно надо рассмотреть вопрос бэкапа почтового сервера, а точнее почтовых ящиков пользователей. Там есть свои нюансы и сложности. Связаны они в первую очередь с тем, что каждое письмо это отдельный файл. Офис человек в 100-150 генерирует очень много почтового трафика, который будет состоять из десятков тысяч файлов в месяц. А за 5 лет накопятся терабайтные архивы очень важных писем менеджеров, которые нужно будет где-то хранить и быстро отдавать пользователям. Если случится проблема на сервере, то оперативно восстановить из бэкапа почтовый архив не получится, если у вас не бюджетное аппаратное решение дисковой подсистемы. Тут нужны свои подходы и хитрости. По возможности буду ими делиться.

Есть еще много более ли менее полезных функций и возможностей, которые можно добавить и использовать. Например, борьба со спамом штатными возможностями postfix с помощью разных restrictions. Отдельно надо рассматривать вопрос общих почтовых папок, это может быть интересно и полезно. Вопрос сертификатов и dkim я не затронул вообще. По мере возможностей, постараюсь раскрывать эти темы и делиться опытом. Но все не успеваю. Ко мне опыт приходит быстрее, чем я успеваю им делиться 🙂 Очередь из статей и планов уже очень большая выстроилась.

На этом заканчиваю, надеюсь вам будет полезна моя статья. Я писал ее почти неделю с разной интенсивностью, обдумывая нюансы и подбирая полезные вещи. Буду рад комментариям, а особенно подсказкам и каким-то советам по улучшению работы и расширению функционала почтового сервера. Может кто-то поделится своим личным опытом. Сухих инструкций много, в них нет недостатка, а личным опытом делятся гораздо реже, но он очень ценен.


Помогла статья? Есть возможность отблагодарить автора

Дополнительные материалы по CentOS

Рекомендую полезные материалы по CentOS:
Настройки системы
  • Установка
  • Базовая настройка
  • Настройка времени
  • Настройка сети
  • Настройка репозиториев
  • Настройка iptables
Установка CentOS 7 в конфигурации minimal или netinstall с загрузочной флешки или по сети на диск или raid раздел.
Базовая настройка CentOS 7 для работы с любым функционалом. Приведены практические советы по улучшению безопасности и удобства администрирования.
Как установить точное время на сервере CentOS, настроить часовой пояс, синхронизировать время с помощью ntpdate и ntpd и другое.
Подробное описание настройки сети в CentOS 7 - задать ip адрес, dhcp, отключить ipv6, dns, hostname, статические маршруты и др.
Установка репозиториев epel, rpmforge и др. Добавление, удаление, обновление rpm репозиториев в CentOS.
Рассмотрены основные моменты настройки iptables в Centos 7 - установка, добавление правил, проброс портов, nat, логирование и д.р.
Настройка программных комплексов
 
  • Прокси сервер
  • Шлюз
  • Asterisk
  • Asterisk+Freepbx
  • Сервер VPN
  • Web сервер Apache
  • Web сервер Nginx
  • Почтовый сервер
Подробное описание настройки прокси сервера на базе CentOS 7 со связкой squid+AD+sams2, реализован запрет доступа по url и группам пользователей.
Простая и быстрая настройка шлюза на базе CentOS 7 для организации доступа в интернет из локальной сети.
Описание установки и настройки asterisk - популярной современной sip атс. Описан расширенный функционал, покрывающий большинство потребностей стандартного офиса в современной телефонии.
Подробное описание установки voip сервера asterisk и панели управления freepbx на CentOS 7.
Установка и настройка OpenVPN сервера на CentOS для объединения офисов и подключения удаленных пользователей
Настройка web сервера CentOS 7 на базе связки http сервера apache, php и сервера db mysql, или коротко - установка lamp.
Установка и настройка высокопроизводительного web сервера на базе nginx и php fpm. В качестве кэша используется APC.

Описание установки и настройки почтового сервера iRedMail на основе готовой сборки на CentOS 7. Обзор основных возможностей и рекомендации по настройке.

Самостоятельная настройки почтового сервера postfix + dovecot а так же дополнительных полезных модулей для полноценной и удобной работы почты.

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

Настройка отдельных программ
 
  • Zabbix
  • Phpmyadmin
  • Webmin
  • Ruby
  • Обновление php
  • Vsftpd
  • Bind
  • Unison
  • Observium
  • Syslog-NG
Видео и подробное описание установки и настройки Zabbix 3.2, а также установка агентов на linux и windows и подключение их к мониторингу.
Подробное описание установки и настройки панели управления phpmyadmin на веб сервер apache и nginx под управлением Centos 7.
Подробное описание установки и настройки Webmin на CentOS 7 для удаленного подключения и управления сервером.
Подробное описание установки языка Ruby последней версии на веб сервер под управлением CentOS 7.
Подробное описание установки или обновления php 7 на CentOS 7. Рассмотрен вариант отката обновления и возврата на php 5.6 или 5.4.
Подробное описание с видео установки и настройки ftp сервера vsftpd, примеры с локальными и виртуальные пользователями в mysql.
Настройка DNS сервера BIND (Named) в CentOS 7. Рассмотрены наиболее популярные конфигурации, в том числе подробное логирование.
Установка Unison в CentOS 7 для двухсторонней синхронизации файлов.
Инструкция по установке и настройке сервера мониторинга Observium на CentOS 7. В качестве примера в конце добавлено одно устройство для мониторинга.
Настройка сервера для централизованного сбора логов с удаленных устройств и серверов с помощью программы syslog-ng.
Разное
  • Настройка ssl в Apache
  • Бэкап с помощью rsync
Настройка работы веб сервера apache с виртуальными хостами по протоколу https с использованием бесплатного ssl сертификата.
Подробное описание настройки бэкапа с помощью rsync на примере скрипта инкрементного архива на системе Centos, Debian, Ubuntu, Windows.

83 комментария

  1. Аноним

    Автор вы как всегда на уровне!

  2. Владимир

    Спасибо за отличный материал. Если устанавливать сервер по приведённой инструкции, то какую аппаратную конфигурацию посоветуете? Речь идёт о 1-2 тысяче почтовых ящиков.

    • Я не знаю, не админил такое количество ящиков. 100-150 ящиков тянет без нарпяга обычная виртуалка с 2-мя ядрами и 4 Гб оперативы, диск обычный софтовый raid1 на 2 диска. С таким количеством ящиков в первую очередь стоит подумать в каком формате хранить почту, возможно есть что-то лучше maildir. Основная нагрузка будет на диски, на это внимание в первую очередь.

    • И еще, я бы лучше сделал чистую установку postfix + dovecot в вашем случае. У меня уже есть черновик и настроенный тестовый сервер, скоро подготовлю статью. Мне кажется готовые сборки хороши в малом и среднем сегменте. 2000 ящиков это уже больше, чем средний сегмент. Там лучше все держать под контролем и понимать, где, что и как управляется. С iredmail могут быть неприятные сюрпризы под хорошей нагрузкой.

  3. Отличная статья, комплексно и почти без лирики, и почти без помарок (про домены «первого уровня», хотя явно описаны и приведены второго).
    Вопрос к автору, как к спецу. Никогда не настраивал свой сервер почтовый, но на новом месте работы понадобилось решить задачу, не самую описанную в сети. Ситуация: 1 общий эл.ящик на майл.ру, канал интернет 2048кб, в сети 17 машин(3 бухгалтерия, 10-12 с веб клиентам госприложений, у всех почта через веб или десктоп клиенты)….и весь этот колхоз(от XP до 8.1) в периоды нагрузки благополучно залипает, почта может по 10-30 минут не подгружаться в BAT и аналогичные клиенты, что само собой вызывает бурю эмоций со всеми вытекающими.
    Подумал, неплохо бы завести сервер, куды бы почта майл ру сливалась, и с него все обитатели сети уже черпали письма, а не каждый бы лез через внешний канал. Подскажите, имеет ли смысл организовывать такое решение, если да, то можно подробнее механизм и варианты ПО, желательно под линукс(шара на сети на нем же в проекте)??
    …буду очень признателен за помощь

    • Я не совсем понял, как в данном случае пользователи работают с ящиком. Как они определяют, кому что пришло, если ящик один? Они по imap его грузят в клиенты? Вообще, можно поднять postfix, в него собирать почту через fetchmail, класть ее в один локальный ящик и этот ящик подключить по imap пользователям в почтовые клиенты, либо настроить roundcube для web доступа в него же. Отправлять почту тоже через локальный postfix, а дальше через ящик яндекса. Все это настраивается, я видел примеры. В принципе, это может помочь, но схема какая-то странная. Так работать неправильно.

  4. Здравствуйте.
    С недавних пор часто пользуюсь Вашими мануалами по настройке и изучению FreeBSD.
    Очень бы хотелось увидеть от Вас похожую статью по настройке почтового сервера на Фре 10.3.

    • А смысл в 10.3? Уже вышла 11-я версия. Если что-то и будет, то только на последних версиях. Я сейчас стараюсь охватить все актуальные темы по администрированию linux в рамках системы centos. Когда закончу по centos, продублирую этот функционал на freebsd и debian. Но все это очень длинный и кропотливый труд, реально у меня не хватает времени писать статьи на все темы, что хочется. А с учетом постоянного выхода новых версий систем и устаревания информации, я вообще не представляю, как в одиночку вести полноценный сайт по администрированию. Ты все время бежишь за новыми версиями, а старый материал устаревает.

  5. Дмитрий

    День добрый, начал делать по вашей статье установку и столкнулся со следующей проблемой, после установки голого iredmail (до postfixa)вроде все работает, roundcube и cogo интерфейсы внутри сети работают без проблем, но с улицы адекватно работает только cogo, при заходе на roundcube при авторизации, ящик открывается секунды на три и появляется ошибка «сессия устарела». В чем может быть косяк? Почему два интерфейса ведут себя по разному, причем пробовал и на апаче и gnix, везде одно и тоже. Время на сервере выставлено правильно.

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

      • Дмитрий

        Да три раза уже пробовал, думал проблема в апаче но нет Gnix так же себя ведет. Тоже думаю что дело в веб сервере, что то с https.

  6. Будет ли iRedmail работать с несколькими доменами ? Есть необходимость работать с несколькими разными доменами, которые должны получать и отправлять почту с отдельного сервера, то есть ip самого домена и ip почты для домена будут различаться.

    • Да, будет работать с несколькими доменами. Это штатная возможность. Один почтовый сервер может обслуживать множество разных доменов.

      • Следить еще надо, как я понимаю, чтобы у доменов MX запись, SPF и mail были правильно заполнены и ссылались на адрес почтового сервера ?

  7. Можно ли закрыть транзит почты и как? Спасибо.

  8. Виталий

    Доброго времени суток! Благодарю, за качественную инструкцию. Столкнулся с CentOS впервые, но, используя Вашу инструкцию,у меня получилось развернуть тестовый почтовый сервер. Учитывая, что у меня нет практики работы с Linux. Единственное, что пока не получилось, так это прикрутить PostFixAdmin. Создал логин и пароль для superadmin, но при попытке войти PostFixAdmin выдает неправильный пароль или логин. Подскажите, где мог я косячнуть? Где посмотреть, чтобы исправить ошибку? Я даже все снес и переустановил еще раз. Но пока пытаюсь управлять штатными средствами.
    Спасибо за ответ!

    • Не знаю, где ошибка. Так трудно сказать. Администратора для postfixadmin ты создаешь во время установки postfixadmin. Надо там внимательно все проверять.

  9. Добрый день, давно слежу за Вами и меня ваши уроки ( блоги ) только радуют.

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

    • Да там писать особо нечего. Главное получить сертификат и добавить пару строк в конфигурацию сервера. Я уже писал об этом раньше: https://serveradmin.ru/besplatnyiy-ssl-sertifikat-dlya-postfix/
      С тех пор мало что изменилось, кроме самого центра сертификации. Теперь у них не надо получать сертификаты, их забанили многие браузеры и системы.

  10. Добрый вечер!
    Как я понимаю здесь у Вас описана установка на чистый VPS?
    Возможна ли корректная установка iRedMail на сервер, где уже крутится рабочий сайт или нет?

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

  11. Вот из того, что я нагуглил на скорую руку http://serverfault.com/questions/438176/install-iredmail-on-server-with-existing-mysql

    Можете при желании изучить и со временем добавить в статью.

  12. Тодось

    Сделал всё по вашей методичке. Спасибо ваше описание. Могу отправлять почту, ура! К сожалению, письма не доходят до моего почтового сервера. Вот такой квиточек возвращается:

    The response from the remote server was:
    550 5.7.1 Relaying to denied (authentication required)
    Final-Recipient: rfc822; postmaster@m.zeroxzed.ru
    Action: failed
    Status: 5.7.1
    Remote-MTA: dns; svr.m.zeroxzed.ru.zeroxzed.ru. (188.45.19.125, the
    server for the domain m.zeroxzed.ru.)
    Diagnostic-Code: smtp; 550 5.7.1 Relaying to denied (authentication required)

    [данные подменены, чтобы полностью соответствовать Вашей статье]

    Я никак не могу понять, о какой аутентификации идёт речь, если я отправляю почту из веб-интерфейса Гугла или Яндекса? Подскажите пожалуйста. И ещё не ясно, почему в строке с IP-адресом указывается такое длинное имя домена?
    Заранее очень благодарю.

    • Ключевая фраза:
      Relaying to denied (authentication required)

      Не знаю, почему сервер не принимает сообщения. Он почему-то ждет авторизации для приема, хотя авторизация нужна только для отправки. Это настраивается в конфиге postfix, но в случае с iredmail там все уже должно быть сделано, если, конечно, ты сам там не менял что-то.

  13. Благодарю за статью.
    Сам кручу Postfix+Dovecot+PostfixAdmin+Roundcube, настроенный руками через конф.файлы.
    То,что реализовал дополнительно
    1) Почтовые Квоты пользователей, например, ограничение размером 4Gb (+ оповещение пользователей при превышении квоты на 85,90,100% и установки на MUA(Thunderbird) плагина Display Quota)
    2) Фильтрация спама на стадии ДО принятия письма MTA средствами SMTP-ограничений (намного меньше грузит сервер,чем использование тяжеловесного SpamAssassin,который получает в обработку письмо от MTA уже тогда, когда MTA принял это письмо в рассмотрение)
    3) Тонкая настройка SMTP-ограничений через т.н. карты сетей(классы ограничений, карты/списки сетей) для внутренних и внешних подключений

    • Да, мне тоже такая настройка больше нравится. У меня уже готов черновик статьи и тестовая виртуалка настроена. Не хватает времени все оформить в нормальную статью. Сам SpamAssassin не использую, не люблю его.

  14. К сожалению, при установке iRedMail вытягивает и устанавливает РНР версии 5. Есть ли опыт перехода с версии 5 на версию 7 уже после установки и настройки iRedMail? Актуально для Centos 6.5 / 7.0. Спасибо.

    • А зачем вам php 7 на почтовом сервере? Какой смысл в таких переходах? Сделайте отдельную виртуалку под почту и пусть там будет любая версия php, работать будет одинаково хорошо.

  15. Аноним

    Статья хорошая , спасибо , но таких статей много. Интересует как грамотно архивировать почту ящиков, разбивать на архивы по неделям, дням , месяцам. Как искать в этих архивах, если нужно. Как удалять автоматом старые и т.д. При условии что дисковая подсистма не очень крутая…???

    • Тут трудно дать универсальный совет. Во-первых, это не всем надо, поэтому и не пишут статей. Во-вторых, понятие грамотно у всех тоже свое. Для решения таких задач достаточно пары программ — find и rsync. Тут и бэкап, и очистка. Может напишу, если будет время, свои примеры. У меня много скриптов разных, но они все по месту пишутся и каждый раз отличаются друг от друга в зависимости от задач.

  16. День добрый, спасибо за статью все получилось как написано, сейчас тестирую сие чудо, но заметил вот что — /etc/postfix/main.cf — message_size_limit = 15728640, но когда пытаюсь отправить файл 12метровый, то получаю сообщение в роундкубе — Загруженный файл больше максимального размера в 10 МБ. И когда попробовал параметр поменять до 20 метров, сообщение остается прежнее. Такое чувство, что кроме постфикса еще кто то ставит ограничение на отправку файла, может подскажите?

    • Это ограничение срабатывает не на размер письма, а на размер файла, который можно через php загрузить по веб интерфейсу. Нужно в php.ini изменить этот параметр. Называется upload_max_filesize.

      • Спасибо, но еще в самом nginx пришлось добавить client_max_body_size, вдруг кому понадобится.

  17. Доброго времени суток!
    Очень полезная статья! Смогли поднять у себя почтовый сервер без особых проблем. Сейчас изучаем. Возник еще один вопрос. В функционале Postfixadmin имеется сборщик почты, но как мы поняли он забирает почту у провайдера. А имеется ли надстройка или плагин, который бы мог при соответствующей настройке профиля пользователя собирать почту с интернет серверов. На почтовиках в интернете это как бы есть. Пользователи просят избавить их от необходимости проверять старую почту, которая была до развертывания нашего почтового сервера.
    Спасибо за ответ!

    • Я никогда не пользовался этим сборщиком. Подозреваю, что он работает на базе fetchmail. Можно в интернете посмотреть информацию по его возможностям, я настраивал очень давно. Мне кажется, сейчас проще сделать на исходном ящике переадресацию всей почты на другой, нежели настраивать сборщик. По крайней мере я так поступаю.

  18. Александр

    Спасибо все работает. Как к AD подключиться по LDAP. гугл не помогает…сорри

    • На этот вопрос нет простого ответа. Применительно к почтовому серверу, что хочется брать из AD? Мне не понятно, какого рода интеграция нужна. Автоматическое создание ящика, после добавления пользователя в домен?

  19. Александр

    В дополнении к предыдущему посту на эту тему …есть близко похожий мануал https://howitmake.ru/blog/ubuntu/81.html , но тут у вас реализация сборки iRedMail (Сentos 7через через SOGo …а там напрямую…в iRedMail…ну и ОС другая…

    Спасибо если есть решение и ответ на вопрос как сделать
    «Интеграция почтового сервера (сборка iRedMail (Сentos 7) с Active Directory (Windows Server 2003/2008/2008R2 ) ( в одном пространстве имен!)

    • Александр

      Что хотелось бы?
      — Автоматическое создание ящика
      — Общая адресная книга пользователей домена

      Пользователь при отправке писем просто выбирает из списка адрес на отправку…
      А вот через какого из предложенного сборкой почтового клиента это можно делать и это можно реализовать…вопрос?
      Или придется использовать снова например OutlooК или еще что-то…хотелось бы не платить…за софт.

      • Общая адресная книга и так может использоваться при настроенном домене. Если у вас в домене указаны у пользователей email, то можно подключать эту адресную книгу в любом клиенте, который поддерживает внешние книги по ldap. Это умеет и Outlook и Thunderbird.

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

        • Александр

          Спасибо. Ваш пример ящика на сборке очень интересен и многофункционален. Менять эту сборку на что-то другое нет смысла.
          Вопрос:
          Как не пытаюсь после установке Postfixadmin не создает пользователя. пока не включишь в его конфигурации CONF[‘encrypt’] = ‘cleartext’;
          В принципе работе не мешает….

          • Что значит не создает? Запись в базе появляется? Иногда запись в базе добавляется, но сама папка с ящиком не создается и не отправляется тестовое письмо. Но если запись в базе есть, то при первой же отправке на новый адрес, каталог с именем ящика будет создан и все будет нормально работать.

            • Александр

              Запись в admin в базе vmail появляется после создания нового админа Postfixadmin. Без него зайти в админку Postfixadmin нет возможности.
              Под записью postmaster@ldomain.ru Postfixadminyt не управляется.
              Делаю которую попытку…по вашему мануалу…срабатывает всегда только при конфигурации CONF[‘encrypt’] = ‘cleartext’;

              • Александр

                Иначе……

                Everything seems fine… attempting to create/update database structure

                Database is up to date

                can’t encrypt password with dovecotpw, see error log for details

                • Надо смотреть параметр в конфиге, который отвечает за dovecotpw, проверять путь. Скорее всего в этом дело.

                • Александр

                  Прошу извинить за флуд, но проблема решилась:
                  все настройки, что необходимо изменить в nano /var/www/postfixadmin/config.inc.php
                  просто // закрыл, а ваши закопипастил вниз файла.
                  …Все заработало. Спасибо.

        • Александр

          Адресная книга домена в почтовом клиенте roundcubemail.
          Вопрос решен вот так:
          Открываем файл и добавляем в него в конец файла:
          nano /var/www/roundcubemail/config/config.inc.php

          ##
          #Global LDAP Address Book with AD.
          #
          $config[‘autocomplete_addressbooks’] = array(«sql», «global_ldap_abook»);
          $config[‘ldap_public’][«global_ldap_abook»] = array(
          ‘name’ => ‘Адресная книга ОАО’,
          ‘hosts’ => array(«XXX.XXX.XXX.XXX»), // 389,
          ‘use_tls’ => false, // ‘3’,
          ‘network_timeout’ => 10,
          ‘user_specific’ => false,
          ‘base_dn’ => «dc=domain,dc=ru», // «user@domain.ru», // «XXXXXXX», // false, // array(‘mail’),
          // mapping of contact fields to directory attributes
          ‘fieldmap’ => array(
          ‘name’ => ‘cn’,
          ‘surname’ => ‘sn’,
          ‘firstname’ => ‘givenName’,
          ‘title’ => ‘title’,
          ’email’ => ‘mail:*’,
          ‘department’ => ‘departmentNumber’,
          ‘photo’ => ‘thumbnailPhoto’
          ),
          ‘sort’ => ‘cn’,
          ‘scope’ => ‘sub’,
          //’filter’ => «(&(objectclass=person)(mail=*domain.ru)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))»,
          ‘filter’ => «(mail=*@*)»,
          ‘fuzzy_search’ => true,
          ‘vlv’ => false, // Enable Virtual List View to more efficiently fetch paginated data (if server supports it)
          ‘sizelimit’ => ‘0’, // Enables you to limit the count of entries fetched. Setting this to 0 means no limit.
          ‘timelimit’ => ‘0’, // Sets the number of seconds how long is spend on the search. Setting this to 0 means no
          limit.
          ‘referrals’ => false, // Sets the LDAP_OPT_REFERRALS option. Mostly used in multi-domain Active Directory
          setups
          );

  20. Евгений

    Добрый день. Спасибо за отличную статью. Сделал все по инструкции. Но как только подключил adminpostfix то на почту postmaster@ стали приходить письма с ошибками:

    ERROR: Problem with internal logger (UpdateLogFile = /var/log/clamav/freshclam.log).
    ERROR: Can’t open /var/log/clamav/freshclam.log in append mode (check permissions!).

    а также по ссылкам типа: /awstats/awstats.pl?config=web перестали картинки отображаться

    Думаю тут дело с какими то правами, подскажите что именно и где поправить надо?

  21. Сергей

    Добрый день еще й сегодня) Осталось настроить только почтовый сервер, но тут я конкретно заглох) Мне нужен простой тестовый сервер. Заглох я в самом начале, в статье вы берете в пример поддомен, но а где мне его брать, как заменить? Что с внешним ip для сервера? Как правильно DNS настроить. Как выглядит корректное имя хоста?)

    • Вопрос то в чем? У меня же все написано. Надо разбираться. Знания не даются просто так, их надо осваивать.

      • Сергей

        Возможно и написано, но я не могу понять где)) было бы здорово меня туда носом пнуть и повозить как следует))) Начну по-порядку. Как сделать домен? Может у вас есть какая-то статья? И что значит корректное имя хоста?) Вопросы наверное жуть тупые)) Сильно не пинайте)

        • Могу сразу сказать, что при таких вопросах настроить почтовый сервер не получится 100%. У меня большой опыт в том числе и в обучении администрированию, я знаю, о чем говорю. Лучше не тратить время, а начать с чего-то попроще.

      • Сергей

        Или домен — это обычная структура папок на Апачи?))

  22. Сергей

    Был бы очень признателен за полезный мануал «Синхронизации двух iRedMail» (как здесь – _habrahabr.ru/post/156059/ _iredmail.org/forum/topic898-iredmail-support-1-to-1-sync-between-two-iredmail-servers.html) только в связке Nginx+MariaDB+SOGo.

    Есть два VPS в одной сети (), с разными белыми IPv4, а также – приватные IP, разумеется.

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

  23. Роман М

    Добрый день.
    Большое спасибо за статью, всё очень доступно разъясняется. Может быть, подскажите мне по моей проблеме.

    На почту postmaster@mydomain.com ежеминутно падают письма с содержанием:

    Тема:
    Cron /usr/sbin/sogo-tool expire-sessions 30 2>/dev/null; /usr/sbin/sogo-ealarms-notify
    Содержимое:
    SOGo products loaded from ‘/usr/lib64/GNUstep/SOGo’:
    AdministrationUI.SOGo, Appointments.SOGo, CommonUI.SOGo, Contacts.SOGo, ContactsUI.SOGo, MailPartViewers.SOGo, Mailer.SOGo, MailerUI.SOGo, MainUI.SOGo, PreferencesUI.SOGo, SchedulerUI.SOGo, ActiveSync.SOGo

    Вроде бы это не ошибка а простое уведомление, но не могу понять из-за чего оно прилетает.
    Остановка сервиса sogod приводит к отключению SOGo-интерфейса, но уведомления продолжают приходить.
    Через «crontab -e -u sogo» отключил две стандартные задачи, после этого, естественно, уведомления не приходят. Но ведь это неправильное «решение».

    Версия:
    iRedMail-0.9.6
    sogo-3.2.8.20170418-1.el7.centos.x86_64

    • Сергей

      Роман М, на форуме поддержки iRM есть же решение:

      yum install vim

      crontab -e -u sogo

      заменить строчки крона на:

      # SOGo session cleanup and email reminder, should be run every minute.
      * * * * * /usr/sbin/sogo-tool expire-sessions 30 >/dev/null; /usr/sbin/sogo-ealarms-notify >/dev/null 2>&1

      # SOGo vacation messages expiration
      # The credentials file should contain the sieve admin credentials (username:passwd)
      0 0 * * * /usr/sbin/sogo-tool update-autoreply -p /etc/sogo/sieve.cred > /dev/null 2>&1

  24. Подскажите пожалуйста, при установке iRedMail-0.9.6 на CentOS 7 инсталляция прервалась с ошибкой о конфликте версий РНР:
    —> Processing Conflict: php70w-common-7.0.17-1.w7.x86_64 conflicts php-common Finished Dependency Resolution
    Error: php70w-common conflicts with php-common-5.4.16-42.el7.x86_64

    на сервере стоит рнр7, откуда лезет 5.4? и как её победить?

    Заранее спасибо

    • Возможно iredmail не поддерживает 7.0 и хочет 5.4, вот и конфликт. Как разрешить — не знаю, надо пробовать, я не сталкивался с такой проблемой. Меня на почтовом сервере и 5.4 устраивает.

      • Сергей

        На чистую установку ставлю изначально репозиторий PHP 7.1 от Remi – все работает без ошибок.

        • дело в том, что на VPS хостинге уже работает сайт, просто хотел прикрутить к нему почтовый сервер. Выглядит всё так, что 5.4 идёт вместе с рэдмейлом, ну и естественно регресс в версиях не допускается, поэтому и ругается.
          Спросил, может вы знаете, как отключить установку 5.4, а проглатывать ту, что уже стоит, если нет, то придётся искать другой вариант с почтой, сервер ломать из-за почты я конечно не буду.

  25. Спасибо за отличную статью!

    Подскажите, может кто-то встречал модуль или патч, который превращал бы эту корпоративную (поскольку нужен администратор) почтовую систему в публичную, т.е. в такую, в которой пользователи сами себя регистрируют?
    Как на MAIL.RU, GMAIL.COM и т.д.

  26. Сергей

    Не получается отключить амавист ((( файлы rar и exw не могу отправить ((( Хэла ми плиз

    • Сергей

      /etc/amavisd/amavisd.conf

      удалить расширения в строках

      # Dangerous mime types

      и

      # Dangerous file name extensions

  27. Максим

    Здравствуйте,

    Столкнулся с проблемой при восстановлении Iredmail из резервной копии (архивы mysql, DKIM, maildir). Восстановление БД прошло без проблем. А вот с сообщениями (письмами) проблема. После анзипа и копирования maildir с почтовыми сообщениями вылезает ошибка — Нет связи с IMAP сервером (через roundcube, и через Outlook). В чём может быть проблема?

    • Конкретного ничего посоветовать не могу, так как не пользовался резервным копированием и восстановлением в iredmail. Нужно идти в логи postfix и dovecot и смотреть на конкретные ошибки. Отсутствие связи с imap сервером намекают на то, что возможно он вообще не запустился.

  28. Ярослав

    Добрый день. Статья шикарная. Огромное спасибо (добавте вебмани кошель)
    Вопрос. при установке постфиксадмин
    Checking for dependencies:

    Magic Quotes: Disabled — OK
    Depends on: presence config.inc.php — OK
    Checking $CONF[‘configured’] — OK
    Smarty template compile directory is writable — OK
    Depends on: MySQL 4.1 — OK
    Testing database connection — OK — mysqli://postfixadmin:xxxxx@localhost/postfixadmin
    Depends on: session — OK
    Depends on: pcre — OK
    Depends on: multibyte string — OK
    Depends on: IMAP functions — OK
    Everything seems fine… attempting to create/update database structure

    Updating database:

    — old version: 0; target version: 1835

    (If the update doesn’t work, run setup.php?debug=1 to see the detailed error messages and SQL queries.)
    updating to version 1 (MySQL)…

    DEBUG INFORMATION:
    Invalid query: Specified key was too long; max key length is 1000 bytes

    Check your error_log for the failed query.

    как быть? есть заграничные форумы, но не осилил.

  29. Добрый день.
    Ставил отсюда postfixadmin, для создания алиасов (групп рассылки)
    Собственно это единственное, чего не хватает в бесплатном iRedMail.
    Была ошибка при установке postfixadmin_а, не находилось поле goto в таблице alias. Пришлось создать его руками. После этого установка прошла как описано.
    Но после установки выяснилось что алиасы просто не работают. Их можно создавать, или прописывать пересылку в обычный ящик.
    Почта тупо валится в ящик адресат и ни куда не пересылается 🙂
    Если просто создать алиас, без ящика(с пересылкой на существующий ящик), то почта на него не отправляется с ошибкой 550
    SMTP ошибка (550): Невозможно добавить получателя «test@хххххх.ru» (5.1.1 : Recipient address rejected: User unknown in virtual mailbox table)

    • Валерий

      Здравствуйте.
      Такая же ситуация. Алиас создается но не работает. Приходится добавлять еще руками в таблиицу forwardings:

      you need to add SQL records in 2 sql tables. for example: create a mail alias account alias@mydomain.com and forward emails to two addresses someone@gmail.com and someone@test.com:
      sql> USE vmail;

      — Create mail alias account
      sql> INSERT INTO alias (address, domain, active)
      VALUES (‘alias@mydomain.com’, ‘mydomain.com’, 1);

      — Forward email to ‘someone@gmail.com’
      sql> INSERT INTO forwardings (address, forwarding,
      domain, dest_domain,
      is_list, active)
      VALUES (‘alias@mydomain.com’, ‘someone@gmail.com’,
      ‘mydomain.com’, ‘gmail.com’,
      1, 1);

      — Forward email to ‘someone@test.com’
      sql> INSERT INTO forwardings (address, forwarding,
      domain, dest_domain,
      is_list, active)
      VALUES (‘alias@mydomain.com’, ‘someone@test.com’,
      ‘mydomain.com’, ‘test.com’,
      1, 1);

    • Михаил

      Вы наверное ставили более новую версию iRedMail. В последних версиях изменили структуру таблицы vmail , детали https://bitbucket.org/zhb/iredmail/issues/101

  30. Станислав

    Здравствуте, спасибо за статью, у нас работает iredmail и postfix. Сеть VPN. Если можно подскажите пожалуйста пару моментов:
    1) При попытке пользователей отправить несколько раз почту на несуществующий адрес (или при попытке принять несколько раз подряд почту с неправильным паролем к ящику) происходит блокирование пользователя минут на 40. Можно ли это отключить?
    2) Можно ли настроить перенаправление писем. У нас есть необходимость перенаправлять письма, т.е. приходит мне письмо на общий ящик допустим mail.ru, а я его клиентом Thebat перенаправляю пользователю созданому в postfix моей почты, так что бы конечный пользователь которому я перенаправил письмо получил его будто бы от mail.ru (пусть с пометкой о перенаправлении или без). сейчас при перенаправлении пишет, что домен отправителя не йден (оно и понятно), но может как нибудь можно это настроить.
    Буду очень признателен за помощь!

Добавить комментарий

Ваш e-mail не будет опубликован.