bukowski/假期

Roundcube 的假期、外出办公和转发功能

安装: 739

依赖者: 0

建议者: 0

安全性: 0

星标: 11

关注者: 5

分支: 40

类型:roundcube-plugin

dev-master 2024-05-28 07:24 UTC

This package is auto-updated.

Last update: 2024-09-25 14:40:32 UTC


README

  • RoundCube 的假期/外出办公插件
  • 弹性皮肤支持

关于

假期插件允许将邮件转发并/或自动回复,带自定义主题/消息正文。请注意,实际的自动回复由类似 /usr/bin/vacation 这样的程序完成,该程序具有虚拟用户意识 vacation.pl 或 Sieve 脚本。

特性

以下组合特性支持最终用户

  • 保留本地邮件副本
  • 将邮件转发到另一个电子邮件地址
  • 发送带自定义主题和消息正文的假期回复
  • 为别名启用自动回复(除 SQL 以外的所有驱动程序)

管理员可以配置以下选项

  • 支持默认主题和正文。
  • 按主机配置+驱动程序,并能够根据每个主机禁用“假期”标签

许可

此产品根据 GPL 分发。请阅读 Roundcube 根目录中的 LICENSE 文件,了解有关许可的更多信息。

可用驱动程序

以下驱动程序可用于执行底层工作

  • Sieve。此驱动程序使用 ManagedSieve 设置/获取用于发送邮件的 Sieve 脚本。
  • FTP。此驱动程序将 .forward 文件上传到用户的 home 目录。
  • SSHFTP。此驱动程序使用 SSH 将 .forward 文件上传到用户的 home 目录。
  • Setuid。此驱动程序使用 squirrel setuid 二进制文件将 .forward 文件放置在用户的 home 目录中。
  • SQL。此驱动程序在 MySQL 数据库中创建 vacation 表条目并修改别名表。目前,SQL 驱动程序针对与 MySQL 或 PostgreSQL 一起使用的 Postfix 进行优化,但可以进行修改以适应其他配置。
  • 无。此驱动程序禁用不支持外出办公回复的主机的“假期”标签。

以下每个驱动程序的更多内容

FTP 驱动程序

FTP 驱动程序建立到当前 IMAP 主机或 config.ini 中指定的服务器的 FTP 连接。使用当前用户的登录凭据登录到 FTP 服务器。

如果存在 .forward 并且它包含 /usr/bin/vacation(如 config.ini 中指定),则启用外出办公。

如果在 .forward 中找到任何转发地址,则将这些地址显示给用户。

如果 alias_identities = true 并且在 .forward 中找到任何别名,则将这些别名显示给用户。如果 alias_identities = true 并且在 .forward 中未找到任何别名,则加载并显示标识。

别名不包含域名,因为它仅限于普通系统用户(/etc/passwd)。如果有多个标识,则显示“获取别名”按钮。

在任一情况下,它将下载包含消息正文和主题的 .vacation.msg 文件。如果找不到 .vacation.msg,则使用在 'config.ini' 中定义的默认正文和主题。

使用此驱动程序的要求

  • 一个允许用户登录到其 $HOME 目录的工作 FTP 服务器。
  • SMTP 服务器必须使用 $HOME 目录中找到的 .forward 文件
  • FTP 服务器必须允许上传点文件。Pure-ftpd 默认不允许这样做

SSHFTP 驱动程序

SSHFTP 后端使用 SSH 建立到当前 IMAP 主机或 config.ini 中指定的服务器的安全连接。然后使用 SFTP 子系统读取和写入文件。SSHFTP 的行为就像 FTP 驱动程序一样。

使用此驱动程序的要求

Sieve 驱动

待定 http://wiki.dovecot.org/ManageSieve/Configuration

Setuid 驱动

setuid 后端使用 setuid 二进制文件来读取/写入当前登录用户的 .forward,.vacation.msg 文件。Apache 执行 setuid 二进制文件并将用户凭据作为参数传递。

插件的 extra/vacation_binary/ 目录包含 setuid 二进制文件及其源代码。要安装此驱动程序,请更改目录到 $path/to/extra/vacation_binary,并以 root 权限运行命令:"make install"。

此命令将 "squirrel_vacation_proxy" 安装到 /usr/bin,并设置了 setuid 位。此目录可以在 config.mk 中更改。

除了读写文件的方式外,它还像 FTP 驱动一样运行。

使用此驱动程序的要求

  • Apache 用户需要是 'apache',或者您需要编辑 config.mk 并使用 'make' 重新编译 squirrelmail_vacation_proxy。

使用 .forward 文件的要求

SSHFTP、FTP 和 setuid 后端都使用 .forward 文件。有关可用选项,如启用身份、保留副本等,请参阅 config.ini。

如果您想使用这些驱动程序之一,请注意

  • /usr/bin 二进制文件必须在缺少 .vacation.db 时创建 .vacation.db。
  • 升级到 vacation 1.2.7.0,因为早期版本存在一个错误,当 .vacation.db 缺失时会导致 vacation 崩溃。

虚拟/SQL 驱动

虚拟/SQL 驱动是最先进的驱动程序,但专门用于与 Postfix 一起使用。以下是其工作方式

如果最终用户检查了 vacation 盒子,将在指定表中创建一个新的虚拟别名,例如 joe@domain.org@vacation.domain.org。"vacation.domain.org" 部分在 config.ini 中配置(也请参阅 INSTALL.TXT)以及 /etc/postfix/master.cf 中。

joe@domain.org 作为 'vacation.domain.org' 传输相关联的 'vacation.pl' 脚本的参数传递。此 vacation.pl 从数据库中检索邮件正文和主题,并构造新的邮件。

代码已在基于 http://workaround.org/ispmail/lenny 的教程的 Postfix/MySQL 设置上进行了测试。它支持标准化的表(domain_id)或非标准化表(domainname)。请参阅 config.ini 以获取选项。

虽然驱动程序应该能够与不同的数据库方案一起工作,但对于 vacation 表的布局,它依赖于在 extra/virtual_vacation 目录中可以找到的模式。

安装说明由 Postfixadmin 团队提供,包括在 extra/virtual_vacation 目录中。请在启用驱动程序之前按照 INSTALL.TXT 中描述的说明进行操作。

虚拟驱动程序可以为您创建 /etc/postfixadmin/vacation.conf,基于当前数据库配置。要启用此功能,请将 config.ini 中的 createvacationconf 设置为 True。

您不需要 Postfixadmin 就可以使用虚拟 vacation 插件。

从安全角度来看,建议为虚拟用户使用 SQL 驱动的专用数据库用户。此用户必须具有对数据库 'postfix'、表 'vacation' 和数据库 'postfix'、表 'virtual_aliases' 的 UPDATE、SELECT 和 INSERT 权限。它不应能够访问 Roundcube 的表。

对于 MySQL,可以使用以下内容

CREATE USER 'virtual_vacation'@'localhost' IDENTIFIED BY 'choose_a_password';
GRANT UPDATE,INSERT,SELECT ON `postfix` . vacation TO 'virtual_vacation'@'localhost';
GRANT DELETE,INSERT,SELECT ON `postfix` . virtual_aliases TO 'virtual_vacation'@'localhost';

如果 Roundcube 的主 DSN 由于 SQL 注入漏洞而受到影响,实际的邮件投递不会受到损害。使用专用 DSN 是可选的,插件与主 DSN 一起工作得很好。

不支持别名,因为 vacation.pl 的实现专门针对 postfixadmin。但是,您可以更改源代码以匹配您的设置。这超出了此驱动程序的范畴。

无驱动程序

此伪驱动程序禁用不支持“外出办公”回复的主机的“假期”选项卡。

编写新驱动程序

  1. 在config.ini中创建相关条目。数组键的名称必须与类名匹配。
  2. 创建lib/$driver.class.php
  3. 使新驱动程序扩展VacationDriver
  4. 实现基类中的抽象公共方法:init()、setVacation()、_get()。您可以使用 $this->cfg 或 $this->dotforward 访问配置设置。可以直接使用类属性访问表单变量,请参阅save()方法
  5. 如有需要,编写新的私有辅助方法,如is_active()。
  6. 在VacationConfig.class.php中注册此驱动程序的可用选项
  7. 进行测试
  8. 提交补丁

故障排除

对于故障排除,您希望将config/main.inc.php中的log_level增加到4,以便显示错误。务必检查数据库或.forward的内容。还要检查适当的maillog以了解发生了什么。

已知错误/限制

  • 翻译不完整

待办事项

  • LDAP支持
  • 支持在-Z以外的设置中设置信封发送者
  • 处理未找到身份的情况。

致谢

  • 感谢Postfixadmin团队创建虚拟假期程序。
  • 感谢Squirrelmail团队的后台二进制setuid支持
  • 感谢Peter Ruiter对插件的初始工作。
  • 感谢Rick Saul和Johnson Chow进行测试