Reach

Grow

Manage

Automate

Reach

Grow

Manage

Automate

S/MIME Parte 2: Firmado, Sellado y Entregado a través de SparkPost

Correo electrónico

1 min read

S/MIME Parte 2: Firmado, Sellado y Entregado a través de SparkPost

Correo electrónico

1 min read

S/MIME Parte 2: Firmado, Sellado y Entregado a través de SparkPost

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.

Diagram illustrating email security layers showing the relationship between S/MIME signing, S/MIME encryption, and TLS connections in the email delivery process from message source through email server to recipient.

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!

1. Instala las herramientas

Las herramientas de demostración están en Github aquí, completas con instrucciones de instalación. Puede notar el logo de “build passing” – Travis y pytest verifican automáticamente el estado de la construcción. Tenga en cuenta que estas herramientas no son oficialmente soportadas por SparkPost, pero he tratado de hacerlas robustas y fáciles de usar.

Si tiene algo de experiencia con Python y pip, la instalación debería resultar bastante familiar. El Pipfile se encarga automáticamente de las dependencias externas por usted. Una vez que se haya completado, puede verificar que todo esté instalado ejecutando

./sparkpostSMIME.py -h

Debería ver el texto de ayuda amigable. A continuación, necesitamos…

2. Obtenga su clave / certificado del remitente para firmar

Si ya tienes un archivo de clave para tu identidad de envío, puedes pasar al siguiente paso. De lo contrario, aquí hay dos opciones para elegir:

a) Clave/certificado de prueba autofirmado (no válido externamente)

Si solo estás probando, puedes crear certificados y claves "autofirmados" para una dirección de correo electrónico usando la herramienta de línea de comandos openssl en Linux, siguiendo un procedimiento como este. Al final de ese proceso, tendrás un archivo smime.p12. Renombra este archivo para que coincida con tu identidad de envío, incluyendo el signo @, por ejemplo, alice@example.com.p12.

o

b) Claves/certificados válidos externamente

Si deseas obtener claves/certificados válidos externamente que te permitan firmar, hay una lista de proveedores aquí. Encontré que Comodo funciona bien (gratis para uso no comercial), y es más fácil que el procedimiento de autofirma anterior. Sigue el proceso de registro, recibe tu correo de validación, y asegúrate de abrir el enlace en Firefox. Ve a las Preferencias de Firefox / Privacidad y Seguridad. Desplázate hasta Certificados / Ver Certificados:

Firefox browser settings page showing certificate management options under the Privacy & Security section, with controls for how the browser handles personal certificate requests.


Selecciona tu certificado y utiliza la opción "Respaldo" para guardar como un archivo en formato PKCS12 (agrega la extensión de archivo .p12 a tu nombre de archivo) que lleva la clave privada y la cadena de certificados públicos.

Certificate Manager window showing a list of software security device certificates from COMODO CA Limited, with details including certificate names and serial numbers


Proporciona una contraseña para asegurar el archivo .p12:

Certificate backup password entry dialog with password fields and strength meter


Generar archivos de clave pública (.crt) y privada (.pem) por separado

Ya sea que hayas usado a) o b), ahora tendrás un archivo .p12 para tu identidad de remitente. Eso es un gran avance – ¡toma un café ahora!

Ahora necesitamos generar archivos de clave pública y privada por separado de esta manera – sustituyendo tu propia dirección de correo electrónico por el ejemplo. (Mac OSX y Linux):

openssl pkcs12 -in alice\@example.com.p12 -clcerts -nokeys -out alice\@example.com.crt openssl pkcs12 -in alice\@example.com.p12 -nocerts -nodes -out alice\@example.com.pem

Necesitarás ingresar la contraseña que proporcionaste antes. Nota que esas barras invertidas \ se usan para escapar el signo @ – no para separar los nombres de una ruta de directorio (eso es una barra oblicua / en Mac OSX y Linux).

Si estás usando Windows, hay implementaciones de openssl disponibles como la de MINGW64 incorporada en las herramientas de línea de comandos de Git, pero encontré que tendía a bloquearse. Probablemente encontrarás más fácil y rápido hacer esto en Linux y luego copiar tus archivos. Esas mismas herramientas de Git para Windows vienen con un buen cliente ssh que puedes usar para iniciar sesión en una caja Linux, como una instancia de Amazon EC2.


2.1 Firmando un mensaje

Ya hay una clave/cert dummy y un archivo de fuente de correo electrónico en el directorio de pruebas para alice@example.com, por lo que puedes obtener algún resultado incluso antes de tener tus propias claves. Solo escribe lo siguiente:

cd tests ../sparkpostSMIME.py example_email1.eml --sign

Y obtendrás:

To: Bob <bob@example.com> 
From: Alice <alice@example.com> 
Subject: A message MIME-Version: 1.0 
Content-Type: application/x-pkcs7-mime; smime-type=signed-data; name="smime.p7m" 
Content-Transfer-Encoding: base64 
Content-Disposition: attachment; filename="smime.p7m" MIIKXAYJKoZIhvcNAQcCoIIKTTCCCkkCAQExDzANBglghkgBZQMEAgEFADCCAQoGCSqGSIb3DQEH AaCB/ASB+VRvOiBCb2IgPGJvYkBleGFtcGxlLmNvbT4NCkZyb206IEFsaWNlIDxhbGljZUBleGFt : :

No puedes realmente enviar correos electrónicos desde example.com vía SparkPost a menos que poseas ese dominio, por lo que el siguiente paso es usar tu propia clave y enviar un mensaje firmado desde tu propio dominio.

Si ya tienes un archivo de clave para tu identidad de envío, puedes pasar al siguiente paso. De lo contrario, aquí hay dos opciones para elegir:

a) Clave/certificado de prueba autofirmado (no válido externamente)

Si solo estás probando, puedes crear certificados y claves "autofirmados" para una dirección de correo electrónico usando la herramienta de línea de comandos openssl en Linux, siguiendo un procedimiento como este. Al final de ese proceso, tendrás un archivo smime.p12. Renombra este archivo para que coincida con tu identidad de envío, incluyendo el signo @, por ejemplo, alice@example.com.p12.

o

b) Claves/certificados válidos externamente

Si deseas obtener claves/certificados válidos externamente que te permitan firmar, hay una lista de proveedores aquí. Encontré que Comodo funciona bien (gratis para uso no comercial), y es más fácil que el procedimiento de autofirma anterior. Sigue el proceso de registro, recibe tu correo de validación, y asegúrate de abrir el enlace en Firefox. Ve a las Preferencias de Firefox / Privacidad y Seguridad. Desplázate hasta Certificados / Ver Certificados:

Firefox browser settings page showing certificate management options under the Privacy & Security section, with controls for how the browser handles personal certificate requests.


Selecciona tu certificado y utiliza la opción "Respaldo" para guardar como un archivo en formato PKCS12 (agrega la extensión de archivo .p12 a tu nombre de archivo) que lleva la clave privada y la cadena de certificados públicos.

Certificate Manager window showing a list of software security device certificates from COMODO CA Limited, with details including certificate names and serial numbers


Proporciona una contraseña para asegurar el archivo .p12:

Certificate backup password entry dialog with password fields and strength meter


Generar archivos de clave pública (.crt) y privada (.pem) por separado

Ya sea que hayas usado a) o b), ahora tendrás un archivo .p12 para tu identidad de remitente. Eso es un gran avance – ¡toma un café ahora!

Ahora necesitamos generar archivos de clave pública y privada por separado de esta manera – sustituyendo tu propia dirección de correo electrónico por el ejemplo. (Mac OSX y Linux):

openssl pkcs12 -in alice\@example.com.p12 -clcerts -nokeys -out alice\@example.com.crt openssl pkcs12 -in alice\@example.com.p12 -nocerts -nodes -out alice\@example.com.pem

Necesitarás ingresar la contraseña que proporcionaste antes. Nota que esas barras invertidas \ se usan para escapar el signo @ – no para separar los nombres de una ruta de directorio (eso es una barra oblicua / en Mac OSX y Linux).

Si estás usando Windows, hay implementaciones de openssl disponibles como la de MINGW64 incorporada en las herramientas de línea de comandos de Git, pero encontré que tendía a bloquearse. Probablemente encontrarás más fácil y rápido hacer esto en Linux y luego copiar tus archivos. Esas mismas herramientas de Git para Windows vienen con un buen cliente ssh que puedes usar para iniciar sesión en una caja Linux, como una instancia de Amazon EC2.


2.1 Firmando un mensaje

Ya hay una clave/cert dummy y un archivo de fuente de correo electrónico en el directorio de pruebas para alice@example.com, por lo que puedes obtener algún resultado incluso antes de tener tus propias claves. Solo escribe lo siguiente:

cd tests ../sparkpostSMIME.py example_email1.eml --sign

Y obtendrás:

To: Bob <bob@example.com> 
From: Alice <alice@example.com> 
Subject: A message MIME-Version: 1.0 
Content-Type: application/x-pkcs7-mime; smime-type=signed-data; name="smime.p7m" 
Content-Transfer-Encoding: base64 
Content-Disposition: attachment; filename="smime.p7m" MIIKXAYJKoZIhvcNAQcCoIIKTTCCCkkCAQExDzANBglghkgBZQMEAgEFADCCAQoGCSqGSIb3DQEH AaCB/ASB+VRvOiBCb2IgPGJvYkBleGFtcGxlLmNvbT4NCkZyb206IEFsaWNlIDxhbGljZUBleGFt : :

No puedes realmente enviar correos electrónicos desde example.com vía SparkPost a menos que poseas ese dominio, por lo que el siguiente paso es usar tu propia clave y enviar un mensaje firmado desde tu propio dominio.

Si ya tienes un archivo de clave para tu identidad de envío, puedes pasar al siguiente paso. De lo contrario, aquí hay dos opciones para elegir:

a) Clave/certificado de prueba autofirmado (no válido externamente)

Si solo estás probando, puedes crear certificados y claves "autofirmados" para una dirección de correo electrónico usando la herramienta de línea de comandos openssl en Linux, siguiendo un procedimiento como este. Al final de ese proceso, tendrás un archivo smime.p12. Renombra este archivo para que coincida con tu identidad de envío, incluyendo el signo @, por ejemplo, alice@example.com.p12.

o

b) Claves/certificados válidos externamente

Si deseas obtener claves/certificados válidos externamente que te permitan firmar, hay una lista de proveedores aquí. Encontré que Comodo funciona bien (gratis para uso no comercial), y es más fácil que el procedimiento de autofirma anterior. Sigue el proceso de registro, recibe tu correo de validación, y asegúrate de abrir el enlace en Firefox. Ve a las Preferencias de Firefox / Privacidad y Seguridad. Desplázate hasta Certificados / Ver Certificados:

Firefox browser settings page showing certificate management options under the Privacy & Security section, with controls for how the browser handles personal certificate requests.


Selecciona tu certificado y utiliza la opción "Respaldo" para guardar como un archivo en formato PKCS12 (agrega la extensión de archivo .p12 a tu nombre de archivo) que lleva la clave privada y la cadena de certificados públicos.

Certificate Manager window showing a list of software security device certificates from COMODO CA Limited, with details including certificate names and serial numbers


Proporciona una contraseña para asegurar el archivo .p12:

Certificate backup password entry dialog with password fields and strength meter


Generar archivos de clave pública (.crt) y privada (.pem) por separado

Ya sea que hayas usado a) o b), ahora tendrás un archivo .p12 para tu identidad de remitente. Eso es un gran avance – ¡toma un café ahora!

Ahora necesitamos generar archivos de clave pública y privada por separado de esta manera – sustituyendo tu propia dirección de correo electrónico por el ejemplo. (Mac OSX y Linux):

openssl pkcs12 -in alice\@example.com.p12 -clcerts -nokeys -out alice\@example.com.crt openssl pkcs12 -in alice\@example.com.p12 -nocerts -nodes -out alice\@example.com.pem

Necesitarás ingresar la contraseña que proporcionaste antes. Nota que esas barras invertidas \ se usan para escapar el signo @ – no para separar los nombres de una ruta de directorio (eso es una barra oblicua / en Mac OSX y Linux).

Si estás usando Windows, hay implementaciones de openssl disponibles como la de MINGW64 incorporada en las herramientas de línea de comandos de Git, pero encontré que tendía a bloquearse. Probablemente encontrarás más fácil y rápido hacer esto en Linux y luego copiar tus archivos. Esas mismas herramientas de Git para Windows vienen con un buen cliente ssh que puedes usar para iniciar sesión en una caja Linux, como una instancia de Amazon EC2.


2.1 Firmando un mensaje

Ya hay una clave/cert dummy y un archivo de fuente de correo electrónico en el directorio de pruebas para alice@example.com, por lo que puedes obtener algún resultado incluso antes de tener tus propias claves. Solo escribe lo siguiente:

cd tests ../sparkpostSMIME.py example_email1.eml --sign

Y obtendrás:

To: Bob <bob@example.com> 
From: Alice <alice@example.com> 
Subject: A message MIME-Version: 1.0 
Content-Type: application/x-pkcs7-mime; smime-type=signed-data; name="smime.p7m" 
Content-Transfer-Encoding: base64 
Content-Disposition: attachment; filename="smime.p7m" MIIKXAYJKoZIhvcNAQcCoIIKTTCCCkkCAQExDzANBglghkgBZQMEAgEFADCCAQoGCSqGSIb3DQEH AaCB/ASB+VRvOiBCb2IgPGJvYkBleGFtcGxlLmNvbT4NCkZyb206IEFsaWNlIDxhbGljZUBleGFt : :

No puedes realmente enviar correos electrónicos desde example.com vía SparkPost a menos que poseas ese dominio, por lo que el siguiente paso es usar tu propia clave y enviar un mensaje firmado desde tu propio dominio.

3. Enviar un mensaje firmado a través de SparkPost

Ahora usemos un dominio de envío real, configurado según la Guía para Nuevos Usuarios de SparkPost. Tenemos el certificado del remitente y los archivos de clave en el directorio actual:

steve@thetucks.com.crt steve@thetucks.com.pem

El archivo tests/declaration.eml está incluido en el proyecto. Es solo un archivo de texto, por lo que puedes personalizar la dirección De: para que se adapte a tu propio dominio de envío y la dirección Para: para que se adapte a tu destinatario de prueba. El inicio del archivo se ve así:

Para: Bob <bob.lumreeker@gmail.com> De: Steve <steve@thetucks.com> Asunto: Aquí está nuestra declaración MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-Language: en-GB Cuando en el transcurso de los eventos humanos se vuelve necesario…

Configura tu clave API:

export SPARKPOST_API_KEY=<<Pon tu clave API aquí>>

Envía el correo electrónico:

./sparkpostSMIME.py tests/declaration.eml --sign --send_api

Verás:

Conexión abierta a https://api.sparkpost.com/api/v1 Enviando tests/declaration.eml De: Steve <steve@thetucks.com> Para: Bob <bob.lumreeker@gmail.com> OK - en 1.15 segundos

Uno o dos segundos después, el correo electrónico llega a la bandeja de entrada de Bob. Thunderbird lo muestra con un punto rojo en el sobre, indicando una firma de remitente válida.

Thunderbird email inbox showing an email with a subject 'Here is our declaration'

¡Éxito! Termina ese café, te lo has ganado. Si tienes problemas, verifica que tu dirección De: en el archivo de correo coincida con el nombre de tus archivos .crt y .pem.

4. Cifrado de mensajes

Para cifrar un mensaje, necesitas la clave pública de tu destinatario en forma de certificado. Este es un archivo de texto que se ve así:

Atributos del paquete   friendlyName: s COMODO CA Limited ID #2   localKeyID: 32 84 AB 9C 56 5C 80 C6 89 4D 40 46 DD D4 7C 71 E8 CD ED C1 subject=/emailAddress=bob.lumreeker@gmail.com issuer=/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Client Authentication and Secure Email CA -----BEGIN CERTIFICATE----- parece caracteres aleatorios aquí -----END CERTIFICATE-----

Hay un certificado de destinatario de prueba para bob@example.com en el directorio de tests, así que puedes practicar con él antes de tener un certificado real:

cd tests ../sparkpostSMIME.py example_email1.eml --sign --encrypt

Verás:

To: Bob <bob@example.com>
From: Alice <alice@example.com> 
Subject: A message MIME-Version: 1.0 
Content-Type: application/pkcs7-mime; smime-type=enveloped-data; name=smime.p7m 
Content-Transfer-Encoding: base64 
Content-Disposition: attachment; filename=smime.p7m MIIRwQYJKoZIhvcNAQcDoIIRsjCCEa4CAQAxggKlMIICoQIBADCBijCBhDELMAkG :

Notarás que la longitud del resultado es bastante más larga que con un mensaje cifrado porque lleva mucha información extra además del mensaje encriptado en sí.


4.1 Enviando un mensaje cifrado y firmado a través de SparkPost

Vamos a enviar un mensaje cifrado a una dirección de correo real. Puedes seguir el mismo proceso de antes (autofirmado o a través de un proveedor como Comodo) para obtener una clave pública/certificado para tus propias direcciones de destinatario. Solo necesitas el archivo .crt – el destinatario nunca necesita darte su clave privada (archivos .p12 y .pem).

Tengo el archivo bob.lumreeker@gmail.com.crt para mi destinatario previsto – coincidiendo con la dirección De: en mi archivo.

Aquí está el comando para enviar:

./sparkpostSMIME.py tests/declaration.eml --sign --encrypt --send_api

Veo:

Conexión abierta a https://api.sparkpost.com/api/v1 Enviando tests/declaration.eml De: Steve <steve@thetucks.com> A: Bob <bob.lumreeker@gmail.com> OK - en 1.168 segundos

El correo aparece en Thunderbird con el ícono de firma de “punto rojo” y el ícono de candado cifrado.

Thunderbird email view with signature and encryption icons

Puedes enviar correos electrónicos complejos basados en HTML con enlaces e imágenes con la misma facilidad, como el mostrado en la Parte 1. Algunos clientes como Thunderbird piden permiso para mostrar enlaces e imágenes externas dentro de mensajes cifrados S/MIME, pero los mensajes solo firmados se muestran bien en clientes incluyendo Thunderbird y Gmail:

Avocado marketing email with guacamole in a blue bowl and product order sectionsGmail interface showing an HTML email with guacamole image and Avocado marketing content

Nota que el desplegable muestra “Dirección de correo verificada”.

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. Recordatorio rápido: el proyecto de demostración está en Github aquí, he intentado hacer que sea fácil de instalar y usar.

Función adicional: mostrar partes MIME con “mimeshow”

Los archivos multipart MIME RFC822 son bastante complejos de leer para los humanos. El proyecto incluye una herramienta independiente para facilitar esto, llamada mimeshow.

Esto toma cualquier archivo de correo electrónico que tengas (no solo los de S/MIME) y muestra la estructura interna. Aquí tienes un ejemplo:

./mimeshow.py testcases/img_and_attachment.eml

Verás:

To Bob <bob.lumreeker@gmail.com>
From Steve <steve@thetucks.com> 
Subject Testing attachments etc 
MIME-Version 1.0
Content-Type multipart/mixed; boundary="------------7D48652042860D0098C65210"
Content-Language en-GB
Content-Type multipart/alternative; boundary="------------58C0BF87598336550D70EB95" 
Content-Type text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding 7bit
Content-Transfer-Encoding quoted-printable 
Content-Type text/html; charset="utf-8"
Content-Type application/pdf; name="sparkpost-datasheet-tam-technical-account-management.pdf" 
Content-Transfer-Encoding base64
Content-Disposition attachment; filename="sparkpost-datasheet-tam-technical-account-management.pdf"

También puedes usarlo como un filtro para dar un resumen legible para humanos de la salida de sparkpostSMIME:

./sparkpostSMIME.py tests/declaration.eml --sign --encrypt | ./mimeshow.py


Verás:

To Bob <bob.lumreeker@gmail.com>  
From Steve <steve@thetucks.com>
Subject Here is our declaration 
Content-Language en-GB
MIME-Version 1.0
Content-Type application/pkcs7-mime; smime-type=enveloped-data; name=smime.p7m
Content-Transfer-Encoding base64
Content-Disposition attachment; filename=smime.p7m

Finalmente…

Para recapitular: hemos instalado algunas herramientas de línea de comandos simples para firmar y cifrar correos electrónicos (el repositorio de Github está aquí, completo con instrucciones de instalación).

Conseguimos nuestra clave/certificado de remitente para firmar y enviamos un mensaje firmado a través de SparkPost. Obtuvimos un certificado de destinatario para el cifrado, luego enviamos un mensaje firmado y cifrado a través de SparkPost.

Por último, probamos la útil herramienta independiente “mimeshow” para ver los internos de archivos de correo electrónico.

¡Eso es todo por ahora! ¡Nos vemos pronto!

Conectémosle con un experto de Bird.
Vea el poder completo del Bird en 30 minutos.

Al enviar, aceptas que Bird pueda contactarte sobre nuestros productos y servicios.

Puedes darte de baja en cualquier momento. Consulta el Aviso de Privacidad de Bird para obtener detalles sobre el procesamiento de datos.

Company

Newsletter

Mantente al día con Bird a través de actualizaciones semanales en tu buzón.

Al enviar, aceptas que Bird pueda contactarte sobre nuestros productos y servicios.

Puedes darte de baja en cualquier momento. Consulta el Aviso de Privacidad de Bird para obtener detalles sobre el procesamiento de datos.

Conectémosle con un experto de Bird.
Vea el poder completo del Bird en 30 minutos.

Al enviar, aceptas que Bird pueda contactarte sobre nuestros productos y servicios.

Puedes darte de baja en cualquier momento. Consulta el Aviso de Privacidad de Bird para obtener detalles sobre el procesamiento de datos.

Company

Newsletter

Mantente al día con Bird a través de actualizaciones semanales en tu buzón.

Al enviar, aceptas que Bird pueda contactarte sobre nuestros productos y servicios.

Puedes darte de baja en cualquier momento. Consulta el Aviso de Privacidad de Bird para obtener detalles sobre el procesamiento de datos.

Conectémosle con un experto de Bird.
Vea el poder completo del Bird en 30 minutos.

Al enviar, aceptas que Bird pueda contactarte sobre nuestros productos y servicios.

Puedes darte de baja en cualquier momento. Consulta el Aviso de Privacidad de Bird para obtener detalles sobre el procesamiento de datos.

R

Reach

G

Grow

M

Manage

A

Automate

Company

Newsletter

Mantente al día con Bird a través de actualizaciones semanales en tu buzón.

Al enviar, aceptas que Bird pueda contactarte sobre nuestros productos y servicios.

Puedes darte de baja en cualquier momento. Consulta el Aviso de Privacidad de Bird para obtener detalles sobre el procesamiento de datos.