Usei o OpenSSL para criar uma chave privada e um certificado público autoassinado. Em seguida, criei um arquivo de Autoridade de Certificação que contém a chave privada e o certificado público (mail.example.com.pem). Em um computador cliente na LAN, eu uso o OpenSSL para conectar ao Postfix na porta 587 (SMTP) e digo ao OpenSSL para usar o arquivo da Autoridade de Certificação (mail.example.com.pem).
openssl s_client -connect mail.example.com:587 -starttls smtp -CAfile /etc/pki/tls/private/mail.example.com.pem
Isso produz um pouco de saída. Incluído na saída está o certificado público do arquivo da Autoridade de Certificação.
Depois de todo o TLS, certificado e outras informações de segurança, tenho um cursor piscando, então tento dizer Olá ao Postfix.
EHLO mail.example.com
Este comando produz "nenhum certificado de cliente apresentado."
Isso é estranho, porque posso ver literalmente o certificado público na saída anterior. Tenho a sensação de que estou perdendo algo conceitual aqui. Por exemplo, preciso dizer ao cliente para enviar ou usar o certificado público? O certificado público no servidor Postfix é diferente de um certificado de cliente?
Objetivo: Meu objetivo geral é configurar o Postfix para criptografar e-mails em vez de enviar e-mails sem criptografia.
Aqui está a saída do comando postconf -n :
data_directory = /var/lib/postfix
home_mailbox = Maildir/
inet_interfaces = all
inet_protocols = all
mail_owner = postfix
mailbox_command =
mydestination = example.com, localhost.example.com, localhost
mynetworks_style = host
queue_directory = /var/spool/postfix
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination
smtpd_sasl_auth_enable = no
smtpd_sasl_path = private/auth
smtpd_tls_CAfile = /etc/pki/tls/mail.example.com.pem
smtpd_tls_auth_only = yes
smtpd_tls_cert_file = /etc/pki/tls/mail.example.com.crt
smtpd_tls_key_file = /etc/pki/tls/mail.example.com.key
smtpd_tls_loglevel = 3
smtpd_tls_req_ccert = yes
smtpd_tls_security_level = encrypt
smtpd_tls_session_cache_database = btree:/var/lib/postfix/smtpd_tls_cache
smtpd_tls_session_cache_timeout = 3600s
tls_random_exchange_name = /var/lib/postfix/prng_exch
tls_random_source = dev:/dev/urandom
Você definiu
smtpd_tls_req_ccert
em sua configuração do Postfix.Esta diretiva exige que todos os clientes tenham um certificado de cliente emitido por você para esse cliente específico. Conexões SMTP de entrada para o seu servidor são permitidas apenas de hosts pré-aprovados.
Isso claramente não é o que você quer. Você está tentando receber e-mail de toda a Internet e não pode emitir certificados de cliente para todos os servidores SMTP do mundo.
Primeiro, remova essa diretiva e tente novamente. Você pode ter outros problemas, mas este é o que está causando o problema imediato.