При входе в собственную почту я каждый раз дописывал домен к имени пользователя. Для почтового сервера полный адрес удобен: он однозначно определяет ящик. Но при ежедневном использовании хотелось вводить только короткое имя.

Я настроил такой вход для основного почтового домена. При этом полные адреса и существующие учётные записи сохранил.

Задача оказалась чуть шире одной настройки: отдельно пришлось учесть почтовые протоколы, веб-почту и панели управления.

Короткий логин — тот же почтовый ящик

В обезличенном примере преобразование выглядит так:

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, веб-почту, панель администрирования и почтовый портал. Полные адреса и существующие идентификаторы ящиков сохранились.

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

Изменение небольшое, но теперь при обычном входе в основную почту мне достаточно имени пользователя. А за этой короткой формой остаётся прежняя учётная запись с полным адресом.