Назад | Перейти на главную страницу

Dovecot - плюс войдите в имя почтового ящика

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

peter+bob@example.com

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

# doveadm user peter+bob@example.com
field   valueuserdb lookup: user peter+bob@example.com doesn't exist

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

# doveadm user 'peter*bob@example.com'
peter+bob@example.com
# doveadm user '*@example.com'
peter@example.com
(...)
peter+bob@example.com

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

Когда почта отправляется в этот почтовый ящик - Postfix обращается с ней как с любым другим, поэтому перенаправляет ее в Dovecot (в моем случае через LMTP) на почтовый ящик peter+bob@example.com. Но Dovecot пытается доставить его на peter@example.com (игнорируя все, что начинается со знака плюс).

Похоже, что 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. Если это функция, можно ли ее отключить (чтобы знак «+» не обрабатывался отдельно)?

Особенность, которая mailbox+aextension@example.com доставляется в mailbox@example.com называется "подадресация" или "плюс адресация" и красиво описано на Википедия.

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

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

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

Следующее будет доставить почту для user+extension@exampel.com в определенную папку с именем extension в почтовом ящике пользователя:

dovecot unix - n n - - pipe flags = DRhu user = vmail: vmail argv = / usr / local / libexec / dovecot / dovecot-lda -f $ {sender} -d $ {user} @ $ {nexthop} -m $ {расширение}

или если у вас есть префикс 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 / $ {расширение}

или 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}