У меня как бы двойная: логин\пароль и сертификат.
Как я уже написал выше тесты провожу с утилитой 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 Яндексом эти данные не передаются видимо.
:(
Хотя вот в этом тоже был вопрос (в первом сообщении): почтовик должен передавать данные сертификата каждого отдельного клиента другому почтовику или это внутренняя информация?
Если у кого есть авторизация по сертификатам не затруднит ли отослать тестовое письмо на Яндекс и показать заголовок?