Skip to content

SMTP AUTH extension not supported by server. #283

Open
@febriyan1302

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

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