Я установил postfix
и dovecot
, Я даже могу получать электронные письма и получать их удаленно, используя клиент Thunderbird, подключающийся через IMAP.
Однако я не могу отправлять сообщения с помощью сервера Smtp, когда я локально telnet на свой сервер, используя telnet mail.mydomain.com 25
а затем выполнить ehlo mail.mydomain.com
здесь нет 250-авт. line - это проблема и как ее исправить?
у меня есть smtpd_sasl_auth_enable = yes
в main.cf
smtpd_tls_auth_only = yes
Необходимо изменить это на
smtpd_tls_auth_only = no
Это своего рода натяжка, но вы проверили, что он прослушивает TCP 25 с помощью lsof?
Выход из postconf smtpd_tls_auth_only
smtpd_tls_auth_only = yes
?
Если да, то перед аутентификацией необходимо использовать starttls.
Можно отключить настройку, разрешающую незашифрованную аутентификацию (не рекомендуется).
Может отлаживать starttls, используя:
openssl s_client -connect $YOUR_SMTP_SERVER:25 -starttls smtp -CApath $PATH_TO_CA_DIR
Если ваш smtpd_tls_auth_only
установлен на yes
:
# postconf smtpd_tls_auth_only
smtpd_tls_auth_only = yes
Тогда у вас есть smtpd_tls_security_level
установлен в encrypt
.
# postconf smtpd_tls_security_level
smtpd_tls_security_level = encrypt
Это привело к настройке вашего порта 25 так, чтобы он никогда не предлагал STARTTLS, и прекрасно объясняет, почему следующее тестовое упражнение TLS не показывает предлагаемого шифрования:
# openssl s_client -connect $YOUR_SMTP_SERVER:25 -starttls smtp -CApath /etc/ssl/certs
CONNECTED(00000003)
write:errno=104
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 230 bytes and written 334 bytes
Verification: OK
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 0 (ok)
У вас все еще может быть свой порт 25, который предлагает только encrypt
вариант (из которого вы его установили), но тогда вы бы резко изменили природу порта 25, с которым могла бы взаимодействовать остальная часть Интернета.
Это означает, что ваш сервер никогда не сможет использоваться в глухих просторах Интернета.
Чтобы исправить это, вы должны установить следующее в /etc/postfix/main.cf
:
# smtpd_tls_security_level (empty)
# The SMTP TLS security level for the Postfix SMTP server; when a
# non-empty value is specified, this overrides the obsolete param-
# eters smtpd_use_tls and smtpd_enforce_tls.
# Specify one of the following security levels:
#
# none
# TLS will not be used.
# may
# Opportunistic TLS: announce STARTTLS support
# to remote SMTP clients, but do not require that
# clients use TLS encryption.
# encrypt
# Mandatory TLS encryption: announce STARTTLS
# support to remote SMTP clients, and require
# that clients use TLS encryption. According to
# RFC 2487 this MUST NOT be applied in case of
# a publicly-referenced SMTP server. Instead,
# this option should be used only on dedicated
# servers.
#
# Note 1: the "fingerprint", "verify" and "secure" levels
# are not supported here. The Postfix SMTP server logs a
# warning and uses "encrypt" instead. To verify remote
# SMTP client certificates, see TLS_README for a
# discussion of the smtpd_tls_ask_ccert,
# smtpd_tls_req_ccert, and permit_tls_clientcerts
# features.
#
# Note 2: The parameter setting
# "smtpd_tls_security_level = encrypt" implies
# "smtpd_tls_auth_only = yes".
#
# Note 3: when invoked via "sendmail -bs", Postfix will
# never offer STARTTLS due to insufficient privileges to
# access the server private key. This is intended behavior.
smtpd_tls_security_level = may
Коротко, encrypt
эта настройка используется практически только для определенного почтового ретранслятора и почтового бастиона в вашей частной сети. Измените это на may
.