S/MIME Parte 2: Firmado, Sellado y Entregado a través de SparkPost
Correo electrónico
·
31 dic 2018

Puntos clave
Premisa: La Parte 2 pasa de la teoría de S/MIME a la práctica, demostrando cómo firmar digitalmente y encriptar correos electrónicos utilizando SparkPost como la plataforma de entrega.
Objetivo: Equipar a los desarrolladores con un flujo de trabajo ligero y de línea de comandos para firmar mensajes salientes, verificar firmas y (opcionalmente) encriptar contenido para destinatarios específicos.
Destaques:
Configuración: Instalar las herramientas de demostración de código abierto desde GitHub (con comprobaciones automáticas de Travis + pytest). El Pipfile maneja todas las dependencias de Python.
Claves del remitente:
Crear un certificado autofirmado o emitido por CA (
.p12) para tu identidad de correo electrónico.Divídelo en archivos privados (
.pem) y públicos (.crt) para que los use la herramienta de firma.
Firmar:
Usar el script
sparkpostSMIME.pyincluido para firmar mensajes de prueba (e.g.,tests/declaration.eml).Confirmar firmas visualmente en clientes como Thunderbird (ícono de punto rojo).
Encriptación:
Obtener el certificado público (
.crt) de cada destinatario.Ejecutar la herramienta nuevamente para producir un mensaje firmado y encriptado.
Los destinatarios pueden verificar y desencriptar usando sus claves privadas.
Entrega a través de SparkPost:
Configurar un dominio de envío válido y una clave API.
Enviar mensajes a través de la API de SparkPost con el seguimiento desactivado para preservar la integridad.
Utilidad adicional – mimeshow:
Muestra la estructura MIME RFC822 legible para humanos para depuración o inspección.
Consejos prácticos:
Mantener los nombres de archivo alineados con la dirección De:
Evitar modificar los cuerpos de mensajes después de firmar.
Usar Cco solo para copias de archivo: esos destinatarios no pueden desencriptar si el correo está encriptado a una única dirección Para.
Destacados de Q&A
¿Por qué usar S/MIME signing?
Autentica al remitente y asegura la integridad del mensaje — los clientes como Thunderbird muestran un indicador visual cuando la firma es válida.
¿Cómo obtengo mi certificado de remitente?
O bien, autografiar con OpenSSL (para pruebas) u obtener un certificado confiable de proveedores como Comodo (gratuito para uso no comercial).
¿Puedo encriptar mensajes para múltiples destinatarios?
Solo si tienes la clave pública de cada destinatario. El script de demostración cifra a la única dirección To por defecto.
¿Qué medidas de seguridad evitan que las firmas se rompan durante el tránsito?
La herramienta establece las opciones de SparkPost API para el envío transaccional y desactiva el seguimiento de apertura/clic, por lo que la carga útil pasa sin cambios.
¿Cuál es el papel de mimeshow?
Analiza archivos de correo electrónico en bruto y muestra su estructura multipartes — útil para inspeccionar firmas S/MIME, archivos adjuntos y encabezados.
¿Qué sigue en la serie?
La parte 3 extiende estas capacidades de S/MIME a plataformas de correo electrónico seguro en las instalaciones como PowerMTA y Momentum.
En la parte 1, hicimos un rápido recorrido por S/MIME, observando la firma y el cifrado de nuestros flujos de mensajes a través de una variedad de clientes de correo. Los mensajes S/MIME pueden ser firmados (dando prueba de la identidad del remitente), cifrados (manteniendo el contenido del mensaje en secreto) o ambos.

En esta entrega, vamos a:
Instalar algunas herramientas simples de línea de comandos para firmar y cifrar correos electrónicos
Obtener su clave/certificado de remitente para firmar
Enviar un mensaje firmado a través de SparkPost, y ver el mensaje recibido
Opcionalmente, obtener su certificado de destinatario para cifrar
Enviar un mensaje firmado y cifrado a través de SparkPost, y ver el mensaje recibido
Probar una herramienta independiente útil “mimeshow” para ver los internos del archivo de correo electrónico.
¡Bien, empecemos!
Función adicional: mostrar partes MIME con “mimeshow”
1. Instala las herramientas
2. Obtenga su clave / certificado del remitente para firmar
3. Enviar un mensaje firmado a través de SparkPost
4. Cifrado de mensajes
Más pensamientos y cosas a las que prestar atención
Esta herramienta adopta un enfoque súper simple para reunir las claves necesarias: simplemente busca archivos con nombre en el directorio actual. Se podrían añadir arreglos más complejos, como tener todas las claves en una base de datos, pero quería que el código fuera lo más simple posible.
Puedes incluir otros destinatarios con Cc: y Bcc: y serán entregados; esto podría ser útil para fines de archivo. Los mensajes firmados son recibidos y pueden ser mostrados por otros destinatarios junto con la firma. La herramienta elimina el encabezado Bcc: del mensaje entregado (como lo haría un cliente de correo de escritorio).
Para asegurar que los mensajes pasen por SparkPost sin cambios (lo cual podría romper la firma), la herramienta establece opciones de API para correos “transaccionales”, con seguimiento de apertura y clics desactivado.
Si usas cifrado, ten en cuenta que la herramienta recoge la dirección única de To: para eso. Los otros destinatarios pueden descifrar el cuerpo del mensaje solo si tienen la clave privada del destinatario To:. Si solo estás usando destinatarios secundarios como un registro de las entregas realizadas, por ejemplo, eso puede estar bien de todos modos.
Firmado, sellado y entregado... soy tuyo
Esa es nuestra rápida visión general de cómo firmar, sellar y entregar mensajes S/MIME a través de SparkPost. Rápido recordatorio: el proyecto de demostración está disponible en GitHub, y he intentado hacerlo fácil de instalar y usar.










