Я думаю, что близок к тому, чтобы настроить POSTFIX по своему вкусу. Я провел несколько онлайн-проверок SMTP, и мой SMTP прошел все основные тесты безопасности.
Я получаю предупреждение о сертификате в Thunderbird. Я использую временный самозаверяющий сертификат, поэтому я знаю, почему возникает исключение сертификата. Это не моя проблема.
Я хочу отключить отправку любой незашифрованной и неаутентифицированной почты на SMTP-сервере. Я хочу использовать только TLS.
Я не уверен, что у меня проблема, но когда я подключаюсь к Thunderbird, я получаю предупреждение о сертификате на порт 25. Я получаю это предупреждение независимо от того, какой порт или безопасность подключения я использую. Я пробовал SSL / TLS на порте 465, STARTTLS на 587 и ни на одном порте 25. Я ожидал, что сертификат будет на порте 465 или 587.
Еще одна загадка для меня - почему я все еще могу настроить Thunderbird на использование порта 25 без защиты, и это исключение безопасности все еще появляется при отправке.
Отправка этого электронного письма все еще зашифрована?
Есть ли у меня проблема, о которой я не знаю? Как я могу заставить мой сервер отвечать на порт 465?
smtp inet n - - - - smtpd
-o smtpd_tls_auth_only=yes
-o smtp_sasl_auth_enable=no
-o smtp_tls_security_level=none
# SMTP with TLS on port 587. Currently commented.
submission inet n - - - - smtpd
-o smtpd_tls_wrappermode=yes
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_enforce_tls=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject_unauth_destination,reject
-o smtpd_sasl_tls_security_options=noanonymous
-o smtpd_sasl_security_options=noanonymous,noplaintext
# SMTP over SSL on port 465.
smtps inet n - - - - smtpd
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_tls_auth_only=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject_unauth_destination,reject
-o smtpd_sasl_security_options=noanonymous,noplaintext
-o smtpd_sasl_tls_security_options=noanonymous
append_dot_mydomain = no
biff = no
broken_sasl_auth_clients = yes
config_directory = /etc/postfix
content_filter = amavis:[127.0.0.1]:10024
disable_vrfy_command = yes
dovecot_destination_recipient_limit = 1
enable_original_recipient = no
header_checks = regexp:/etc/postfix/header_checks
inet_interfaces = all
mailbox_size_limit = 0
maximal_backoff_time = 8000s
maximal_queue_lifetime = 7d
minimal_backoff_time = 1000s
mydestination =
myhostname = localbark.info
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mynetworks_style = host
myorigin = /etc/hostname
queue_directory = /var/spool/postfix
readme_directory = no
recipient_delimiter = +
smtp_helo_timeout = 60s
smtp_sasl_security_options = noplaintext, noanonymous
smtp_tls_note_starttls_offer = yes
smtp_tls_security_level = may
smtpd_banner = $myhostname ESMTP $mail_name
smtpd_client_restrictions = reject_rbl_client sbl.spamhaus.org, reject_rbl_client blackholes.easynet.nl, reject_rbl_client dnsbl.njabl.org
smtpd_data_restrictions = reject_unauth_pipelining
smtpd_delay_reject = yes
smtpd_hard_error_limit = 12
smtpd_helo_required = yes
smtpd_helo_restrictions = permit_mynetworks, warn_if_reject reject_non_fqdn_hostname, reject_invalid_hostname, permit
smtpd_recipient_limit = 16
smtpd_recipient_restrictions = reject_unauth_pipelining, permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_recipient, reject_unknown_recipient_domain, reject_unauth_destination, check_policy_service inet:127.0.0.1:10023, permit
smtpd_relay_restrictions = reject_unauth_pipelining, permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_recipient, reject_unknown_recipient_domain, reject_unauth_destination, check_policy_service inet:127.0.0.1:10023, permit
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = yes
smtpd_sasl_path = private/auth
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_sender_restrictions = permit_sasl_authenticated, permit_mynetworks, warn_if_reject reject_non_fqdn_sender, reject_unknown_sender_domain, reject_unauth_pipelining, permit
smtpd_soft_error_limit = 3
smtpd_tls_CAfile = /rootCA.pem
smtpd_tls_cert_file = /device.crt
smtpd_tls_key_file = /device.key
smtpd_tls_loglevel = 3
smtpd_tls_mandatory_protocols = !SSLv2,!SSLv3
smtpd_tls_received_header = yes
smtpd_tls_security_level = may
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
unknown_local_recipient_reject_code = 450
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf, mysql:/etc/postfix/mysql_virtual_alias_domainaliases_maps.cf
virtual_gid_maps = static:8
virtual_mailbox_base = /var/vmail
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf, mysql:/etc/postfix/mysql_virtual_mailbox_domainaliases_maps.cf
virtual_transport = dovecot
virtual_uid_maps = static:150
Мой почтовый сервер использует STARTTLS, но только на порту 25. И почта успешно отправляется на порт 25. Когда я пытаюсь использовать STARTTLS на 587, мой почтовый клиент (Thunderbird) выходит из строя. Вот что находится в файле mail.log
Jan 27 11:55:21 mail2 postfix/submission/smtpd[2229]: initializing the server-side TLS engine
Jan 27 11:55:22 mail2 postfix/submission/smtpd[2229]: warning: hostname XXXXXXX.com does not resolve to address XX.XX.XX.XX: Name or service not known
Jan 27 11:55:22 mail2 postfix/submission/smtpd[2229]: connect from unknown[XX.XXX.XX.XX]
Jan 27 11:55:22 mail2 postfix/submission/smtpd[2229]: setting up TLS connection from unknown[XX.XXX.XX.XX]
Jan 27 11:55:22 mail2 postfix/submission/smtpd[2229]: unknown[XX.XXX.XX.XX]: TLS cipher list "aNULL:-aNULL:ALL:!EXPORT:!LOW:+RC4:@STRENGTH"
Jan 27 11:55:22 mail2 postfix/submission/smtpd[2229]: SSL_accept:before/accept initialization
Jan 27 11:55:22 mail2 postfix/submission/smtpd[2229]: read from 7F3F40B73C60 [7F3F40B86E70] (11 bytes => -1 (0xFFFFFFFFFFFFFFFF))
Jan 27 11:57:11 mail2 postfix/submission/smtpd[2229]: read from 7F3F40B73C60 [7F3F40B86E70] (11 bytes => 0 (0x0))
Jan 27 11:57:11 mail2 postfix/submission/smtpd[2229]: SSL_accept error from unknown[XX.XXX.XX.XX]: lost connection
Jan 27 11:57:11 mail2 postfix/submission/smtpd[2229]: lost connection after CONNECT from unknown[XX.XXX.XX.XX]
Jan 27 11:57:11 mail2 postfix/submission/smtpd[2229]: disconnect from unknown[XX.XXX.XX.XX]
А вот что получает удаленный компьютер за телнет на 587
telnet mail.example.com 587
Trying xxx.xxx.xxx.xx...
Connected to mail.example.com.
Escape character is '^]'.
ehlo testing
Connection closed by foreign host.
Что ж, похоже, вы путаете SMTPD с SMTP. Эти два зверя имеют разные цели в терминах постфикса. smtpd
SMTP-сервер использовался для получения электронной почты, он привязан к определенному порту (например, 25, 587, 465). smtp
был SMTP-клиент, который использовался для отправки электронной почты, он подключается к порту SMTP-сервера.
Еще одна путаница связана с STARTTLS, SMTPS и электронной почтой без шифрования. По умолчанию postfix будет отправлять и получать электронную почту без шифрования. Для метода шифрования SMTP имеет две схемы: STARTTLS и SMTPS. С STARTTLS клиент инициирует соединение с незашифрованной формой и обновит его до зашифрованного позже. Теперь SMTPS для SMTP был похож на HTTPS для HTTP. В отличие от STARTTLS, клиент инициирует соединение с помощью согласования TLS, а затем запускает чат SMTP поверх TLS. Обычно smtpd с возможностью STARTTLS прослушивает порт 587, а STMPS - порт 465. Для получения дополнительной информации см. Этот вопрос SO: В чем разница между портами 465 и 587?
Теперь поговорим о postfix. По умолчанию каждый процесс в постфиксе получает конфигурацию от main.cf
(вы можете просмотреть изменения через postconf -n
как указано выше). Конечно, вы можете переопределить постфиксную службу через master.cf
как вы делаете для трех процессов smtpd для разных портов. В этом случае вы хотите переопределить параметр, чтобы
Чтобы отключить предупреждение о сертификате в порту 25, просто укажите smtpd_tls_security_level = none
лайк
smtp inet n - - - - smtpd
-o smtpd_tls_auth_only=yes
-o smtpd_sasl_auth_enable=no
-o smtpd_tls_security_level=none
Вы можете заметить, что я заменяю smtp_
параметр с smtpd_
. См. Официальную документацию по smtpd_tls_security_level.
Чтобы включить SMTPS для порта 465, используйте параметр smtpd_tls_wrappermode = yes
. Ваша конфигурация выше выглядит нормально.
Теперь, поскольку нам нужен STARTTLS (не SMTPS) в порту 587, вам не нужно указывать smtpd_tls_wrappermode = yes
в службе подачи. Убери это.
Ошибка, возникающая при подключении к порту 587, была вызвана этим smtpd_tls_wrappermode параметр. Postfix ожидает, что вы будете разговаривать с зашифрованным трафиком, и вы укажете команду в виде обычного текста.
Параметр -o smtpd_tls_wrappermode=yes
заставлял почтовый сервер не отвечать на sumission
протокол. Как только я удалил этот параметр в master.cf, EHLO получил ответ на telnet на порт 587, и почтовый клиент Thunderbird успешно отправил почту на порт 587 вместо 25. Итак, вот мой фрагмент master.cf для отправки ( TLS) протокол:
submission inet n - - - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_enforce_tls=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject_unauth_destination,reject
-o smtpd_sasl_tls_security_options=noanonymous
-o smtpd_sasl_security_options=noanonymous,noplaintext
# -o smtpd_tls_wrappermode=yes # This one was the issue*****
Мне интересно, неужели я просто не понимаю, где это вызывает проблему. Я не нашел никаких ссылок в документации по postfix или в поиске через serverfault.com, Google и т. Д.
Надеюсь, это поможет некоторым несчастным несчастным подошвам в будущем. :-)
Помимо конфигурации постфикса вам следует использовать такой инструмент, как https://www.wireshark.org/ чтобы проверить, что на самом деле происходит во время передачи. Вы также должны увидеть STARTTLS и (не) зашифрованный трафик.