Рейтинг:1

Как я могу использовать E-Mailrelay для реализации DKIM?

флаг tr

Я пытаюсь добавить DKIM на существующий сервер Windows, который в настоящее время использует IIS SMTP для исходящей почты.

Кажется, что это можно сделать с помощью Электронная почта. К сожалению, я не смог найти никакой информации о том, как именно настроить DKIM в E-Mailrelay.

Есть ли что-то, что я пропустил в документах или, возможно, какой-то сторонний учебник, описывающий, как это сделать?

djdomi avatar
флаг za
вы добавили ips в записи SPF?
флаг tr
Да, но как это связано с моим вопросом?
Рейтинг:0
флаг tr

Я реализовал простое приложение командной строки с помощью C#/NET 6, чтобы действовать как фильтр в E-MailRelay:

с помощью System.IO;
используя System.Text;
с помощью MimeKit;
использование MimeKit.Cryptography;

пространство имен E_MailRelay.DKIM.Filter;

/// <сводка>
/// Читает сообщение электронной почты, добавляет жесткую подпись DKIM и записывает 
обновленное сообщение обратно на диск
/// Обратите внимание, что для этого требуется установка MailKit. 
/// </резюме>


программа внутреннего класса
{
частная константная строка DKIMSelector = "ENTER_YOUR_DKIM_SELECTOR_HERE";
частная константная строка _DKIMDomain = "ENTER_YOUR_DOMAIN_NAME_HERE";
private const string DKIMPrivateKey = "-----НАЧАТЬ ЗАКРЫТЫЙ КЛЮЧ RSA-----\r\n"
                                      + @"ENTER_YOUR_PRIVATE_KEY_HERE"
                                      + "\r\n-----КОНЕЦ ЗАКРЫТОГО КЛЮЧА RSA-----";

частный статический int Main (string [] args)
{
    LoadSignAndRewriteMail(аргументы);
    вернуть 102;
}

private static void LoadSignAndRewriteMail(string[] args)
{
    var emailMessage = MimeMessage.Load(args[0]);
    если (!emailMessage.Headers.Contains(HeaderId.DkimSignature)
        && !emailMessage.Headers.Contains(HeaderId.DomainKeySignature))
    {
        SignMail(emailMessage);
    }

    emailMessage.WriteTo (аргументы [0]);
}


private static void SignMail (MimeMessage emailMessage)
{
    var pk = DKIMPrivateKey;
    Поток MemoryStream = новый (Кодировка.UTF8.GetBytes (pk));
    {
        поток.Позиция = 0;
    }



    var dkimSigner = новый DkimSigner (поток, _DKIMDomain, DKIMSelector);


    Заголовок[] dkimSignHeaders =
    {
        HeaderId.To, HeaderId.Cc, HeaderId.Subject, HeaderId.From, HeaderId.Date, HeaderId.MessageId, HeaderId.Body,
        HeaderId.Date, HeaderId.MimeVersion, HeaderId.Sender, HeaderId.ReplyTo, HeaderId.ContentTransferEncoding,
        HeaderId.ContentId, HeaderId.ContentDescription, HeaderId.ResentDate, HeaderId.ResentFrom,
        HeaderId.ResentSender, HeaderId.ResentTo, HeaderId.ResentCc, HeaderId.ResentMessageId, HeaderId.InReplyTo,
        HeaderId.References
    };

    dkimSigner.Sign(FormatOptions.Default, emailMessage, dkimSignHeaders);
}
}

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.