Open
Description
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())
Thank you for your help