设置DKIM(DomainKeys标识邮件)使用Postfix在CentOS上使用OpenDKIM

设置DKIM(DomainKeys标识邮件)使用Postfix在CentOS上使用OpenDKIM   本教程介绍如何获取DKM在CentOS上工作...

设置DKIM(DomainKeys识别的邮件)使用OpenDKIM在CentOS上使用Postfix

版本1.0
作者:Eladio Martinez <eladio@mafecs.com>
http://twitter.com/mafecsllc

本教程将介绍如何使用OpenDKIM在运行Postfix的CentOS盒中使用DKIM,还将介绍一些简单的故障排除技巧和建议,以便在OpenDKIM安装中进行升级。

1要求

本教程假定您具有运行以下服务的完整功能的CentOS安装:

- Postfix 2.3.3或更好的当前工作。
- Sendmail已关闭。

2初步注释

我使用root权限运行本教程中的所有步骤,我目前正在使用OpenDKIM版本2.4.2运行CentOS 6.3,我将使用example.com作为本教程的主域。

3下载并安装OpenDKIM

您还需要安装OpenSSL和Sendmail开发包,因为它们包含一些需要让OpenDKIM工作的“库”。

yum install sendmail-devel openssl-devel

将OpenDKIM下载到/ usr / local / src目录:

cd /usr/local/src
wget http://sourceforge.net/projects/opendkim/files/opendkim-2.4.2.tar.gz

提取,配置,编译和安装OpenDKIM:

tar zxvf opendkim-2.4.2.tar.gz
cd opendkim-2.4.2
./configure --sysconfdir=/etc --prefix=/usr/local --localstatedir=/var
make
make install

请注意,./ configure命令包括一些非常重要的标志,它将被传递到在configure命令运行时创建的启动脚本。 第一个告诉系统OpenDKIM的conf文件将位于哪个位置,第二个为其他重要文件位置设置首选前缀,最后一个控制OpenDKIM的PID文件将被存储的目录。

4创建新用户

使用以下选项为DKIM添加名为opendkim的新用户:

useradd -r -U -s /sbin/nologin opendkim

此命令将创建一个名为opendkim的新系统帐户(-r)和组(-g),并且不为该用户(-s)指定shell访问。

5创建工作目录

为OpenDKIM创建一些新的目录,并通过以下方式为他们提供适当的所有权和权限:

mkdir -p /etc/opendkim/keys
chown -R opendkim:opendkim /etc/opendkim
chmod -R go-wrx /etc/opendkim/keys

6将启动脚本复制到/etc/init.d/

OpenDKIM的源码包包含一个contrib目录,其中包含要与所有与RedHat兼容的系统(包括Fedora和CentOS)一起使用的自定义init脚本。 您可以将其复制到/etc/init.d/目录,以便启动,停止,重新启动并重新加载OpenDKIM:

cp /usr/local/src/opendkim-2.4.2/contrib/init/redhat/opendkim /etc/init.d/

现在为init脚本设置正确的权限:

chmod 755 /etc/init.d/opendkim

7生成签名密钥

您需要为希望签署邮件的每个域生成一个私钥和一个公钥私钥存储在您的服务器上,而公钥则会在您的域的DNS记录中发布,以便接收邮件服务器可以验证您的DKIM签名的邮件。

你现在需要决定你的选择器的名字是什么。 选择器是与所有签名中包含的密钥(公共和私有密钥)关联并在DNS记录中发布的唯一关键字。 为了简单起见,我使用default作为默认选择器。 随意选择不同的东西,但是如果你这样做,你需要在整个设置中一直使用它。 此外,虽然这应该不用说,您应该在以下步骤中使用您的邮件域而不是example.com。

创建你的钥匙:

mkdir /etc/opendkim/keys/example.com
/usr/local/bin/opendkim-genkey -D /etc/opendkim/keys/example.com/ -d example.com -s default
chown -R opendkim:opendkim /etc/opendkim/keys/example.com
mv /etc/opendkim/keys/example.com/default.private /etc/opendkim/keys/example.com/default

在这个例子中,我使用了-D(目录)选项,-d(域)选项和-s(选择器)选项。 这就是你需要的一切。

8编辑配置文件

您需要创建或编辑四个文件:

- 1 /etc/opendkim.conf - OpenDKIM的主配置文件
- 2 / etc / opendkim / KeyTable - 可用于签名的密钥列表
- 3 / etc / opendkim / SigningTable - 允许签名的域和帐户列表
- 4 / etc / opendkim / TrustedHosts - 签名或验证时要“信任”的服务器列表

创建文件/etc/opendkim.conf

vi /etc/opendkim.conf

确保您的文件如下所示:

##
## opendkim.conf -- configuration file for OpenDKIM filter
##
AutoRestart             Yes
AutoRestartRate         10/1h
Canonicalization        relaxed/simple
ExternalIgnoreList      refile:/etc/opendkim/TrustedHosts
InternalHosts           refile:/etc/opendkim/TrustedHosts
KeyTable                refile:/etc/opendkim/KeyTable
LogWhy                  Yes
Mode                    sv
PidFile                 /var/run/opendkim/opendkim.pid
SignatureAlgorithm      rsa-sha256
SigningTable            refile:/etc/opendkim/SigningTable
Socket                  inet:8891@localhost
Syslog                  Yes
SyslogSuccess           Yes
TemporaryDirectory      /var/tmp
UMask                   022
UserID                  opendkim:opendkim

创建文件/ etc / opendkim / KeyTable

vi /etc/opendkim/KeyTable

确保您的文件如下所示:

default._domainkey.example.com example.com:default:/etc/opendkim/keys/example.com/default

KeyTable文件告诉OpenDKIM找到你的密钥。 KeyTable文件中的每个条目是每个关键位置的单行(例如,上述示例中的所有文本都应在文件中的单行中)。 如果要使用多个密钥(使用不同的密钥为虚拟域签名邮件),则需要在每个域的KeyTable文件中创建一个单独的行。

创建文件/ etc / opendkim / SigningTable

vi /etc/opendkim/SigningTable

确保您的文件如下所示:

*@example.com default._domainkey.example.com

SigningTable文件告诉OpenDKIM如何使用您的密钥,因为哪些发件人应该使用哪些选择器进行签名。 在上面的例子中,我说从服务器“example.com”发送邮件的所有人(*)都应该使用名为“default”的选择器。 请注意,只有SigningTable选项在文件名前使用refile:前缀,*通配符才会起作用。

创建文件/ etc / opendkim / TrustedHosts

vi /etc/opendkim/TrustedHosts

确保您的文件如下所示:

127.0.0.1
hostname1.example1.com
example1.com
hostname1.example2.com
example2.com

TrustedHosts文件告诉OpenDKIM谁使用您的密钥。 因为它在您的conf文件中被ExternalIgnoreList指令引用,所以OpenDKIM在验证收到的邮件时将忽略该主机列表,并且由于InternalHosts伪指令也被引用,所以这个主机列表将被视为“内部”,OpenDKIM将会签署外发邮件。

重要信息:请确保在TrustedHosts文件中列出本地主机(127.0.0.1)的IP地址,否则OpenDKIM将不会签署从此服务器发送的邮件。 如果您在同一网络上有多台服务器通过此服务器中继邮件,并且您也希望对其邮件进行签名,那么它们必须列在TrustedHosts文件中。 将每个条目放在自己的行上。 条目可以是主机名,域名(例如“example.com”),IP地址,IPv6地址(包括IPv4映射地址)或CIDR风格的IP规范(例如“192.168.1.0/24?”)。


分享按钮