Я думаю, что я близко к получению моих ПОСТФИКСНЫХ настроек к моей симпатии. Я работал, некоторый 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]
И вот то, что удаленный компьютер получает для telnet к 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 и (не) зашифрованный трафик.