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

Как переместить Maildir в подкаталог другого пользователя?

Когда сотрудник уходит из компании, я хочу переместить весь Maildir в папку в учетной записи «старых сотрудников».

Учитывая, что Maildir использует исключительно файловую систему, я считаю, что можно просто mv ~fred/Maildir ~oldemployees/Maildir/fred или похожие.

Если я это сделаю, как мне заставить почтовый клиент заметить, что есть новый каталог?

Учитывая, что Maildir использует исключительно файловую систему, я считаю, что можно просто использовать mv ~ fred / Maildir ~ oldemployees / Maildir / fred или аналогичный

Это зависит от конфигурации голубятни.

По умолчанию dovecot использует Maildir ++ макет для хранения электронной почты.

  • ~/Maildir/new, ~/Maildir/cur и ~/Maildir/tmp каталоги содержат сообщения для INBOX. Каталог tmp используется во время доставки, новые сообщения поступают как новые, а прочитанные должны перемещаться клиентами в cur.
  • ~/Maildir/.folder/ это папка почтового ящика
  • ~/Maildir/.folder.subfolder/ является подпапкой папки (например, "папка / подпапка")

Итак, в этом случае вы можете использовать команду

mv ~fred/Maildir ~oldemployees/Maildir/.fred

Вы также можете дополнительно использовать макет "fs", добавив :LAYOUT=fs к mail_location. Это делает структуру папок такой:

  • ~/Maildir/new, ~/Maildir/cur и ~/Maildir/tmp каталоги содержат сообщения для INBOX, как и в Maildir ++.
  • ~/Maildir/folder/ это папка почтового ящика
  • ~/Maildir/folder/subfolder/ это подпапка папки

Если я это сделаю, как мне заставить почтовый клиент заметить, что есть новый каталог?

Это также зависит от почтового клиента.

My Squirrelmail всегда автоматически подписывается на новую папку. Thunderbird требовал, чтобы вы щелкнули [Файл] - [Подписаться ...] и активируйте новую папку, чтобы она появилась на экране.

На нашем сервере IMAP с Dovecot я делаю это так, чтобы скопировать всю иерархию Maildir в подпапку почтового ящика другого пользователя:

Определите переменные, чтобы остальные можно было скопировать / вставить

olduser=martina
olddir=/home/$olduser/Maildir

newuser=jasmin
newgroup=users
newdir=/home/$newuser/Maildir
newfolder="Martina"
newdest="$newdir/.$newfolder"

Переместить все папки и подпапки в подпапку другого пользователя

mkdir -v "$newdest"
for d in cur new tmp; do mv -vi "$olddir/$d" "$newdest/"; done

# Move only folders which contain mails,
# and exclude some special folders like Trash, etc.

cd $olddir
for d in .??*; do
  if [[ "$d" =~ ^.(Junk|Trash)$ ]] || [ -z "$(find "$d"/{cur,new,tmp} -type f)" ]; then
    echo ignore "$d"; continue;
  fi;
  mv -vi "$d" "$newdest/$d";
done

# subscribe new user to new folders

find "$newdir" -maxdepth 1 -type d -name ".$newfolder*" -printf "%f\n"
 | while read d; do echo ${d/#./}; done
 | cat - "$newdir/subscriptions"
 | sort -u > "$newdir/subscriptions.new"

mv "$newdir/subscriptions.new" "$newdir/subscriptions"

# fix ownership/permissions

chmod -R u=rwX,go=          "$newdir"
chown -R $newuser:$newgroup "$newdir"

# Check ownership/permissions
find "$newdir" -not -perm 700 -type d -ls
find "$newdir" -not -perm 600 -type f -ls
find "$newdir" -not -user  $newuser   -ls
find "$newdir" -not -group $newgroup  -ls
  1. doveadm mailbox create '!! New folder 2 !!' -u touser@example.com
  2. doveadm mailbox subscribe '!! Новая папка 2 !!' -u touser@example.com
  3. doveadm copy -u touser@example.com '!! Новая папка 2 !!' пользователь fromuser@example.com почтовый ящик 'Старая папка' ВСЕ