Skip to content

SMTP AUTH extension not supported by server. #283

Description

@febriyan1302

hello, i'am using aiosmtpd as a server proxy mail, i want analyze traffic mail, it's normal if i'm not use Authentication, i can send a mail. but if i use authenticator on Controller my client side give me an error "SMTP AUTH extension not supported by server."

i try example of aiosmtpd/examples/authenticated_relayer/server.py , but same result.

python version : 3.6
OS : MacOS BigSur 11.5.2 , i try running on docker with base ubuntu 20.04, same result on me

Server Code :

    class Authenticator:
        def __init__(self, auth_database):
            self.auth_db = Path(auth_database)

        def __call__(self, server, session, envelope, mechanism, auth_data):
            fail_nothandled = AuthResult(success=False, handled=False)
            if mechanism not in ("LOGIN", "PLAIN"):
                return fail_nothandled
            if not isinstance(auth_data, LoginPassword):
                return fail_nothandled
            username = auth_data.login
            password = auth_data.password
            hashpass = password
            conn = sqlite3.connect(self.auth_db)
            curs = conn.execute(
                "SELECT hashpass FROM userauth WHERE username=?", (username,)
            )
            hash_db = curs.fetchone()
            conn.close()
            if not hash_db:
                return fail_nothandled
            if hashpass != hash_db[0]:
                return fail_nothandled
            return AuthResult(success=True)


    logging.basicConfig(level=logging.DEBUG)
    controller = Controller(
        MailProxyHandler(
            host=config.get('remote', 'host'),
            port=config.getint('remote', 'port', fallback=25),
            auth=remote_auth,
            use_ssl=config.getboolean('remote', 'use_ssl', fallback=False),
            starttls=config.getboolean('remote', 'starttls', fallback=False),
        ),
        hostname=config.get('local', 'host', fallback='127.0.0.1'),
        port=config.getint('local', 'port', fallback=25),
        authenticator=Authenticator(DB_AUTH),
        auth_required=True
    )
    controller.start()

    print("Mail proxy started ...")
    print("Remote Server : " + config.get('remote', 'host'))
    while controller.loop.is_running():
        sleep(0.2)

Client Code :

port = 8465  
smtp_server = "127.0.0.1"
sender_email = "lalala@gmail.com"  # Enter your address
to = "FF <lalala@gmail.com>"  # Enter receiver address
cc = ["lalala@lalala.co.id", "YOYO HE <lalala@lalala.co.id>"]
bcc = "lalala@gmail.com"

text = "Hi!\nHow are you?\nHere is the link you wanted:\nhttp://www.python.org"
html = """\
<html>
  <head></head>
  <body>
    <p>Hi!<br>
       How are you?<br>
       Here is the <a href="http://www.python.org">link</a> you wanted.
    </p>
  </body>
</html>
"""

part1 = MIMEText(text, 'plain')
part2 = MIMEText(html, 'html')

msg = MIMEMultipart()
msg['Subject'] = "This is subject"
msg['From'] = 'hehehe@gmail.com'
msg['To'] = to
msg['Cc'] = ", ".join(cc)

msg.attach(part1)
msg.attach(part2)

rcpt = [to]
with smtplib.SMTP(smtp_server, port) as server:
    server.connect(smtp_server, port)
    server.set_debuglevel(1)
    server.login("user1", "password1")
    server.sendmail(sender_email, rcpt, msg.as_string())

Server LOG :
Screen Shot 2021-09-14 at 16 43 13

Client LOG :
Screen Shot 2021-09-14 at 16 43 27

Thank you for your help

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    need more infoNeeds more info from PR/Issue Author; if no info, then close.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions