Pregunta

He escrito un programa en C# que envía mensajes de correo electrónico.Ahora tengo un requisito para firmar los mensajes de correo salientes utilizando Dominkeys/DKIM, pero no estoy seguro de cómo hacerlo.

He puesto todas las claves, pero no sé cómo conseguir esos y hwo incluir en el encabezado de correo electrónico.

¿Fue útil?

Solución 6

No encontré mucha ayuda en este tema, pero mi problema consiguió resolver mediante la configuración del servidor SMTP. no puedo publicar esos pasos que estoy usando tercera parte del servidor SMTP y cada servidor tiene su propia configuración. después de la configuración apropiada de mi SMTP agrega automáticamente DM / DKIM firma.

Otros consejos

Hay un problema fundamental con el intento de hacer firmas DKIM con System.Net.Mail.MailMessage y System.Net.Mail.SmtpClient y es que con el fin de firmar el mensaje, lo que necesita para empujar las partes internas de SmtpClient con el fin a de hash el cuerpo del mensaje como uno de los pasos en la generación de la cabecera DKIM-Signature. El problema viene cuando se tiene puntos de vista alternativos o archivos adjuntos porque SmtpClient generará nuevos límites de varias partes cada vez que se escribe el mensaje que se rompe el hash del cuerpo y por lo tanto la validez DKIM-Signature.

Para evitar esto, se puede utilizar el MimeKit y MailKit bibliotecas de código abierto para .NET como un marco alternativa al uso de System.Net.Mail.

Para añadir una firma DKIM a un mensaje en MimeKit, que haría algo como esto:

MimeMessage message = MimeMessage.CreateFromMailMessage(mailMessage);
HeaderId[] headersToSign =  new HeaderId[] { HeaderId.From, HeaderId.Subject, HeaderId.Date };

string domain = "example.net";
string selector = "brisbane";

DkimSigner signer = new DkimSigner ("C:\my-dkim-key.pem", domain, selector) 
{
   SignatureAlgorithm = DkimSignatureAlgorithm.RsaSha1,
   AgentOrUserIdentifier = "@eng.example.com",
   QueryMethod = "dns/txt",      
};

// Prepare the message body to be sent over a 7bit transport (such as 
// older versions of SMTP). This is VERY important because the message
// cannot be modified once we DKIM-sign our message!
//
// Note: If the SMTP server you will be sending the message over 
// supports the 8BITMIME extension, then you can use
// `EncodingConstraint.EightBit` instead.
message.Prepare (EncodingConstraint.SevenBit);

message.Sign (signer, headersToSign, 
    DkimCanonicalizationAlgorithm.Relaxed, 
    DkimCanonicalizationAlgorithm.Simple);

Para enviar el mensaje utilizando MailKit, que haría algo como esto:

using (var client = new MailKit.Net.Smtp.SmtpClient ()) {
    client.Connect ("smtp.gmail.com", 465, true);
    client.Authenticate ("username", "password");
    client.Send (message);
    client.Disconnect (true);
}

Espero que ayude.

https://github.com/dmcgiv/DKIM.Net es un DomainKeys Identified correo (DKIM) para .Net aplicación escrita en C # -. que le permite firmar objetos MailMessage

quiero saber también Acabo de encontrar un dkim implementar, pero no puedo correr exitoso -_- http://tinisles.blogspot.com/2009/ 09 / enviar-dkim-email-de-c.html

Uso http://www.mimekit.org

No sólo permiten el uso de DKIM para firmar, también puede incluir los certificados S/MIME, PGP certificados, y más.También, se trata de una muy maduro lib - el único que he encontrado que se encarga de lenguas extranjeras (aparte del inglés) correctamente, desde su más completa y detallada codificados con unicode en mente.

Su libre y opensource.

Si usted está buscando para DKIM-firmar el cuerpo de la MailMessage continuación DKIM.NET es grande. Si usted está mirando para tener puntos de vista alternativos en su mensaje, entonces yo no era capaz de encontrar una solución y escribí mi propia (de código abierto con las renuncias habituales) que se pueden encontrar en https://github.com/yannispsarras/DKIM-AlternativeViews

Entiendo que esto es un hilo bastante viejo, pero pensé que podría ayudar a alguien.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top