При входе в собственную почту я каждый раз дописывал домен к имени пользователя. Для почтового сервера полный адрес удобен: он однозначно определяет ящик. Но при ежедневном использовании хотелось вводить только короткое имя.
Я настроил такой вход для основного почтового домена. При этом полные адреса и существующие учётные записи сохранил.
Задача оказалась чуть шире одной настройки: отдельно пришлось учесть почтовые протоколы, веб-почту и панели управления.
Короткий логин — тот же почтовый ящик
В обезличенном примере преобразование выглядит так:
user → user@example.com
Если я ввожу короткое имя, система дополняет его доменом по умолчанию. Дальше проверяется существующая учётная запись.
Для этого не нужен второй ящик. Адрес отправителя тоже не становится коротким: письма по-прежнему используют полный почтовый адрес.
Я хотел изменить только удобство входа, поэтому сохранил полные идентификаторы пользователей. Это позволило добавить короткую форму без переименования существующих ящиков.
Сначала — почтовая аутентификация
На моём сервере в проверке учётных данных участвует Dovecot. В установленной версии я использовал настройку auth_default_domain, которая задаёт домен для имени без доменной части. Её назначение описано в официальной документации Dovecot.
Логика здесь простая:
- короткое имя относится к домену по умолчанию;
- полный адрес уже содержит домен и не требует такого дополнения;
- пароль проверяется у соответствующей учётной записи.
После настройки я проверил короткий вход через IMAPS и SMTP с STARTTLS. Обе проверки прошли успешно.
Но этим работа не закончилась. Пользоваться почтой мне нужно и через браузер.
Почему веб-почту пришлось настраивать отдельно
Веб-приложение может сначала искать пользователя в собственном источнике данных, а уже затем подключаться к почтовому серверу. Поэтому успешная аутентификация через IMAP сама по себе не подтверждает, что форма входа в браузере примет то же имя.
В веб-почте я сохранил основной идентификатор пользователя в полном формате и добавил короткое имя как допустимый вариант входа.
В моей SQL-схеме для этого используются два поля:
c_uid — основной идентификатор пользователя
c_login — дополнительное имя для входа
Источник пользователей настроен так, чтобы принимать обе формы через LoginFieldNames. Возможность указать несколько полей входа предусмотрена документацией используемой веб-почты.
Так я отделил то, что ввожу в форме, от идентификатора, под которым система продолжает хранить пользователя.
Панели управления — ещё две проверки
Панель администрирования и мой почтовый портал тоже обрабатывают форму входа самостоятельно.
В них я добавил нормализацию имени: короткая форма дополняется основным доменом перед проверкой учётных данных. Уже полный адрес остаётся полным адресом.
Затем я проверил вход в каждом интерфейсе отдельно. Открывающаяся страница авторизации результатом не считалась — нужно было действительно войти с коротким именем.
В итоге проверка охватила все нужные мне способы доступа:
| Способ входа | Результат |
|---|---|
| IMAPS | Короткое имя принято |
| SMTP с STARTTLS | Короткое имя принято |
| Веб-почта | Вход выполнен |
| Панель администрирования | Вход выполнен |
| Почтовый портал | Вход выполнен |
Что происходит при нескольких доменах
У короткого имени есть ограничение: само по себе оно не указывает домен.
Например, на одном сервере могут существовать два разных ящика:
user@example.com
user@example.org
По одному слову user невозможно определить, какой из них нужен.
Поэтому я не стал распространять сокращённый вход на все домены. Короткая форма относится к основному домену, а для другого используется полный адрес.
Именно такое правило действует в моей настройке с несколькими почтовыми доменами. Оно сохраняет однозначность: короткое имя не должно случайно приводить в другой ящик.
Что важно сохранить при обновлении
Часть настройки выполнена штатными параметрами компонентов. Но в обработке входа панели администрирования есть локальное изменение.
После обновления такую доработку нужно проверять: новая версия приложения может заменить изменённый код.
Я закрепил это в правилах обслуживания сервера. После обновления панели требуется повторно проверить короткий вход. Наличие настройки в старой версии ещё не означает, что поведение сохранилось в новой.
С каким результатом я закончил
Короткий вход заработал через IMAPS, SMTP с STARTTLS, веб-почту, панель администрирования и почтовый портал. Полные адреса и существующие идентификаторы ящиков сохранились.
Для других доменов остался вход по полному адресу, чтобы одинаковые имена пользователей не создавали неоднозначность.
Изменение небольшое, но теперь при обычном входе в основную почту мне достаточно имени пользователя. А за этой короткой формой остаётся прежняя учётная запись с полным адресом.
