The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Client certificate not present"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Почта / FreeBSD)
Изначальное сообщение [ Отслеживать ]

"Client certificate not present"  –1 +/
Сообщение от microbash (ok) on 05-Май-16, 13:14 
Добрый всем день.

Как побороть богомерзкую надпись Client certificate not present
в шапке почтового сообщения если слать его например на Яндекс со своего почтовика?
яндекс при этом выставляет письмам статус X-Yandex-Spam: 1

Пробую на postfix.
Пока удалось добиться следующего состояния:
1) spf=pass,
2) domain of example.ru designates ip as permitted sender,
3) dkim=pass,
4) DomainKey навсякий случай тоже стоит, сигнатура в письме есть,
5) Trusted TLS connection established to mx.yandex.ru - также имеется. (но тут под вопросом как бы это детализировать?)

Сертификаты пробую startssl и cacert - оба бесплатные.

Принципиально не понятна природа возникновения данного косяка, и какой сертификат его принципиально устраняет:
1. сертификат почтового сервера,
(это следуют например из статьи http://koti.kapsi.fi/ptk/postfix/postfix-tls-cacert.shtml
где данный баг успешно решается, но по статье у меня не выходит побороть яндекс),
2. либо сертификат клиента почтового сервера
(тут я нашел утилитку ssmtp где можно прикрутить сертификат клиента (получается как бы имитация почтового клиента с сертификатом), но тоже пока не помогает)

Какие есть идеи? Решения? Чтобы любым способом сделать эту надпись приличной, а потом я уже буду думать на основе этого над постоянным решением.

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Client certificate not present"  +/
Сообщение от microbash (ok) on 05-Май-16, 15:42 
Дополнительно нашел вот такой сайт с показом ошибок tls: http://www.checktls.com
/perl/TestReceiver.pl

И сейчас вроде бы начинаю понимать следующее:
у меня есть два подписанных сертификата startssl 1-го уровня:
на домен example.ru
и на почтовый ящик test@example.ru

Если я ставлю в postfix сертификат на домен, то получаю ошибку вида "No client certificate presented", если я пытаюсь вместо него выставить сертификат на почтовый ящик, то получаю мессагу что домен не верифицирован. Слить их в один не получается.

Какой нужен сертификат на почтовик? Чтобы он подтверждал и домен example.ru, и все почтовые ящики с него? Можно ли такой взять на пробу на cacert.org?


Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Client certificate not present"  +/
Сообщение от microbash (ok) on 05-Май-16, 18:50 
Пример моего письма:


Received: from mxfront4h.mail.yandex.net ([127.0.0.1])
    by mxfront4h.mail.yandex.net with LMTP id RghNXkJc
    for <test@yandex.ru>; Thu, 5 May 2016 16:45:14 +0300
Received: from example.ru (example.ru [....])
    by mxfront4h.mail.yandex.net (nwsmtp/Yandex) with ESMTPS id mlGNA6ndWa-jDZGnfb0;
    Thu, 05 May 2016 16:45:13 +0300
        (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
    (Client certificate not present)               !!!!!
Return-Path: test@example.ru
X-Yandex-Front: mxfront4h.mail.yandex.net
X-Yandex-TimeMark: 1462455913
To: undisclosed-recipients:;
Authentication-Results: mxfront4h.mail.yandex.net; spf=pass (mxfront4h.mail.yandex.net: domain of example.ru designates ..... as permitted sender) smtp.mail=test@example.ru; dkim=pass header.i=@example.ru
X-Yandex-Spam: 1
From: "Charlie &" <test@example.ru>
DomainKey-Signature: a=rsa-sha1; s=email; d=example.ru; c=nofws; q=dns;
    h=from:dkim-signature:date:message-id;
    b=j0f1iTtq23zue39CYUM3PJ1TGJpSXLjDr93LE7fCfe1l/N6aelZRaWbKHVkVDVsjW
        ....
    FY4+9Fl/Q==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=example.ru; s=email;
    t=1462455912; bh=tMyAYg5a8wt0c6kpC20vE/i6p+chjPZqEeD5NWARqeQ=;
    h=From:Date;
    b=EMLmYvHxsxTy1SxAuyNiVI04tC4KmMWnAVpeMyCGI1rxAWmTCIoftYfWAO4caY6aO
        ....
     DDTR1MyE8zbVw==
Date: Thu, 05 May 2016 16:45:12 +0300
Message-Id: <20160505134512.C1DED3B161@example.ru>
X-Yandex-Forward: d10c4e0132b88e8cfd7a481df4cd2b9c

privet

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Client certificate not present"  +/
Сообщение от ALex_hha (ok) on 05-Май-16, 22:20 
> яндекс при этом выставляет письмам статус X-Yandex-Spam: 1

с чего вы взяли, что именно из-за этого яндекс считает письмо спамом?

где вывод postconf -n?

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

4. "Client certificate not present"  +/
Сообщение от microbash (ok) on 05-Май-16, 22:33 
postconf -n

address_verify_sender =
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
anvil_rate_time_unit = 60s
bounce_queue_lifetime = 1d
broken_sasl_auth_clients = yes
command_directory = /usr/local/sbin
compatibility_level = 2
cyrus_destination_recipient_limit = 1
daemon_directory = /usr/local/libexec/postfix
data_directory = /var/db/postfix
debug_peer_level = 4
debug_peer_list = example.ru
debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_                                                                                                                            id & sleep 5
default_privs = nobody
disable_vrfy_command = yes
header_checks = regexp:/usr/local/etc/postfix/header_checks
html_directory = /usr/local/share/doc/postfix
inet_interfaces = a.b.c.d
inet_protocols = ipv4
local_recipient_maps = unix:passwd.byname $alias_maps
mail_owner = postfix
mail_spool_directory = /var/mail
mailbox_size_limit = 1000000000
maildrop_destination_recipient_limit = 1
mailq_path = /usr/local/bin/mailq
manpage_directory = /usr/local/man
maximal_backoff_time = 6h
maximal_queue_lifetime = 3d
message_size_limit = 50000000
meta_directory = /usr/local/libexec/postfix
minimal_backoff_time = 180s
mydestination = localhost, localhost.$mydomain
mydomain = example.ru
myhostname = example.ru
mynetworks_style = host
myorigin = $myhostname
newaliases_path = /usr/local/bin/newaliases
queue_directory = /var/spool/postfix
readme_directory = /usr/local/share/doc/postfix
relay_clientcerts = hash:/usr/local/etc/postfix/ssl/fingerprint
relay_domains = $mydestination, $transport_maps
sample_directory = /usr/local/etc/postfix
sendmail_path = /usr/local/sbin/sendmail
setgid_group = maildrop
shlib_directory = /usr/local/lib/postfix
smtp_always_send_ehlo = yes
smtp_helo_timeout = 15s
smtp_rcpt_timeout = 15s
smtp_tls_CAfile = /usr/local/etc/postfix/ssl/ca-root-nss.crt
smtp_tls_cert_file = /usr/local/etc/postfix/ssl/example.ru_bundle.crt
smtp_tls_fingerprint_digest = md5
smtp_tls_key_file = /usr/local/etc/postfix/ssl/example.ru_bundle.crt
smtp_tls_loglevel = 3
smtp_tls_policy_maps = hash:/usr/local/etc/postfix/ssl/tls_policy
smtp_tls_scert_verifydepth = 9
smtp_tls_security_level = encrypt
smtp_tls_session_cache_database = btree:/var/db/postfix/smtp_tls_session_cache
smtp_use_tls = yes
smtpd_client_message_rate_limit = 10
smtpd_client_recipient_rate_limit = 10
smtpd_client_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unknown_client_hostname, permit
smtpd_data_restrictions = reject_unauth_pipelining
smtpd_delay_reject = yes
smtpd_etrn_restrictions = reject
smtpd_hard_error_limit = 1
smtpd_helo_required = yes
smtpd_helo_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_invalid_helo_hostname, reject_non_                                                                                                                            fqdn_helo_hostname, reject_unknown_helo_hostname, permit
smtpd_recipient_limit = 40
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_recipient, reject_un                                                                                                                            known_recipient_domain, reject_unlisted_recipient, reject_unauth_destination, permit
smtpd_reject_unlisted_recipient = yes
smtpd_reject_unlisted_sender = yes
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = yes
smtpd_sasl_local_domain = example.ru
smtpd_sasl_path = smtpd
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = cyrus
smtpd_sender_restrictions = permit_mynetworks, check_sender_access hash:/usr/local/etc/postfix/whitelist, permit_                                                                                                                            sasl_authenticated, reject_non_fqdn_sender, reject_unknown_sender_domain, reject_unverified_sender, permit
smtpd_timeout = 30s
smtpd_tls_CAfile = /usr/local/etc/postfix/ssl/ca-root-nss.crt
smtpd_tls_ask_ccert = yes
smtpd_tls_auth_only = yes
smtpd_tls_ccert_verifydepth = 9
smtpd_tls_cert_file = /usr/local/etc/postfix/ssl/example.ru_bundle.crt
smtpd_tls_key_file = /usr/local/etc/postfix/ssl/example.ru_bundle.crt
smtpd_tls_loglevel = 3
smtpd_tls_received_header = yes
smtpd_tls_req_ccert = yes
smtpd_tls_security_level = encrypt
smtpd_tls_session_cache_database = btree:/var/db/postfix/smtpd_tls_session_cache
smtpd_use_tls = yes
strict_rfc821_envelopes = yes
tls_append_default_CA = yes
tls_random_source = dev:/dev/urandom
unknown_local_recipient_reject_code = 550
virtual_alias_maps = texthash:/usr/local/etc/postfix/texthash_virtual_alias_maps.cf
virtual_mailbox_domains = texthash:/usr/local/etc/postfix/texthash_virtual_mailbox_domains.cf
virtual_transport = lmtp:unix:/var/imap/socket/lmtp

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "Client certificate not present"  +/
Сообщение от ALex_hha (ok) on 06-Май-16, 00:00 
smtpd_tls_req_ccert = yes
smtpd_tls_ask_ccert = yes

у вас что, аутентификация по сертификатам?

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "Client certificate not present"  +/
Сообщение от microbash (ok) on 06-Май-16, 09:20 
У меня как бы двойная: логин\пароль и сертификат.
Как я уже написал выше тесты провожу с утилитой ports/mail/ssmtp (в качестве эмулятора почтового клиента).
Ее можно использовать вместо стандартного sendmail, позволяет прописать логин\пароль и сертификат.


#
# /etc/ssmtp.conf -- a config file for sSMTP sendmail.
#
# Get enhanced (*really* enhanced) debugging information in the logs
# If you want to have debugging of the config file parsing, move this option
# to the top of the config file and uncomment
Debug=YES
# The person who gets all mail for userids < 1000
# Make this empty to disable rewriting.
root=postmaster
# The place where the mail goes. The actual machine name is required
# no MX records are consulted. Commonly mailhosts are named mail.domain.com
# The example will fit if you are in domain.com and your mailhub is so named.
mailhub=a.b.c.d:587
# Example for SMTP port number 2525
# mailhub=mail.your.domain:2525
# Example for SMTP port number 25 (Standard/RFC)
# mailhub=mail.your.domain
# Example for SSL encrypted connection
# mailhub=mail.your.domain:465
# Where will the mail seem to come from?
rewriteDomain=example.ru
# The full hostname
hostname=example.ru
# Set this to never rewrite the "From:" line (unless not given) and to
# use that address in the "from line" of the envelope.
FromLineOverride=YES
# Use SSL/TLS to send secure messages to server.
UseTLS=YES
UseSTARTTLS=YES
# Use SSL/TLS certificate to authenticate against smtp host.
UseTLSCert=YES
# Use this RSA certificate.
TLSCert=/usr/local/etc/ssmtp/client.crt
AuthUser=test@example.ru
AuthPass=123
AuthMethod=LOGIN

Делаю тестовую отправку письма локально:
cat mail.txt | ssmtp -v test@yandex.ru

Вывод:
[<-] 220 example.ru ESMTP Postfix
[->] EHLO example.ru
[<-] 250 SMTPUTF8
[->] STARTTLS
[<-] 220 2.0.0 Ready to start TLS
[->] EHLO example.ru
[<-] 250 SMTPUTF8
[->] AUTH LOGIN
[<-] 334 VXNlcm5hbWU6
[->] dGVzdEBjaXRlLnJ1
[<-] 334 UGFzc3dvcmQ6
[<-] 235 2.7.0 Authentication successful
[->] MAIL FROM:<test@example.ru>
[<-] 250 2.1.0 Ok
[->] RCPT TO:<test@yandex.ru>
[<-] 250 2.1.5 Ok
[->] DATA
[<-] 354 End data with <CR><LF>.<CR><LF>
[->] Received: by example.ru (sSMTP sendmail emulation); Fri, 06 May 2016 09:00:10 +0300
[->] From: "Charlie &" <test@example.ru>
[->] Date: Fri, 06 May 2016 09:00:10 +0300
[->] privet
[->]
[->] .
[<-] 250 2.0.0 Ok: queued as 1488E3B113
[->] QUIT
[<-] 221 2.0.0 Bye

В логах постфикса вижу что вроде бы сертификат подцепляется на уровне postfix/submission/smtpd:

May  6 09:00:11 example postfix/submission/smtpd[74249]: subject=/CN=test@example.ru/emailAddress=test@example.ru
May  6 09:00:11 example postfix/submission/smtpd[74249]: issuer=/C=IL/O=StartCom Ltd./OU=StartCom Certification Authority/CN=St             artCom Class 1 Client CA
May  6 09:00:11 example postfix/submission/smtpd[74249]: example.ru[a.b.c.d]: subject_CN=test@example.ru, issuer=StartCom Cla             ss 1 Client CA, fingerprint=B1:0D:E4:96:90:47:3A:28:2C:28:80:F5:75:BD:FF:C1, pkey_fingerprint=05:3A:9B:56:4B:FB:79:78:F8:CD:             88:AA:57:CF:04:A9
May  6 09:00:11 example postfix/submission/smtpd[74249]: Trusted TLS connection established from example.ru[a.b.c.d]: TLSv             1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)


А вот дальше куда-то все теряется.
И при установлении tls соединения c Яндексом эти данные не передаются видимо.
:(

Хотя вот в этом тоже был вопрос (в первом сообщении): почтовик должен передавать данные сертификата каждого отдельного клиента другому почтовику или это внутренняя информация?
Если у кого есть авторизация по сертификатам не затруднит ли отослать тестовое письмо на Яндекс и показать заголовок?

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

7. "Client certificate not present"  +/
Сообщение от ALex_hha (ok) on 06-Май-16, 09:40 
А в чем глубокий смысл юзать и пароль и сертификат для аутентификации?

Сертификат естественно никуда не должен передаваться. Ну и я так понял, что сертификат у вас самоподписанный?

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

8. "Client certificate not present"  +/
Сообщение от microbash (ok) on 06-Май-16, 13:22 
> А в чем глубокий смысл юзать и пароль и сертификат для аутентификации?

Таково скажем так требование.

> Сертификат естественно никуда не должен передаваться. Ну и я так понял, что
> сертификат у вас самоподписанный?

У меня сертификаты от STARTSSL.com 1-го класса.
1. на домен example.ru
2. на почтовый ящик test@example.ru
Сертификат на домен я также поставил на вебсайт (подключил в nginx), при заходе любой браузер не ругается как у самоподписанного, замочек показывает.


Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

9. "Client certificate not present"  +/
Сообщение от ALex_hha (ok) on 07-Май-16, 21:01 
> И при установлении tls соединения c Яндексом эти данные не передаются видимо.

а разве должны?

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

10. "Client certificate not present"  +/
Сообщение от microbash (ok) on 08-Май-16, 20:16 
Что в таком случае означает данная запись со стороны Яндекса?
(Client certificate not present)  


Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру