Вопрос или проблема
На протяжении многих лет наши почтовые серверы поддерживают плюс + в локальной части адреса электронной почты как разделитель для субадресации и RFC 5233, что позволяет нашим пользователям создавать неограниченное количество “псевдонимов” и “уникальных адресов электронной почты” без дальнейшего вмешательства и настройки на стороне сервера. Это удобно и просто для наших пользователей и избегает сложностей, связанных с поддержкой “реальных” псевдонимов.
Например: мой почтовый ящик [email protected]
, но я могу зарегистрироваться здесь с [email protected]
, и я буду получать письма, которые ServerFault отправляет, прямо в мой Входящие.
Я думаю, что эта настройка была перенесена с тех пор, как компания еще использовала sendmail, и Postfix поддерживает это с помощью параметра:
recipient_delimiter = +
Проблема
Многие разработчики создают формы регистрации с валидацией ввода, и их сломанные культовые RegEx или библиотеки валидации ввода отклоняют действительные адреса электронной почты, содержащие +
в локальной части получателя.
Эта проблема, похоже, становится все более распространенной, а не лучше.
Как я могу улучшить нашу субадресацию, чтобы обойти эти сломанные формы?
Хотя Postfix позволяет использовать любой произвольный символ в качестве recipient_delimiter, полная замена на другой символ, который не отклоняется так часто, будет разрушающим изменением и не является опцией.
В справочнике говорится, что Postfix может поддерживать несколько символов одновременно:
https://www.postfix.org/postconf.5.html#recipient_delimiter
# Обработать как расширения Postfix, так и qmail (Postfix 2.11 и позже). recipient_delimiter = +-
Вопросы:
-
Какой символ был бы “лучшим” для использования в качестве дополнительного разделителя?
Такой, который не так часто отклоняется почтовыми формами…
Предлагаемый дефис -, процент %, например, хэш RFC 5233 # или что-то совершенно другое, что не конфликтует с нашей схемой именования аккаунта/почтового ящика? -
Плюс + довольно хорошо поддерживается другими программами и/или почтовыми провайдерами, но насколько уникален Postfix в поддержке нескольких настраиваемых разделителей?
Свяжет ли это нас навсегда с Postfix, когда мы изменимrecipient_delimiter
, чтобы включить другой символ?
Ответ или решение
Конечно! Давайте рассмотрим ваш вопрос по поводу побочных адресов с использованием дополнительного символа в Postfix и попробуем найти оптимальное решение.
Введение
Вы правы, что использование символа плюс (+
) в локальной части адреса электронной почты активно поддерживается многими почтовыми серверами и системами, позволяя пользователям легко создавать уникальные адреса и "псевдонимы". Однако проблемы с проверкой ввода на стороне разработчиков, которые используют несовместимые регулярные выражения, могут затруднить процесс, что, к сожалению, становится все более распространенным явлением.
Решение проблемы
Чтобы улучшить поддержку побочных адресов и завершить использование +
, вы можете рассмотреть возможность добавления дополнительного разделителя, который будет меньше подвержен отказам со стороны форм проверки ввода.
1. Выбор оптимального символа для дополнительного разделителя
При выборе подходящего символа для дополнительного разделителя следует учитывать следующие варианты:
- Гитара (
-
): Является распространенным символом и часто не вызывает проблем с проверкой. Например, вы можете использовать адреса вродеmyaddress-test@domain.com
. - Процент (
%
): Менее распространен, но может быть принят некоторыми формами. - Хеш (
#
): Данный символ упоминается в RFC 5233, но его использование зависит от особенностей реализации форм.
Среди предложенных вариантов, дефис (-
) является наиболее безопасным и часто принимаемым вариантом. Это минимизирует риск отказа со стороны форм ввода.
2. Уникальность Postfix в поддержке нескольких разделителей
Postfix действительно предлагает поддержку нескольких пользовательских разделителей, что позволяет вам сохранить +
в качестве основного разделителя и добавлять другие, такие как -
. Это свойство является достаточно уникальным среди почтовых серверов, и оно открывает возможность сохранить обратную совместимость с существующими адресами, не требуя масштабных изменений.
Используя настройку:
recipient_delimiter = +-
Вы сможете позволить вашим пользователям использовать адреса в виде:
myaddress+signup@domain.com
myaddress-signup@domain.com
Заключение
Таким образом, добавление дефиса (-
) в качестве дополнительного разделителя – наиболее разумное решение, учитывающее совместимость и устойчивость к проблемам с проверкой. Postfix предлагает возможность использовать это свойство без привязки к конкретному почтовому серверу. То есть, вы можете легко адаптироваться к требованиям программного обеспечения ваших пользователей. Надеюсь, это поможет вам улучшить систему адресации и удовлетворить потребности пользователей.