iredmail-doc/zh_CN/howto/mailbox.sharing.md

3.1 KiB
Raw Permalink Blame History

共享邮箱(将 IMAP 目录共享给其他用户)

!!! note

* 自 iRedMail-`0.9.0`版起,共享邮箱功能默认开启,用户不需要任何额外的配置。
* 自 iRedMail-`0.7.0` 版起Dovecot 已包含共享邮箱的相关设置,但没有启用。
  只需要按照以下文档中启用 `acl` 插件的步骤即可启用该功能。

* 请勿混淆`共享邮箱`和`公共邮箱`。用户在共享邮箱时必须选择要共享的目录并
  指定共享给谁。

共享邮箱

要开启邮箱共享功能,请确保 acl 插件已在Dovecot 的配置文件 /etc/dovecot/dovecot.conf 里启用。以下是配置示例:

  • Dovecot-1.2 版:
# Part of file: /etc/dovecot/dovecot.conf

protocol lda {
    mail_plugins = ... acl
}

protocol imap {
    mail_plugins = ... acl imap_acl
}
  • Dovecot-2.x 版:
# Part of file: /etc/dovecot/dovecot.conf

mail_plugins = ... acl

protocol imap {
    mail_plugins = ... imap_acl
}

修改后需重启 Dovecot 服务,以使配置生效。

测试共享目录

示例:将用户 from@domain.ltdSent 目录共享给用户 testing@domain.ltd

注意:不要遗漏 IMAP 命令前面的点 . 号。

# telnet localhost 143                # <- 输入此命令
* OK [...] Dovecot ready.

. login from@domain.ltd passwd        # <- 输入此命令
                                      # 使用完整邮件地址和密码登陆
. OK [... ACL ..] Logged in

. SETACL Sent testing@domain.ltd rli  # <- 输入此命令
                                      # 将 Sent 目录共享给 testing@domain.ltd
                                      # 具体权限为:读(r, read),查询(l, lookup),插入新邮件(i, insert)。
. OK Setacl complete.

^]                                    # <- 按 `Ctrl + ]` 组合键退出 telnet 程序。
telnet> quit

以用户 testing@domain.ltd 身份登录 Roundcube 或 SOGo webmail即可看到共享的目录。

额外信息:

  • 使用 SETACL 命令共享目录后, Dovecot 会在 MySQL 数据库中插入一条记录。

    • 对于采用 OpenLDAP 后端的用户,此记录保存在 SQL 表 iredadmin.share_folder 中。
    • 对于采用 MySQL/MariaDB/PostgreSQL 后端的用户,此记录保存在 vmail.share_folder 中。
# mysql -uroot -p
mysql> USE vmail;
mysql> SELECT * FROM share_folder;
+-----------------+--------------------+-------+
| from_user       | to_user            | dummy |
+-----------------+--------------------+-------+
| from@domain.ltd | testing@domain.ltd | 1     |
+-----------------+--------------------+-------+

参考资料