Создание виртуальных пользователей 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

Репозиторий со скриптами

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *