如何设置电子邮件白名单

如何设置电子邮件白名单

我的家庭网络设置如下:

PCs -> Wired Network    ---|
                           |--- Server --- Internet
PCs -> Wireless Network ---|

服务器在 Ubuntu 下运行 fetchmail、postfix 和 dovecot 守护程序,从 ISP 检索电子邮件并将其存储在服务器上。通过服务器上托管的 IMAP 接口,可以从有线或无线网络上的任何 PC 访问电子邮件。

这一切都很顺利。

我即将让我的孩子们自己使用电子邮件。但在让他们自由地使用电子邮件之前,我希望服务器为从 ISP 检索并发送到他们邮箱的电子邮件实施白名单。理想情况下,传入发件人的完整地址应列在白名单中,以便将其转发到邮箱。任何不在白名单中的内容都应转发到另一个邮箱,然后我可以查看并根据需要更新白名单。

我该如何设置各种守护进程来执行此操作?

答案1

我接受了 aatdark 的回答,但这里有我所做工作的更详细描述(我没有编辑 aatdark 帖子的权限)。

首先,我正在使用 Ubuntu 9.04。

此外,不需要安装额外的软件包。

我有一个这样的设置:

ISP -> fetchmail -> postfix -> dovecot (for imap access)

我需要 postfix 来使用 dovecot 的 deliver 程序,因为它能够运行 sieve 脚本。为此,请编辑 /etc/postfix 中的 main.cf 并更改或添加以下内容:

mailbox_deliver = /usr/lib/dovecot/deliver

这告诉 postfix 使用 dovecot 的 deliver 程序。要让 deliver 运行 sieve 脚本,请编辑 /etc/dovecot 中的 dovecot.conf,并找到以下行

protocol lda {

并添加以下条目:

postmaster_address = <some address>
hostname = <hostname>
mail_plugins = cmusieve
sendmail_path = /usr/lib/sendmail

最后,为了按照我最初的要求实现白名单,在 dovecot.conf 中搜索

plugin {

添加以下内容:

sieve = <location of sieve script> # I have /var/sieve-scripts/%n.sieve, this uses the user name as part of the script filename

脚本文件如下:

if address :is ["From"] "whitelisteduser@domain"
{
    keep; # we know this user so let it through
}
else
{
    redirect "myemail@domain"; # redirect everything else
}

我知道这是一个简单的脚本。但这是一个开始。我希望有一种方法可以使用外部数据源,而不是显式发件人的电子邮件地址

答案2

我认为sieve可以实现你想要实现的目标。
http://en.wikipedia.org/wiki/Sieve_%28mail_filtering_language%29

为了获得完整设置的邮件系统 + sieve + webmail,我推荐iRedMail(http://www.iredmail.org/

Sieve 支持邮件的移动和过滤。

答案3

您需要使用一些过滤中间件,例如amavisd。但设置起来相当复杂,有一个如何设置它,并将其集成到社区文档中的 postfix、spamassasin(反垃圾邮件)和 clamd(防病毒)中。

如果您能做到这一点,在 amavis 中设置白名单相当容易。只需查看 /etc/amavis/conf.d/20-debian 规则即可。

相关内容