Создание виртуальных пользователей Dovecot и скрипты для этого.
ПреамбулаПродолжаю свои эксперименты с локальным почтовым сервером, соответственно, понадобилось создать на ём виртуальных пользователей. Пока не стал мудрить со всякими MySQL и прочими сложностями, ограничился простым
passwd-file
- т.е. текстовым файлом, содержащим список пользователей и
соленых хэшей, наподобие стандартного файла Linux
/etc/shadow
.
Однако, работа с этим файлом в Dovecot как-то не очень продумана, в разных руководствах и статьях предлагается примерно такой способ:
#задаем имя пользователя
#задаем пароль
#...
echo $USERNAME:$(doveadm pw -s ssha512 -p $PASSWORD):::::: >> /etc/dovecot/users
Где
$USERNAME
и
$PASSWORD
- ранее заданные переменные скрипта, в которых находятся, соответственно, имя пользователя и пароль.
Таким скриптом легко загадить парольный файл, т.к. никаких проверок на одинаковость имен, РеГИсТР букв в ИмеНАХ пользователей нет. Решил немного улУчшить и углУбить.
+ Все имена пользователей приводятся к нижнему регистру
+ Перед добавлением пользователя проводится проверка, на наличие его в файле пользователей.
- Не стал автоматически прикручивать к имени пользователя домен (@example.org), впрочем, кому надо, там просто допилить, а мне, пока экспериментирую, особо не надо, т.к. домены меняются %).
Добавление пользователейДелается скриптом
dcadduser
.
Можно запускать с параметрами:
dcadduser <user> <password>
, например,
dcadduser paulzovatel@example.org passw0rd666
Если запустить без параметров, скрипт предложит ввести имя пользователя и пароль. Если пользователь существует - то скрипт сообщит об этом и завершит работу.
dcadduser
на GitHubУдаление пользователяДля удаления создал скрипт
dcdeluser
.
Использование:
dcdeluser <username>
где
<username>
- имя пользователя в файле
passwd-file
.
dcdeluser paulzovatel@example.org
Перед удалением будет выдан запрос:
Delete user paulzovatel@example.org? [Y/N]:
Если пользователь не существует, скрипт сообщит об этом и завершит работу.
dcdeluser
на GitHubИзменение пароля пользователяДля изменения пароля предназначен скрипт
dcpasswd
.
Использование:
dcpasswd <username> [new_password]
где:
<username>
- имя пользователя в файле
passwd-file
.
[new_password]
- новый пароль
Если пользователь не существует, скрипт сообщит об этом и завершит работу.
Если второй параметр (новый пароль) будет опущен, то скрипт предложит ввести новый пароль в интерактивном режиме.
dcpasswd
на GitHubСписок пользователейСкрипт
dclistuser
выводит список пользователей из
passwd-file
Dovecot. Запускается без параметров.
Пример вывода:
./dclistuser
bigboss@test1.local
alice@test1.local
bob@test1.local
likovar@test1.local
dclistuser
на GitHubРепозиторий со скриптамиЭто репост с сайта http://tolik-punkoff.com
Оригинал: http://tolik-punkoff.com/2020/11/19/sozdanie-virtualnyh-polzovatelej-dovecot-i-skripty-dlya-etogo/