Exim DKIM错误:DKIM:签名失败(RC -101),无论我尝试使用哪个私钥

我和Exim有这个问题。 DKIM签署传出邮件失败。

这是/ var / log / exim4 / mainlog输出(Debian Squeeze):

2012-08-02 17:11:33 1Sx1k5-0004Tk-9D <= me@my_domain.com U=me P=local S=399 2012-08-02 17:11:33 1Sx1k5-0004Tk-9D DKIM: signing failed (RC -101) 2012-08-02 17:11:33 1Sx1k5-0004Tk-9D => [email protected] R=dnslookup T=remote_smtp H=gmail-smtp-in.l.google.com [173.194.77.27] X=TLS1.0:RSA_ARCFOUR_SHA1:16 DN="C=US,ST=California,L=Mountain View,O=Google Inc,CN=mx.google.com" 

Exim的运行版本是:Exim 4.72版Berkeley DB:Berkeley DB 4.8.30 🙁 2010年4月9日)支持:crypteq iconv()IPv6 GnuTLS move_frozen_messages DKIM

正如我在这里 :

嗨乔恩,错误:“DKIM:签名失败(RC -101)”是错误代码PDKIM_ERR_RSA_PRIVKEY(从src / pdkim / pdkim.h)

 /* Function success / error codes */ #define PDKIM_OK 0 #define PDKIM_FAIL -1 #define PDKIM_ERR_OOM -100 #define PDKIM_ERR_RSA_PRIVKEY -101 #define PDKIM_ERR_RSA_SIGNING -102 #define PDKIM_ERR_LONG_LINE -103 #define PDKIM_ERR_BUFFER_TOO_SMALL -104 

并且只在一个地方返回 – 在src / pdkim / pdkim.c中

 /* Perform private key operation */ if(rsa_parse_key(&rsa, (unsigned char *)sig->rsa_privkey, strlen(sig->rsa_privkey), NULL, 0) != 0) { return PDKIM_ERR_RSA_PRIVKEY; } 

所以它看起来像parsing您为Exim生成的RSA密钥有问题。 这可能是因为密钥生成失败,或者是因为exim无法访问文件(文件权限)。 我会开始尝试重新生成您的证书。

所以问题在于私钥。

我已经尝试生成不同的密钥,但不pipe使用什么私钥,Exim仍在logging:DKIM:签名失败(RC -101)。

我试过了:

 # openssl genrsa -out dkim.private.key 768 

然后

 # openssl genrsa -out dkim.private.key 1024 

然后

 # openssl genrsa -out private.key 768 

要么

 # openssl genrsa -out private.key 1024 

即使我已经尝试过这个DKIM密钥生成向导,但是错误仍然存​​在。

这是DKIM的Eximconfiguration部分(来自/etc/exim4/exim4.conf.template):

 remote_smtp: debug_print = "T: remote_smtp for $local_part@$domain" driver = smtp dkim_domain = my_domain.com dkim_selector = dkim dkim_private_key = private.key dkim_canon = relaxed 

我使用的密钥是在/ etc / exim4中以避免权限问题

有没有人有任何想法? 我怎样才能解决这个问题,并签署我的邮件

我用exim和dkim解决了这个问题,通过设置我的私钥的绝对path(感谢@cjc):

最终的DKIMconfiguration部分如下所示:

 remote_smtp: debug_print = "T: remote_smtp for $local_part@$domain" driver = smtp dkim_domain = my_domain.com dkim_selector = dkim dkim_private_key = /absolute/path/to/my/private.key dkim_canon = relaxed 

就这样! 然后重新启动Exim