Внутренний почтовый сервер на базе iRedmail

Сегодня я опишу процесс установки и настройки почтового сервера на базе iRedmail.

Мне требовался немного необычный почтовый сервер, который бы умел:

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

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

Процесс разобью на несколько частей:

  1.  Установка
  2.  Настройка отправки через различные аккаунты
  3.  Настройка дублирования исходящих писем.
Статья получилась очень большой, так что если что используйте поиск (ctrl+f)

Установка.

Подготовка к установке

Я устанавливал iRedmail на ubuntu 14.04 TLS. Первым делом нам необходимо скачать дистрибутив, для этого мы идём на сайт iredmail.org и в разделе download берём ссылку на архив с почтовиком.


Затем загружаем его, я буду загружать в каталог /home/alexey/

cd /home/alexey
wget https://bitbucket.org/zhb/iredmail/downloads/iRedMail-0.9.2.tar.bz2

Распаковываем

tar xjf iRedMail-0.9.2.tar.bz2

Перед установкой мы должны привести запись с адресом нашего сервера в файле /etc/hosts к виду

127.0.0.1 mail.cmp.local mail localhost

т.е. обязательно должен быть FQDN адрес что-нибудь.домен.зона иначе установщик не запустится. На работу сервер, поскольку он у нас внутренний, этот адрес никакого значения не оказывает. Для редактирования набираем

sudo nano /etc/hosts

осле внесение изменений сохраняем -> Ctrl+O и выходим Ctrl+X
Затем нам необходимо дать права на запуск установочного скрипта, и собственно запустить его из под рута.

cd iRedMail-0.9.2/
chmod +xX iRedMail.sh
sudo ./iRedMail.sh

Мастер установки

После чего начнётся процесс установки, для установки на машине должен быть интернет. Процесс установки будут сопровождать разные вопросы, например первый вопрос устанавливать ли iRedmail? Конечно отвечаем Yes.
Задаём пароль для root записи к серверу MySql.

На следующем шаге у нас узнают директорию для хранения писем, я оставил всё как есть, жмём Next.

После этого установщик интересуется какой сервер устанавливать, поскольку в дальнейшем нам понадобится phpmyadmin я выбрал Apache

Какую базу будем использовать? Мне ближе и понятней MySql.

Указываем имя почтового домена (то что будет идти после @). У меня это будет cmp.local

Назначаем пароль для учётной записи администратора почтового сервера. С помощью это учётной записи позже мы сможешь создавать новые почтовые ящики.

Проверяем какие компоненты будут установлены. Поскольку я не планирую давать доступ к почтовому серверу из вне я уберу компонент Fail2ban, остальное оставлю по умолчанию.

Проверяем какие компоненты будут установлены. Поскольку я не планирую давать доступ к почтовому серверу из вне я уберу компонент Fail2ban, остальное оставлю по умолчанию.

Нас предупреждают что в файле /home/alexey/iRedMail-0.9.2/config хранятся важные сведения, такие как логины и пароли дающие различные привилегии и напоминают что не мешало бы этот файл удалить. Хотя для особо забывчивых может лучше и оставить, но точно переместить в безопасное место. Соглашаемся вводим y и жмём enter.


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


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

Ok, перезагружаем.

sudo reboot

Дополнительные компоненты

На этом установка iRedMail завершена, но не завершён раздел статьи установка, нам осталось установить phpmyadmin, потому что часть настроек хранится в MySql и недоступна для настройки через web интерфейс iRedMail’a. Устанавливаем phpmyadmin.

sudo apt-get install phpmyadmin

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


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

Вводим пароль от учётной записи root для mysql (указывали при установке iredmail)


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


На этом я считаю раздел установки закончен. Переходим к добавлению пользователей.

Настройка отправки через различные аккаунты.

Итак, в моём примере есть учётная запись через которую отправляется вся почта по умолчанию — testo.testovitch@yandex.ru и аккаунт на gmail ( testo.testovitch@gmail.com) для отправки писем от учётной записи secretar@cmp.local. Всего же учётных записей в примере нам хватит трёх. user — обычный пользователь, отправка почту через аккаунт по умолчанию, secretar обычный пользователь отправка почты через gmail, director отправка почты через аккаунт по умолчанию.

Для создания учётной записи переходим по адресу https://ip-нашего-iredmail/iredadmin и вводим логин postmaster@cmp.local, напоминаю что cmp.local это домен в моём примере, у вас может быть что-то другое, и пароль который мы указывали для учетной записи postmaster во время установки.


Жмём +add и выбираем user

В этом окне заполняем поля mail address, password жмём кнопку add, аналогично создаём оставшихся пользователей. Для вашего удобства есть поле в котором уже сгенерирован пароль, можно его скопировать и вставить для пользователя, не забыть правда потом записать 😉

Проверим как проходит внутренняя почта, на этом этапе уже должно всё работать, зайти в почтовый ящик можно по адресу https://ip-нашего-iredmail/

Чтобы посмотреть лог набираем в терминале

tail -n 100 /var/log/mail.log

как видим всё в порядке

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

Для пересылки почты через аккаунты других почтовых серверов надо использовать параметр relayhost = в main.cf. Информацию о том как это сделать я нашёл здесь и здесь.

Итак, снова терминал, нам необходим для начала отредактировать main.cf

sudo nano /etc/postfix/main.cf

начиная со строки relayhost = добавляем следующее содержимое

relayhost = [smtp.yandex.ru]:587
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/saslpass
smtp_sasl_security_options = noanonymous
smtp_sender_dependent_authentication = yes
sender_dependent_relayhost_maps = hash:/etc/postfix/relayhost_map

Выглядит это примерно так


[smtp.yandex.ru]:587 это адрес smtp сервера по умолчанию и порт, как вы наверное уже сами догадались, остальные параметры отвечают за подключение с помощью starttls

теперь нам необходим создать и отредактировать ещё пару файлов это/etc/postfix/saslpass и /etc/postfix/relayhost_map в первом хранятся логины и пароли к аккаунтам, а во втором карта пересылки.

sudo nano /etc/postfix/saslpass

добавляем примерно следующее (для сохранения файла используем сочетание Ctrl+O, для закрытия Ctrl+X)

secretar@cmp.local 
testo.testovitch@gmail.com:passW0!rd
[smtp.yandex.ru]:587 testo.testovitch:passW08rd

[smtp.yandex.ru]:587 testo.testovitch:passW08rd — здесь мы указываем дефолтную учётную запись для отправки, опять-таки указывается сервер, порт, логин и пароль.

secretar@cmp.local testo.testovitch@gmail.com:passW0!rd — здесь мы указываем что для отправки почты с адреса secretrar@cmp.local надо использовать другие логин и пароль (те что используются для gmail)

После того как мы внесли изменения в /etc/postfix/saslpass из него надо сделать файл db который понимает postfix

sudo postmap hash:/etc/postfix/saslpass

Переходим к редактированию /etc/postfix/relayhost_map

sudo nano /etc/postfix/relayhost_map

Содержимое следующее

secretar@cmp.local [smtp.gmail.com]:587

как вы наверное уже поняли, в этом файле указывается что для юзера secretar@cmp.local необходимо использовать smtp сервер smtp.gmail.com и порт 587.

повторяем процедуру postmap

sudo postmap hash:/etc/postfix/relayhost_map

делаем reload для postfix

sudo service postfix reload

Нюансы и отладка

Пробуем отправить письмо наружу, из веб интерфейса письмо уходит, но до адресата не доходит смотрим лог

tail -n 100 /var/log/mail.log

и видим ошибку

553 5.7.1 Sender address rejected: not owned by auth user. (in reply to MAIL FROM command)

Эта ошибка связана с тем что при отправке письма postfix использует логин и пароль который мы ему указали, но поле mail from оставляет от локального юзера, естественно что другой почтовый сервер отказывается такое письмо отправлять. Чтобы исправить это надо использовать параметр smtp_generic_maps снова в main.cf
sudo nano /etc/postfix/main.cf

добавляем следующую строчку (я добавлял сразу после sender_dependent_relayhost_maps = hash:/etc/postfix/relayhost_map)

smtp_generic_maps = hash:/etc/postfix/generic

создаём сам файл

sudo nano /etc/postfix/generic

и вписываем в него

@cmp.local 
testo.testovitch@yandex.ru
secretar@cmp.local 
testo.testovitch@gmail.com

сторочка @cmp.local testo.testovitch@yandex.ru говорит что все адреса @cmp.local поле from будет подменяться на testo.testovitch@yandex.ru
а secretar@cmp.local testo.testovitch@gmail.com означает что письма отправленные от secretar@cmp.local будут отправляться от testo.testovitch@gmail.com
Не забываем postmap и reload

sudo postmap hash:/etc/postfix/generic
sudo service postfix reload

Пробуем отправить письмо. Всё отправляется видим что адреса меняются.

Amavis

Пробуем отправить письмо на внутренний ящик и … оно не доходит, смотрим лог.


и понимаем что при использовании в postfix параметра smtp_generic_maps подмена поля from происходит и для локальных (внутренних) адресов, более того postfix после этого пытается письмо отправить непонятно куда. Это очень странно потому что в документации к postfix явно указано что этот параметр применяется только для писем отправляемых за пределы почтового сервера.

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

Итак для того что бы письма внутри домена нормально ходили, а у исходящих за пределы домена подменялось поле From и при этом работала проверка на вирусы по всем письмам надо добавить в секцию amavis в файле master.cf строчку -o smtp_generic_maps=, делаем

sudo nano /etc/postfix/master.cf

выглядит файл после изменений примерно так

Сохраняем файл, делаем обновление параметров.

sudo service postfix reload

Проверяем, всё работает. Переходим к последнему пункту.

Так же есть нюанс при работе с gmail

5.5.1 Authentication Required 

Надо вот здесь, предварительно авторизировавшись выставить в положение включить — подробнее здесь.

Настройка дублирования исходящих писем.

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

Для входа в phpmyadmin используем адрес http://ip-нашего-iredmail/phpmyadmin логин root пароль от учётной записи root для mysql


Слева раскрываем базу vmail и таблицу sender_bcc_user


Жмём «вставить» и заполняем поля username — почтовый ящик с которого будут дублироваться исходящие письма. bcc_address — почтовый ящик на который будут дублироваться исходящие письма, domain — наш почтовый домен. Жмём ок.

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

Как и прежде если возникли вопросы или замечания можно воспользоваться формой для комментариев ниже. Отвечаю по возможности, но почти всегда 😉

Алексей:
Related Post

This website uses cookies.