Я создал файлы ssl с помощью letsencrypt, все установлено и настроено, но мои IMAP и SMTP не работают. В файле /var/log/mail.log я могу найти эту ошибку:
dovecot: imap-login: Отключено (отключено до того, как аутентификация была готова, ожидание 0 секунд): user=<>, TLS-квитирование: SSL_accept() не удалось: ошибка: 14094412: Процедуры SSL: ssl3_read_bytes: sslv3 оповещение о недопустимом сертификате: номер предупреждения SSL 42
Журнал сбоя SMTP отсутствует.
/etc/postfix/main.cf
# Смотрите /usr/share/postfix/main.cf.dist для более полной версии с комментариями
# Специально для Debian: указание имени файла приведет к первому
# строка этого файла, которая будет использоваться в качестве имени. Дебиан по умолчанию
# это /etc/mailname.
#myorigin = /etc/mailname
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
биф = нет
# добавление .domain - это работа MUA.
append_dot_mydomain = нет
# Раскомментируйте следующую строку, чтобы сгенерировать предупреждение об "отложенной почте"
#delay_warning_time = 4 часа
readme_directory = нет
# См. http://www.postfix.org/COMPATIBILITY_README.html -- по умолчанию 2 на
# свежие установки.
уровень_совместимости = 2
# TLS-параметры
smtpd_tls_cert_file=/etc/letsencrypt/live/domain.net/fullchain.pem
smtpd_tls_key_file=/etc/letsencrypt/live/domain.net/privkey.pem
smtpd_tls_security_level=может
smtp_tls_CApath=/etc/ssl/сертификаты
smtp_tls_security_level=может
smtp_tls_session_cache_database = btree:${каталог_данных}/smtp_scache
smtpd_relay_restrictions = Permit_MyNetworks Permit_Sasl_Authenticated defer_unauth_destination
myhostname = mail.domain.net
alias_maps = хеш:/и т.д./псевдонимы
alias_database = хэш:/и т.д./псевдонимы
myorigin = /etc/mailname
mydestination = $myhostname, domain.net, blue, localhost.localdomain, localhost
ретранслятор =
мои сети = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
почтовый ящик_размер_лимит = 0
получатель_разделитель = +
inet_interfaces = все
inet_protocols = все
mailbox_transport = lmtp:unix:private/dovecot-lmtp
smtputf8_enable = нет
# Конфигурация Milter
milter_default_action = принять
milter_protocol = 6
smtpd_milters = локальный:opendkim/opendkim.sock
non_smtpd_milters = $smtpd_milters
10-ssl.conf
##
## Настройки SSL
##
# Поддержка SSL/TLS: да, нет, требуется. <doc/wiki/SSL.txt>
SSL = требуется
# Сертификат X.509 SSL/TLS и закрытый ключ в кодировке PEM. Они открыты раньше
# сбрасываем привилегии суперпользователя, поэтому держите ключевой файл недоступным для чтения кем-либо, кроме
# корень. Включенный doc/mkcert.sh можно использовать для простого создания самозаверяющих сертификатов.
# сертификат, только не забудьте обновить домены в dovecot-openssl.cnf
ssl_cert = </etc/letsencrypt/live/domain.net/fullchain.pem
ssl_key = </etc/letsencrypt/live/domain.net/privkey.pem
# Если ключевой файл защищен паролем, введите пароль здесь. Альтернативно
# дать его при запуске dovecot с параметром -p. Поскольку этот файл часто
# доступный для чтения всем, вы можете вместо этого поместить этот параметр в другой
# файл 0600, принадлежащий root, используя ssl_key_password = <path.
#ssl_key_password =
# Доверенный центр сертификации с кодировкой PEM. Установите это, только если вы собираетесь использовать
# ssl_verify_client_cert=да. Файл должен содержать сертификат(ы) ЦС.
# за которым следует соответствующий CRL. (например, ssl_ca = </etc/ssl/certs/ca.pem)
#ssl_ca =
# Требовать успешной проверки CRL для клиентских сертификатов.
#ssl_require_crl = да
# Каталог и/или файл для доверенных сертификатов SSL CA. Они используются только
# когда Dovecot нужно действовать как SSL-клиент (например, серверная часть imapc или
# служба отправки). Каталог обычно /etc/ssl/certs в
# Системы на основе Debian и файл /etc/pki/tls/cert.pem в
# Системы на базе RedHat.
ssl_client_ca_dir = /etc/ssl/сертификаты
#ssl_client_ca_file =
# Требовать действительный сертификат при подключении к удаленному серверу
#ssl_client_require_valid_cert = да
# Запросить у клиента отправку сертификата. Если вы также хотите, чтобы это требовалось, установите
# auth_ssl_require_client_cert=yes в разделе аутентификации.
#ssl_verify_client_cert = нет
# Какое поле из сертификата использовать для имени пользователя. общее имя и
# x500UniqueIdentifier являются обычным выбором. Вам также необходимо установить
# auth_ssl_username_from_cert=да.
#ssl_cert_username_field = общее имя
# Параметры SSL DH
# Создать новые параметры с помощью `openssl dhparam -out /etc/dovecot/dh.pem 4096`
# Или мигрируйте из старого файла ssl-parameters.dat с помощью команды dovecot
# выдает при запуске, когда ssl_dh не установлен.
ssl_dh = </usr/share/dovecot/dh.pem
# Минимальная версия протокола SSL для использования. Потенциально распознаваемые значения: SSLv3,
# TLSv1, TLSv1.1 и TLSv1.2, в зависимости от используемой версии OpenSSL.
#ssl_min_protocol = TLSv1
# Используемые шифры SSL, по умолчанию:
#ssl_cipher_list = ALL:!kRSA:!SRP:!kDHd:!DSS:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!PSK:!RC4:!ADH:!LOW@STRENGTH
# Чтобы отключить не-EC DH, используйте:
#ssl_cipher_list = ALL:!DH:!kRSA:!SRP:!kDHd:!DSS:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!PSK:!RC4:!ADH:!LOW@ СИЛА
# Список используемых эллиптических кривых, разделенных двоеточиями. Пустое значение (по умолчанию)
# означает использование значений по умолчанию из библиотеки SSL. P-521:P-384:P-256 будет
# пример допустимого значения.
#ssl_curve_list =
# Предпочитать порядок шифров сервера порядку клиента.
#ssl_prefer_server_ciphers = да
# Используемое криптоустройство SSL, для допустимых значений запустите "openssl engine"
#ssl_crypto_device =
# Дополнительные параметры SSL. В настоящее время поддерживаются следующие параметры:
#compression - Включить сжатие.
# no_ticket - Отключить билеты сеанса SSL.
#ssl_options =
ssl_min_protocol = TLSv1.2
Виртуальный хост Apache mail.domain.net.conf
<VirtualHost *:80>
ServerName mail.domain.net
DocumentRoot /var/www/html/
ErrorLog ${APACHE_LOG_DIR}/roundcube_error.log
CustomLog ${APACHE_LOG_DIR}/roundcube_access.log combined
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/html/>
Options FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>
<VirtualHost *:443>
ServerName mail.domain.net
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/roundcube_error.log
CustomLog ${APACHE_LOG_DIR}/roundcube_access.log combined
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/html/>
Options FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/domain.net/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/domain.net/privkey.pem
</VirtualHost>
dovecot.conf
## Конфигурационный файл Dovecot
# Если вы спешите, см. http://wiki2.dovecot.org/QuickConfiguration
# Команда "doveconf -n" дает чистый вывод измененных настроек. Используй это
# вместо копирования и вставки файлов при публикации в списке рассылки Dovecot.
# Символ '#' и все, что следует за ним, считается комментарием. Дополнительные места
# и вкладки игнорируются. Если вы хотите использовать любой из них явно, поместите
# значение в кавычках, например: key = "# символ и завершающий пробел "
# Большинство (но не все) настроек могут быть переопределены различными протоколами и/или
# IP-адреса источника/назначения, разместив настройки внутри разделов, например:
# протокол imap { }, локальный 127.0.0.1 { }, удаленный 10.0.0.0/8 { }
# Для каждой настройки показаны значения по умолчанию, раскомментировать не требуется
# те. Однако это исключения из этого: нет разделов (например, пространство имен {})
# или настройки плагина добавлены по умолчанию, они приведены только в качестве примера.
# Пути также являются просто примерами, а реальные значения по умолчанию основаны на конфигурации
# параметры. Перечисленные здесь пути предназначены для настройки --prefix=/usr
# --sysconfdir=/etc --localstatedir=/var
# Включить установленные протоколы
протоколы = imap lmtp
!include_try /usr/share/dovecot/protocols.d/*.protocol
# Разделенный запятыми список IP-адресов или хостов, где прослушивать подключения.
# "*" прослушивает все интерфейсы IPv4, "::" прослушивает все интерфейсы IPv6.
# Если вы хотите указать порты не по умолчанию или что-то более сложное,
# отредактируйте conf.d/master.conf.
#слушай = *, ::
# Базовый каталог для хранения данных времени выполнения.
#base_dir = /var/run/dovecot/
# Имя этого экземпляра. В многоэкземплярной настройке doveadm и другие команды
# можно использовать -i <имя_экземпляра> для выбора используемого экземпляра (альтернативный
# на -c <config_path>). Имя экземпляра также добавляется в процессы Dovecot.
# в выводе PS.
#instance_name = голубятня
# Приветственное сообщение для клиентов.
#login_greeting = Голубятня готова.
# Список диапазонов доверенных сетей, разделенных пробелами. Соединения из этих
# IP-адресам разрешено переопределять свои IP-адреса и порты (для регистрации и
# для проверки подлинности). disable_plaintext_auth также игнорируется для
# эти сети. Обычно вы указываете здесь свои прокси-серверы IMAP.
#login_trusted_networks =
# Разделенный пробелами список сокетов для проверки доступа (например, tcpwrap)
#login_access_sockets =
# С proxy_maybe=yes, если пункт назначения прокси соответствует любому из этих IP-адресов, не делайте
# проксирование. Обычно в этом нет необходимости, но может быть полезно, если пункт назначения
# IP, например. IP-адрес балансировщика нагрузки.
#auth_proxy_self =
# Показать более подробные заголовки процессов (в ps). В настоящее время показывает имя пользователя и
# Айпи адрес. Полезно, чтобы увидеть, кто на самом деле использует процессы IMAP.
# (например, общие почтовые ящики или если один и тот же uid используется для нескольких учетных записей).
#verbose_proctitle = нет
# Должны ли все процессы быть уничтожены при завершении работы главного процесса Dovecot.
# Установка этого параметра в "no" означает, что Dovecot можно обновить без
# принудительное закрытие существующих клиентских соединений (хотя это также может быть
# проблема, если обновление, например. из-за исправления безопасности).
#shutdown_clients = да
# Если не ноль, запускайте почтовые команды через это количество подключений к серверу doveadm,
# вместо того, чтобы запускать их непосредственно в одном процессе.
#doveadm_worker_count = 0
# Сокет или хост UNIX: порт, используемый для подключения к серверу doveadm
#doveadm_socket_path = doveadm-сервер
# Разделенный пробелами список переменных окружения, которые сохраняются в Dovecot
# запуска и передается всем своим дочерним процессам. Вы также можете дать
# пары ключ=значение, чтобы всегда устанавливать определенные настройки.
#import_environment = ТЗ
##
## Настройки сервера словарей
##
# Словарь можно использовать для хранения списков ключ=значение. Это используется несколькими
# плагины. Доступ к словарю возможен как напрямую, так и через
# сервер словарей. Следующий блок dict сопоставляет имена словарей с URI.
# когда сервер используется. Затем на них можно ссылаться, используя URI в формате
# "прокси::<имя>".
дикт {
#quota = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext
#expire = sqlite:/etc/dovecot/dovecot-dict-sql.conf.ext
}
# Большая часть фактической конфигурации приведена ниже. Имена файлов
# сначала сортируются по их значению ASCII и анализируются в этом порядке. 00-префиксы
# в именах файлов предназначены для облегчения понимания порядка.
!include conf.d/*.conf
# Конфигурационный файл также можно попытаться подключить без выдачи ошибки, если
# не найдено:
!include_try local.conf
10-auth.conf
##
## Процессы аутентификации
##
# Отключите команду LOGIN и все другие аутентификации открытым текстом, если только
# Используется SSL/TLS (возможность LOGINDISABLED). Обратите внимание, что если удаленный IP
# соответствует локальному IP (т.е. вы подключаетесь с того же компьютера),
# соединение считается безопасным и разрешена аутентификация открытым текстом.
# См. также параметр ssl=required.
disable_plaintext_auth = да
# Размер кэша аутентификации (например, 10M). 0 означает, что он отключен. Обратите внимание, что
# bsdauth, PAM и vpopmail требуют, чтобы cache_key был установлен для использования кэширования.
#auth_cache_size = 0
# Время жизни кэшированных данных. После истечения TTL кэшированная запись исчезает.
# больше не используется, *кроме* случаев, когда поиск в основной базе данных возвращает внутреннюю ошибку.
# Мы также пытаемся автоматически обрабатывать изменения пароля: если предыдущий
# аутентификация прошла успешно, а эта нет, кеш не используется.
# На данный момент это работает только с аутентификацией открытым текстом.
#auth_cache_ttl = 1 час
# TTL для отрицательных попаданий (пользователь не найден, пароль не совпадает).
# 0 полностью отключает их кеширование.
#auth_cache_negative_ttl = 1 час
# Разделенный пробелами список областей для механизмов аутентификации SASL, которым требуется
# их. Вы можете оставить его пустым, если не хотите поддерживать несколько областей.
# Многие клиенты просто используют первую из перечисленных здесь, так что оставьте область по умолчанию
# первый.
#auth_realms =
# Область/домен по умолчанию для использования, если ничего не указано. Это используется для обоих
# Области SASL и добавление @domain к имени пользователя в логинах с открытым текстом.
#auth_default_realm =
# Список разрешенных символов в имени пользователя. Если данное пользователем имя пользователя содержит
# символ, не указанный здесь, вход автоматически завершается ошибкой. Это просто
# дополнительная проверка, чтобы убедиться, что пользователь не может использовать потенциальное экранирование цитаты
# уязвимости с базами данных SQL/LDAP. Если вы хотите разрешить все символы,
# установить это значение пустым.
#auth_username_chars = abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@
# Перевод символов имени пользователя перед его поиском в базах данных.
# значение содержит ряд символов от -> до. Например, "#@/@" означает
# что символы '#' и '/' преобразуются в '@'.
#auth_username_translation =
# Форматирование имени пользователя перед его поиском в базах данных. Ты можешь использовать
# стандартные переменные здесь, например. %Lu записывает имя пользователя в нижнем регистре, %n —
# удалить домен, если он был задан, иначе "%n-AT-%d" изменит "@" на
# "-В-". Этот перевод делается после изменения auth_username_translation.
auth_username_format = %n
# Если вы хотите разрешить главным пользователям входить в систему, указав
# имя пользователя в пределах обычной строки имени пользователя (т. е. без использования механизма SASL).
# поддержка этого), вы можете указать здесь символ-разделитель. Формат
# тогда <имя пользователя><разделитель><имя главного пользователя>. UW-IMAP использует «*» в качестве
# разделитель, так что это может быть хорошим выбором.
#auth_master_user_separator =
# Имя пользователя, которое будет использоваться для входа пользователей с помощью механизма ANONYMOUS SASL
#auth_anonymous_username = анонимный
# Максимальное количество рабочих процессов dovecot-auth. Они используются для выполнения
# блокировка запросов passdb и userdb (например, MySQL и PAM). Они
# автоматически создается и уничтожается по мере необходимости.
#auth_worker_max_count = 30
# Имя хоста для использования в основных именах GSSAPI. По умолчанию используется
# имя, возвращаемое функцией gethostname(). Используйте "$ALL" (с кавычками), чтобы разрешить все вкладки.
# записи.
#auth_gssapi_hostname =
# Таблица ключей Kerberos для использования в механизме GSSAPI. Будет использовать систему
# по умолчанию (обычно /etc/krb5.keytab), если не указан. Возможно, вам придется изменить
# служба аутентификации, которую нужно запустить от имени пользователя root, чтобы прочитать этот файл.
#auth_krb5_keytab =
# Выполнить аутентификацию NTLM и GSS-SPNEGO с помощью демона Samba winbind и
# помощник ntlm_auth. <doc/wiki/Аутентификация/Механизмы/Winbind.txt>
#auth_use_winbind = нет
# Путь к вспомогательному бинарному файлу Samba ntlm_auth.
#auth_winbind_helper_path = /usr/bin/ntlm_auth
# Время задержки перед ответом на неудачную аутентификацию.
#auth_failure_delay = 2 секунды
# Требовать действующий сертификат клиента SSL, иначе аутентификация завершится неудачно.
#auth_ssl_require_client_cert = нет
# Берем имя пользователя из SSL-сертификата клиента, используя
# X509_NAME_get_text_by_NID(), который возвращает DN субъекта
# Распространенное имя.
#auth_ssl_username_from_cert = нет
# Список необходимых механизмов аутентификации, разделенных пробелами:
# простой логин дайджест-md5 cram-md5 ntlm rpa apop анонимный gssapi otp skey
# gss-spnego
# ПРИМЕЧАНИЕ. См. также параметр disable_plaintext_auth.
auth_mechanisms = простой логин
##
## Базы паролей и пользователей
##
#
# База паролей используется для проверки пароля пользователя (и не более того).
# У вас может быть несколько баз данных passdb и userdbs. Это полезно, если вы хотите
# разрешить как системным пользователям (/etc/passwd), так и виртуальным пользователям входить в систему без
# дублирование пользователей системы в виртуальную базу данных.
#
# <doc/wiki/PasswordDatabase.txt>
#
# База данных пользователей указывает, где находятся письма и какие идентификаторы пользователей/групп
# владеть ими. Для конфигурации с одним UID используйте «статическую» базу данных пользователя.
#
# <doc/wiki/UserDatabase.txt>
#!include auth-deny.conf.ext
#!include auth-master.conf.ext
!include auth-system.conf.ext
#!include auth-sql.conf.ext
#!include auth-ldap.conf.ext
#!include auth-passwdfile.conf.ext
#!include auth-checkpassword.conf.ext
#!include auth-vpopmail.conf.ext
#!include auth-static.conf.ext
В моих настройках DNS у меня есть запись «Почтовый IP» и запись «MX domain.net mail.domain.net».