Юзер дает свои smtp-данные, через которые я могу подключиться к его ящику, и программно (c#) отправить письмо. Это может быть как его собственный почтовый сервер с доменом, так и стандартная яндекс- гугл- почта. Получается, что письмо создается на моей стороне, а отправляется через smtp, от имени юзера.
Кем, в такой ситуации, письмо должно быть подписано? Мной как создателем письма, или самим почтовым сервером, который берет на себя его отправку?
*Яндекс, например, самостоятельно подписывает своим стандартным dkim.
Сам по себе DKIM не дает ни плюсов ни минусов. Все зависит от того, зачем вы хотите подписывать письма DKIM. Если отслеживать статистику в службах типа postmaster.mail.ru - вы можете дополнительно подписать письмо DKIM'ом своего домена и оно будет зачтено в статистику вашего домена.
Если для целей авторизации DMARC - то в этом нет смысла, т.к. необходима подпись домена от имени которого отправляется письмо, у вас нет возможности сделать такую подпись, как правило подписывает сам SMTP-сервер.