Question

J'ai écrit un programme en C # qui envoie des e-mails. Maintenant, j'ai une obligation de signer des e-mails sortants en utilisant Dominkeys / DKIM, mais je ne suis pas sûr de savoir comment le faire.

Je l'ai mis en place toutes les clés, mais je ne sais pas comment ceux-ci et hwo de les inclure dans l'en-tête de courrier électronique.

Était-ce utile?

La solution 6

i na pas trouvé beaucoup d'aide sur cette question, mais mon problème à résoudre obtenu par la configuration du serveur smtp. je ne peux pas poster ces étapes que j'utilise un serveur smtp 3ème partie et chaque serveur a sa propre configuration. après la configuration correcte mon smtp ajoute automatiquement la signature DM / DKIM.

Autres conseils

Il y a un problème fondamental à essayer de faire des signatures DKIM avec System.Net.Mail.MailMessage et System.Net.Mail.SmtpClient qui est que pour signer le message, vous devez fouiller les entrailles de SmtpClient pour pour hacher le corps du message en tant que l'une des étapes de génération de l'en-tête DKIM-Signature. Le problème vient quand vous avez des vues alternatives ou des pièces jointes, car SmtpClient va générer de nouvelles limites multipart chaque fois qu'il écrit le message qui rompt le hachage du corps et donc la validité DKIM-Signature.

Pour contourner ce problème, vous pouvez utiliser le MimeKit et MailKit bibliothèques open source pour .NET comme un cadre alternatif à l'utilisation System.Net.Mail.

Pour ajouter une signature DKIM à un message MimeKit, vous feriez quelque chose comme ceci:

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);

Pour envoyer le message en utilisant MailKit, vous feriez quelque chose comme ceci:

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);
}

L'espoir qui aide.

voir https://github.com/dmcgiv/DKIM.Net c'est un DomainKeys Identified la mise en œuvre courrier (DKIM) pour .Net écrit en C # -. il vous permet de signer des objets MailMessage

Je veux savoir aussi Je trouve juste un dkim mettre en œuvre, mais je ne peux pas courir sucessful -_- http://tinisles.blogspot.com/2009/ 09 / envoi-dkim-email-de-c.html

Utilisation http://www.mimekit.org

Non seulement il permet d'utiliser DKIM pour la signature, vous pouvez également inclure des certificats S / MIME, PGP certificats et plus. En outre, son une lib très mature -. Le seul que j'ai trouvé qui gère les langues étrangères (en dehors de l'anglais) correctement, car son code complètement et à fond avec à l'esprit unicode

est gratuit et opensource.

Si vous cherchez à DKIM-signer le corps du MailMessage alors DKIM.NET est grande. Si vous êtes à la recherche d'avoir des vues alternatives dans votre message alors je n'étais pas en mesure de trouver une solution et écrit mon propre (open-source avec les responsabilités habituelles) qui se trouve à https://github.com/yannispsarras/DKIM-AlternativeViews

Je comprends que c'est un fil assez vieux, mais je pensais que ce peut aider quelqu'un.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top