mailman / exim可否在连线时拒绝非会员发帖?

我用Exim使用Mailman。 当一个非成员发布到一个邮件列表中时,可以用以下任何一种方式来configurationMailman,每个方法都有一个问题:

  1. 接受它 – 将垃圾邮件分发给所有名单成员。
  2. 丢弃它的默默 – 这是令人沮丧和困惑的人从第二地址发送邮件,没有意识到这不是他们订阅。
  3. 保持适度 – 这为主持人筛选垃圾邮件寻找less量非垃圾邮件创造了重大的工作量。 (2)如果主持人松懈,我们有效地回来。
  4. 拒绝与反弹信息 – 这将创build反向散射垃圾邮件。

在我看来,最好的办法是做与Exim做同样的事情,当有人试图发送邮件到一个不存在的地址:在SMTP连接时用拒绝代码拒绝它。 这样,真正的用户将被发送MTA通知问题,而与伪造的发件人的垃圾邮件将不会创build反向散射。 是否有可能configurationExim以这种方式查询邮件和拒绝在SMTP时间非成员列表发布?

这当然是可能的。 只是给你一个提示:你可以在rcpt阶段的ACL中使用$ run和$ runrc。 请参阅http://www.exim.org/exim-html-current/doc/html/spec_html/ch-string_expansions.html下的“$ {run …”之后的第5部分。 你不得不写一个脚本,它调用“list_members 邮件列表 ”,或者你可能会发现“withlist”命令鼓舞人心的… …

另一种方法是:为每个列表准备一个文件(由脚本生成),其中包含列表的所有成员。 然后在您的ACL语句中使用查找来search该文件中的发件人地址。 脚本的核心是这样的:

while read -r list; do list_members "$list" > "$EXIM_HOME/mm-lists/$list" done <<< "$(list_lists -b)" 

相应的ACL可能是这样的:

 deny domains = +local_domains condition = ${if exists {MAILMAN_HOME/lists/$local_part/config.pck}{1}{0}} ! senders = ${lookup{$sender_address}lsearch{CONFDIR/mm-lists/$local_part}{$sender_address}} message = Only list members are allowed to post. 

但是这样的机制存在一些问题,比如在重写包含成员的文件时遇到问题,可能是安全问题。

我没有尝试上面的代码,我不知道这是否真的有效。 这只是给你一个想法什么尝试。

您的动机需要进行一些更正:在决定SMTP时间以接受消息时,您不会避免伪造发件人地址。 你只是不承担传递反弹信息的责任,你把它留给发送MTA。 发送反弹到伪造的地址是困难的,它可能会导致冻结消息,这是不可取的,但它可能是足够的动机来尝试你所问的。