Установка почтового сервера iRedMail на CentOS 7. Часть 3. Алиасы, вэб-интерфейс для работы с алиасами

Установка почтового сервера iRedMail. Алиасы, вэб-интерфейс для работы с алиасами

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


Включаем возможность отправлять письма через алиас

Редактируем конфиг Postfix (/etc/postfix/main.cf), удаляем строчку:

reject_sender_login_mismatch

в версии iRedMail 0.9.9 этой строки уже не было

Перезагружаем postfix

[root@localhost]# systemctl restart postfix

Редактируем конфиг iRedAPD (/opt/iredapd/settings.py), добавляем строку:

reject_sender_login_mismatch

в версии iRedMail 0.9.9 эта строка уже была добавлена

Перезагружаем iRedAPD

[root@localhost]# systemctl restart iredapd

Установка phpMyAdmin и настройка NGINX

Устнавливаем phpmyadmin:

[root@localhost]# yum install phpmyadmin

Делаем линк

[root@localhost]# ln -s /usr/share/phpMyAdmin /var/www/html/pma

Ограничиваем доступ к phpmyadmin по ip

[root@localhost]# nano /etc/nginx/templates/misc.tmpl
...
location ~ ^/pma/$ {
    allow %ip%;
    deny all;
}

где %ip% — ip-адрес, которому разрешен доступ к phpmyadmin

Перезагружаем nginx

[root@localhost]# systemctl restart nginx

WEB-интерфейс для управления алиасами

Мне не захотелось устанавливать громоздкий postfixadmin для возможности управлением алиасами, по-этому быстренько набросал свою админку

Из мануала iRedMail, алиасы добавляются SQL-запросом

INSERT INTO alias (address, domain, active) VALUES ('alias@mydomain.com', 'mydomain.com', 1);
INSERT INTO forwardings (address, forwarding, domain, dest_domain, is_list, active) VALUES ('alias@mydomain.com', 'someone@test.com', 'mydomain.com', 'test.com', 1, 1);

Возможности админки:

  • Добавлять алиас
  • Редактировать алиас
  • Удалять алиас

В дальнейшем добавлю возможность активировать/деактивировать активность алиаса

Для установки вэб-интерфейса создаем директорию:

[root@localhost]# mkdir /var/www/html/alias

Распаковываем в эту директорию файлы из архива, редактируем файлы:
— в файле index.php — отредактирвать строки 225, 226
— в файле server.php — отредактировать строку 3 (прописать пароль к базе между пустых кавычек)

Где находится пароль от базы Mysql для пользователя «vmailadmin»: После установки почтового сервера на почтовый ящик postmaster@domain.ru падает письмо со всеми паролями. Либо пароль можно найти в конфигах

Ограничиваем доступ к вэб-интерфейсу управлением алиасами по ip

[root@localhost]# nano /etc/nginx/templates/misc.tmpl
...
location ~ ^/alias/$ {
    allow %ip%;
    deny all;
}

где %ip% — ip-адрес, которому разрешен доступ к phpmyadmin

Перезагружаем nginx

[root@localhost]# systemctl restart nginx

UPD 27.03.2019

Обновил вэб-админку, добавил следующие возможности:

  • Делать алиас активным / не активным при добавлении записи
  • Делать алиас активным / не активным при редактировании записи
  • При редактировании записи сделал активным поле «алиас» и добавил проверку, есть ли редактируемый алиас в базе
Максим Макаров

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

Оцените автора
IT Draft
Добавить комментарий

Нажимая на кнопку "Отправить комментарий", я даю согласие на обработку персональных данных и принимаю политику конфиденциальности.

  1. Дмитрий

    Не работает веб интерфейс
    Connection error: Access denied for user ‘vmailadmin’@’localhost’ (using password: YES)
    Вообще не очень понял как туда зайти

    Ответить
    1. Максим Макаров автор

      Дополнил статью, продублирую тут:
      После установки почтового сервера на почтовый ящик postmaster@domain.ru падает письмо со всеми паролями. Либо пароль можно найти в конфигах

      Ответить
      1. Василий

        Присоединяюсь к вопросу ! При попытке перехода вида https://192.168.116.45/alias/ , nginx выдаёт 403 . Может неправильно захожу ?

        Ответить
        1. Максим Макаров автор

          Добрый день.
          В файл /etc/nginx/templates/misc.tmpl добавили разрешения для доступа с ip

          location ~ ^/alias/$ {
          allow 192.168.... ; #поменять на свой ip
          deny all;

          Ответить
          1. Василий

            Добрый день. Прописал , ошибка прежняя

        2. Максим Макаров автор

          Надо разбираться, почему nginx блокирует.

          Ответить
  2. Дмитрий

    Добрый день а этот функционал еще не получилось поправить?
    «В дальнейшем добавлю возможность активировать/деактивировать активность алиаса»

    Ответить
    1. Максим Макаров автор

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

      Ответить
  3. Виктор

    Добрый день. Встал в ступор на моменте редактирования index и server . Что редачить в строках 142 и 143 не понимаю , а в server нет поля password , сильно не пинайте, только учусь почте )

    Ответить
    1. Максим Макаров автор

      Добрый день.
      В строках 142, 143 файла index.php надо поменять доменное имя почтового ящика на свое.
      В файле server.php надо прописать пароль от базы. Пароль можно найти в письме, которое присылается на e-mail postmaster@%domain% после установки iRedMail

      Ответить
      1. Виктор

        В упор не вижу где в строчках 142, 143 заменить домен, у меня это получаются строчки с тегом /li .
        В файле server в 3 строке также не видно %password%

        Есть возможность связи по электронной почте или телеграмм?

        Ответить
        1. Максим Макаров автор

          Т.к. я дописывал функционал, теперь это строки 225, 226 в файле index.php

          В файле server.php третья строчка:
          $db = mysqli_connect('localhost', 'vmailadmin', '', 'vmail');
          где 'localhost' - наш хост
          'vmailadmin' - пользователь
          '' - между этих кавычек надо вставить свой пароль
          'vmail' - база

          Ответить
  4. Kanat

    Максим Макаров, добрый день!
    Спасибо за мануал.

    Ответить
  5. Роман

    Добрый день!
    В файле server.php строка 42, в запросе в таблицу alias прописан домен digimap.ru
    mysqli_query($db, «INSERT INTO alias (address, domain, active) VALUES (‘$alias’, ‘digimap.ru’, 1)»);
    Наверное там должна быть переменная $domen?
    mysqli_query($db, «INSERT INTO alias (address, domain, active) VALUES (‘$alias’, ‘ $domen’, 1)»);

    Ответить
    1. Максим Макаров автор

      Здравствуйте.
      Да, думаю можно заменить на переменную.
      В моем случае веб-админка писалась под 1 конкретный домен, по-этому не поменял.

      Ответить
      1. Роман

        Не можно, а нужно, иначе не работает)))

        Ответить
        1. Максим Макаров автор

          Спасибо. Подправил у себя.
          Я давно проект перенес в свой github, все ни как в статьях по iRedMail ссылки не поменяю.

          Ответить
  6. Роман

    Сразу скажу, что ради эксперемента, ставил iRedMail Easy, это тот что прям с сайта скрипт запускает. Вероятно пути будут другие, у меня все WEB-приложения встали в /opt/www/, но суть та же.
    У меня получилось так:
    1. файлы админки «alias» разместил в /opt/www/tools/alias/
    2. создал файл /etc/nginx/sites-conf.d/default-ssl/90-alias.conf с содержимым include /etc/nginx/templates/alias.tmpl;
    3. создал файл /etc/nginx/templates/alias.tmpl с содержимым
    location /alias {
    root /opt/www/tools/;
    index index.php;
    try_files $uri $uri/ =404;

    location ~ ^/alias/(.+\.php)$ {
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    include /etc/nginx/templates/hsts.tmpl;
    include /etc/nginx/templates/fastcgi_php.tmpl;
    allow свой_ip;
    deny all;

    }
    }
    4. systemctl restart nginx

    Ответить
  7. Евгений

    в версии 2.7 алиасы перепрятали глубже

    Ответить
  8. Евгений

    Доброго. Хотел последнюю версию программки alias. по какому адресу git ?

    Ответить
    1. Максим Макаров автор

      Добрый день. Ссылку в посте обновил
      https://github.com/bullvinkl/alias

      Ответить