У меня есть сборка почтового сервера с Postfix для SMTP и Dovecot для хранения почты (почтовые ящики хранятся в базе данных MySQL). Один из пользователей создал почтовый ящик со знаком плюс в его имени, например:
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- адреса электронной почты для входа / http://gmailblog.blogspot.cz/2008/03/2-hidden-ways-to-get-more-from-your.html
Мой вопрос:
Функция, которая (скрытая) доставляется (скрытая), называется «подадресация» или «плюс адресация» и хорошо описана на Википедия .
Опытные пользователи считают его очень полезным, и вы можете дважды подумать, прежде чем отключить его, если у вас уже есть большая база пользователей, потому что его отключение может сломать больше, чем исправить. ИМХО, вы должны исправить фронт подготовки почтового ящика -конец, чтобы отклонить имена почтовых ящиков с помощью + .
В постфиксе подадресация настраивается с помощью recipient_delimiter
, просто удалите эту директиву, и подадресация будет отключена.
Как я уже упоминал, подадресация весьма полезна, и вы можете изучить, как Dovecot в настоящее время работает с подадресацией, поскольку руководство предлагает различные варианты.
Следующее будет доставлять почту для (скрытой) в определенную папку с именем extension
в почтовом ящике пользователя:
dovecot unix - nn - - pipe flags = DRhu user = vmail: vmail argv = / usr / local / libexec / dovecot / dovecot-lda -f $ {sender} -d $ {user} @ $ {nexthop} -m $ {extension}
или если у вас есть префикс пространства имен INBOX /:
dovecot unix - nn - - 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 - nn - - pipe flags = DRhu user = vmail: vmail argv = / usr / lib / dovecot / dovecot-lda -f $ {sender} -a $ {recipient} -d $ {user} @ $ {nexthop}