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

Dovecot: почтовые клиенты и дублированные папки

Итак, на моем сервере я обычно сталкиваюсь с проблемой, разные клиенты электронной почты вызывают некоторые специальные папки, например Sent и Trash разные имена, такие как Sent Items и Deleted Items.

У меня вопрос, могу ли я каким-то образом "связать" все эти имена и внутренне сопоставить их с одним и тем же Sent папка на сервере?

Мне удалось изменить свой dovecot.conf включить разделы, такие как:

mailbox Sent {
    special_use = \Sent
    auto=subscribe
}

mailbox "Sent Messages" {
    special_use = \Sent
}

mailbox "Sent Items" {
    special_use = \Sent
}

Это правильный способ «исправить» эту досадную проблему? Кажется, это работает, по крайней мере, на сервере нет дублирования, но некоторые почтовые клиенты могут выбрать все дублированные папки.

Спасибо.

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

Пример конфигурации, где Отправлено и Мусор настоящие почтовые ящики для псевдонимов «Отправленные» и «Удаленные»:

mail_plugins = $mail_plugins mailbox_alias
plugin {
  mailbox_alias_old = Trash
  mailbox_alias_new = Deleted Items
  mailbox_alias_old2 = Sent
  mailbox_alias_new2 = Sent Items
}

Не забудьте создать почтовые ящики:

namespace inbox {
  mailbox Sent {
    auto = create # or subscribe
    special_use = \Sent
  }
  mailbox Trash {
    auto = create
    special_use = \Trash
  }
}

Другая возможность - создать два разных почтовых ящика, как вы упомянули, я скопировал часть conf.d/15-mailboxes.conf

namespace inbox {
  # For \Sent mailboxes there are two widely used names. We'll mark both of
  # them as \Sent. User typically deletes one of them if duplicates are created.
  mailbox Sent {
    special_use = \Sent
  }
  mailbox "Sent Messages" {
    special_use = \Sent
  }
}

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

Плагин использовать не нужно. Перейдите в свой каталог vmail, например:

cd /var/vmail/example.com/exampleUser/ 

затем, если вы хотите, например, чтобы все сообщения сохранялись в "Sent Messages" папку для сохранения в "Sent" вместо этого просто переместите файлы "Sent Messages" в "Sent" через вашего клиента в качестве первого шага.

Затем в /var/vmail/example.com/exampleUser/mail папку удалите "Sent Messages" скрытая папка:

rm -r /var/vmail/example.com/exampleUser/mail/.Sent\ Messages

Перед отправкой любого другого электронного письма продолжайте добавлять символическую ссылку в скрытую папку "Sent" из "Sent Messages" (длинная строка здесь, если вы скопируете и вставите, сделайте это осторожно):

ln -s /var/vmail/example.com/exampleUser/mail/.Sent /var/vmail/example.com/exampleUser/mail/.Sent\ Messages

Это должно работать нормально. Просто повторите ту же процедуру, если хотите, чтобы "Sent Items" или "Mail Sent" или любую другую папку, имеющую символическую ссылку на "Sent" one, или если вам нужно другое решение с другими папками, указывающими на другие папки, и хранить почту только в одной из них.

Если вам нужно сделать голубятню и клиента использовать "INBOX" как "Sent" папку, вы должны создать символическую ссылку из почтовой папки с именем пользователя (снова длинная строка):

ln -s /var/vmail/example.com/exampleUser/mail/ /var/vmail/example.com/exampleUser/mail/.Sent\ Messages

если вы не меняли его. Затем отредактируйте в /etc/dovecot/conf.d/15-mailboxes.conf линии:

namespace inbox {
  # For \Sent mailboxes there are two widely used names. We'll mark both of
  # them as \Sent. User typically deletes one of them if duplicates are created.
  mailbox Sent {
    special_use = \Sent
  }
  mailbox "Sent Messages" {
    special_use = \Sent
  }
}

или другой эквивалент, чтобы они стали:

namespace inbox {
  # For \Sent mailboxes there are two widely used names. We'll mark both of
  # them as \Sent. User typically deletes one of them if duplicates are created.
  mailbox INBOX {
    special_use = \Sent
  }
  mailbox INBOX {
    special_use = \Sent
  }
}

Как вы могли заметить, теперь два одинаковых, поэтому вы можете просто удалить один:

namespace inbox {
  # For \Sent mailboxes there are two widely used names. We'll mark both of
  # them as \Sent. User typically deletes one of them if duplicates are created.

  mailbox INBOX {
    special_use = \Sent
  }
}

Тогда все должно работать нормально. Я прошел через этот процесс, потому что хотел, чтобы мои отправленные письма находились в папке «Входящие» как с ноутбука, так и с телефона. Для ноутбука хватило хака на голубятню, но телефон продолжал использовать "Sent Messages" папка, поэтому мне пришлось использовать трюк с символической ссылкой. Будьте очень осторожны при выборе правильного "Sent" или "Sent Messages" или любую другую папку для создания символической ссылки!

Я предполагаю, что плагин просто создает символическую ссылку, так что вы просто делаете похожие вещи. С помощью этой техники вы можете объединить все нужные папки и сохранить работу клиентов без изменений. :-)