Como faço para mover um Maildir para um subdiretório de outro usuário?

2

Quando um funcionário sai da empresa, quero mover todo o seu Maildir para uma pasta em uma conta de "funcionários antigos".

Dado que o Maildir usa exclusivamente o sistema de arquivos, acho que deveria ser possível apenas mv ~fred/Maildir ~oldemployees/Maildir/fred ou similar.

Se eu fizer isso, como acionar o cliente de e-mail para perceber que há um novo diretório?

    
por RickMeasham 07.05.2015 / 00:29

3 respostas

2

Em nosso servidor IMAP com o Dovecot, eu faço assim, para copiar uma hierarquia inteira do Maildir em uma subpasta da caixa de correio de outro usuário:

Defina variáveis para que o restante possa ser copiado / colado

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

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

Mova todas as pastas e subpastas para uma subpasta de outro usuário

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
    
por 02.05.2017 / 17:43
4

Given that Maildir uses the filesystem exclusively, I feel it should be possible to just mv ~fred/Maildir ~oldemployees/Maildir/fred or similar

Depende da configuração do dovecot

Por padrão, dovecot usa o layout do Maildir ++ para armazenar o email.

  • Os diretórios ~/Maildir/new , ~/Maildir/cur e ~/Maildir/tmp contêm as mensagens para INBOX. O diretório tmp é usado durante a entrega, as novas mensagens chegam em novo e a leitura é movida para os clientes.
  • ~/Maildir/.folder/ é uma pasta de caixa de correio
  • ~/Maildir/.folder.subfolder/ é uma subpasta de uma pasta (por exemplo, "pasta / subpasta")

Então, neste caso, você pode usar o comando

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

Você também pode usar o layout "fs", acrescentando :LAYOUT=fs a mail_location . Isso faz com que a estrutura da pasta pareça:

  • Os diretórios ~/Maildir/new , ~/Maildir/cur e ~/Maildir/tmp contêm as mensagens para INBOX, assim como com o Maildir ++.
  • ~/Maildir/folder/ é uma pasta de caixa de correio
  • ~/Maildir/folder/subfolder/ é uma subpasta de uma pasta

If I do that, how to I trigger the mail client to notice there's a new directory?

Também depende do cliente de e-mail.

Meu Squirrelmail sempre assina nova pasta automaticamente. O Thunderbird exigia que você clicasse em [Arquivo] - [Inscrever-se ...] e ativasse a nova pasta para que ela aparecesse na tela.

    
por 08.05.2015 / 11:25
-2
  1. caixa de correio doveadm create '!! New folder 2 !!' -u [email protected]
  2. caixa de correio doveadm subscribe '!! New folder 2 !!' -u [email protected]
  3. doveadm copy -u [email protected] '!! Nova pasta 2 !!' usuário [email protected] caixa de correio 'Old folder' ALL
por 29.07.2017 / 21:11