# Introduction

This library provides an `asyncio`-based implementation of a server for RFC 5321 - Simple Mail Transfer Protocol (SMTP) and RFC 2033 - Local Mail Transfer Protocol (LMTP). It is derived from Python 3.5’s smtpd.py standard library module, and provides both a command line interface and an API for use in testing applications that send email.

Inspiration for this library comes from several other packages:

- lazr.smtptest

- benjamin-bader/aiosmtp

- Mailman 3’s LMTP server

`aiosmtpd` takes the best of these and consolidates them in one place.

## Relevant RFCs

- RFC 5321 - Simple Mail Transfer Protocol (SMTP)

- RFC 2033 - Local Mail Transfer Protocol (LMTP)

- RFC 2034 - SMTP Service Extension for Returning Enhanced Error Codes

- RFC 6531 - SMTP Extension for Internationalized Email

- RFC 4954 - SMTP Service Extension for Authentication

- RFC 5322 - Internet Message Format

- RFC 3696 - Application Techniques for Checking and Transformation of Names

- RFC 2034 - SMTP Service Extension for Returning Enhanced Error Codes

- RFC 1870 - SMTP Service Extension for Message Size Declaration

## Other references

- Wikipedia page on SMTP

- asyncio module documentation

- Developing with asyncio

- Python issue #25008 which started the whole thing.