Domanda

Ho scritto un programma in C #, che invia messaggi di posta elettronica. Ora ho un obbligo di firmare le email in uscita utilizzando Dominkeys / DKIM, ma non sono sicuro di come farlo.

Ho installato tutti i tasti, ma non so come ottenere questi e hwo includerli nella intestazione del messaggio.

È stato utile?

Soluzione 6

Non ho trovato molto aiuto su questo tema, ma il mio problema ho risolvere configurando server SMTP. non posso postare questi passi come io sto usando terzo assistente parti SMTP e tutti i server ha la propria configurazione. dopo la configurazione corretta il mio smtp aggiunge automaticamente DM / firma DKIM.

Altri suggerimenti

C'è un problema fondamentale con il tentativo di fare le firme DKIM con System.Net.Mail.MailMessage e System.Net.Mail.SmtpClient che è che per poter firmare il messaggio, è necessario colpire la struttura interna di SmtpClient al fine hash il corpo del messaggio come uno dei passi nel generare l'intestazione DKIM-Signature. Il problema arriva quando si ha una vista alternativi o allegati perché SmtpClient genererà nuovi confini più parti ogni volta che si scrive il messaggio che rompe il corpo hash e quindi la validità DKIM-Signature.

Per risolvere questo problema, è possibile utilizzare il MimeKit e MailKit librerie open source per .NET come un quadro alternativa all'utilizzo System.Net.Mail.

Per aggiungere una firma DKIM a un messaggio in MimeKit, si potrebbe fare qualcosa di simile:

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

Per inviare il messaggio utilizzando MailKit, si potrebbe fare qualcosa di simile:

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

La speranza che aiuta.

https://github.com/dmcgiv/DKIM.Net è un DomainKeys Identified mail (DKIM) per l'implementazione .Net scritto in C # -. vi permette di firmare oggetti MailMessage

voglio sapere anche Ho appena trovato un DKIM attuare, ma non posso correre un successo -_- http://tinisles.blogspot.com/2009/ 09 / invio-DKIM-mail-da-c.html

Usa http://www.mimekit.org

Non solo permette di utilizzare DKIM per la firma, anche è possibile includere i certificati S / MIME, certificati PGP e altro ancora. Inoltre, è un lib molto maturo -. L'unico che ho trovato che gestisce le lingue straniere (inglese a parte) in modo corretto, dal momento che la sua completamente e accuratamente codificati con Unicode in mente

E 'gratuita e opensource.

Se siete alla ricerca di DKIM-firmare il corpo del MailMessage poi DKIM.NET è grande. Se stai cercando di avere visioni alternative nel vostro messaggio, allora non ero in grado di trovare una soluzione e scritto il mio (open-source con i soliti disclaimer) che può essere trovato all'indirizzo https://github.com/yannispsarras/DKIM-AlternativeViews

Capisco che questo è un filo piuttosto vecchio, ma ho pensato che potrebbe aiutare qualcuno.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top