web-dev-qa-db-ja.com

Maildirを別のユーザーのサブディレクトリに移動するにはどうすればよいですか?

従業員が会社を辞めたら、Maildir全体を「古い従業員」アカウントのフォルダに移動したいと思います。

Maildirがファイルシステムを排他的に使用していることを考えると、mv ~fred/Maildir ~oldemployees/Maildir/fredまたは同様のものだけを使用できるはずだと思います。

その場合、メールクライアントをトリガーして新しいディレクトリがあることに気付くにはどうすればよいですか?

2
RickMeasham

Dovecotを使用するIMAPサーバーでは、次のようにして、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
2
mivk

Maildirがファイルシステムを排他的に使用していることを考えると、mv〜fred/Maildir〜oldemployees/Maildir/fredなどを実行できるはずだと思います。

Dovecotの構成によって異なります

デフォルトでは dovecotはMaildir ++を使用 レイアウトでメールを保存します。

  • ~/Maildir/new~/Maildir/cur、および~/Maildir/tmpディレクトリには、INBOXのメッセージが含まれています。 tmpディレクトリは配信中に使用され、新しいメッセージはnewで到着し、読み取られたメッセージはクライアントによってcurに移動されます。
  • ~/Maildir/.folder/はメールボックスフォルダです
  • ~/Maildir/.folder.subfolder/は、フォルダーのサブフォルダー(つまり、「フォルダー/サブフォルダー」)です。

したがって、この場合はコマンドを使用できます

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

オプションで、:LAYOUT=fsmail_locationに追加して、「fs」レイアウトを使用することもできます。これにより、フォルダ構造は次のようになります。

  • ~/Maildir/new~/Maildir/cur、および~/Maildir/tmpディレクトリには、Maildir ++の場合と同様に、INBOXのメッセージが含まれています。
  • ~/Maildir/folder/はメールボックスフォルダです
  • ~/Maildir/folder/subfolder/はフォルダのサブフォルダです

その場合、メールクライアントをトリガーして新しいディレクトリがあることに気付くにはどうすればよいですか?

また、メールクライアントにも依存します。

私のSquirrelmailは常に新しいフォルダを自動的にサブスクライブします。 Thunderbirdでは、[ファイル]-[サブスクライブ...]をクリックし、新しいフォルダをアクティブにして画面に表示する必要がありました。

4
masegaloeh