An extension to the standard python 2.x smtpd library implementing implicit/explicit SSL/TLS/STARTTLS
Project description
smtpd-tls
An extension to the python 2.x smtpd standard library implementing implicit/explicit (STARTTLS) SSL/TLS support
added STARTTLS handling
added implicit tls
just pass a configured ssl.context (certs, keys, protocols, auth, …) to smtpd-tls.SMTPServer()
original smtpd pydoc: https://docs.python.org/2/library/smtpd.html
Requires Python 2.7 or higher
Install
from pip
pip install smtpd-tls
from source
python setup.py install
verify:
#> python -c "import smtpd_tls; print smtpd_tls" #> python -m smtpd_tls --help
Example
STARTTLS via smtp port 25:
#> python -m smtpd_tls --debug -c DebuggingServer --starttls --keyfile=../server.pem 0.0.0.0:25 DebuggingServer started at Thu Feb 4 16:57:06 2016 Local addr: ('0.0.0.0', 25) Remote addr:('mail.somehost.com', 25) TLS Mode: explicit (plaintext until STARTTLS) TLS Context: <ssl.SSLContext object at 0x7f8fd8adbbb0> Incoming connection from ('192.168.139.1', 39983) Peer: ('192.168.139.1', 39983) Data: 'ehlo [192.168.139.1]' Data: 'STARTTLS' Peer: ('192.168.139.1', 39983) - negotiated TLS: ('ECDHE-RSA-AES256-GCM-SHA384', 'TLSv1/SSLv3', 256) Data: 'ehlo [192.168.139.1]' Data: 'mail FROM:<sender@example.com>' ===> MAIL FROM:<sender@example.com> sender: sender@example.com Data: 'rcpt TO:<user@example.com>' ===> RCPT TO:<user@example.com> recips: ['user@example.com'] Data: 'data' Data: "From: sender@example.com\r\nTo: user@example.com\r\nSubject: Hello!\r\n\r\nThis message was sent with Python's smtplib." ---------- MESSAGE FOLLOWS ---------- From: sender@example.com To: user@example.com Subject: Hello! X-Peer: 192.168.139.1 This message was sent with Python's smtplib. ------------ END MESSAGE ------------ Data: 'quit'
Implicit TLS via smtp port 465:
#> python -m smtpd_tls --debug -c DebuggingServer --tls --keyfile=../server.pem 0.0.0.0:465 DebuggingServer started at Thu Feb 4 17:00:53 2016 Local addr: ('0.0.0.0', 465) Remote addr:('mail.somehost.com', 25) TLS Mode: implicit (encrypted from the beginning) TLS Context: <ssl.SSLContext object at 0x7fee6ec36bb0> Incoming connection from ('192.168.139.1', 40028) Peer: ('192.168.139.1', 40028) - negotiated TLS: ('ECDHE-RSA-AES256-GCM-SHA384', 'TLSv1/SSLv3', 256) Peer: ('192.168.139.1', 40028) Data: 'ehlo [192.168.139.1]' Data: 'mail FROM:<sender@example.com>' ===> MAIL FROM:<sender@example.com> sender: sender@example.com Data: 'rcpt TO:<user@example.com>' ===> RCPT TO:<user@example.com> recips: ['user@example.com'] Data: 'data' Data: "From: sender@example.com\r\nTo: user@example.com\r\nSubject: Hello!\r\n\r\nThis message was sent with Python's smtplib." ---------- MESSAGE FOLLOWS ---------- From: sender@example.com To: user@example.com Subject: Hello! X-Peer: 192.168.139.1 This message was sent with Python's smtplib. ------------ END MESSAGE ------------ Data: 'quit'
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
smtpd-tls-0.1.tar.gz
(6.1 kB
view hashes)