https://github.com/tintinweb/python-smtpd-tls
An extension to the standard python 2.x smtpd library implementing implicit/explicit SSL/TLS/STARTTLS
https://github.com/tintinweb/python-smtpd-tls
Last synced: 8 months ago
JSON representation
An extension to the standard python 2.x smtpd library implementing implicit/explicit SSL/TLS/STARTTLS
- Host: GitHub
- URL: https://github.com/tintinweb/python-smtpd-tls
- Owner: tintinweb
- Created: 2016-02-04T17:21:23.000Z (almost 10 years ago)
- Default Branch: master
- Last Pushed: 2018-11-29T01:43:57.000Z (about 7 years ago)
- Last Synced: 2025-04-13T05:04:16.646Z (9 months ago)
- Language: Python
- Homepage:
- Size: 23.4 KB
- Stars: 11
- Watchers: 2
- Forks: 4
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 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:
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:'
===> MAIL FROM:
sender: sender@example.com
Data: 'rcpt TO:'
===> RCPT TO:
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:
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:'
===> MAIL FROM:
sender: sender@example.com
Data: 'rcpt TO:'
===> RCPT TO:
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'