如何将 Maildir 移动到另一个用户的子目录中?

如何将 Maildir 移动到另一个用户的子目录中?

当员工离开公司时,我想将他们的整个 Maildir 移至“旧员工”帐户中的文件夹中。

鉴于 Maildir 专门使用文件系统,我认为应该可以做到mv ~fred/Maildir ~oldemployees/Maildir/fred或类似。

如果我这样做,如何触发邮件客户端来注意到有新目录?

答案1

在我们带有 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

鉴于 Maildir 专门使用文件系统,我认为应该可以只使用 mv ~fred/Maildir ~oldemployees/Maildir/fred 或类似命令

这取决于 dovecot 配置

默认情况下dovecot 使用 Maildir++存储电子邮件的布局。

  • ~/Maildir/new和目录包含要发送到 INBOX 的消息。tmp 目录在投递过程中使用,新消息到达 new 中~/Maildir/cur~/Maildir/tmp已读消息应由客户端移动到 cur 中。
  • ~/Maildir/.folder/是邮箱文件夹
  • ~/Maildir/.folder.subfolder/是文件夹的子文件夹(即“文件夹/子文件夹”)

因此,在这种情况下,您可以使用命令

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

:LAYOUT=fs您还可以通过附加到来选择使用“fs”布局mail_location。这使得文件夹结构如下所示:

  • ~/Maildir/new~/Maildir/cur并且~/Maildir/tmp目录包含收件箱的消息,就像 Maildir++ 一样。
  • ~/Maildir/folder/是邮箱文件夹
  • ~/Maildir/folder/subfolder/是文件夹的子文件夹

如果我这样做,如何触发邮件客户端来注意到有新目录?

这也取决于邮件客户端。

我的 Squirrelmail 总是自动订阅新文件夹。Thunderbird 要求您单击[文件] - [订阅...]并激活新文件夹以使其出现在屏幕上。

答案3

  1. doveadm 邮箱创建'!!新文件夹 2!!' -u[电子邮件保护]
  2. doveadm 邮箱订阅'!!新文件夹 2!!' -u[电子邮件保护]
  3. doveadm 复制-u[电子邮件保护]“!!新文件夹 2!!”用户[电子邮件保护]邮箱‘旧文件夹’全部

相关内容