如何在2个后缀实例中使用opendkim套接字?

时间:2018-02-21 19:29:49

标签: sockets postfix-mta postfix dkim

我有2个postfix instaces正在运行,我想用opendkim签署电子邮件,但问题是我无法在两个实例中使用相同的套接字,代码在下面

的/ etc /默认/ opendkim

SOCKET="local:/var/spool/postfix/opendkim/opendkim.sock"
SOCKET="local:/var/spool/postfix-2/opendkim/opendkim.sock"

/etc/postfix/main.cf中

smtpd_milters = local:opendkim/opendkim.sock
non_smtpd_milters = local:opendkim/opendkim.sock

/etc/postfix-2/main.cf

smtpd_milters = local:opendkim/opendkim.sock
non_smtpd_milters = local:opendkim/opendkim.sock

请帮助我!

1 个答案:

答案 0 :(得分:1)

OpenDKIM只使用一个UNIX套接字。您不能像上面那样指定多个UNIX套接字。

选项1

在其他地方创建套接字文件,例如SOCKET="local:/var/run/opendkim/opendkim.sock"。确保Postfix的两个实例都有权访问此文件,通过opendkim组的成员身份或其他方式。

在chroot jail中为每个Postfix实例创建一个opendkim目录:

mkdir /var/spool/postfix/opendkim/
mkdir /var/spool/postfix-2/opendkim/

将包含套接字文件的目录绑定到postfix chroot jails中的每个目录。

mount --bind /var/run/opendkim/ /var/spool/postfix/opendkim/
mount --bind /var/run/opendkim/ /var/spool/postfix-2/opendkim/

Postfix的两个实例现在都应该可以访问安装在自己目录中的同一个套接字文件。如果现在正在运行,您将需要向/etc/fstab添加条目,以便在每次启动时都进行此安装。

/var/run/opendkim/ /var/spool/postfix/opendkim none defaults,bind 0 0
/var/run/opendkim/ /var/spool/postfix-2/opendkim none defaults,bind 0 0

选项2

使用TCP / IP端口而不是unix套接字在Postfix和OpenDKIM之间进行通信,例如SOCKET="inet:8891@localhost"

更改Postfix main.cf文件以使用此TCP / IP套接字:

smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891

如果Postfix无法连接,则可能需要调整防火墙以允许此连接。

如果你的外发邮件没有被签名,那么你可能需要在opendkim.conf中添加以下行:

InternalHosts           /etc/opendkim/TrustedHosts
ExternalIgnoreList      /etc/opendkim/TrustedHosts

创建此TrustedHosts文件并列出Postfix在连接到OpenDKIM时可能使用的每个IP地址和主机名,例如:

127.0.0.1
::1
localhost
hostname.example.com
example.com

此列表标识应签署哪些主机邮件,而不是应验证任何签名的外部邮件。