Dovecot – плюс в названии почтового ящика

Вопрос или проблема

У меня есть сервер почты, собранный с использованием Postfix для SMTP и Dovecot для хранения почты (с почтовыми ящиками, хранящимися в базе данных MySQL). Один из пользователей создал почтовый ящик с знаком плюс в его имени, вот так:

[email protected]

Dovecot, похоже, не обрабатывает это имя почтового ящика как обычно. Когда я пытаюсь найти этот почтовый ящик с помощью doveadm, он не удается

# doveadm user [email protected]
field   valueuserdb lookup: user [email protected] doesn't exist

С другой стороны, когда я делаю поиск с помощью подстановочного знака, он показывает это:

# doveadm user 'peter*[email protected]'
[email protected]
# doveadm user '*@example.com'
[email protected]
(...)
[email protected]

В любом случае – почтовый ящик со знаком плюс неисполним, вы не можете войти в него.

Когда почта отправляется на этот почтовый ящик – Postfix обрабатывает его как любой другой, поэтому он пересылает его в Dovecot (в моем случае через LMTP) в почтовый ящик [email protected]. Но Dovecot пытается доставить его [email protected] (игнорируя все, что начинается со знака плюс).

Похоже, что Dovecot обрабатывает знак плюс так же, как Gmail или другие почтовые серверы:

https://notfaq.wordpress.com/2006/07/20/plus-sign-in-email-addresses/
http://gmailblog.blogspot.cz/2008/03/2-hidden-ways-to-get-more-from-your.html

Мой вопрос:

  1. Действительно ли Dovecot обрабатывает знак плюс особым образом, как я описал, или это какая-то неправильная работа? Я искал в документации Dovecot и не нашел ничего, также я не нашел ничего полезного, ищя в сети.
  2. Если это функция, можно ли ее отключить (чтобы знак ‘+’ не обрабатывался как особый)?

Функция, при которой [email protected] доставляется к [email protected], называется “суб-адресация” или “плюс-адресация” и хорошо описана на Wikipedia.

Продвинутые пользователи находят это очень полезным, и вам стоит дважды подумать, прежде чем отключать это, если у вас уже есть большая существующая база пользователей, потому что отключение может повредить больше, чем исправить. По моему мнению, вам следует изменить интерфейсProvisioning для отклонения имен почтовых ящиков с + вместо этого.

В postfix суб-адресация настраивается с помощью recipient_delimiter, просто уберите эту директиву, и суб-адресация будет отключена.

Как я уже упоминал, суб-адресация довольно полезна, и вам стоит изучить, как Dovecot в настоящее время обрабатывает суб-адресацию, поскольку руководство предлагает разные варианты.

Следующее приведет почту для [email protected] в конкретную папку с именем extension в почтовом ящике пользователя:

dovecot unix    -       n       n       -       -      pipe
  flags=DRhu user=vmail:vmail argv=/usr/local/libexec/dovecot/dovecot-lda -f ${sender} -d ${user}@${nexthop} **-m ${extension}**

или если у вас есть префикс INBOX/:

dovecot unix    -       n       n       -       -      pipe
  flags=DRhu user=vmail:vmail argv=/usr/local/libexec/dovecot/dovecot-lda -f ${sender} -d ${user}@${nexthop} **-m INBOX/${extension}**

или Dovecot может полностью игнорировать расширение и доставлять все сообщения в основной INBOX

dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/dovecot-lda -f ${sender} -a ${recipient} -d ${user}@${nexthop}

Ответ или решение

Обработка почтовых ящиков с плюсом в именах: Dovecot и Postfix

Введение

Ваша ситуация с почтовым сервером, построенным на Postfix и Dovecot, поднимает важные вопросы о том, как почтовые системы обрабатывают знаковые символы, такие как плюс ("+"). Давайте рассмотрим ваши вопросы подробнее.

1. Как Dovecot обрабатывает знаки "+" в именах почтовых ящиков?

Согласно вашему описанию, Dovecot действительно может вести себя так, как будто он интерпретирует знак "+" как знак для "суб-адресации", что является распространенной практикой в почтовых службах, таких как Gmail. Это может привести к тому, что письма, отправленные на адрес вида [email protected], фактически будут доставлены в почтовый ящик, связанный с [email protected]. Если Dovecot игнорирует часть адреса после знака "+", это может создать проблемы при попытке осуществить доступ к почтовому ящику.

Это поведение не является ошибкой, так как функциональность суб-адресации популярна и полезна для обеспечения доставки сообщений в разные папки или для фильтрации. Однако, в зависимости от конфигурации, оно может также привести к конфликтам или проблемам с доступом, как в вашем случае.

2. Возможность отключения обработки знака "+"

Если вы хотите отключить эту функциональность, вам нужно будет изменить настройки вашего почтового сервера. В Postfix это можно сделать, изменив значение параметра recipient_delimiter. По умолчанию, Postfix может использовать знак "+" в качестве разделителя, и если этот параметр удалить или изменить, то суб-адресация будет отключена. Однако, перед изменением этой настройки стоит учитывать потенциальные последствия для существующих пользователей, которые могут использовать эту функциональность.

В Dovecot также существуют различные способы реализации обработки почты, которые могут помочь в управлении суб-адресацией:

  • Лучше отклонить адреса с "+" уже на этапе создания почтовых ящиков: Рекомендуется реализовать проверку на наличие знака "+" в вашем интерфейсе для управления учетными записями. Это позволит избежать создания конфликтных ящиков с названием содержащим знак "+".

  • Явная обработка в конфигурации Dovecot: Если вы хотите, чтобы Dovecot не игнорировал все, что идет после знака "+", вы можете настроить соответствующую маршрутизацию почты для обработки таких адресов. Используйте команду dovecot-lda и настраивайте аргументы по желанию.

Примеры конфигурации для обработки mail:

dovecot     unix  -       n       n       -       -       pipe
  flags=DRhu user=vmail:vmail argv=/usr/local/libexec/dovecot/dovecot-lda -f ${sender} -d ${user}@${nexthop} -m INBOX/${extension}

или

dovecot     unix  -       n       n       -       -       pipe
  flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/dovecot-lda -f ${sender} -a ${recipient} -d ${user}@${nexthop}

Эти изменения помогут вам контролировать, как Dovecot взаимодействует с почтой, отправленной на адреса с символом "+".

Заключение

Управление суб-адресацией и знаком "+" в именах почтовых ящиков — это важный аспект работы почтовых серверов, который могут потребоваться для настройки или ограничения. Прежде чем вносить изменения в вашу конфигурацию, рекомендуется подумать о последствиях для текущих пользователей и функциях, которые они могут использовать.

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

Капча загружается...