Я учусь настраивать почтовый сервер. Я получил работу с postfix, теперь пробую ту же конфигурацию с Exim. Как я могу заставить клиента использовать только STARTTLS-соединение для исходящего SMTP-соединения? Я выполнил инструкции в этом вопросе.
Требовать STARTTLS для отправки электронной почты в exim
Моя конфигурация теперь выглядит следующим образом:
MAIN_TLS_ENABLE = yes
MAIN_TLS_CERTIFICATE = /etc/ssl/certs/ssl-cert-snakeoil.pem
MAIN_TLS_PRIVATEKEY = /etc/ssl/private/ssl-cert-snakeoil.key
.ifdef MAIN_TLS_ENABLE
# Defines what hosts to 'advertise' STARTTLS functionality to. The
# default, *, will advertise to all hosts that connect with EHLO.
.ifndef MAIN_TLS_ADVERTISE_HOSTS
MAIN_TLS_ADVERTISE_HOSTS = *
.endif
tls_advertise_hosts = MAIN_TLS_ADVERTISE_HOSTS
auth_advertise_hosts = ${if eq{$tls_in_cipher}{}{}{*}}
Перезапуск Exim, без ошибок. Затем я провел несколько тестов в http://checktls.com/
TestSender прошел успешно, я мог отправлять электронную почту в защищенном режиме. Но TestSenderAssureTLS не удалось, веб-сайт мог договориться о незашифрованном сообщении.
Что мне не хватает?
Когда я создаю учетную запись в Thunderbird, он автоматически обнаруживает незащищенный канал SMTP, а не канал STARTTLS. Настройка учетной записи и отправка электронной почты завершены успешно. Однако, когда я устанавливаю SMTP-диалог из оболочки компьютера в сети, аутентификация не объявляется. Это выглядит следующим образом:
EHLO <subdomain>.<domain>
250-betelgeuse Hello <subdomain>.<domain> [10.0.14.34]
250-SIZE 52428800
250-8BITMIME
250-PIPELINING
250-STARTTLS
250 HELP
AUTH LOGIN
503 AUTH command used when not advertised
Может ли кто-нибудь указать мне, чего мне не хватает, как я могу улучшить тесты? По связанной теме, как я могу рекламировать желаемую конфигурацию клиентам, выполняющим автоматическое определение? Спасибо.
Соединение STARTTLS
должно начинаться незащищенным. Опция STARTTLS
объявляется только после выполнения первой команды EHLO
. Если необходимо применить STARTTLS
, необходимо добавить или изменить опцию ACL
. Я опубликовал политику электронной почты, которую я применяю Email Policy I apply. Если этот сервер является вашим MX, вам не следует применять STARTTLS
во всех соединениях. Моя конфигурация требует STARTTLS
для соединений, требующих AUTH
. Это не включает в себя соединения из моей локальной сети, но применяется к пользователям, отправляющим электронную почту с моего сервера в роуминге. Я также требую, чтобы аутентификация происходила на порту отправки. Это основа ACL
, который я использую.
# This access control list is used after an auth command.
acl_local_auth:
# Deny authentication on unencrypted links
deny
!encrypted = *
message = AUTH encryption is required
# Deny if AUTH isn't on submission port (autolist enabled)
deny
!condition = ${if eq {$interface_port}{587}}
message = AUTH requires submission port
# Accept if encrypted (should not get here if unencrypted)
accept
encrypted = *
# Default deny отказывать в доступе на сообщение = AUTH не принято
Вы также можете применить TLS
по почте ACL
. Этот ACL позволяет внешним отправителям отправлять почту. При тестировании ACL следует рассмотреть возможность использования defer
вместо deny
. Активация ACL осуществляется путем добавления acl
утверждений в основной раздел конфигурации, а вышеуказанные ACL - в раздел ACL.
acl_smtp_auth = acl_local_auth acl_smtp_mail = acl_local_mail_from
В соответствии с вашими настройками ...
tls_advertise_hosts = MAIN_TLS_ADVERTISE_HOSTS
auth_advertise_hosts = ${if eq{$tls_in_cipher}{}{}{*}}
вам требуется соединение TLS для объявления аутентификации, поэтому инициируйте соединение с помощью openssl:
openssl s_client -connect hostname:25 -starttls smtp