Назад | Перейти на главную страницу

Почему Postfix не объявляет AUTH во время EHLO?

Я установил 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.