Как зашифровать исходящую почту в postfix

Я настроил postfix и dovecot, следуя нескольким руководствам в Интернете, и постоянно сталкиваюсь с проблемой, что отправляемые мной письма не будут зашифрованы. Я тестировал настройки, отправив электронное письмо на мою учетную запись @gmail.com, так как уверен, что серверы Google будут поддерживать шифрование TLS, а электронная почта в веб-почте gmail четко показывает красный зачеркнутый замок, чтобы показать, что они не зашифрованы.

Если я установлю

smtpd_tls_security_level = encrypt
smtp_tls_security_level = encrypt 

Я получаю эту ошибку

TLS is required, but was not offered by host gmail-smtp-in.l.google.com[64.233.167.27]

И если я установлю его, может, он отправляет электронную почту, без шифрования.

Это вывод postconf -n

alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = no
home_mailbox = Maildir/
inet_interfaces = all
inet_protocols = all
mailbox_command =
mailbox_size_limit = 0
mydestination = $myhostname, localdomain, localhost, localhost.localdomain, localhost, mail.example.com, example.com
myhostname = mail.example.com
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mynetworks_style = subnet
myorigin = /etc/mailname
readme_directory = no
recipient_delimiter = +
smtp_tls_CAfile = /routeto/my.ca-bundle
smtp_tls_cert_file = /routeto/my.crt
smtp_tls_key_file = /routeto/my.key
smtp_tls_loglevel = 1
smtp_tls_note_starttls_offer = yes
smtp_tls_security_level = may
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtp_use_tls = yes
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
smtpd_client_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unknown_client_hostname
smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated reject_unauth_destination
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = example.com
smtpd_sasl_path = private/auth
smtpd_sasl_type = dovecot
smtpd_tls_CAfile = /routeto/my.ca-bundle
smtpd_tls_cert_file = /routeto/my.crt
smtpd_tls_key_file = /routeto/my.key
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_security_level = may
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = yes

и это вывод телнета на порт 25, за которым следует тест ehlo

250-mail.example.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN

и то же самое на порту 587

250-mail.example.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN

1 ответ

Решение

TLS требуется, но не предлагался хостом gmail-smtp-in.l.google.com[64.233.167.27]

Это ясно показывает, что хост не предлагает STARTTLS вашему серверу. Но известно, что gmail предлагает STARTTLS, и ваш тест с telnet подтверждает это. Я предполагаю, что вы использовали telnet из другой системы, и что ваш почтовый сервер находится за каким-то (прозрачным) межсетевым экраном, который перехватывает трафик для его анализа. Чтобы не иметь дело с зашифрованным SMTP-трафиком, это часто делается путем простого удаления команды STARTTLS из ответа сервера на EHLO, чтобы почтовый сервер предполагал, что TLS не поддерживается.

Смотрите также Что произойдет, если STARTTLS упал в SMTP?,

Другие вопросы по тегам