Создание почтовых алиасов (псевдонимов) 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
Откроется таблица 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 и рядом с ним слева нажать выбрать.
Пока здесь одна запись с доменом, потом при добавлении других доменов нажать редактировать рядом с нужным доменом. В открывшемся окне нужно изменить только одну строчку aliases добавить единицу к записи. Цифра в этой строчке должна соответствовать количеству созданных алиасов для этого домена. Нажать Сохранить
Данные действия соответствуют команде:
UPDATE domain SET aliases = aliases + 1 WHERE domain = 'wildserver.ru';
Честно говоря не знаю зачем этот пункт нужен, поскольку все работает и без него. Столбец aliases может быть со значением 0
Редактирование таблицы forwardings
И наконец сделать перенаправление почтовой корреспонденции с алиаса test-manual@wildserver.ru
на почтовый адрес test@wildserver.ru
Так же нажать в левой колонке выбрать рядом с именем таблицы forwardings потом запомнить id последней записи (на всякий случай, мало ли не сработает авто-приращение) нажать Новая запись заполнить поля:
- 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 проблем не будет - вот как к этому пришел
Комментарии