dkfilterPostfix(DomainKeys实现)

Postfix with dkfilter(DomainKeys Implementation)

作者:Sohail Riaz <sohail AT fastadmins DOT com>
sohailriaz DOT com>的sohail

DomainKeys是雅虎正在开发的反垃圾邮件软件应用程序,它使用公钥加密技术来验证发件人的域名。 dkfilter是为Postfix设计的SMTP代理。 它实现DomainKeys消息签名和验证。 它包含两个单独的过滤器,一个用于在端口587上签发传出电子邮件的“出站”过滤器,以及一个用于验证端口25上的传入电子邮件的签名的“入站”过滤器。本文档将逐步描述如何为postfix安装dkfilter部署域密钥签名和验证。

1安装Postfix

安装您的域的postfix发送和接收邮件。

2解决依赖关系 - 安装Perl模块

Dkfilter是用Perl编写的。 它需要CPAN存档中的以下Perl模块。

    * Crypt::OpenSSL::RSA
    * Mail::Address
    * MIME::Base64
    * Net::DNS
    * Test::More
    * Text::Wrap
    * Mail::DomainKeys

以下命令将有所帮助。

perl -MCPAN -e'CPAN::Shell->install("Crypt::OpenSSL::RSA")'
perl -MCPAN -e'CPAN::Shell->install("Mail::Address")'
perl -MCPAN -e'CPAN::Shell->install("MIME::Base64")'
perl -MCPAN -e'CPAN::Shell->install("Net::DNS")'
perl -MCPAN -e'CPAN::Shell->install("Test::More")'
perl -MCPAN -e'CPAN::Shell->install("Text::Wrap")'
perl -MCPAN -e'CPAN::Shell->install("Email::Address")'
perl -MCPAN -e'CPAN::Shell->install("Mail::DomainKeys")'

注意:还解决安装上述Perl模块所需的任何依赖Perl模块。

3安装dkfilter

以下步骤建议安装dkfilter:

一世。 从以下URL下载dkfilter:
http://jason.long.name/dkfilter/dkfilter-0.11.tar.gz

ii。 安装dkfilter

tar xvf dkfilter-0.11.tar.gz
cd dkfilter-0.11
./configure --prefix=/usr/local/dkfilter
make install
useradd dkfilter

过滤器脚本将安装在/ usr / local / dkfilter / bin中 ,Perl模块文件将位于/ usr / local / dkfilter / lib中

4设置入站过滤器

我们需要在Postfix配置文件中进行相关更改,以检查传入的邮件的签名。

vi /etc/postfix/master.cf
#
# Before-filter SMTP server. Receive mail from the network and
# pass it to the content filter on localhost port 10025.
#
smtp      inet  n       -       n       -       -       smtpd
    -o smtpd_proxy_filter=127.0.0.1:10025
    -o smtpd_client_connection_count_limit=10
#
# After-filter SMTP server. Receive mail from the content filter on
# localhost port 10026.
#
127.0.0.1:10026 inet n  -       n       -        -      smtpd
    -o smtpd_authorized_xforward_hosts=127.0.0.0/8
    -o smtpd_client_restrictions=
    -o smtpd_helo_restrictions=
    -o smtpd_sender_restrictions=
    -o smtpd_recipient_restrictions=permit_mynetworks,reject
    -o smtpd_data_restrictions=
    -o mynetworks=127.0.0.0/8
    -o receive_override_options=no_unknown_recipient_checks

在最后一个文件中插入上面的行。 这里我们定义在smtp之后收到的邮件将在127.0.0.1和端口10026上进行验证。您可以定义自己想要收听的IP地址进行签名检查。

5设置出站过滤器

出站过滤器需要访问用于签署消息的私钥。 另外,需要知道正在使用的密钥选择器的名称,以及应该在哪个域中签署消息。 此信息通过dkfilter.out的命令行参数指定。

1.生成私钥/公钥对,并在DNS中发布公钥。

cd /usr/local/dkfilter
openssl genrsa -out private.key 1024
openssl rsa -in private.key -pubout -out public.key

这将在当前目录中创建private.key和public.key文件,其中包含私钥和公钥。 确保private.key不是世界可读的,但仍然可以由dkfilter用户读取。

2.选择一个选择器名称...例如m1

3.使用您选择的选择器名称将公钥数据放在DNS中,在您的域中。 复制public.key文件的内容并删除PEM页眉和页脚,并通过创建TXT条目将其粘贴到dns区域文件中,如下所示:

_domainkey.sohailriaz.com        IN TXT  “t=y; o=-;”
m1._domainkey.sohailriaz.com  IN TXT "g=; k=rsa; p=MHwwDQYJK ... OprwIDAQAB;"

其中m1是在最后一步中选择的选择器的名称,p =参数包含公钥作为一个长字符串。

最后,配置Postfix仅通过端口10027上的dkfilter.out服务来过滤传出的授权消息。在以下示例中,通过端口587(提交端口)发送的邮件将通过一个后续队列内容过滤器来发送消息与DomainKeys。

vi /etc/postfix/master.cf
#
# modify the default submission service to specify a content filter
# and restrict it to local clients and SASL authenticated clients only
#
submission  inet  n     -       n       -       -       smtpd
    -o smtpd_etrn_restrictions=reject
    -o smtpd_sasl_auth_enable=yes
    -o content_filter=dksign:[127.0.0.1]:10027
    -o receive_override_options=no_address_mappings
    -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
#
# specify the location of the DomainKeys signing filter
#
dksign    unix  -       -       n       -       10      smtp
    -o smtp_send_xforward_command=yes
    -o smtp_discard_ehlo_keywords=8bitmime
#
# service for accepting messages FROM the DomainKeys signing filter
#
127.0.0.1:10028 inet  n  -      n       -       10      smtpd
    -o content_filter=
    -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
    -o smtpd_helo_restrictions=
    -o smtpd_client_restrictions=
    -o smtpd_sender_restrictions=
    -o smtpd_recipient_restrictions=permit_mynetworks,reject
    -o mynetworks=127.0.0.0/8
    -o smtpd_authorized_xforward_hosts=127.0.0.0/8

对Postfix执行postfix reload以响应/etc/postfix/master.cf中的更改。

postfix reload

6启动脚本

从以下站点下载启动/关闭脚本:
http://www.enterux.com/files/dkfilter

将该脚本复制到/etc/rc.d/init.d中 ,并根据您的要求进行编辑。

7参考文献

http://www.postfix.org
http://antispam.yahoo.com/domainkeys
http://jason.long.name/dkfilter/

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏