【发布时间】:2018-03-15 11:26:11
【问题描述】:
我正在编写一些 PERL 代码来在运行 postfix / dovecot / mysql 堆栈的远程服务器上添加/删除邮箱和别名。
我想知道是否有人对远程邮件服务器上需要以编程方式完成的操作有经验或确切的信息?
对于添加邮箱,我相信就像在postfix -> mailbox 表中插入新行一样简单。随着邮件的接收/发送,postfix 和 dovecot 将在 /var/vmail 下创建相关的文件/文件夹。
对于删除邮箱,我相信除了删除相关的postfix ->邮箱表行之外,我还需要运行一个bash命令:
rm -rf /var/vmail/[domain]/[username]
...为了清除用户的实际消息和附件。
我认为 Dovecot 方面没有什么可做的,因为它使用上述数据。
附:对于那些感兴趣的人,我正在使用 LWP:UserAgent 将 Web API 发送到邮件服务器上的本地 PERL 脚本,以便运行 DBI 和 bash 命令。
【问题讨论】:
-
如果您在数据库中管理邮箱,那么我认为您已经使用 db INSERT 或 DELETE + 文件夹 rm。一旦该域没有更多邮箱,您可能需要添加一些逻辑来删除
/var/vmail/[domain]。 -
感谢您的评论。我认为我需要保留父域文件夹,因为有一个单独的 SQL 表“域”包含域名,以后添加新用户可能会由于缺少文件夹而导致错误。希望这个星球上有人曾经处理过这个问题......但最终我会做一些测试,看看在编写代码之前是否有任何问题。
-
对此快速更新:在检查 postfixadmin PHP 代码如何删除邮箱后,它似乎只删除了相关的 SQL 表:存储邮件数据的实际文件夹仍然存在。问题是postfix创建文件夹和邮件作为它自己的用户/组(例如vmail/vmail)并且还将权限写入0600 rwx------...所以即使将用户apache添加到组中也不会让它“完全”删除邮箱。现在研究如何让 postfix 至少分别写入权限为 0770 和 0660 的文件夹和文件。
-
我注意到与 postfixadmin 相同的事情。它自己没有或不能完全清理,这有点烦人。