Создание почтовых алиасов (псевдонимов) iRedMail

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

Если есть нулевая или купленная версия iRedAdminPro можно не читать и не смотреть, то что здесь написано. Для тех кому не нужны такие тонкости, которые описываются здесь можно установить iRedAdmin-Pro-SQL 5.4 nulled. По большому счету Pro-версия не так уж и нужна, все можно посмотреть и подкорректировать при помощи Adminer

Для понимания какой именно тип алиаса нужен, прочитать типы алиасов

Что необходимо

Почтовый сервер поднятый при помощи скриптов iRedMail.

SSH, для удаленной работы с сервером

Установленное и настроенное SUDO

Установленный и настроенный Adminer

Создания алиасов iRedMail при помощи скриптов

⚠️ Работает с базой данных PostgreSQL это обязательно. (Хотя я думаю и с MariaDB должно сработать, не проверял)

Одним из способов добавления алиасов это использование готовых скриптов, которые заботливо написаны и бесплатно, живут здесь. Можно скачать и распаковать куда удобно, но я их клонировал, как овечку доли 🐑 😆. Там же читаем описания и как все работает. В принципе по именам скриптов понятно, что они делают, если не ясно забить название скрипта в поисковике или читать доки.

Зайти на сервер

ssh имя_пользователя@ip-адрес-сервера

Клонирование скриптов администрирования iRedMail

Что бы скопировать скрипты к себе на сервер надо установить программу git

sudo apt install git

Клонировать:

sudo clone https://github.com/jeekkd/iRedMail-scripts.git

Создание файла с командами

Зайти в каталог со скриптами:

cd ~/iRedMail-scripts/Scripts

На примере своего домена покажу дальнейшие действия. Создать алиас test-alias@wildserver.ru с выводом команд в файл output.sql

sudo ./create-alias.sh test-alias@wildserver.ru > ~/output.sql

Привязать созданный алиас test-alias@wildserver.ru к существующему почтовому ящику test@wildserver.ru. Будет дописана команда в файл output.sql. Так же можно привязать алиас к нескольким почтовым ящикам и сообщения отправленные на алиас будут так же продублированы в этих почтовых ящиках.

sudo ./add-user-to-alias.sh test-alias@wildserver.ru test@wildserver.ru >> ~/output.sql

Можно посмотреть созданный файл и при необходимости отредактировать:

sudo nano ~/output.sql

Результат такой:

INSERT INTO alias (address, domain, active) VALUES ('test-alias@wildserver.ru', 'wildserver.ru', 1);
UPDATE domain SET aliases = aliases + 1 WHERE domain = 'wildserver.ru';
INSERT INTO forwardings (address, forwarding, domain, dest_domain, is_list, active) VALUES ('test-alias@wildserver.ru', 'test@wildserver.ru', 'wildserver.ru', 'wildserver.ru', 0, 1);

Изменение записей в базе данных

Теперь скопировать полученный файл output.sql с командами в домашнюю папку суперпользователя базы данных PostgreSQL и поменять владельца файла:

sudo cp ~/output.sql /var/lib/postgresql/
sudo chown postgres:postgres /var/lib/postgresql/output.sql

Войти под именем суперпользователя базы данных postgres

sudo su postgres

Открыть консоль psql с базой данных vmail

psql -d vmail

Загрузить файл с командами:

\i ~/output.sql

Выйти из консоли и командной строки пользователя postgres

\q
exit

Создания алиасов iRedMail при помощи Adminer

В данном способе не имеет значение какая база данных. Все будет работать с MariaDB и PostgreSQL. Как показала практика все равно придется обращаться к базе данных для правки при помощи Adminer

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

Теперь будет создан алиас test-manual@wildserver.ru для того же тестового почтового адреса test@wildserver.ru

В браузере набрать (свой) адрес управления базой данных mail.wildserver.ru/adminer. Войти в нее под суперпользователем баз данных postgres выбрав движок PostgreSQL пароль тот что был указан при установке почтового сервера.

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

Сохранить копию базы данных

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

Экспорт/импорт базы данных

Выбрать параметры как на скриншоте:

Экспорт баз данных

Архив скачается и будет в папке Загрузки под именем localhost.sql.gz переименовать его по названию домена, чтобы потом не вспоминать к чему все это.

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

Вместо экспорта на главной странице Adminer выбрать импорт нажать обзор выбрать архив с базами данных и нажать Выполнить

Импорт баз данных

Выбор базы данных

Для создания алиасов нужна база данных vmail нажать на нее на главной странице Adminer. Это там где написано Выбрать базу данных, а наверху путь PostgreSQL » Сервер

Зайдя в базу vmail будут показаны таблицы, для создания алиасов нужно внести изменения всего в три таблицы - alias domain forwardings. Удобным способом нажать на имя таблицы alias слева из списка или в центральном окошке, без разницы.

Редактирование таблицы alias

Таблицы базы vmail

Откроется таблица alias и ее структура, нужно нажать на Выбрать

Таблица alias

Увидим список записей, нажать Новая запись

Список записей alias

Откроется окошко в котором нужно заполнить строки:

Новая запись alias

  • address - test-manual@wildserver.ru (Имя нового алиаса для почтового адреса test@wildserver.ru)
  • domain - wildserver.ru (Имя домена)

Остальные поля оставить, как есть по умолчанию. Нажать Сохранить

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

INSERT INTO alias (address, domain, active) VALUES ('test-alias@wildserver.ru', 'wildserver.ru', 1);

Редактирование таблицы domain

Теперь пойдем коротким путем, слева список таблиц. Найти domain и рядом с ним слева нажать выбрать.

Таблица domain

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

Данные действия соответствуют команде:

UPDATE domain SET aliases = aliases + 1 WHERE domain = 'wildserver.ru';

Честно говоря не знаю зачем этот пункт нужен, поскольку все работает и без него. Столбец aliases может быть со значением 0

Редактирование таблицы forwardings

И наконец сделать перенаправление почтовой корреспонденции с алиаса test-manual@wildserver.ru на почтовый адрес test@wildserver.ru

Так же нажать в левой колонке выбрать рядом с именем таблицы forwardings потом запомнить id последней записи (на всякий случай, мало ли не сработает авто-приращение) нажать Новая запись заполнить поля:

Новая запись forwardings

  • id - прибавить единицу к значению последней записи (если это не произошло автоматически после сохранения записи)
  • address - test-manual@wildserver.ru
  • forwarding - test@wildserver.ru
  • domain - wildserver.ru
  • dest_domain - wildserver.ru
  • is_alias - 1 Обязательно и вот почему

Остальные поля оставить по умолчанию. Нажать сохранить.

Данные действия заменяют команду:

INSERT INTO forwardings (address, forwarding, domain, dest_domain, is_list, active) VALUES ('test-alias@wildserver.ru', 'test@wildserver.ru', 'wildserver.ru', 'wildserver.ru', 0, 1);

Добавление алиасов iRedMail при помощи веб-интерфейса

⚠️ Работает только с базой данных MariaDB

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

Как реализовать данный способ добавления алиасов написано здесь https://github.com/Otto17/iRedMail-Web-Alias. Спасибо автору форка 👍

Для удобства повторю здесь.

Зайти на сервер

ssh имя_пользователя@ip-адрес-сервера

Создать директорию для веб-страницы:

sudo mkdir /var/www/html/alias

Клонируем необходимые файлы на почтовый сервер

git clone https://github.com/Otto17/iRedMail-Web-Alias.git

Скопировать необходимые файлы

sudo cp ~/iRedMail-Web-Alias/index.php /var/www/html/alias
sudo cp ~/iRedMail-Web-Alias/server.php /var/www/html/alias
sudo cp ~/iRedMail-Web-Alias/favicon.ico /var/www/html/alias

Редактировать файлы web-alias

Открыть для редактирования файл index.php

sudo nano /var/www/html/alias/index.php

Что бы не заморачиваться идти в самый конец файла.

Найти строку input type=“hidden” name=“domain” value=“mydomain.ru” для этого нажать ctrl+W поиск по файлу, набрать input type="hidden" name="domain" value="mydomain.ru" Enter

Изменить mydomain.ru на имя своего домена. В следующей строке так же поменять twodomain.ru на имя своего домена.

Сохранить файл Ctrl+O Enter, закрыть Ctrl+X

Если открыть в редакторе mcedit то нужно перейти к строке 232

Отредактировать файл server.php

sudo nano /var/www/html/alias/server.php

В третьей строке заменить 2LqJPBdFviVjXVZq9xIBkda8R7lrBdf на свой хэш пароля к базе данных vmail

Хэш пароля к базе можно посмотреть в файле:

sudo cat /opt/www/iredadmin/settings.py в строке vmail_db_password Проще набрать sudo grep vmail_db_password /opt/www/iredadmin/settings.py

Сохранить файл Ctrl+O Enter, закрыть Ctrl+X

Открыть доступ к веб-интерфейсу алиасов и ограничить доступ к странице по ip-адресу sudo nano /etc/nginx/templates/misc.tmpl так предлагает автор.

Вставить в центр, перед строкой “# Deny all attempts to access hidden files such as .htaccess.” :

location ~ ^/alias/$ {
    # Access control web-alias
    # Разрешить доступ только с конкретных адресов или пул адресов
    allow 127.0.0.1;
    #allow 192.168.1.10;
    #allow 192.168.1.0/24;
    # Запретить со всех адресов
    deny all;
}

Сохранить файл Ctrl+O Enter, закрыть Ctrl+X

Предлагаю другой вариант многоходовый:

Создать файл sudo nano /etc/nginx/templates/web-alias.tmpl и туда поместить всю конфигурацию:

location ~ ^/alias/$ {
    # Access control web-alias
    # Разрешить доступ только с конкретных адресов или пул адресов
    allow 127.0.0.1;
    #allow 192.168.1.10;
    #allow 192.168.1.0/24;
    # Запретить со всех адресов
    deny all;
}

Потом включить все это в конфиг виртуального хоста sudo nano /etc/nginx/sites-available/00-default-ssl.conf добавив строку include /etc/nginx/templates/web-alias.tmpl;

Таким образом будет легче включать или отключать сервис. А не бегать по всем конфигам.

Проверить синтаксис конфигурации веб-сервера:

sudo nginx -t

Перезапустить веб-сервер

sudo systemctl restart nginx

Вход в веб-панель алиасов

В браузере набрать адрес mail.wildserver.ru/alias

Веб-панель создания алиасов

Нажать Добавить Заполнить строки

  • Alias: имя почтового псевдонима
  • Email: почтовый адрес к которому будет привязан алиас
  • Active: активировать алиас - галка стоит или деактивировать алиас - галка снята.

Нажать Добавить.

Добавление алиаса

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

Обязательное добавление записи

Для всех вариантов добавления алиасов, будь то добавление алиасов при помощи скриптов, при помощи Adminer или веб-интерфейсом. Нужно добавить запись в базу данных vmail таблице forwardings столбец is_alias строка с именем псевдонима - вместо ноля поставить единицу, при помощи Adminer. Иначе будет не возможно отправить письмо от имени алиаса.

Исправление кода веб-интерфейса

Немного исправить код sudo nano /var/www/html/alias/index.php поменять в строке <input type="hidden" name="is_alias" value="0"> значение value="0" на value="1". Сохранить файл Ctrl+O Enter, закрыть Ctrl+X. И будет счастье без редактирования в Adminer

С вновь открывшимися обстоятельствами доредактировать index.php поменять значение value="1" в строке <input type="hidden" name="is_list" value="1"> на value="0" Поюзав iRedAdmin-Pro посмотрев, как изменяются данные в базе и эффект на работе почты, такие изменения будут более разумны и правильные с моей точки зрения. Главное, что все это работает и без лишних строк кода и ненужных записей в базу. Так же, что бы выводились алиасы, которые созданы по новому, поменять is_list='1' в строке <?php $results = mysqli_query($db, "SELECT * FROM forwardings WHERE is_list='1' ORDER BY id DESC"); ?> на is_alias='1' Открыть файл sudo nano /var/www/html/alias/server.php закомментировать строку mysqli_query($db, "INSERT INTO alias (address, domain, active) VALUES ('$alias', '$domain', 1)"); поставить в начале две косых черты //

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

Просто напишу как надо чтобы выглядел скрипт:

Будет время отпишу создателю скриптов и веб-интерфейса про данное дополнение, чтобы поменяли код.

Проверка отправки и приема писем почтовых алиасов (псевдонимов) iRedMail

Отправить на алиас test-alias@wildserver.ru почтовое сообщение и проверить почтовый ящик test@wildserver.ru, там должно быть письмо. Отправить письмо с алиаса, но с начала нужно сделать некоторые исправления, касающиеся SOGo, если используется Roundcube проблем не будет - вот как к этому пришел