File: //usr/share/doc/python3-aiosmtpd/html/searchindex.js
Search.setIndex({"docnames": ["NEWS", "auth", "cli", "concepts", "controller", "handlers", "index", "intro", "lmtp", "manpage", "migrating", "proxyprotocol", "smtp", "testing"], "filenames": ["NEWS.rst", "auth.rst", "cli.rst", "concepts.rst", "controller.rst", "handlers.rst", "index.rst", "intro.rst", "lmtp.rst", "manpage.rst", "migrating.rst", "proxyprotocol.rst", "smtp.rst", "testing.rst"], "titles": ["NEWS for aiosmtpd", "Authentication System", "Command line usage", "Concepts", "Programmatic usage", "Handlers", "aiosmtpd - An asyncio based SMTP server", "Introduction", "The LMTP class", "aiosmtpd", "Migrating from smtpd to aiosmtpd", "PROXY Protocol Support", "The SMTP Module", "Testing"], "terms": {"The": [0, 1, 2, 3, 4, 6, 7, 9, 10, 11, 13], "develop": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13], "unthread": 0, "control": [0, 1, 2, 5, 6, 10, 12, 13], "close": [0, 2, 4, 5, 12], "160": 0, "all": [0, 1, 4, 5, 6, 11, 12], "now": [0, 5, 6, 12], "have": [0, 1, 4, 5, 6, 11, 12], "more": [0, 4, 5, 6, 11, 12], "rational": 0, "design": [0, 6, 10, 11], "thei": [0, 5, 11, 12, 13], "ar": [0, 1, 2, 3, 4, 5, 6, 9, 11, 12, 13], "composit": 0, "from": [0, 1, 3, 4, 5, 6, 7, 8, 11, 12], "base": [0, 1, 5, 7, 10, 12], "mixin": 0, "A": [0, 1, 3, 4, 5, 6, 11, 12, 13], "whole": [0, 6, 7, 11], "bunch": 0, "annot": 0, "prevent": [0, 1, 4, 12], "unclean": 0, "repo": [0, 6], "being": [0, 4, 5, 11, 12], "built": [0, 1, 3, 4, 6, 11, 12], "365": [0, 12], "reduc": [0, 4], "chanc": 0, "readi": [0, 4, 9], "releas": [0, 4, 6], "packag": [0, 2, 6, 7], "upload": 0, "No": [0, 6], "longer": [0, 6, 11, 12], "expect": [0, 4, 11], "an": [0, 1, 3, 4, 5, 7, 8, 9, 10, 11, 12], "implicit": [0, 12], "creation": [0, 4], "event": [0, 3, 4, 6, 9, 10, 12], "loop": [0, 3, 4, 6, 10, 12], "through": [0, 1, 3, 4, 6, 11], "get_event_loop": 0, "353": 0, "i": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], "compat": [0, 1, 4], "uvloop": 0, "add": [0, 3, 4, 5, 6, 12], "python": [0, 2, 4, 5, 7, 9, 11, 12], "322": 0, "test": [0, 4, 5, 6, 7], "matrix": 0, "updat": 0, "306": 0, "drop": 0, "6": [0, 4, 6, 12], "pypi": [0, 6], "some": [0, 1, 3, 4, 5, 6, 11, 12, 13], "maco": [0, 6], "7": [0, 6], "8": [0, 3, 4, 6, 12], "ubuntu": [0, 6], "expand": 0, "tox": [0, 6], "environ": [0, 4], "autostop_delai": 0, "especi": [0, 6], "window": [0, 6], "313": 0, "sign": [0, 12], "kei": [0, 5, 9, 11, 12], "document": [0, 2, 4, 5, 6, 7, 11, 12], "": [0, 2, 3, 4, 5, 6, 7, 9, 11, 12, 13], "ready_timeout": [0, 4], "paramet": [0, 1, 3, 4, 5, 6, 9, 11, 12, 13], "increas": [0, 9], "thi": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], "won": [0, 4, 6, 12], "t": [0, 2, 4, 6, 11, 12], "slow": [0, 4], "down": [0, 4], "startup": [0, 4], "becaus": [0, 2, 4, 6, 11, 12], "just": [0, 4, 5, 12], "timeout": [0, 4, 11, 12], "limit": [0, 4, 12], "instead": [0, 4, 5, 6, 11, 12], "sleep": [0, 4], "delai": [0, 4, 6], "should": [0, 1, 3, 5, 11, 12], "help": [0, 4, 5, 6, 9, 12], "give": [0, 4, 6, 13], "up": [0, 3, 4, 5, 6, 11, 12], "too": [0, 4, 6], "soon": [0, 6], "dure": [0, 1, 3, 4, 5, 6, 9, 11], "situat": [0, 6], "where": [0, 1, 5, 6, 8], "system": [0, 4, 5, 6, 8, 12], "network": 0, "bit": [0, 6], "busi": 0, "caus": [0, 6, 11, 12], "slowdown": 0, "see": [0, 1, 2, 4, 5, 6, 11, 12], "262": 0, "messag": [0, 1, 3, 4, 5, 6, 7, 9, 10, 11, 12], "start": [0, 2, 4, 5, 6, 7, 10, 11, 12], "get": [0, 1, 4, 5, 6, 12, 13], "detail": [0, 4, 5, 12], "mention": [0, 11], "about": [0, 3, 4, 5, 6], "sensit": [0, 1, 12], "auth": [0, 3, 5, 6, 12], "inform": [0, 1, 3, 4, 5, 11, 12], "leak": 0, "sanit": 0, "repr": 0, "authresult": [0, 12], "loginpassword": [0, 1, 12], "maximum": [0, 12], "length": [0, 4, 12], "email": [0, 3, 4, 5, 6, 7, 12], "address": [0, 3, 4, 5, 11, 12, 13], "local": [0, 4, 7, 8, 11, 12], "part": [0, 9, 11, 12], "customiz": [0, 9], "default": [0, 3, 4, 5, 6, 9, 11, 12, 13], "257": 0, "support": [0, 1, 4, 9, 12], "proxi": [0, 5, 6, 12], "protocol": [0, 2, 3, 4, 5, 6, 7, 8, 9, 12], "174": 0, "exampl": [0, 3, 4, 5, 6, 11, 12], "authent": [0, 3, 5, 6, 7, 12], "ssl": [0, 3, 4, 5, 11, 12], "cli": 0, "man": [0, 2], "page": [0, 2, 6, 7, 12], "info": [0, 4, 5, 12], "172": 0, "unixsocketcontrol": [0, 4], "class": [0, 1, 3, 4, 5, 6, 9, 10, 11, 12, 13], "implement": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], "unix": [0, 11], "socket": [0, 3], "smtp": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11], "server": [0, 1, 2, 3, 5, 7, 9, 10, 11], "114": 0, "pypy3": [0, 6], "testenv": [0, 13], "can": [0, 1, 2, 3, 4, 5, 6, 9, 10, 11, 12], "run": [0, 2, 3, 4, 6, 9, 10, 11, 12], "static": [0, 6], "auto": 0, "skip": [0, 4, 6, 11], "us": [0, 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13], "sphinx": [0, 6], "doctest": [0, 6], "facil": 0, "which": [0, 1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13], "much": [0, 4, 6, 12], "flexibl": [0, 12], "than": [0, 4, 6, 11, 12], "pytest": [0, 6], "gpg": [0, 6], "readm": 0, "rst": 0, "long": [0, 4, 9, 13], "desc": 0, "hidden": 0, "env": 0, "code": [0, 1, 4, 5, 6, 7, 10, 12, 13], "check": [0, 4, 6, 7, 11], "issu": [0, 6, 7, 8, 11, 12], "might": [0, 1, 4, 6, 12], "automat": [0, 4, 5, 13], "builder": 0, "fail": [0, 3, 5, 9, 11], "also": [0, 1, 2, 3, 4, 5, 6, 9, 11, 12], "consid": [0, 4, 10], "eafnosupport": 0, "ipv6": [0, 4], "detect": 0, "244": 0, "again": [0, 5, 10], "descript": [0, 4, 12, 13], "actual": [0, 1, 4, 6, 11, 12], "enforc": [0, 12], "rais": [0, 4, 5, 11, 12], "timeouterror": [0, 4], "breach": [0, 4], "hide": 0, "onli": [0, 1, 3, 4, 5, 6, 8, 9, 11, 12], "except": [0, 4, 5, 6, 11, 12], "_testconn": 0, "opaqu": 0, "unknown": [0, 11], "error": [0, 3, 4, 5, 6, 7, 11, 12], "hostnam": [0, 4, 5, 9, 10, 12], "hardcod": 0, "localhost": [0, 2, 4, 9, 12], "perform": [0, 1, 3, 4, 5, 6, 11, 12], "first": [0, 4, 5, 11, 12], "handle_ehlo": [0, 5], "interact": [0, 1], "said": 0, "method": [0, 1, 3, 4, 5, 10, 11, 12], "modifi": [0, 1, 11], "list": [0, 1, 3, 5, 6, 11, 13], "respons": [0, 3, 4, 5, 10, 12], "ehlo": [0, 3, 4, 5, 8, 12], "command": [0, 1, 3, 4, 5, 6, 7, 8, 11, 12], "155": 0, "workaround": 0, "bpo": 0, "27931": 0, "ha": [0, 1, 2, 3, 4, 5, 6, 9, 11, 12], "been": [0, 1, 2, 3, 4, 5, 6, 11], "anywai": 0, "auth_callback": [0, 3, 12], "enabl": [0, 6, 9], "call": [0, 1, 3, 4, 5, 6, 9, 10, 11, 12], "function": [0, 1, 3, 4, 8, 10, 12], "session": [0, 1, 4, 5, 6, 10, 11, 12], "other": [0, 2, 3, 4, 6, 9, 11, 12, 13], "deprec": [0, 3, 4, 5, 6, 12], "__version__": 0, "attribut": [0, 1, 3, 4, 5, 11, 12], "__init__": 0, "py": [0, 7, 11, 13], "import": [0, 1, 4, 5, 9, 10, 11, 12, 13], "plain": [0, 1, 12], "modul": [0, 1, 2, 4, 6, 7, 11, 13], "It": [0, 3, 4, 5, 6, 7, 8, 11, 12], "reimport": 0, "so": [0, 1, 2, 3, 4, 5, 6, 11, 12, 13], "program": [0, 9, 11], "reli": [0, 11], "still": [0, 4, 5, 12], "work": [0, 1, 4, 6, 12], "241": 0, "pure": 0, "case": [0, 4, 5, 6, 9, 12], "198": 0, "option": [0, 1, 3, 4, 5, 6, 12], "disabl": [0, 1, 4, 9, 12], "log": [0, 1, 5, 12], "sever": [0, 1, 3, 6, 7], "warn": [0, 12], "line": [0, 3, 4, 5, 6, 7, 12], "befor": [0, 4, 5, 6, 11, 12], "233": 0, "special": [0, 4, 11, 12], "handl": [0, 1, 4, 5, 12], "lone": 0, "treat": 0, "simpl": [0, 5, 7, 9, 12], "base64": [0, 12], "encod": [0, 12], "b": [0, 4, 11, 12], "correct": [0, 1], "strict": 0, "interpret": [0, 6], "rfc": [0, 1, 3, 5, 6, 8, 9, 12], "4954": [0, 1, 7], "behavior": [0, 1, 4, 5, 11, 12], "after": [0, 3, 4, 5, 12], "take": [0, 4, 5, 7, 11, 12], "out": [0, 1, 4, 5, 11, 12], "edit": 0, "tl": [0, 5, 12], "context": [0, 4, 12], "mechan": [0, 4, 12], "number": [0, 4, 9, 12], "sent": [0, 1, 3, 5, 12], "145": 0, "handle_except": [0, 5], "when": [0, 3, 4, 5, 6, 11, 12], "client": [0, 1, 2, 3, 4, 5, 6, 11, 12, 13], "disconnect": [0, 12], "127": [0, 2, 4, 10], "162": 0, "thu": [0, 4, 12], "becom": [0, 4, 6], "compliant": [0, 9], "5321": [0, 3, 5, 7, 9, 12], "statu": [0, 1, 3, 4, 5, 12], "repli": 0, "data": [0, 1, 3, 4, 5, 10, 11, 12], "phase": [0, 4, 5], "until": [0, 4, 9, 11], "termin": [0, 11], "9": [0, 6], "catch": [0, 4, 6], "factori": [0, 4, 12], "failur": [0, 6], "212": 0, "user": [0, 10], "suppli": [0, 12], "191": 0, "wait": [0, 4, 5, 9, 10, 12], "setup": [0, 4, 6], "handshak": [0, 5, 11], "within": [0, 1, 4], "starttl": [0, 4, 6, 9], "handler": [0, 3, 4, 6, 9, 10, 11, 12], "abl": 0, "avoid": 0, "hang": [0, 4], "around": 0, "peer": [0, 3, 5, 10, 11], "output": [0, 1, 5, 6, 9, 12], "wa": [0, 3, 4, 5, 12], "miss": [0, 11, 12], "dash": [0, 1], "e": [0, 1, 2, 3, 4, 5, 6, 8, 11], "name": [0, 1, 3, 4, 5, 6, 7, 11, 12], "224": 0, "doubl": [0, 1], "lmtp": [0, 3, 4, 6, 7, 12], "correctli": 0, "advertis": [0, 12], "extens": [0, 7, 9, 11, 12, 13], "lhlo": [0, 3, 8, 12], "123": 0, "124": 0, "noop": [0, 5, 12], "accept": [0, 4, 5, 11, 12], "even": 0, "require_starttl": [0, 9, 12], "true": [0, 1, 3, 4, 5, 9, 11, 12], "apach": [0, 6], "licens": 0, "version": [0, 1, 3, 4, 5, 9, 11, 12], "hook": [0, 3, 4, 6], "featur": [0, 13], "login": [0, 1, 3, 12], "logic": [0, 1, 11], "102": 0, "inject": 0, "keyword": [0, 4, 13], "arg": [0, 1, 5, 12, 13], "instanti": [0, 5, 12, 13], "potenti": [0, 11], "194": 0, "179": 0, "188": 0, "don": [0, 4, 6, 11, 12], "strip": [0, 4], "last": [0, 4, 5, 11], "r": [0, 4, 11], "n": [0, 2, 4, 9, 11], "prior": [0, 6], "dot": [0, 9], "slight": [0, 4, 6], "make": [0, 4, 6, 10, 12], "suit": [0, 6, 13], "maintain": [0, 11], "deprecationwarn": 0, "167": 0, "faster": 0, "_handle_cli": 0, "process": [0, 1, 4, 9, 10], "access": [0, 4, 6, 11], "smtp_": [0, 5, 12], "handle_": 0, "auth_": [0, 12], "unit": [0, 4, 13], "mock": [0, 13], "deep": [0, 4], "possibli": 0, "mask": 0, "observ": 0, "intern": [0, 5, 11], "125": 0, "ident": [0, 4, 11, 12], "field": 0, "constructor": [0, 3, 4, 5, 12, 13], "131": 0, "asyncio": [0, 3, 4, 7, 10, 12], "coroutin": [0, 5, 10, 12], "decor": [0, 1, 12], "introduc": 0, "docstr": [0, 13], "explain": [0, 4, 6], "dual": [0, 4], "stack": [0, 4], "bind": [0, 4], "140": 0, "gracefulli": 0, "ascii": [0, 12], "decod": [0, 3, 4, 11, 12], "142": 0, "typo": 0, "ssl_context": [0, 4], "partial": [0, 4, 11], "As": [0, 6, 13], "per": [0, 6, 12], "multipl": [0, 6], "helo": [0, 3, 4, 5, 8, 12], "same": [0, 1, 4, 6, 11], "semant": [0, 3, 4], "equival": [0, 2], "rset": [0, 3, 5, 12], "78": 0, "argument": [0, 1, 2, 3, 4, 9, 12, 13], "ignor": [0, 1, 5, 12], "api": [0, 5, 6, 7], "break": 0, "If": [0, 1, 3, 4, 5, 6, 9, 11, 12], "you": [0, 1, 2, 3, 4, 5, 6, 11, 12, 13], "handle_noop": [0, 5], "previous": 0, "took": 0, "zero": [0, 11], "requir": [0, 1, 11, 12, 13], "singl": [0, 1, 6], "107": 0, "v": [0, 9], "print": [0, 3, 4, 5, 12, 13], "current": [0, 3, 5, 6, 10], "111": 0, "gener": [0, 3, 6, 9, 12], "104": [0, 4], "must": [0, 1, 4, 5, 6, 9, 10, 11, 12], "arrang": [0, 5], "origin": [0, 11], "transport": [0, 3, 8, 11, 12], "wrap": [0, 4], "occur": [0, 4, 5], "eof": 0, "receiv": [0, 3, 4, 5, 6, 9], "tranport": 0, "connect": [0, 2, 3, 4, 5, 8, 11, 12, 13], "lost": [0, 5], "83": 0, "widen": 0, "connectionreseterror": 0, "cancellederror": 0, "110": 0, "manpag": [0, 6], "script": [0, 6], "116": 0, "better": [0, 6, 13], "There": [0, 2, 3, 4, 11], "syntax": [0, 11, 12], "deriv": [0, 7], "These": [0, 1, 4, 5, 6, 12], "show": [0, 6, 9, 11, 12], "subclass": [0, 3, 4, 5, 6, 8, 10, 11], "113": 0, "pass": [0, 2, 3, 4, 5, 9, 12, 13], "directli": [0, 2, 4, 11, 12], "create_serv": [0, 4], "displai": 0, "level": [0, 9, 12], "includ": [0, 4, 5, 6, 11, 12, 13], "separ": [0, 1, 4, 6, 10, 12], "boost": 0, "debug": [0, 5, 9], "main": [0, 2, 4, 9, 11], "readlin": 0, "robust": 0, "against": [0, 6, 11], "reset": [0, 3, 6], "mid": 0, "read": [0, 5, 11, 12], "62": 0, "regardless": [0, 1, 12], "valu": [0, 3, 4, 5, 6, 11, 12, 13], "decode_data": [0, 3, 5, 12], "instal": [0, 2, 11], "smtpd": [0, 4, 6, 7], "doe": [0, 4, 5, 6, 11], "job": 0, "unicod": 0, "claim": 0, "smtputf8": [0, 6, 9, 12], "send": [0, 1, 4, 5, 7, 11, 12], "non": [0, 4], "forc": [0, 6], "enable_smtputf8": [0, 4, 12], "fals": [0, 1, 3, 4, 5, 11, 12], "mutual": 0, "exclus": 0, "offici": [0, 12], "76": 0, "provid": [0, 1, 2, 3, 4, 5, 6, 7, 9, 11, 12, 13], "g": [0, 1, 3, 4, 5, 6, 8, 11], "return": [0, 1, 3, 4, 5, 7, 10, 11, 12], "string": [0, 1, 3, 4, 5, 12], "ehlo_hook": [0, 12], "rset_hook": [0, 12], "process_messag": [0, 10], "asynchron": [0, 4, 5, 6, 9, 12], "handle_data": [0, 4, 5, 10], "envelop": [0, 1, 4, 5, 6, 10, 11, 12], "object": [0, 3, 4, 5, 11, 12], "given": [0, 1, 3, 4, 5, 9, 12, 13], "konstantin": 0, "volkov": 0, "minor": 0, "chang": [0, 3, 4, 5, 12], "wai": [0, 2, 3, 4, 6, 8, 11, 12], "mail_opt": [0, 3, 5], "rcpt_option": [0, 3, 4, 5], "although": [0, 13], "latter": 0, "respect": [0, 1, 5, 11, 13], "end": [0, 1, 4, 5, 11, 12], "size": [0, 4, 7, 9, 12], "two": [0, 2, 3, 5], "specifi": [0, 1, 4, 5, 6, 9, 11, 12], "second": [0, 4, 5, 9, 11, 12], "amount": 0, "time": [0, 1, 3, 4, 6, 12], "overridden": [0, 13], "variabl": [0, 4], "aiosmtpd_controller_timeout": [0, 4, 9], "35": 0, "overrid": [0, 1, 4, 5, 12, 13], "self": [0, 4, 10, 11, 12], "yourself": [0, 4, 11], "defin": [0, 1, 3, 4, 5, 6, 8, 9, 11, 12, 13], "handle_tls_handshak": 0, "48": 0, "flufl": 0, "nose2": 0, "flake8": [0, 6], "plugin": 0, "achiev": 0, "100": 0, "coverag": [0, 6, 13], "identifi": [0, 11, 12], "set": [0, 1, 2, 3, 4, 5, 6, 9, 11, 12], "__ident__": 0, "instanc": [0, 1, 3, 4, 5, 11, 12], "incompat": 0, "atpubl": 0, "librari": [0, 6, 7, 11, 13], "prepare_messag": [0, 5], "craft": 0, "x": [0, 5, 6], "rcptto": [0, 5], "header": [0, 5, 6, 12], "renam": 0, "backward": [0, 1, 4], "older": 0, "few": [0, 5], "easier": [0, 4], "final": [0, 4, 5], "continu": [0, 5, 11, 12], "250": [0, 4, 5, 10, 12], "allow": [0, 4, 11, 12], "addit": [0, 1, 3, 4, 5, 6, 9, 11, 12], "sub": 0, "make_socket": 0, "custom": [0, 1, 4, 5, 12], "both": [0, 4, 5, 6, 7, 11, 12], "ipv4": 0, "listen": [0, 4, 9], "jason": 0, "coomb": 0, "vz": 0, "One": 0, "enchant": 0, "want": [0, 1, 3, 4, 6, 12], "getfqdn": 0, "quit": [0, 2, 4, 5, 6, 12], "asyncmessag": [0, 5], "directori": [0, 5, 6, 13], "clean": [0, 5], "initi": [0, 1, 4, 11, 12], "aiosmtpd": [1, 2, 3, 4, 5, 7, 8, 11, 13], "2015": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], "2022": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], "framework": [1, 6], "fulli": [1, 4, 12], "compli": 1, "alwai": [1, 3, 4, 5], "attempt": [1, 11, 12], "reject": [1, 4, 11], "unless": [1, 9, 11, 12], "valid": [1, 4, 11, 12], "compris": 1, "compon": 1, "who": 1, "collectivelli": 1, "async": [1, 4, 5, 10, 12], "handle_auth": [1, 5], "need": [1, 3, 4, 5, 6, 11, 13], "most": [1, 4, 11, 12], "NOT": [1, 4, 5, 6, 11, 12], "select": 1, "below": [1, 4, 5, 6, 11, 13], "do": [1, 3, 4, 5, 6, 9, 11, 12, 13], "contain": [1, 3, 4, 5, 11, 12, 13], "word": [1, 11], "follow": [1, 4, 5, 6, 10, 11, 12], "leverag": 1, "push": [1, 5, 12], "challenge_auth": [1, 12], "auth_data": [1, 3], "mai": [1, 2, 3, 4, 5, 11, 12, 13], "everi": [1, 6, 9], "auth_mechan": [1, 12], "uppercas": 1, "its": [1, 3, 4, 5, 6, 8], "underscor": 1, "repres": [1, 3], "For": [1, 3, 4, 5, 6, 11, 12], "mech": 1, "WITH": 1, "auth_mech__with__dash": 1, "auth_mech_with_underscor": 1, "mech_with_underscor": 1, "futur": 1, "sasl": 1, "mangl": 1, "revisit": 1, "That": [1, 4, 11], "veri": [1, 4, 8, 13], "unlik": [1, 3, 4, 10, 11], "happen": [1, 4, 11, 12], "though": [1, 4, 6], "altern": [1, 8], "auth_login": 1, "auth_plain": 1, "str": [1, 3, 4, 5, 11, 12, 13], "invok": [1, 3, 4, 5, 6, 11, 12, 13], "split": 1, "charact": [1, 2, 4, 5, 6, 12], "0": [1, 2, 3, 4, 5, 6, 9, 10, 11, 12], "usual": [1, 6, 11], "equal": 1, "credenti": 1, "In": [1, 4, 5, 6, 8, 11, 12], "done": [1, 2, 4, 5, 12], "own": [1, 4, 12, 13], "result": [1, 4, 5, 11, 12], "your": [1, 2, 3, 4, 6, 10, 11, 12, 13], "offer": 1, "them": [1, 4, 7, 11], "auth_exclude_mechan": [1, 12], "far": [1, 5, 11], "transact": [1, 5, 11], "chosen": 1, "structur": 1, "gather": [1, 3], "type": [1, 2, 4, 5, 6, 10, 11, 12], "would": [1, 3, 4, 11], "decis": 1, "whether": [1, 5, 11, 12], "success": [1, 4, 11, 12], "content": [1, 3, 4, 5, 10, 11, 12], "wholli": 1, "discret": [1, 12], "new": [1, 3, 4, 6, 11, 12], "1": [1, 2, 3, 4, 5, 6, 9, 10, 11, 12], "3": [1, 3, 4, 5, 6, 7, 11, 12], "bool": [1, 3, 4, 11, 12], "indic": [1, 3, 5, 11, 12, 13], "carri": [1, 5], "smtp_auth": 1, "simpli": [1, 4, 11], "exit": [1, 9, 10], "applic": [1, 7, 10], "none": [1, 3, 4, 5, 10, 11, 12], "back": [1, 11], "prefix": [1, 11, 12], "extend": [1, 3, 5, 6], "kept": 1, "standard": [1, 4, 6, 7, 11, 12], "ani": [1, 2, 3, 4, 5, 6, 11, 12], "free": 1, "form": [1, 5], "save": [1, 6], "login_data": [1, 3], "well": [1, 3], "cater": [1, 6], "possibl": [1, 6, 11, 12], "legaci": [1, 3], "look": [1, 11], "reason": [1, 4, 11], "we": [1, 4, 5, 6, 11, 12], "taken": [1, 3, 4], "step": [1, 3, 4, 5, 6], "leakag": [1, 12], "password": [1, 12], "__repr__": 1, "__str__": 1, "howev": [1, 4, 6], "pleas": [1, 4, 5, 6, 12, 13], "care": [1, 4, 5], "emit": 1, "record": [1, 11], "authenticated_relay": 1, "entri": 2, "point": [2, 4, 5, 11], "depend": [2, 4, 5, 6, 11], "how": [2, 4, 6, 9, 12], "python3": [2, 6], "m": [2, 6], "port": [2, 4, 5, 9, 10, 11, 12, 13], "8025": [2, 4, 9], "without": 2, "uid": 2, "nobodi": [2, 9], "aren": 2, "root": [2, 6, 9], "onc": [2, 6, 11], "ve": [2, 6], "favorit": 2, "tool": [2, 6], "greet": [2, 3, 4, 12], "telnet": 2, "try": [2, 4, 5, 6, 11], "escap": 2, "220": [2, 4, 12], "subdivis": 2, "221": [2, 4], "bye": [2, 4], "foreign": 2, "host": [2, 3, 4, 5, 9, 12, 13], "Of": 2, "cours": 2, "could": [2, 3, 10, 12], "smtplib": [2, 3, 4, 5, 12], "talk": [2, 12], "hit": [2, 4, 6], "c": [2, 4, 5, 9], "stop": [2, 4, 5, 6, 10, 12], "abov": [2, 4, 6, 11, 13], "invoc": 2, "describ": [2, 4, 5, 11], "via": [3, 4, 9], "programmat": [3, 5, 6], "dimens": 3, "basic": [3, 6, 11], "variou": [3, 5, 13], "dialog": [3, 4, 5, 9], "assum": [3, 4], "core": 3, "exist": [3, 10, 11], "consol": [3, 4], "avail": [3, 4, 5, 6, 11, 12, 13], "one": [3, 4, 5, 6, 7, 9, 11, 12, 13], "stdout": [3, 5], "On": [3, 4], "hand": 3, "like": [3, 4, 6, 11, 12], "ping": [3, 12], "ad": [3, 4, 11, 12], "whatev": [3, 6, 12], "inter": 3, "coordin": 3, "state": 3, "each": 3, "creat": [3, 4, 5, 6, 11, 12, 13], "peernam": 3, "extra": [3, 4], "dictionari": 3, "sslproto": 3, "sslprotocol": 3, "specif": [3, 13], "roughli": 3, "correspond": 3, "basetransport": 3, "get_extra_info": 3, "host_nam": [3, 5], "seen": 3, "extended_smtp": 3, "flag": [3, 4, 9, 12], "esmtp": [3, 4, 5, 8, 12], "util": [3, 6], "call_lat": [3, 4], "timer": 3, "procedur": [3, 12], "mean": [3, 6, 10, 11], "place": [3, 7, 11], "popul": 3, "sinc": [3, 4, 5, 6, 11, 12], "remov": [3, 4, 5, 6, 11, 12], "2": [3, 5, 6, 11, 12], "callback": [3, 5], "tri": [3, 9], "succeed": [3, 5, 12], "complet": [3, 4, 12], "certain": [3, 6, 11, 12], "condit": 3, "mandat": 3, "mail_from": [3, 4, 5, 10], "hold": [3, 12], "mail": [3, 4, 5, 7, 8, 9, 12], "those": [3, 4, 11], "sendmail": [3, 4, 5], "anystr": [3, 11, 12], "utf": [3, 4, 12], "otherwis": [3, 4, 5, 12], "raw": [3, 11], "byte": [3, 5, 9, 10, 11, 12], "original_cont": [3, 5], "rcpt_to": [3, 4, 5, 10], "empti": [3, 4, 11], "rcpt": [3, 4, 5, 12], "TO": [3, 4, 5, 12], "recipi": [3, 4], "alreadi": [4, 12], "forev": 4, "functool": 4, "write": 4, "wrapper": 4, "signal": [4, 5], "sai": [4, 6, 12], "probabl": [4, 6], "thread": [4, 9, 10], "dedic": 4, "reliabl": 4, "foreground": 4, "doesn": [4, 11, 12], "block": 4, "among": 4, "conveni": [4, 5, 12], "spin": 4, "respond": [4, 6, 12], "multiprocess": 4, "larg": 4, "internet": [4, 7, 8], "endpoint": [4, 11], "ip_address": 4, "pair": 4, "com": [4, 5, 6], "incom": [4, 5, 9], "examplehandl": 4, "def": [4, 10, 12], "handle_rcpt": [4, 5], "endswith": 4, "550": 4, "relai": 4, "domain": [4, 12], "append": [4, 5], "ok": [4, 10, 12], "ln": 4, "utf8": 4, "replac": [4, 11], "splitlin": 4, "f": 4, "deliveri": 4, "By": [4, 9], "either": [4, 5, 11, 12], "differ": [4, 5, 8, 10, 11, 12], "durat": 4, "ann": [4, 5], "person": [4, 5], "To": [4, 5, 10, 11, 12], "bart": [4, 5], "subject": [4, 5], "id": [4, 5, 6], "ant": [4, 5], "hi": [4, 5], "ll": [4, 6], "notic": 4, "sender": [4, 10], "were": 4, "saniti": 4, "ensur": [4, 6], "insid": [4, 11, 13], "aperson": [4, 5], "cperson": [4, 5], "net": 4, "chri": 4, "anoth": 4, "traceback": 4, "recent": 4, "smtprecipientsrefus": 4, "re": [4, 5, 6, 11, 12], "guarante": [4, 8], "connectionrefusederror": 4, "common": [4, 12], "task": 4, "easi": [4, 10, 11, 12], "full": [4, 6, 11], "overview": 4, "section": [4, 6, 9, 11], "file": [4, 6, 9, 11, 12, 13], "act": 4, "pipe": 4, "interprocess": 4, "commun": 4, "rather": [4, 11], "filepath": 4, "sink": [4, 5, 12], "unix_socket": 4, "smtp_socket": 4, "exce": 4, "oper": [4, 5], "path": [4, 5, 6, 9], "linux": 4, "108": 4, "bsd": 4, "os": 4, "ip": [4, 11], "sadli": 4, "cannot": [4, 5, 6, 11, 12], "our": 4, "here": [4, 12], "sock": 4, "af_unix": 4, "sock_stream": 4, "recv": 4, "1024": 4, "someth": 4, "forget": [4, 6, 12], "org": [4, 6], "18": [4, 6], "And": [4, 6, 12], "everyth": [4, 11], "unthreadedcontrol": 4, "unixsocketunthreadedcontrol": 4, "advanc": [4, 12, 13], "manag": 4, "similar": [4, 8], "new_event_loop": [4, 12], "set_event_loop": 4, "begin": 4, "note": [4, 5, 6, 10, 12], "counterpart": 4, "purpos": [4, 12], "let": [4, 5, 6, 12], "schedul": 4, "autostop": 4, "runner": [4, 13], "enough": 4, "run_forev": 4, "target": [4, 6], "daemon": 4, "At": [4, 12], "complex": [4, 12], "thing": [4, 5, 7], "why": 4, "mark": 4, "join": [4, 5], "is_run": 4, "cleanup": [4, 5], "bound": [4, 13], "keep": 4, "call_soon_threadsaf": 4, "10": [4, 6, 9, 12], "rememb": 4, "cancel": 4, "cancel_task": 4, "Will": [4, 13], "stop_loop": 4, "topic": 4, "discuss": [4, 6, 12], "further": 4, "variant": 4, "leav": [4, 5], "figur": 4, "therefor": 4, "me": 4, "33554432": [4, 12], "8bitmim": 4, "experi": 4, "default_ready_timeout": 4, "float": [4, 6, 11, 12], "5": [4, 5, 6, 7, 12], "get_localhost": 4, "numer": [4, 11], "loopback": 4, "interfac": [4, 7, 12], "liter": 4, "ip6_i": 4, "NO": 4, "int": [4, 11, 12], "constant": 4, "errno": 4, "ye": 4, "align": 4, "patch": 4, "merg": 4, "basecontrol": 4, "server_hostnam": 4, "server_kwarg": 4, "smtp_paramet": 4, "abstract": [4, 5], "between": [4, 6, 11, 12], "concret": 4, "abstracteventloop": 4, "sslcontext": [4, 12], "dict": [4, 11, 12], "_create_serv": 4, "retriev": 4, "inet": [4, 11], "preced": 4, "over": [4, 11, 12], "translat": 4, "explicitli": [4, 6, 12], "200": 4, "400": 4, "smtp_kwarg": 4, "switch": [4, 6, 10], "mode": [4, 6], "impli": 4, "uncondit": 4, "encrypt": 4, "convert": [4, 5, 11], "high": 4, "problem": [4, 6, 11], "aris": 4, "exceed": 4, "runtimeerror": 4, "unrecogn": 4, "unhandl": 4, "remain": 4, "subthread": [4, 12], "while": [4, 12], "inspect": 4, "post": 4, "wish": 4, "manual": [4, 6, 9], "somecontrol": 4, "basethreadedcontrol": 4, "no_assert": 4, "assert": [4, 11], "assertionerror": 4, "had": [4, 6, 11, 12], "successfulli": [4, 11], "AND": 4, "union": 4, "pathlib": 4, "create_unix_serv": 4, "under": [4, 6], "stringifi": 4, "repeat": 4, "nor": [4, 11], "ed": 4, "insert": 4, "itself": [4, 11, 12], "upon": [4, 12], "orderli": 4, "callabl": [4, 12], "safe": [4, 6], "recommend": [4, 5, 6], "classmethod": [5, 11], "posit": [5, 11, 13], "from_cli": [5, 6], "cl": 5, "parser": 5, "argumentpars": 5, "recogn": [5, 11], "omit": 5, "ones": [5, 11], "least": [5, 6], "three": [5, 12], "alphabet": [5, 6, 13], "order": [5, 6, 13], "entir": 5, "normal": 5, "accord": [5, 12], "transpar": 5, "rule": 5, "4": [5, 6, 9, 11, 12], "await": [5, 12], "y": 5, "later": 5, "appli": 5, "plan": [5, 11], "desir": [5, 12], "attr": 5, "strongli": [5, 6], "element": 5, "handle_helo": 5, "format": [5, 7, 12], "handle_mail": 5, "pars": [5, 6], "handle_proxi": [5, 6], "proxy_data": [5, 11], "proxydata": [5, 6], "truthi": [5, 11], "falsei": [5, 11], "handle_quit": 5, "handle_rset": 5, "handle_vrfi": 5, "vrfy": [5, 12], "synchron": 5, "handle_starttl": 5, "connection_mad": 5, "542": 5, "451": 5, "handle_messag": 5, "stream": [5, 11, 12], "stderr": 5, "maildir": 5, "exactli": 5, "store": 5, "home": [5, 6], "myhom": 5, "gain": 5, "mailfrom": 5, "rel": 5, "forward": 5, "remot": 5, "confus": [5, 6], "total": [5, 9], "consum": 5, "discard": 5, "essenti": 5, "op": 5, "prepar": [5, 6, 12], "exitstack": 5, "finish": [5, 6], "contextlib": 5, "tempfil": 5, "temporarydirectori": 5, "temporari": 5, "resourc": 5, "tempdir": 5, "enter_context": 5, "Then": 5, "o": [5, 6], "maildir_path": 5, "bperson": 5, "dperson": 5, "cate": 5, "dave": 5, "bee": 5, "third": [5, 11], "eperson": 5, "fperson": 5, "ell": 5, "fred": 5, "cat": 5, "open": 5, "u": [5, 9], "itemgett": 5, "sort": 5, "github": 6, "pythonimpl": 6, "ga": 6, "badg": 6, "codeql": 6, "codecov": 6, "readthedoc": 6, "gh": 6, "old": 6, "asyncor": [6, 10], "asynchat": 6, "definit": 6, "ag": 6, "difficult": 6, "understand": 6, "fix": 6, "12": 6, "With": 6, "introduct": 6, "seem": [6, 11], "obviou": 6, "relat": 6, "bring": 6, "togeth": 6, "highli": 6, "experienc": 6, "collabor": 6, "reimplement": 6, "io": 6, "cpython": 6, "cygwin": 6, "22": 6, "11": 6, "04": 6, "20": [6, 12], "2019": 6, "unlist": 6, "pip": 6, "modulenotfounderror": 6, "public": 6, "setuptool": 6, "upgrad": [6, 12], "46": 6, "2016": 6, "07": 6, "14": 6, "put": [6, 11], "aio": 6, "lib": 6, "umbrella": 6, "move": 6, "http": 6, "report": 6, "bug": 6, "git": 6, "clone": 6, "stackoverflow": 6, "question": 6, "tag": 6, "best": [6, 7, 11], "contact": 6, "link": 6, "request": 6, "submit": 6, "virtual": 6, "venv": 6, "sourc": [6, 11], "bin": 6, "activ": [6, 12], "quick": 6, "refer": [6, 12, 13], "got": 6, "individu": [6, 13], "testnam": 6, "node": [6, 12], "ini": 6, "exitfirst": 6, "captur": 6, "py37": 6, "nocov": 6, "combin": 6, "next": [6, 11], "choos": [6, 11], "comma": 6, "configur": 6, "py38": 6, "py39": 6, "py310": 6, "py311": 6, "pypy37": 6, "pypy38": 6, "pypy39": 6, "cov": [6, 13], "diffcov": 6, "profil": [6, 13], "kind": 6, "verbos": 6, "brief": 6, "diff": 6, "compar": [6, 11], "previou": [6, 12], "commit": 6, "2021": 6, "02": [6, 9], "23": 6, "quot": 6, "brace": 6, "ci": 6, "exact": 6, "pre": 6, "travi": 6, "action": [6, 9], "prep": 6, "bandit": 6, "secur": [6, 12], "qa": 6, "style": 6, "bugbear": 6, "doc": 6, "html": 6, "pytyp": 6, "execut": 6, "_skipped_": 6, "due": [6, 12], "instantli": 6, "slower": 6, "overwork": 6, "consider": [6, 12], "found": [6, 11], "littl": 6, "effort": 6, "pyenv": 6, "tip": 6, "1st": 6, "prefer": 6, "fallback": 6, "ever": 6, "superclean": 6, "often": [6, 8, 12], "recreat": 6, "typic": 6, "branch": 6, "realli": [6, 11, 13], "artifact": 6, "interfer": 6, "rebuild": 6, "Or": 6, "share": 6, "pscore": 6, "cach": 6, "bytecod": 6, "mess": 6, "powershel": 6, "locat": [6, 11], "owner": 6, "5d60": 6, "ce28": 6, "9cd7": 6, "c258": 6, "pandu": 6, "poluan": 6, "pepoluan": 6, "gmail": 6, "period": 6, "5555": 6, "a6a6": 6, "7ae1": 6, "dc91": 6, "e309": 6, "fd82": 6, "73bd": 6, "8465": 6, "wayn": 6, "werner": 6, "waynejwern": 6, "relev": 6, "concept": 6, "usag": [6, 9, 11, 13], "mailbox": 6, "enum": 6, "proxytlv": 6, "crc32c": 6, "calcul": 6, "migrat": 6, "synopsi": 6, "post2": [6, 9], "2023": 6, "01": 6, "19": 6, "17": 6, "21": 6, "03": 6, "08": 6, "26": 6, "09": 6, "24": 6, "2020": 6, "2018": 6, "2017": 6, "06": 6, "05": 6, "15": 6, "0rc1": 6, "0b1": 6, "0a5": 6, "0a4": 6, "29": 6, "0a3": 6, "0a2": 6, "0a1": 6, "index": 6, "search": 6, "transfer": [7, 9], "2033": [7, 8], "inspir": 7, "come": 7, "lazr": 7, "smtptest": 7, "benjamin": 7, "bader": 7, "aiosmtp": 7, "mailman": 7, "consolid": 7, "2034": 7, "servic": [7, 11], "enhanc": 7, "6531": [7, 9, 12], "internation": 7, "5322": 7, "3696": 7, "techniqu": 7, "transform": 7, "1870": [7, 9], "declar": [7, 10, 12], "wikipedia": 7, "25008": 7, "mani": [8, 11], "queu": 8, "sens": 8, "rout": 8, "agent": 8, "unreli": 8, "prohibit": 8, "author": [9, 11], "date": 9, "2024": 9, "copyright": 9, "h": 9, "classpath": 9, "d": 9, "l": [9, 11], "smtpscert": 9, "certfil": 9, "smtpskei": 9, "keyfil": 9, "tlscert": 9, "tlskei": 9, "requiretl": 9, "classarg": 9, "nosetuid": 9, "setuid": 9, "restrict": [9, 12], "33": 9, "554": 9, "432": 9, "neither": [9, 11], "certif": [9, 12], "effect": [9, 12], "smtpserver": 10, "customsmtpserv": 10, "error_occur": 10, "500": 10, "__name__": 10, "__main__": 10, "10025": 10, "customhandl": 10, "press": 10, "input": 10, "behind": 11, "load": 11, "balanc": 11, "affect": 11, "haproxi": 11, "solv": 11, "blog": 11, "softwar": [11, 12, 13], "amazon": 11, "web": 11, "nginx": 11, "stunnel": 11, "varnish": 11, "accompani": 11, "v2": 11, "proxy_protocol_timeout": [11, 12], "suggest": 11, "less": 11, "signatur": [11, 12], "adjac": 11, "entiti": 11, "ish": 11, "concern": 11, "proxy_protocol": 11, "af": 11, "unspec": 11, "ip4": 11, "ip6": 11, "map": 11, "proto": 11, "dgram": 11, "tcp": 11, "v2_cmd": 11, "properti": 11, "malform": 11, "famili": 11, "exclud": 11, "integ": 11, "src_addr": 11, "ipv4address": 11, "ipv6address": 11, "dst_addr": 11, "destin": 11, "src_port": 11, "inet6": 11, "dst_port": 11, "rest": [11, 12], "bytestr": 11, "crlf": 11, "16": [11, 12], "octet": [11, 12], "preambl": 11, "tlv": 11, "whole_raw": 11, "bytearrai": 11, "undecod": 11, "unmodifi": 11, "vector": 11, "verifi": 11, "proxyv2": 11, "tlv_start": 11, "with_error": 11, "error_msg": 11, "same_attrib": 11, "_rais": 11, "kwarg": [11, 13], "match": 11, "valueerror": 11, "wrong": 11, "keyerror": 11, "helper": 11, "quickli": 11, "tcp4": 11, "unknown_attrib": 11, "test_proxyprotocol": 11, "__bool__": 11, "evalu": 11, "boolean": 11, "portion": 11, "present": 11, "whose": [11, 12], "pp2_typenam": 11, "human": 11, "friendli": 11, "pp2_type_": 11, "pp2_subtype_": 11, "subvector": 11, "pp2_subtype_ssl": 11, "tlv_loc": 11, "typenam": 11, "offset": 11, "isinst": 11, "proxy_tlv": 11, "some_author": 11, "from_raw": 11, "trigger": 11, "chunk": 11, "partial_ok": 11, "malformedtlv": 11, "recurs": 11, "encount": 11, "assign": [11, 12], "xnn": 11, "abort": [11, 12], "name_to_num": 11, "associ": 11, "parti": 11, "uncomfort": 11, "crcmod": 11, "googl": 11, "etc": 11, "known": 11, "clear": 11, "comparison": 11, "tell": 11, "easili": 11, "binari": 11, "distribut": 11, "albeit": 11, "malwar": 11, "outsid": [11, 12], "short": 11, "strong": 11, "never": [11, 12], "absolut": [11, 12], "assist": [11, 13], "find": 11, "big": 11, "endian": 11, "slice": 11, "x00": 11, "adjust": 11, "necessari": [11, 12], "to_byt": 11, "good": 11, "luck": 11, "heart": 12, "streamreaderprotocol": 12, "myserv": 12, "smtp_ping": 12, "259": 12, "pong": 12, "mycontrol": 12, "isn": 12, "lower": 12, "docmd": 12, "commonli": 12, "authenticatortyp": 12, "actual_nam": 12, "namedtupl": 12, "data_size_limit": 12, "tls_context": 12, "300": 12, "auth_requir": 12, "auth_require_tl": 12, "command_call_limit": 12, "qualifi": 12, "3207": 12, "depth": 12, "2821": 12, "mandatori": 12, "impact": 12, "exchang": 12, "iter": 12, "login_always_fail": 12, "malici": 12, "call_limit_default": 12, "typeerror": 12, "30": 12, "explan": 12, "immedi": 12, "line_length_limit": 12, "1001": 12, "complianc": 12, "streamread": 12, "readuntil": 12, "local_part_limit": 12, "lengh": 12, "64": 12, "relax": 12, "authloginusernamechalleng": 12, "challeng": 12, "authloginpasswordchalleng": 12, "event_handl": 12, "_create_sess": 12, "_create_envelop": 12, "status": 12, "smtp_helo": 12, "noth": 12, "encode_to_b64": 12, "log_client_respons": 12, "_miss": 12, "plaintext": 12, "334": 12, "scenario": 12, "turn": 12, "ON": 12, "create_default_context": 12, "client_auth": 12, "privat": 12, "intermedi": 12, "ca": 12, "chain": 12, "load_cert_chain": 12, "pem": 12, "openssl": 12, "req": 12, "x509": 12, "newkei": 12, "rsa": 12, "4096": 12, "keyout": 12, "cert": 12, "dai": 12, "subj": 12, "cn": 12, "review": 12, "particular": 12, "insecur": 12, "meaningless": 12, "integr": 13, "regress": 13, "qualiti": 13, "extrem": 13, "wide": 13, "throughout": 13, "degre": 13, "sugar": 13, "ux": 13, "progress": 13, "troubleshoot": 13, "honest": 13, "muddi": 13, "throught": 13, "conftest": 13, "guid": 13, "client_data": 13, "connect_to": 13, "hostport": 13, "global": 13, "srvaddr": 13, "controller_data": 13, "get_control": 13, "class_": 13, "host_port": 13, "handler_data": 13, "get_handl": 13, "args_": 13, "tupl": 13}, "objects": {"": [[1, 0, 1, "", "AuthResult"], [1, 2, 1, "", "Authenticator"], [3, 0, 1, "", "Envelope"], [3, 0, 1, "", "Session"], [1, 4, 1, "", "auth_MECHANISM"], [13, 2, 1, "", "client_data"], [13, 2, 1, "", "controller_data"], [12, 2, 1, "", "ehlo_hook"], [5, 1, 1, "", "envelope"], [5, 4, 1, "", "from_cli"], [1, 4, 1, "", "handle_AUTH"], [5, 4, 1, "", "handle_DATA"], [5, 4, 1, "", "handle_EHLO"], [5, 4, 1, "", "handle_HELO"], [5, 4, 1, "", "handle_MAIL"], [5, 4, 1, "", "handle_NOOP"], [11, 4, 1, "", "handle_PROXY"], [5, 4, 1, "", "handle_QUIT"], [5, 4, 1, "", "handle_RCPT"], [5, 4, 1, "", "handle_RSET"], [5, 4, 1, "", "handle_STARTTLS"], [5, 4, 1, "", "handle_VRFY"], [5, 4, 1, "", "handle_exception"], [13, 2, 1, "", "handler_data"], [12, 2, 1, "", "rset_hook"], [5, 1, 1, "", "server"], [5, 1, 1, "", "session"], [9, 6, 1, "cmdoption-c", "--class"], [9, 6, 1, "cmdoption-d", "--debug"], [9, 6, 1, "cmdoption-h", "--help"], [9, 6, 1, "cmdoption-l", "--listen"], [9, 6, 1, "cmdoption-no-requiretls", "--no-requiretls"], [9, 6, 1, "cmdoption-n", "--nosetuid"], [9, 6, 1, "cmdoption-s", "--size"], [9, 6, 1, "cmdoption-smtpscert", "--smtpscert"], [9, 6, 1, "cmdoption-smtpskey", "--smtpskey"], [9, 6, 1, "cmdoption-u", "--smtputf8"], [9, 6, 1, "cmdoption-tlscert", "--tlscert"], [9, 6, 1, "cmdoption-tlskey", "--tlskey"], [9, 6, 1, "cmdoption-v", "--version"], [9, 6, 1, "cmdoption-c", "-c"], [9, 6, 1, "cmdoption-d", "-d"], [9, 6, 1, "cmdoption-h", "-h"], [9, 6, 1, "cmdoption-l", "-l"], [9, 6, 1, "cmdoption-n", "-n"], [9, 6, 1, "cmdoption-s", "-s"], [9, 6, 1, "cmdoption-u", "-u"], [9, 6, 1, "cmdoption-v", "-v"], [9, 7, 1, "-", "AIOSMTPD_CONTROLLER_TIMEOUT"], [9, 6, 1, "cmdoption-arg-CLASSARGS", "CLASSARGS"]], "AuthResult": [[1, 1, 1, "", "auth_data"], [1, 1, 1, "", "handled"], [1, 1, 1, "", "message"], [1, 1, 1, "", "success"]], "Envelope": [[3, 1, 1, "", "content"], [3, 1, 1, "", "mail_from"], [3, 1, 1, "", "mail_options"], [3, 1, 1, "", "original_content"], [3, 1, 1, "", "rcpt_options"], [3, 1, 1, "", "rcpt_tos"]], "Session": [[3, 1, 1, "", "auth_data"], [3, 1, 1, "", "authenticated"], [3, 1, 1, "", "extended_smtp"], [3, 1, 1, "", "host_name"], [3, 1, 1, "", "login_data"], [3, 1, 1, "", "loop"], [3, 1, 1, "", "peer"], [3, 1, 1, "", "ssl"]], "aiosmtpd": [[4, 3, 0, "-", "controller"], [5, 3, 0, "-", "handlers"], [11, 3, 0, "-", "proxy_protocol"], [12, 3, 0, "-", "smtp"]], "aiosmtpd.controller": [[4, 0, 1, "", "BaseController"], [4, 0, 1, "", "Controller"], [4, 5, 1, "", "DEFAULT_READY_TIMEOUT"], [4, 0, 1, "", "IP6_IS"], [4, 0, 1, "", "UnixSocketController"], [4, 0, 1, "", "UnixSocketUnthreadedController"], [4, 0, 1, "", "UnthreadedController"], [4, 2, 1, "", "get_localhost"]], "aiosmtpd.controller.BaseController": [[4, 4, 1, "", "cancel_tasks"], [4, 4, 1, "", "factory"], [4, 1, 1, "", "server"], [4, 1, 1, "", "smtpd"]], "aiosmtpd.controller.Controller": [[4, 1, 1, "", "ready_timeout"], [4, 4, 1, "", "start"], [4, 4, 1, "", "stop"]], "aiosmtpd.controller.IP6_IS": [[4, 1, 1, "", "NO"], [4, 1, 1, "", "YES"]], "aiosmtpd.controller.UnixSocketController": [[4, 1, 1, "", "unix_socket"]], "aiosmtpd.controller.UnixSocketUnthreadedController": [[4, 1, 1, "", "ended"]], "aiosmtpd.controller.UnthreadedController": [[4, 4, 1, "", "begin"], [4, 4, 1, "", "end"], [4, 1, 1, "", "ended"], [4, 4, 1, "", "finalize"]], "aiosmtpd.handlers": [[5, 0, 1, "", "AsyncMessage"], [5, 0, 1, "", "Debugging"], [5, 0, 1, "", "Mailbox"], [5, 0, 1, "", "Message"], [5, 0, 1, "", "Proxy"], [5, 0, 1, "", "Sink"]], "aiosmtpd.proxy_protocol": [[11, 0, 1, "", "AF"], [11, 0, 1, "", "PROTO"], [11, 0, 1, "", "ProxyData"], [11, 0, 1, "", "ProxyTLV"], [11, 0, 1, "", "V2_CMD"]], "aiosmtpd.proxy_protocol.ProxyData": [[11, 4, 1, "", "__bool__"], [11, 1, 1, "", "command"], [11, 1, 1, "", "dst_addr"], [11, 1, 1, "", "dst_port"], [11, 1, 1, "", "family"], [11, 1, 1, "", "protocol"], [11, 1, 1, "", "rest"], [11, 4, 1, "", "same_attribs"], [11, 1, 1, "", "src_addr"], [11, 1, 1, "", "src_port"], [11, 1, 1, "", "tlv"], [11, 1, 1, "", "tlv_start"], [11, 1, 1, "", "valid"], [11, 1, 1, "", "version"], [11, 1, 1, "", "whole_raw"], [11, 4, 1, "", "with_error"]], "aiosmtpd.proxy_protocol.ProxyTLV": [[11, 1, 1, "", "PP2_TYPENAME"], [11, 4, 1, "", "from_raw"], [11, 4, 1, "", "name_to_num"], [11, 4, 1, "", "parse"], [11, 4, 1, "", "same_attribs"], [11, 1, 1, "", "tlv_loc"]], "aiosmtpd.smtp": [[12, 0, 1, "", "AuthResult"], [12, 5, 1, "", "AuthenticatorType"], [12, 0, 1, "", "LoginPassword"], [12, 0, 1, "", "SMTP"], [12, 2, 1, "", "auth_mechanism"]], "aiosmtpd.smtp.SMTP": [[12, 1, 1, "", "AuthLoginPasswordChallenge"], [12, 1, 1, "", "AuthLoginUsernameChallenge"], [12, 4, 1, "", "_create_envelope"], [12, 4, 1, "", "_create_session"], [12, 1, 1, "", "auth_callback"], [12, 1, 1, "", "auth_exclude_mechanism"], [12, 1, 1, "", "auth_require_tls"], [12, 1, 1, "", "auth_required"], [12, 1, 1, "", "authenticated"], [12, 1, 1, "", "authenticator"], [12, 4, 1, "", "challenge_auth"], [12, 1, 1, "", "command_call_limit"], [12, 1, 1, "", "data_size_limit"], [12, 1, 1, "", "decode_data"], [12, 1, 1, "", "enable_SMTPUTF8"], [12, 1, 1, "", "envelope"], [12, 1, 1, "", "event_handler"], [12, 1, 1, "", "handler"], [12, 1, 1, "", "hostname"], [12, 1, 1, "", "ident"], [12, 1, 1, "", "line_length_limit"], [12, 1, 1, "", "local_part_limit"], [12, 1, 1, "", "loop"], [12, 1, 1, "", "proxy_protocol_timeout"], [12, 4, 1, "", "push"], [12, 1, 1, "", "require_starttls"], [12, 1, 1, "", "session"], [12, 1, 1, "", "timeout"], [12, 1, 1, "", "tls_context"], [12, 1, 1, "", "transport"]]}, "objtypes": {"0": "py:class", "1": "py:attribute", "2": "py:function", "3": "py:module", "4": "py:method", "5": "py:data", "6": "std:cmdoption", "7": "std:envvar"}, "objnames": {"0": ["py", "class", "Python class"], "1": ["py", "attribute", "Python attribute"], "2": ["py", "function", "Python function"], "3": ["py", "module", "Python module"], "4": ["py", "method", "Python method"], "5": ["py", "data", "Python data"], "6": ["std", "cmdoption", "program option"], "7": ["std", "envvar", "environment variable"]}, "titleterms": {"new": 0, "aiosmtpd": [0, 6, 9, 10, 12], "1": 0, "5": 0, "0": 0, "next": 0, "ad": 0, "fix": 0, "improv": 0, "4": 0, "post2": 0, "2023": 0, "01": 0, "19": 0, "17": 0, "3": 0, "2022": 0, "12": 0, "21": 0, "2": 0, "2021": 0, "03": 0, "08": 0, "04": 0, "02": 0, "26": 0, "20": 0, "18": 0, "09": 0, "24": 0, "14": 0, "2020": 0, "11": 0, "remov": 0, "2018": 0, "2017": 0, "07": 0, "06": 0, "05": 0, "15": 0, "0rc1": 0, "0b1": 0, "0a5": 0, "0a4": 0, "2016": 0, "29": 0, "0a3": 0, "0a2": 0, "22": 0, "0a1": 0, "2015": 0, "10": 0, "authent": 1, "system": 1, "activ": [1, 11], "auth": 1, "api": [1, 4, 11], "handler": [1, 5], "hook": [1, 5, 11, 12], "mechan": 1, "callback": 1, "authresult": 1, "secur": 1, "consider": 1, "exampl": 1, "command": 2, "line": 2, "usag": [2, 4], "option": [2, 9], "concept": 3, "session": 3, "envelop": 3, "programmat": 4, "us": 4, "control": 4, "tcp": 4, "base": [4, 6], "server": [4, 6, 12], "unix": 4, "socket": 4, "unthread": 4, "enabl": [4, 12], "smtputf8": 4, "common": 5, "argument": 5, "support": [5, 6, 11], "built": 5, "The": [5, 8, 12], "mailbox": 5, "an": 6, "asyncio": 6, "smtp": [6, 12], "requir": 6, "platform": 6, "instal": 6, "project": 6, "detail": 6, "build": 6, "develop": 6, "testenv": 6, "environ": [6, 9], "variabl": 6, "asyncio_catchup_delai": 6, "differ": 6, "python": 6, "version": 6, "housekeep": 6, "py": 6, "sign": 6, "kei": 6, "licens": 6, "content": 6, "indic": 6, "tabl": 6, "introduct": 7, "relev": 7, "rfc": 7, "other": 7, "refer": 7, "lmtp": 8, "class": 8, "synopsi": 9, "migrat": 10, "from": 10, "smtpd": 10, "proxi": 11, "protocol": 11, "handle_proxi": 11, "pars": 11, "header": 11, "enum": 11, "proxydata": 11, "proxytlv": 11, "note": 11, "crc32c": 11, "calcul": 11, "modul": 12, "subclass": 12, "starttl": 12, "test": 13, "framework": 13, "pytest": 13, "plugin": 13, "fixtur": 13, "marker": 13}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinx": 60}, "alltitles": {"NEWS for aiosmtpd": [[0, "news-for-aiosmtpd"]], "1.5.0 (aiosmtpd-next)": [[0, "aiosmtpd-next"]], "Added": [[0, "added"], [0, "id11"], [0, "id14"], [0, "id19"], [0, "id22"], [0, "id25"], [0, "id28"]], "Fixed/Improved": [[0, "fixed-improved"], [0, "id1"], [0, "id3"], [0, "id5"], [0, "id7"], [0, "id9"], [0, "id12"], [0, "id15"], [0, "id17"], [0, "id20"], [0, "id23"], [0, "id26"], [0, "id29"]], "1.4.4.post2 (2023-01-19)": [[0, "post2-2023-01-19"]], "1.4.4 (2023-01-17)": [[0, "id2"]], "1.4.3 (2022-12-21)": [[0, "id4"]], "1.4.2 (2021-03-08)": [[0, "id6"]], "1.4.1 (2021-03-04)": [[0, "id8"]], "1.4.0 (2021-02-26)": [[0, "id10"]], "1.3.2 (2021-02-20)": [[0, "id13"]], "1.3.1 (2021-02-18)": [[0, "id16"]], "1.3.0 (2021-02-09)": [[0, "id18"]], "1.2.4 (2021-01-24)": [[0, "id21"]], "1.2.3 (2021-01-14)": [[0, "id24"]], "1.2.2 (2020-11-08)": [[0, "id27"]], "Removed": [[0, "removed"]], "1.2 (2018-09-01)": [[0, "id30"]], "1.1 (2017-07-06)": [[0, "id31"]], "1.0 (2017-05-15)": [[0, "id32"]], "1.0rc1 (2017-05-12)": [[0, "rc1-2017-05-12"]], "1.0b1 (2017-05-07)": [[0, "b1-2017-05-07"]], "1.0a5 (2017-04-06)": [[0, "a5-2017-04-06"]], "1.0a4 (2016-11-29)": [[0, "a4-2016-11-29"]], "1.0a3 (2016-11-24)": [[0, "a3-2016-11-24"]], "1.0a2 (2016-11-22)": [[0, "a2-2016-11-22"]], "1.0a1 (2015-10-19)": [[0, "a1-2015-10-19"]], "Authentication System": [[1, "authentication-system"]], "Activating Authentication": [[1, "activating-authentication"]], "AUTH API": [[1, "auth-api"]], "AUTH Handler Hook": [[1, "auth-handler-hook"]], "AUTH Mechanism Hooks": [[1, "auth-mechanism-hooks"]], "Authenticator Callback": [[1, "authenticator-callback"]], "AuthResult API": [[1, "authresult-api"]], "Security Considerations": [[1, "security-considerations"]], "Example": [[1, "example"]], "Command line usage": [[2, "command-line-usage"]], "Options": [[2, "options"], [9, "options"]], "Concepts": [[3, "concepts"]], "Sessions and envelopes": [[3, "sessions-and-envelopes"]], "Session": [[3, "session"]], "Envelope": [[3, "envelope"]], "Programmatic usage": [[4, "programmatic-usage"]], "Using the controller": [[4, "using-the-controller"]], "TCP-based Server": [[4, "tcp-based-server"]], "Unix Socket-based Server": [[4, "unix-socket-based-server"]], "Unthreaded Controllers": [[4, "unthreaded-controllers"]], "Enabling SMTPUTF8": [[4, "enabling-smtputf8"]], "Controller API": [[4, "module-aiosmtpd.controller"]], "Handlers": [[5, "handlers"]], "Handler Hooks": [[5, "handler-hooks"]], "Common Arguments": [[5, "common-arguments"]], "Supported Hooks": [[5, "supported-hooks"]], "Built-in handlers": [[5, "built-in-handlers"]], "The Mailbox Handler": [[5, "the-mailbox-handler"]], "aiosmtpd - An asyncio based SMTP server": [[6, "aiosmtpd-an-asyncio-based-smtp-server"]], "Requirements": [[6, "requirements"]], "Supported Platforms": [[6, "supported-platforms"]], "Installation": [[6, "installation"]], "Project details": [[6, "project-details"]], "Building": [[6, "building"]], "Developing": [[6, "developing"]], "Supported \u2018testenvs\u2019": [[6, "supported-testenvs"]], "Environment Variables": [[6, "environment-variables"]], "ASYNCIO_CATCHUP_DELAY": [[6, "asyncio-catchup-delay"]], "Different Python Versions": [[6, "different-python-versions"]], "housekeep.py": [[6, "housekeep-py"]], "Signing Keys": [[6, "signing-keys"]], "License": [[6, "license"]], "Contents": [[6, "contents"]], "Indices and tables": [[6, "indices-and-tables"]], "Introduction": [[7, "introduction"]], "Relevant RFCs": [[7, "relevant-rfcs"]], "Other references": [[7, "other-references"]], "The LMTP class": [[8, "the-lmtp-class"]], "aiosmtpd": [[9, "aiosmtpd"]], "SYNOPSIS": [[9, "synopsis"]], "ENVIRONMENT": [[9, "environment"]], "Migrating from smtpd to aiosmtpd": [[10, "migrating-from-smtpd-to-aiosmtpd"]], "PROXY Protocol Support": [[11, "proxy-protocol-support"]], "Activating": [[11, "activating"]], "handle_PROXY Hook": [[11, "handle-proxy-hook"]], "Parsing the Header": [[11, "parsing-the-header"]], "Enums": [[11, "enums"]], "ProxyData API": [[11, "proxydata-api"]], "ProxyTLV API": [[11, "proxytlv-api"]], "Note on CRC32C Calculation": [[11, "note-on-crc32c-calculation"]], "The SMTP Module": [[12, "the-smtp-module"]], "Subclassing": [[12, "subclassing"]], "Server hooks": [[12, "server-hooks"]], "aiosmtpd.smtp": [[12, "module-aiosmtpd.smtp"]], "Enabling STARTTLS": [[12, "enabling-starttls"]], "Testing": [[13, "testing"]], "Test Framework: pytest": [[13, "test-framework-pytest"]], "Plugins": [[13, "plugins"]], "Fixtures": [[13, "fixtures"]], "Markers": [[13, "markers"]]}, "indexentries": {"rfc": [[0, "index-0"], [1, "index-0"], [1, "index-1"], [3, "index-0"], [3, "index-1"], [5, "index-0"], [7, "index-0"], [7, "index-1"], [7, "index-10"], [7, "index-2"], [7, "index-3"], [7, "index-4"], [7, "index-5"], [7, "index-6"], [7, "index-7"], [7, "index-8"], [7, "index-9"], [8, "index-0"], [12, "index-0"], [12, "index-1"], [12, "index-2"], [12, "index-3"], [12, "index-4"], [12, "index-5"], [12, "index-6"], [12, "index-7"]], "rfc 4954": [[0, "index-0"], [1, "index-0"], [1, "index-1"], [7, "index-6"]], "authresult (built-in class)": [[1, "AuthResult"]], "authenticator()": [[1, "Authenticator"]], "auth_mechanism()": [[1, "auth_MECHANISM"]], "auth_data (authresult attribute)": [[1, "AuthResult.auth_data"]], "built-in function": [[1, "Authenticator"], [12, "ehlo_hook"], [12, "rset_hook"], [13, "client_data"], [13, "controller_data"], [13, "handler_data"]], "handle_auth()": [[1, "handle_AUTH"]], "handled (authresult attribute)": [[1, "AuthResult.handled"]], "message (authresult attribute)": [[1, "AuthResult.message"]], "success (authresult attribute)": [[1, "AuthResult.success"]], "envelope (built-in class)": [[3, "Envelope"]], "rfc 1869": [[3, "index-0"]], "rfc 5321": [[3, "index-1"], [7, "index-0"], [7, "index-2"], [12, "index-0"]], "session (built-in class)": [[3, "Session"]], "auth_data (session attribute)": [[3, "Session.auth_data"]], "authenticated (session attribute)": [[3, "Session.authenticated"]], "content (envelope attribute)": [[3, "Envelope.content"]], "extended_smtp (session attribute)": [[3, "Session.extended_smtp"]], "host_name (session attribute)": [[3, "Session.host_name"]], "login_data (session attribute)": [[3, "Session.login_data"]], "loop (session attribute)": [[3, "Session.loop"]], "mail_from (envelope attribute)": [[3, "Envelope.mail_from"]], "mail_options (envelope attribute)": [[3, "Envelope.mail_options"]], "original_content (envelope attribute)": [[3, "Envelope.original_content"]], "peer (session attribute)": [[3, "Session.peer"]], "rcpt_options (envelope attribute)": [[3, "Envelope.rcpt_options"]], "rcpt_tos (envelope attribute)": [[3, "Envelope.rcpt_tos"]], "ssl (session attribute)": [[3, "Session.ssl"]], "aiosmtpd_controller_timeout": [[4, "index-0"], [4, "index-1"], [4, "index-2"], [9, "envvar-AIOSMTPD_CONTROLLER_TIMEOUT"]], "basecontroller (class in aiosmtpd.controller)": [[4, "aiosmtpd.controller.BaseController"]], "controller (class in aiosmtpd.controller)": [[4, "aiosmtpd.controller.Controller"]], "default_ready_timeout (in module aiosmtpd.controller)": [[4, "aiosmtpd.controller.DEFAULT_READY_TIMEOUT"]], "ip6_is (class in aiosmtpd.controller)": [[4, "aiosmtpd.controller.IP6_IS"]], "no (aiosmtpd.controller.ip6_is attribute)": [[4, "aiosmtpd.controller.IP6_IS.NO"]], "unixsocketcontroller (class in aiosmtpd.controller)": [[4, "aiosmtpd.controller.UnixSocketController"]], "unixsocketunthreadedcontroller (class in aiosmtpd.controller)": [[4, "aiosmtpd.controller.UnixSocketUnthreadedController"]], "unthreadedcontroller (class in aiosmtpd.controller)": [[4, "aiosmtpd.controller.UnthreadedController"]], "yes (aiosmtpd.controller.ip6_is attribute)": [[4, "aiosmtpd.controller.IP6_IS.YES"]], "aiosmtpd.controller": [[4, "module-aiosmtpd.controller"]], "begin() (aiosmtpd.controller.unthreadedcontroller method)": [[4, "aiosmtpd.controller.UnthreadedController.begin"]], "cancel_tasks() (aiosmtpd.controller.basecontroller method)": [[4, "aiosmtpd.controller.BaseController.cancel_tasks"]], "end() (aiosmtpd.controller.unthreadedcontroller method)": [[4, "aiosmtpd.controller.UnthreadedController.end"]], "ended (aiosmtpd.controller.unixsocketunthreadedcontroller attribute)": [[4, "aiosmtpd.controller.UnixSocketUnthreadedController.ended"]], "ended (aiosmtpd.controller.unthreadedcontroller attribute)": [[4, "aiosmtpd.controller.UnthreadedController.ended"]], "environment variable": [[4, "index-0"], [4, "index-1"], [4, "index-2"], [9, "envvar-AIOSMTPD_CONTROLLER_TIMEOUT"]], "factory() (aiosmtpd.controller.basecontroller method)": [[4, "aiosmtpd.controller.BaseController.factory"]], "finalize() (aiosmtpd.controller.unthreadedcontroller method)": [[4, "aiosmtpd.controller.UnthreadedController.finalize"]], "get_localhost() (in module aiosmtpd.controller)": [[4, "aiosmtpd.controller.get_localhost"]], "module": [[4, "module-aiosmtpd.controller"], [5, "module-aiosmtpd.handlers"], [11, "module-aiosmtpd.proxy_protocol"], [12, "module-aiosmtpd.smtp"]], "ready_timeout (aiosmtpd.controller.controller attribute)": [[4, "aiosmtpd.controller.Controller.ready_timeout"]], "server (aiosmtpd.controller.basecontroller attribute)": [[4, "aiosmtpd.controller.BaseController.server"]], "smtpd (aiosmtpd.controller.basecontroller attribute)": [[4, "aiosmtpd.controller.BaseController.smtpd"]], "start() (aiosmtpd.controller.controller method)": [[4, "aiosmtpd.controller.Controller.start"]], "stop() (aiosmtpd.controller.controller method)": [[4, "aiosmtpd.controller.Controller.stop"]], "unix_socket (aiosmtpd.controller.unixsocketcontroller attribute)": [[4, "aiosmtpd.controller.UnixSocketController.unix_socket"]], "asyncmessage (class in aiosmtpd.handlers)": [[5, "aiosmtpd.handlers.AsyncMessage"]], "debugging (class in aiosmtpd.handlers)": [[5, "aiosmtpd.handlers.Debugging"]], "mailbox (class in aiosmtpd.handlers)": [[5, "aiosmtpd.handlers.Mailbox"]], "message (class in aiosmtpd.handlers)": [[5, "aiosmtpd.handlers.Message"]], "proxy (class in aiosmtpd.handlers)": [[5, "aiosmtpd.handlers.Proxy"]], "rfc 5321#section-4.5.2": [[5, "index-0"]], "sink (class in aiosmtpd.handlers)": [[5, "aiosmtpd.handlers.Sink"]], "aiosmtpd.handlers": [[5, "module-aiosmtpd.handlers"]], "envelope": [[5, "envelope"]], "from_cli()": [[5, "from_cli"]], "handle_data()": [[5, "handle_DATA"]], "handle_ehlo()": [[5, "handle_EHLO"]], "handle_helo()": [[5, "handle_HELO"]], "handle_mail()": [[5, "handle_MAIL"]], "handle_noop()": [[5, "handle_NOOP"]], "handle_quit()": [[5, "handle_QUIT"]], "handle_rcpt()": [[5, "handle_RCPT"]], "handle_rset()": [[5, "handle_RSET"]], "handle_starttls()": [[5, "handle_STARTTLS"]], "handle_vrfy()": [[5, "handle_VRFY"]], "handle_exception()": [[5, "handle_exception"]], "server": [[5, "server"]], "session": [[5, "session"]], "rfc 1870": [[7, "index-10"]], "rfc 2033": [[7, "index-1"], [7, "index-3"], [8, "index-0"]], "rfc 2034": [[7, "index-4"], [7, "index-9"]], "rfc 3696": [[7, "index-8"]], "rfc 5322": [[7, "index-7"]], "rfc 6531": [[7, "index-5"], [12, "index-1"]], "--class": [[9, "cmdoption-c"]], "--debug": [[9, "cmdoption-d"]], "--help": [[9, "cmdoption-h"]], "--listen": [[9, "cmdoption-l"]], "--no-requiretls": [[9, "cmdoption-no-requiretls"]], "--nosetuid": [[9, "cmdoption-n"]], "--size": [[9, "cmdoption-s"]], "--smtpscert": [[9, "cmdoption-smtpscert"]], "--smtpskey": [[9, "cmdoption-smtpskey"]], "--smtputf8": [[9, "cmdoption-u"]], "--tlscert": [[9, "cmdoption-tlscert"]], "--tlskey": [[9, "cmdoption-tlskey"]], "--version": [[9, "cmdoption-v"]], "-c": [[9, "cmdoption-c"]], "-d": [[9, "cmdoption-d"]], "-h": [[9, "cmdoption-h"]], "-l": [[9, "cmdoption-l"]], "-n": [[9, "cmdoption-n"]], "-s": [[9, "cmdoption-s"]], "-u": [[9, "cmdoption-u"]], "-v": [[9, "cmdoption-v"]], "classargs": [[9, "cmdoption-arg-CLASSARGS"]], "command line option": [[9, "cmdoption-arg-CLASSARGS"], [9, "cmdoption-c"], [9, "cmdoption-d"], [9, "cmdoption-h"], [9, "cmdoption-l"], [9, "cmdoption-n"], [9, "cmdoption-no-requiretls"], [9, "cmdoption-s"], [9, "cmdoption-smtpscert"], [9, "cmdoption-smtpskey"], [9, "cmdoption-tlscert"], [9, "cmdoption-tlskey"], [9, "cmdoption-u"], [9, "cmdoption-v"]], "af (class in aiosmtpd.proxy_protocol)": [[11, "aiosmtpd.proxy_protocol.AF"]], "pp2_typename (aiosmtpd.proxy_protocol.proxytlv attribute)": [[11, "aiosmtpd.proxy_protocol.ProxyTLV.PP2_TYPENAME"]], "proto (class in aiosmtpd.proxy_protocol)": [[11, "aiosmtpd.proxy_protocol.PROTO"]], "proxydata (class in aiosmtpd.proxy_protocol)": [[11, "aiosmtpd.proxy_protocol.ProxyData"]], "proxytlv (class in aiosmtpd.proxy_protocol)": [[11, "aiosmtpd.proxy_protocol.ProxyTLV"]], "v2_cmd (class in aiosmtpd.proxy_protocol)": [[11, "aiosmtpd.proxy_protocol.V2_CMD"]], "__bool__() (aiosmtpd.proxy_protocol.proxydata method)": [[11, "aiosmtpd.proxy_protocol.ProxyData.__bool__"]], "aiosmtpd.proxy_protocol": [[11, "module-aiosmtpd.proxy_protocol"]], "command (aiosmtpd.proxy_protocol.proxydata attribute)": [[11, "aiosmtpd.proxy_protocol.ProxyData.command"]], "dst_addr (aiosmtpd.proxy_protocol.proxydata attribute)": [[11, "aiosmtpd.proxy_protocol.ProxyData.dst_addr"]], "dst_port (aiosmtpd.proxy_protocol.proxydata attribute)": [[11, "aiosmtpd.proxy_protocol.ProxyData.dst_port"]], "family (aiosmtpd.proxy_protocol.proxydata attribute)": [[11, "aiosmtpd.proxy_protocol.ProxyData.family"]], "from_raw() (aiosmtpd.proxy_protocol.proxytlv class method)": [[11, "aiosmtpd.proxy_protocol.ProxyTLV.from_raw"]], "handle_proxy()": [[11, "handle_PROXY"]], "name_to_num() (aiosmtpd.proxy_protocol.proxytlv class method)": [[11, "aiosmtpd.proxy_protocol.ProxyTLV.name_to_num"]], "parse() (aiosmtpd.proxy_protocol.proxytlv class method)": [[11, "aiosmtpd.proxy_protocol.ProxyTLV.parse"]], "protocol (aiosmtpd.proxy_protocol.proxydata attribute)": [[11, "aiosmtpd.proxy_protocol.ProxyData.protocol"]], "rest (aiosmtpd.proxy_protocol.proxydata attribute)": [[11, "aiosmtpd.proxy_protocol.ProxyData.rest"]], "same_attribs() (aiosmtpd.proxy_protocol.proxydata method)": [[11, "aiosmtpd.proxy_protocol.ProxyData.same_attribs"]], "same_attribs() (aiosmtpd.proxy_protocol.proxytlv method)": [[11, "aiosmtpd.proxy_protocol.ProxyTLV.same_attribs"]], "src_addr (aiosmtpd.proxy_protocol.proxydata attribute)": [[11, "aiosmtpd.proxy_protocol.ProxyData.src_addr"]], "src_port (aiosmtpd.proxy_protocol.proxydata attribute)": [[11, "aiosmtpd.proxy_protocol.ProxyData.src_port"]], "tlv (aiosmtpd.proxy_protocol.proxydata attribute)": [[11, "aiosmtpd.proxy_protocol.ProxyData.tlv"]], "tlv_loc (aiosmtpd.proxy_protocol.proxytlv attribute)": [[11, "aiosmtpd.proxy_protocol.ProxyTLV.tlv_loc"]], "tlv_start (aiosmtpd.proxy_protocol.proxydata attribute)": [[11, "aiosmtpd.proxy_protocol.ProxyData.tlv_start"]], "valid (aiosmtpd.proxy_protocol.proxydata attribute)": [[11, "aiosmtpd.proxy_protocol.ProxyData.valid"]], "version (aiosmtpd.proxy_protocol.proxydata attribute)": [[11, "aiosmtpd.proxy_protocol.ProxyData.version"]], "whole_raw (aiosmtpd.proxy_protocol.proxydata attribute)": [[11, "aiosmtpd.proxy_protocol.ProxyData.whole_raw"]], "with_error() (aiosmtpd.proxy_protocol.proxydata method)": [[11, "aiosmtpd.proxy_protocol.ProxyData.with_error"]], "authloginpasswordchallenge (aiosmtpd.smtp.smtp attribute)": [[12, "aiosmtpd.smtp.SMTP.AuthLoginPasswordChallenge"]], "authloginusernamechallenge (aiosmtpd.smtp.smtp attribute)": [[12, "aiosmtpd.smtp.SMTP.AuthLoginUsernameChallenge"]], "authresult (class in aiosmtpd.smtp)": [[12, "aiosmtpd.smtp.AuthResult"]], "authenticatortype (in module aiosmtpd.smtp)": [[12, "aiosmtpd.smtp.AuthenticatorType"]], "loginpassword (class in aiosmtpd.smtp)": [[12, "aiosmtpd.smtp.LoginPassword"]], "rfc 2821": [[12, "index-3"]], "rfc 3207": [[12, "index-2"], [12, "index-7"]], "rfc 5321#section-4.5.3.1": [[12, "index-6"]], "rfc 5321#section-4.5.3.1.1": [[12, "index-5"]], "rfc 5321#section-4.5.3.1.6": [[12, "index-4"]], "smtp (class in aiosmtpd.smtp)": [[12, "aiosmtpd.smtp.SMTP"]], "_create_envelope() (aiosmtpd.smtp.smtp method)": [[12, "aiosmtpd.smtp.SMTP._create_envelope"]], "_create_session() (aiosmtpd.smtp.smtp method)": [[12, "aiosmtpd.smtp.SMTP._create_session"]], "aiosmtpd.smtp": [[12, "module-aiosmtpd.smtp"]], "auth_callback (aiosmtpd.smtp.smtp attribute)": [[12, "aiosmtpd.smtp.SMTP.auth_callback"]], "auth_exclude_mechanism (aiosmtpd.smtp.smtp attribute)": [[12, "aiosmtpd.smtp.SMTP.auth_exclude_mechanism"]], "auth_mechanism() (in module aiosmtpd.smtp)": [[12, "aiosmtpd.smtp.auth_mechanism"]], "auth_require_tls (aiosmtpd.smtp.smtp attribute)": [[12, "aiosmtpd.smtp.SMTP.auth_require_tls"]], "auth_required (aiosmtpd.smtp.smtp attribute)": [[12, "aiosmtpd.smtp.SMTP.auth_required"]], "authenticated (aiosmtpd.smtp.smtp attribute)": [[12, "aiosmtpd.smtp.SMTP.authenticated"]], "authenticator (aiosmtpd.smtp.smtp attribute)": [[12, "aiosmtpd.smtp.SMTP.authenticator"]], "challenge_auth() (aiosmtpd.smtp.smtp method)": [[12, "aiosmtpd.smtp.SMTP.challenge_auth"]], "command_call_limit (aiosmtpd.smtp.smtp attribute)": [[12, "aiosmtpd.smtp.SMTP.command_call_limit"]], "data_size_limit (aiosmtpd.smtp.smtp attribute)": [[12, "aiosmtpd.smtp.SMTP.data_size_limit"]], "decode_data (aiosmtpd.smtp.smtp attribute)": [[12, "aiosmtpd.smtp.SMTP.decode_data"]], "ehlo_hook()": [[12, "ehlo_hook"]], "enable_smtputf8 (aiosmtpd.smtp.smtp attribute)": [[12, "aiosmtpd.smtp.SMTP.enable_SMTPUTF8"]], "envelope (aiosmtpd.smtp.smtp attribute)": [[12, "aiosmtpd.smtp.SMTP.envelope"]], "event_handler (aiosmtpd.smtp.smtp attribute)": [[12, "aiosmtpd.smtp.SMTP.event_handler"]], "handler (aiosmtpd.smtp.smtp attribute)": [[12, "aiosmtpd.smtp.SMTP.handler"]], "hostname (aiosmtpd.smtp.smtp attribute)": [[12, "aiosmtpd.smtp.SMTP.hostname"]], "ident (aiosmtpd.smtp.smtp attribute)": [[12, "aiosmtpd.smtp.SMTP.ident"]], "line_length_limit (aiosmtpd.smtp.smtp attribute)": [[12, "aiosmtpd.smtp.SMTP.line_length_limit"]], "local_part_limit (aiosmtpd.smtp.smtp attribute)": [[12, "aiosmtpd.smtp.SMTP.local_part_limit"]], "loop (aiosmtpd.smtp.smtp attribute)": [[12, "aiosmtpd.smtp.SMTP.loop"]], "proxy_protocol_timeout (aiosmtpd.smtp.smtp attribute)": [[12, "aiosmtpd.smtp.SMTP.proxy_protocol_timeout"]], "push() (aiosmtpd.smtp.smtp method)": [[12, "aiosmtpd.smtp.SMTP.push"]], "require_starttls (aiosmtpd.smtp.smtp attribute)": [[12, "aiosmtpd.smtp.SMTP.require_starttls"]], "rset_hook()": [[12, "rset_hook"]], "session (aiosmtpd.smtp.smtp attribute)": [[12, "aiosmtpd.smtp.SMTP.session"]], "timeout (aiosmtpd.smtp.smtp attribute)": [[12, "aiosmtpd.smtp.SMTP.timeout"]], "tls_context (aiosmtpd.smtp.smtp attribute)": [[12, "aiosmtpd.smtp.SMTP.tls_context"]], "transport (aiosmtpd.smtp.smtp attribute)": [[12, "aiosmtpd.smtp.SMTP.transport"]], "client_data()": [[13, "client_data"]], "controller_data()": [[13, "controller_data"]], "handler_data()": [[13, "handler_data"]]}})