Discussion:
twisted mail server - SMTP AUTH extension not supported
Jp Calderone
2003-12-30 22:16:32 UTC
Permalink
I'm trying to create a mail server in Twisted.
I either get
SMTPSenderRefused
or
SMTPException: SMTP AUTH extension not supported by server.
What do I need to do to get it to work?
from twisted.internet import reactor
from twisted import mail
import twisted.mail.mail
import twisted.mail.maildir
service = mail.mail.MailService('ExampleMail')
If you want unauthenticated users to be able to send mail, you need to
explicitly allow it.

from twisted.cred import checkers
service.smtpPortal.registerChecker(checkers.AllowAnonymousAccess())
smtp = service.getSMTPFactory()
SMTP AUTH is really part of ESMTP. Try service.getESMTPFactory() instead
of service.getSMTPFactory().
pop3 = service.getPOP3Factory()
domain = mail.maildir.MaildirDirdbmDomain(service, '/temp')
domain.addUser('salvador', 'gala')
service.addDomain('dali', domain)
reactor.listenTCP(25, smtp , interface='dali')
reactor.listenTCP(110, pop3 , interface='dali')
reactor.run()
Also, note that the above code accomplishes roughly the same thing as the
following command line:

mktap mail --maildirdbmdomain dali=/temp --default \
--user salvador=gala \
--pop3 110 --smtp 25


If you just want a mail server, using the command line is probably better.
If you need more flexibility than it can offer, sticking with code is the
right choice.

Jp
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 196 bytes
Desc: Digital signature
URL: <http://mail.python.org/pipermail/python-list/attachments/20031230/e34026dd/attachment.pgp>
Mark Carter
2003-12-30 19:05:53 UTC
Permalink
I'm trying to create a mail server in Twisted.

I either get
SMTPSenderRefused
or
SMTPException: SMTP AUTH extension not supported by server.

What do I need to do to get it to work?


--- Here is the server:

from twisted.internet import reactor

from twisted import mail
import twisted.mail.mail
import twisted.mail.maildir

service = mail.mail.MailService('ExampleMail')
smtp = service.getSMTPFactory()
pop3 = service.getPOP3Factory()

domain = mail.maildir.MaildirDirdbmDomain(service, '/temp')
domain.addUser('salvador', 'gala')
service.addDomain('dali', domain)

reactor.listenTCP(25, smtp , interface='dali')
reactor.listenTCP(110, pop3 , interface='dali')

reactor.run()

--- Here is the client that tries to send an email:

import smtplib
from email.MIMEText import MIMEText
addr = 'salvador at dali'

msg = MIMEText('Body of message')
msg['From'] = addr
msg['Subject'] = 'Note to myself'
msg['To'] = addr

server = smtplib.SMTP('dali')
server.login('salvador', 'gala') # see note 1
server.sendmail(addr, addr ,msg.as_string())
server.quit()

--- Notes:

1. If I keep in the line:
server.login('salvador', 'gala') # see note 1
the client complains:
server.login('salvador', 'gala')
File "C:\Python23\lib\smtplib.py", line 546, in login
raise SMTPException("SMTP AUTH extension not supported by
server.")
SMTPException: SMTP AUTH extension not supported by server.

If I comment it out, the client complains:
SMTPSenderRefused: (451, 'Requested action aborted: error in
processing', 'salvador at dali')
and the server prints the message:
Failure: twisted.cred.error.UnhandledCredentials: No checker for
twisted.cred.credentials.IAnonymous,
twisted.cred.credentials.ICredentials
... smtp.py:553: DeprecationWarning:
Returning None from validateFrom is deprecated. Raise
smtp.SMTPBadSender
instead
"Raise smtp.SMTPBadSender instead", DeprecationWarning"
Tung Wai Yip
2003-12-30 21:11:15 UTC
Permalink
Hello, I have no experience in Twisted. However I'm looking for a
sendmail replacement after my exim died for no apparent reason. I bet
a python based MTA would be more easy to configure and manage. Do you
have any recommendation? Is there a lot of work to setup twisted as a
MTA?

tung

On 30 Dec 2003 11:05:53 -0800, cartermark46 at ukmail.com (Mark Carter)
I'm trying to create a mail server in Twisted.
I either get
SMTPSenderRefused
or
SMTPException: SMTP AUTH extension not supported by server.
What do I need to do to get it to work?
from twisted.internet import reactor
from twisted import mail
import twisted.mail.mail
import twisted.mail.maildir
service = mail.mail.MailService('ExampleMail')
smtp = service.getSMTPFactory()
pop3 = service.getPOP3Factory()
domain = mail.maildir.MaildirDirdbmDomain(service, '/temp')
domain.addUser('salvador', 'gala')
service.addDomain('dali', domain)
reactor.listenTCP(25, smtp , interface='dali')
reactor.listenTCP(110, pop3 , interface='dali')
reactor.run()
import smtplib
from email.MIMEText import MIMEText
addr = 'salvador at dali'
msg = MIMEText('Body of message')
msg['From'] = addr
msg['Subject'] = 'Note to myself'
msg['To'] = addr
server = smtplib.SMTP('dali')
server.login('salvador', 'gala') # see note 1
server.sendmail(addr, addr ,msg.as_string())
server.quit()
server.login('salvador', 'gala') # see note 1
server.login('salvador', 'gala')
File "C:\Python23\lib\smtplib.py", line 546, in login
raise SMTPException("SMTP AUTH extension not supported by
server.")
SMTPException: SMTP AUTH extension not supported by server.
SMTPSenderRefused: (451, 'Requested action aborted: error in
processing', 'salvador at dali')
Failure: twisted.cred.error.UnhandledCredentials: No checker for
twisted.cred.credentials.IAnonymous,
twisted.cred.credentials.ICredentials
Returning None from validateFrom is deprecated. Raise
smtp.SMTPBadSender
instead
"Raise smtp.SMTPBadSender instead", DeprecationWarning"
Loading...