我正在尝试使用 Postfix(RHEL6 上的 2.6.6 版)通过我们内部网络上的邮件中继连接并发送邮件。我想在端口 25 上连接 STARTTLS(此服务器上没有端口 465)。邮件中继使用自签名 SSL/TLS 证书,因此我需要使用证书颁发机构跳过证书验证。我发现smtp_tls_security_level = fingerprint
它不检查信任链、到期日期等。相反,它使用证书指纹进行验证。
我认为这是一个完美的解决方案,但是当我尝试发送电子邮件时,我仍然会收到/var/log/maillog
那个说的错误postfix/smtp[15182]: certificate verification failed for xxxxxxxxxxxx[zz.zz.zz.zz]:25: untrusted issuer
。
我认为fingerprint
安全级别的重点是跳过证书验证。我误解了这个选项的意义吗?还有什么我需要配置的吗?
以下是来自的相关行main.cf
:
relayhost = [xxx.xxx.xxx]
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl-passwords
smtp_sasl_security_options=
smtp_generic_maps = hash:/etc/postfix/generic
smtp_use_tls = yes
smtp_tls_security_level = fingerprint
smtp_tls_fingerprint_digest = sha1
# fingerprint changed for ServerFault. just an example.
smtp_tls_fingerprint_cert_match = c1:d3:54:12:00:r0:ef:fa:42:48:10:ff:ac:1e:75:13:dd:ad:af:3e
smtp_tls_note_starttls_offer = yes
编辑:添加粗体
会在这里回答我自己的问题。我没有设法让
fingerprint
验证工作,但我确实发现了如何在没有证书验证的情况下获得 TLS。从手册:我曾经尝试过这一点,但一定没有启用所有正确的选项。但是使用上面的设置,我只是更改
smtp_tls_security_level
为encrypt
,它工作正常。由于 Postfix 已启用 chroot(在 Debian 中默认)“/etc/postfix/master.cf”:
并且变量smtp_tls_CAfile的默认值为空,解决方案通过将其设置为 de chroot 中证书文件的位置:
在“/etc/postfix/main.cf”中: