首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于后缀/ dovecot / sql的删除邮箱

基于后缀/ dovecot / sql的删除邮箱
EN

Stack Overflow用户
提问于 2017-10-04 06:45:13
回答 1查看 2.8K关注 0票数 0

我正在编写一些PERL代码,用于在运行postfix / dovecot / mysql堆栈的远程服务器上添加/删除邮箱和别名。

我想知道,是否有人拥有在远程邮件服务器上需要通过编程完成哪些工作的经验或确切信息?

对于添加邮箱,我认为它就像在后缀->邮箱表中插入一个新行一样简单。当邮件接收/发送时,postfix和dovecot将在/var/vmail下创建相关的文件/文件夹。

对于删除邮箱,我相信除了删除相关的postfix ->邮箱表行外,还需要运行bash命令:

代码语言:javascript
复制
rm -rf /var/vmail/[domain]/[username]

..。以清除用户的实际消息和附件。

我认为在Dovecot方面没有什么可做的,因为它使用了上面提到的数据。

对于那些感兴趣的人,我使用LWP:UserAgent将web发送到邮件服务器上的本地PERL脚本,以便运行DBI和bash命令。

EN

回答 1

Stack Overflow用户

发布于 2017-10-10 09:05:22

我就是这样解决这个难题的。

首先,该体系结构是一个运行Postfix/Dovecot/MySQL的远程邮件服务器。我的管理服务器是它自己的LAMP堆栈,在其中我有一个自定义的数据库和表来跟踪邮箱:用户、域、状态(等等)。我之所以提到这一点,是因为它将帮助人们制定自己的自定义解决方案。

但是,从理论上讲,它都可以在同一台服务器上运行(直接进入步骤2)。

若要删除邮箱,请执行以下操作:

  1. 在本地服务器上,我使用LWP::UserAgent和HTTP::Reqeuest::Common模块向远程后缀服务器发送GET请求。例如,https://remote.com/api.cgi?action=delete&mailbox=john@smith.com
  2. 在远程后缀服务器上,我还安装了PERL和Apache。当GET请求到达服务器时,我的Apache脚本更新本地MySQL后缀数据库邮箱表,发送以下SQL命令: 使用后缀更新邮箱集status=1,created='1111-11-11 :11:11‘ 这意味着该帐户实际上已经处于不活动状态。

我将创建日期设置为该唯一值的原因是,它是一个不会被普通后缀操作更改的列。

  1. 在这个远程服务器上,我有另一个PERL脚本,它以每日cron作业的形式运行,具有权限。脚本首先执行以下操作: 从创建的邮箱中选择local_part,域=‘1111-11-11:11:11’
  2. 我现在使用"1111-11-11 :11:11“来确定要删除哪些邮箱。使用来自DBI的结果数组,Perl脚本(使用它的特权,然后执行以下PERL代码): 对于$x (0 ..){ "/var/vmail/$delete_mailboxes->$x/$delete_mailboxes->$x";if (-e $check) {@a=system(rm -rf $check )}}

并以SQL命令结束:

代码语言:javascript
复制
    DELETE FROM mailbox WHERE local_part='$delete_mailboxes->[$x][0]' AND domain='$delete_mailboxes->[$x][1]'

实际上,它使用后缀邮箱表中已经存在的数据来测试要删除哪些邮箱,邮箱是否有要删除的现有文件夹/文件,如果找到,则使用root权限删除它(这克服了严格的文件系统权限。

现在可以使用多种不同的编程语言,使用不同版本的后缀、不同的数据库版本和不同的web服务API.重要的一点是,它在cron作业中使用根权限来查询数据库以确定是否删除/删除什么。

希望这能帮你节省很多时间。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46558581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档