Начиная с версии 1.2, Django стала поддерживать почтовые backend'ы, что существенно облегчило жизнь разработчику в этом плане. Все, что требуется, так это установить pydkim и создать модуль с бекендом, например <ваше_приложение>/mail/backends.py:
from django.core.mail.backends.smtp import EmailBackend
from django.conf import settings
import dkim
class DKIMBackend(EmailBackend):
u'''
Бекенд, позволяющий вставлять в письма DKIM-подпись.
Требует определения переменных в settings:
DKIM_SELECTOR - селектор, все что до точки в "selector._domainkey.example.com"
DKIM_DOMAIN - домен например, "example.com"
DKIM_PRIVATE_KEY - приватный DKIM-ключ. Полностью, включая "-----BEGIN RSA PRIVATE KEY-----" и т.п.
@requires: python-dkim, есть на http://hewgill.com/pydkim
'''
def _send(self, email_message):
if not email_message.recipients():
return False
try:
message_string = email_message.message().as_string()
signature = dkim.sign(message_string,
settings.DKIM_SELECTOR,
settings.DKIM_DOMAIN,
settings.DKIM_PRIVATE_KEY)
self.connection.sendmail(email_message.from_email,
email_message.recipients(),
signature+message_string)
except:
if not self.fail_silently:
raise
return False
return True
Останется только сменить в settings.py параметр EMAIL_BACKEND на "<ваше_приложение>.mail.backends.DKIMBackend" и прописать там же DKIM_SELECTOR, DKIM_DOMAIN и DKIM_PRIVATE_KEY (смотрите докстринг в коде). Сгенерировать недостающие ключи можно тут.
Комментариев нет:
Отправить комментарий