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

Ошибка SSL_accept при подключении почтового клиента к postfix

Мне удалось настроить postfix и dovecot с самоподписанным сертификатом на моем сервере. Я могу отправлять и получать электронную почту с помощью команды telnet. Теперь я хочу подключиться к своему почтовому серверу из клиента Thunderbird на моем ноутбуке, но он не работает, и вот результат /var/log/mail.log:

postfix/submission/smtpd[11560]: connect from unknown[95.134.50.75]
postfix/submission/smtpd[11439]: SSL_accept error from unknown[95.134.50.75]: lost connection
postfix/submission/smtpd[11439]: lost connection after CONNECT from unknown[95.134.50.75]

Вот часть /etc/postfix/master.cf что я изменил при настройке:

# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (yes)   (never) (100)
# ==========================================================================
smtp      inet  n       -       -       -       -       smtpd
smtps     inet  n       -       -       -       -       smtpd
#smtp      inet  n       -       -       -       1       postscreen
#smtpd     pass  -       -       -       -       -       smtpd
#dnsblog   unix  -       -       -       -       0       dnsblog
#tlsproxy  unix  -       -       -       -       0       tlsproxy


submission inet n       -       -       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_wrappermode=yes
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING
  -o smtpd_sasl_type=dovecot
  -o smtpd_sasl_path=private/auth

И вот мой /etc/postfix/main.cf:

myhostname = mail.myserver.com
myorigin = /etc/mailname
mydestination = mail.myserver.com, myserver.com, localhost, localhost.localdomain
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all

alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases

smtpd_tls_cert_file=/etc/ssl/certs/mailcert.pem
smtpd_tls_key_file=/etc/ssl/private/mail.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_tls_protocols = !SSLv2, !SSLv3

smtpd_tls_security_level = may
smtp_tls_security_level = may
smtp_tls_loglevel = 1
smtpd_tls_loglevel = 1

local_recipient_maps = proxy:unix:passwd.byname $alias_maps

inet_protocols = all

Кроме того, не уверен, что это может помочь, но оба telnet localhost 25 и telnet localhost 465 работать на сервере но только telnet myserver.com 465 работает с моего ноутбука, когда я пробую порт 25, он говорит telnet: Unable to connect to remote host: Connection timed out. ufw неактивен на сервере.

Что мне делать, чтобы это исправить?

Порт 465 предназначен для SMTPS, он использует SSL сразу при установке соединения, а затем использует тот же протокол SMTP, который обычно используется на порте 25 после установления безопасного соединения. Вы тестируете из командной строки:

openssl s_client -connect smtp.example.com:465

Использование telnet для подключения к порту 465 приведет к появлению сообщения об ошибке в файлах журнала, поскольку протокол SSL не используется.

Для полноты: для проверки TLS на обычном SMTP-порту TCP / 25

openssl s_client -starttls smtp -connect  smtp.example.com:25

Единственный раз, когда я видел это, это когда Postfix блокирует клиента из-за ограничительных настроек TLS / SSL:

smtpd_tls_protocols =! SSLv2,! SSLv3

Если ваш почтовый клиент пытается использовать SSL2 или 3, то вот почему. В противном случае это также может быть связано с блокировкой, но вы могли бы подумать, что порт будет полностью заблокирован, и вы не увидите обычное клиентское соединение (например, мой интернет-провайдер полностью блокирует порт 25, и при попытке подключиться к почтовому серверу вы ничего не вижу в логах).