From 00535e8e6b402cab29ea3dbb7b4cc470f9839678 Mon Sep 17 00:00:00 2001 From: Andi Albrecht Date: Sun, 18 May 2014 09:56:55 +0200 Subject: Fixed #20743 -- Added support for keyfile/certfile in SMTP connections. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Thanks jwmayfield, serg.partizan, and Wojciech Banaƛ for work on the patch. --- docs/ref/settings.txt | 34 ++++++++++++++++++++++++++++++++++ docs/releases/1.8.txt | 4 ++++ docs/spelling_wordlist | 1 + docs/topics/email.txt | 12 +++++++++--- 4 files changed, 48 insertions(+), 3 deletions(-) (limited to 'docs') diff --git a/docs/ref/settings.txt b/docs/ref/settings.txt index 6c380dd2c3..00f9a1e629 100644 --- a/docs/ref/settings.txt +++ b/docs/ref/settings.txt @@ -1228,6 +1228,38 @@ see the explicit TLS setting :setting:`EMAIL_USE_TLS`. Note that :setting:`EMAIL_USE_TLS`/:setting:`EMAIL_USE_SSL` are mutually exclusive, so only set one of those settings to ``True``. +.. setting:: EMAIL_SSL_CERTFILE + +EMAIL_SSL_CERTFILE +------------------ + +.. versionadded:: 1.8 + +Default: ``None`` + +If :setting:`EMAIL_USE_SSL` or :setting:`EMAIL_USE_TLS` is ``True``, you can +optionally specify the path to a PEM-formatted certificate chain file to use +for the SSL connection. + +.. setting:: EMAIL_SSL_KEYFILE + +EMAIL_SSL_KEYFILE +----------------- + +.. versionadded:: 1.8 + +Default: ``None`` + +If :setting:`EMAIL_USE_SSL` or :setting:`EMAIL_USE_TLS` is ``True``, you can +optionally specify the path to a PEM-formatted private key file to use for the +SSL connection. + +Note that setting :setting:`EMAIL_SSL_CERTFILE` and :setting:`EMAIL_SSL_KEYFILE` +doesn't result in any certificate checking. They're passed to the underlying SSL +connection. Please refer to the documentation of Python's +:func:`python:ssl.wrap_socket` function for details on how the certificate chain +file and private key file are handled. + .. setting:: FILE_CHARSET FILE_CHARSET @@ -2926,6 +2958,8 @@ Email * :setting:`EMAIL_HOST_PASSWORD` * :setting:`EMAIL_HOST_USER` * :setting:`EMAIL_PORT` +* :setting:`EMAIL_SSL_CERTFILE` +* :setting:`EMAIL_SSL_KEYFILE` * :setting:`EMAIL_SUBJECT_PREFIX` * :setting:`EMAIL_USE_TLS` * :setting:`MANAGERS` diff --git a/docs/releases/1.8.txt b/docs/releases/1.8.txt index 2c99172f9b..999b0ef295 100644 --- a/docs/releases/1.8.txt +++ b/docs/releases/1.8.txt @@ -140,6 +140,10 @@ Email * :ref:`Email backends ` now support the context manager protocol for opening and closing connections. +* The SMTP email backend now supports ``keyfile`` and ``certfile`` + authentication with the :setting:`EMAIL_SSL_CERTFILE` and + :setting:`EMAIL_SSL_KEYFILE` settings. + File Storage ^^^^^^^^^^^^ diff --git a/docs/spelling_wordlist b/docs/spelling_wordlist index 8fbe5fd20d..60b07e9734 100644 --- a/docs/spelling_wordlist +++ b/docs/spelling_wordlist @@ -426,6 +426,7 @@ Palau params parens pdf +PEM perl permalink pessimization diff --git a/docs/topics/email.txt b/docs/topics/email.txt index eaf953dada..a7a9329974 100644 --- a/docs/topics/email.txt +++ b/docs/topics/email.txt @@ -445,13 +445,14 @@ can :ref:`write your own email backend `. SMTP backend ~~~~~~~~~~~~ -.. class:: backends.smtp.EmailBackend([host=None, port=None, username=None, password=None, use_tls=None, fail_silently=False, use_ssl=None, timeout=None, **kwargs]) +.. class:: backends.smtp.EmailBackend([host=None, port=None, username=None, password=None, use_tls=None, fail_silently=False, use_ssl=None, timeout=None, ssl_keyfile=None, ssl_certfile=None, **kwargs]) This is the default backend. Email will be sent through a SMTP server. The server address and authentication credentials are set in the :setting:`EMAIL_HOST`, :setting:`EMAIL_PORT`, :setting:`EMAIL_HOST_USER`, - :setting:`EMAIL_HOST_PASSWORD`, :setting:`EMAIL_USE_TLS` and - :setting:`EMAIL_USE_SSL` settings in your settings file. + :setting:`EMAIL_HOST_PASSWORD`, :setting:`EMAIL_USE_TLS`, + :setting:`EMAIL_USE_SSL`, :setting:`EMAIL_SSL_CERTFILE` and + :setting:`EMAIL_SSL_KEYFILE` settings in your settings file. The SMTP backend is the default configuration inherited by Django. If you want to specify it explicitly, put the following in your settings:: @@ -481,6 +482,11 @@ SMTP backend If unspecified, the default ``timeout`` will be the one provided by :func:`socket.getdefaulttimeout()`, which defaults to ``None`` (no timeout). + .. versionchanged:: 1.8 + + The ``ssl_keyfile`` and ``ssl_certfile`` parameters and + corresponding settings were added. + .. _topic-email-console-backend: Console backend -- cgit v1.3