运行 Ubuntu 12.04 并尝试配置 postfix 以通过 GMAIL 中继发送和接收。我遇到了连接问题,尤其是 TLS。我尝试了许多故障排除解决方案,并更改了我的 main.cf 以解决 TLS,但仍然收到以下错误。
尝试使用以下方法调试连接问题:
`root@mailservice:/etc/postfix# openssl s_client -connect localhost:587 -starttls smtp`
我收到这些错误
`connect: Connection refused'
'connect:errno=111`
在我的日志中我看到:
Jun 11 13:54:31 mailservice postfix/smtp[3765]: warning: cannot get RSA certificate
from file /etc/postfix/cert.pem: disabling TLS support
Jun 11 13:54:31 mailservice postfix/smtp[3765]: warning: TLS library problem:
3765:error:0906D06C:PEM routines:PEM_read_bio:no start
line:pem_lib.c:696:Expecting: TRUSTED CERTIFICATE:
Jun 11 13:54:31 mailservice postfix/smtp[3765]: warning: TLS library problem:
3765:error:140DC009:SSL routines:SSL_CTX_use_certificate_chain_file:PEM
lib:ssl_rsa.c:729:
Jun 11 13:54:31 mailservice postfix/smtp[3765]: 9986B6846A: to=
<[email protected]>, relay=smtp.gmail.com[173.194.77.109]:587, delay=0.15,
delays=0.02/0.02/0.09/0.02, dsn=5.7.0, status=bounced (host
smtp.gmail.com[173.194.77.109] said: 530 5.7.0 Must issue a STARTTLS command first.
hd9sm12170509obc.6 (in reply to MAIL FROM command))
我的 main.cf 的内容(与 TLS 有关)如下所示:
#TLS Parameters
smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
#TLS Settings
smtp_use_tls = yes
smtp_tls_security_level = may
smtp_tls_loglevel = 1
smtp_enforce_tls = yes
smtp_tls_CAfile = /etc/postfix/cacert.pem
smtp_tls_cert_file = /etc/postfix/cert.pem
smtp_tls_key_file = $smtp_tls_cert_file
smtp_tls_session_cache_dataabase = btree:/var/run/smtp_tls_session_cache
smtp_tls_note_starttls_offer = yes
smtpd_use_tls = yes
smtpd_tls_security)level = may
smtpd_tls_auth_only = no
smtpd_tls_CAfile = /etc/postfix/cacert.pem
smtpd_tls_cert_file = /etc/postfix/cert.pem
smtpd_tls_key_file = /etc/postfix/key.pem
smtpd_tls_received_header = yes
smtpd_tls_session_cache_database = btree:/var/run/smtpd_tls_session_cache
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
据我所知,一切都是为了建立正确的 TLS 连接,但我不确定需要在 main.cf 或其他地方进行哪些更改才能发送邮件。
答案1
Postix 表示它无权访问证书。证书的创建和存储权限并不严格。
您需要检查所有文件是否都可以由 postfix 受限用户访问。您可以使用以下命令检查 postfix 以哪个用户身份运行:
postconf mail_owner
之后,您应该授予该用户访问配置文件中提到的所有密钥/证书的权限。
例如我的钥匙如下:
-r--r----- 1 postfix cyrus 668 4 Apr 13:17 somehost.pk
答案2
从: http://www.postfix.org/TLS_README.html...
服务器端 TLS 活动日志记录...
仅当出现问题时才使用日志级别 3。
更多的...
要获取有关 Postfix SMTP 服务器 TLS 活动的其他信息,您可以将日志级别从 0 提高到 4。每个日志级别还包括在较低日志级别记录的信息。
级别 Postfix 2.9 及更高版本 早期版本。
- 0 仅记录 TLS 握手完成时的摘要消息 — 如果不需要客户端证书验证,则不记录客户端证书信任链验证错误。禁用 TLS 活动记录。
- 1 还记录信任链验证错误和对等证书摘要信息。还记录 TLS 握手和证书信息。
- 2 还在 TLS 协商期间记录级别。
- 3 还记录 TLS 协商过程的十六进制和 ASCII 转储。
- 4 还记录 STARTTLS 之后完整传输的十六进制和 ASCII 转储。
仅在出现问题时才使用日志级别 3。强烈不建议使用日志级别 4。