我的家庭网络设置如下:
PCs -> Wired Network ---|
|--- Server --- Internet
PCs -> Wireless Network ---|
服务器在 Ubuntu 下运行 fetchmail、postfix 和 dovecot 守护程序以从 ISP 检索电子邮件并将其存储在服务器上。通过服务器上托管的 IMAP 接口从有线或无线网络上的任何 PC 访问电子邮件。
这一切都很好。
我打算让我的孩子们自己使用电子邮件。但在我让他们在世界上发布之前,我希望服务器为从 ISP 检索并发送到他们邮箱的电子邮件实施白名单。理想情况下,传入发件人的完整地址应列在白名单中,以便将其转发到邮箱。任何不在白名单中的东西都应该转发到另一个邮箱,然后我可以查看并酌情更新白名单。
如何设置各种守护程序来执行此操作?
我已经接受了 aatdark 的回答,但这里更详细地描述了我所做的事情(我没有编辑 aatdark 帖子的代表)。
首先,我使用的是 Ubuntu 9.04。
此外,无需安装其他软件包。
我有这样的设置:
我需要 postfix 来使用 dovecot 的交付程序,因为它能够运行筛子脚本。为此,请编辑 /etc/postfix 中的 main.cf 并更改或添加以下内容:
这告诉 postfix 使用 dovecot 的交付程序。要交付运行筛子脚本,请编辑 /etc/dovecot 中的 dovecot.conf 并找到与
并添加以下条目:
最后,按照我最初的要求实现白名单,在 dovecot.conf 中搜索
添加以下内容:
脚本文件如下所示:
这是一个简单的脚本,我知道。但这是一个开始。我希望有一种方法可以使用外部数据源而不是显式发件人的电子邮件地址
我认为
sieve
可以管理您想要实现的目标。http://en.wikipedia.org/wiki/Sieve_%28mail_filtering_language%29
要获得完全设置的邮件系统 + 筛子 + 网络邮件,我可以推荐
iRedMail
(http://www.iredmail.org/)Sieve 支持邮件的移动和过滤。
您需要使用一些过滤中间件,例如amavisd。但是设置它相当复杂,在社区文档中有一个设置方法,将它集成到 postfix、spamassasin(反垃圾邮件)和 clamd(反病毒)中。
如果您设法做到这一点,那么在 amavis 中设置白名单非常容易。只需查看 /etc/amavis/conf.d/20-debian 规则即可。