将电子邮件转发到通讯组列表

时间:2010-05-27 00:31:02

标签: php linux email sendmail

我最近不得不搬家服务器。在旧服务器上,我有一个Mailman listserv分发列表,但由于新服务器不支持Mailman,我编写了一个PHP脚本来读取来自IMAP的消息并通过SMTP重新发送。脚本是脆弱的(我的错)和复杂的(不是我的错):我必须解析每条消息,找到我可以使用的位(如果它是多部分或HTML或它有附件),然后重建SMTP邮件,以便除发件人之外的每个成员都获得一份副本,而回复者是通讯组列表地址。问题是,我知道消息的原始来源是好的。我只需要更改/添加一些标题。

在Windows服务器上,您可以配置电子邮件收存箱文件夹,您可以在其中以原始格式保存外发邮件。 * nix上有类似的东西吗?还有其他方法我应该看一下吗?

我知道我可以在服务器上设置转发器地址,但我真的很喜欢listserv系统的行为:发件人没有得到他们自己的消息的副本,主题用列表的标签识别并点击“回复” “将邮件发送回分发列表,而不是原始发件人。

1 个答案:

答案 0 :(得分:0)

要创建自己的定制列表服务器系统,您需要执行以下操作:

  1. 将您的邮件服务器配置为使用别名(例如 no-reply@yourdomain.com )将邮件重定向到 black-hole / dev / null 或类似的东西,基本上在到达时删除任何消息而不向发件人返回NDR(未送达报告)电子邮件。这是您的脚本在发送给论坛时在电子邮件的收件人:标题中将使用的地址。

  2. 编写以下列方式发送给组的PHP脚本部分:(a)首先将所有订阅者从数据库(或安全存储的数据文件)中提取到数组中,(b)下一步删除来自数组的消息作者的地址,(c)然后最终以15个接收者的批次循环遍历阵列中的所有剩余订阅者,并使用{{1}以 mail()函数发送消息和 BCC:(盲目抄送)字段,以防止收件人看到列表中还有谁。

  3. 如果您想尝试一些现有的解决方案,为什么不去看看 Majordomo