Установка почтового сервера 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

    Ответить