[CalendarServer-changes] [3643] CalendarServer/trunk
source_changes at macosforge.org
source_changes at macosforge.org
Thu Feb 5 13:40:38 PST 2009
Revision: 3643
http://trac.macosforge.org/projects/calendarserver/changeset/3643
Author: sagen at apple.com
Date: 2009-02-05 13:40:38 -0800 (Thu, 05 Feb 2009)
Log Message:
-----------
Support password auth and SSL for outbound iMIP messages over SMTP
Modified Paths:
--------------
CalendarServer/trunk/conf/caldavd-test.plist
CalendarServer/trunk/conf/caldavd.plist
CalendarServer/trunk/twistedcaldav/config.py
CalendarServer/trunk/twistedcaldav/mail.py
Modified: CalendarServer/trunk/conf/caldavd-test.plist
===================================================================
--- CalendarServer/trunk/conf/caldavd-test.plist 2009-02-05 20:36:21 UTC (rev 3642)
+++ CalendarServer/trunk/conf/caldavd-test.plist 2009-02-05 21:40:38 UTC (rev 3643)
@@ -526,6 +526,12 @@
<string></string>
<key>Port</key>
<integer>587</integer>
+ <key>UseSSL</key>
+ <true/>
+ <key>Username</key>
+ <string></string>
+ <key>Password</key>
+ <string></string>
<key>Address</key>
<string></string> <!-- Address email will be sent from -->
</dict>
Modified: CalendarServer/trunk/conf/caldavd.plist
===================================================================
--- CalendarServer/trunk/conf/caldavd.plist 2009-02-05 20:36:21 UTC (rev 3642)
+++ CalendarServer/trunk/conf/caldavd.plist 2009-02-05 21:40:38 UTC (rev 3643)
@@ -400,6 +400,12 @@
<string></string>
<key>Port</key>
<integer>587</integer>
+ <key>UseSSL</key>
+ <true/>
+ <key>Username</key>
+ <string></string>
+ <key>Password</key>
+ <string></string>
<key>Address</key>
<string></string> <!-- Address email will be sent from -->
</dict>
Modified: CalendarServer/trunk/twistedcaldav/config.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/config.py 2009-02-05 20:36:21 UTC (rev 3642)
+++ CalendarServer/trunk/twistedcaldav/config.py 2009-02-05 21:40:38 UTC (rev 3643)
@@ -261,6 +261,9 @@
"Server" : "", # SMTP server to relay messages through
"Port" : 587, # SMTP server port to relay messages through
"Address" : "", # 'From' address for server
+ "UseSSL" : True,
+ "Username" : "", # For account sending mail
+ "Password" : "", # For account sending mail
},
"Receiving": {
"Server" : "", # Server to retrieve email messages from
Modified: CalendarServer/trunk/twistedcaldav/mail.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/mail.py 2009-02-05 20:36:21 UTC (rev 3642)
+++ CalendarServer/trunk/twistedcaldav/mail.py 2009-02-05 21:40:38 UTC (rev 3643)
@@ -25,10 +25,10 @@
from email.mime.text import MIMEText
from twisted.application import internet, service
-from twisted.internet import protocol, defer, ssl
+from twisted.internet import protocol, defer, ssl, reactor
from twisted.internet.defer import inlineCallbacks, returnValue, succeed
from twisted.mail import pop3client, imap4
-from twisted.mail.smtp import messageid, rfc822date, sendmail
+from twisted.mail.smtp import messageid, rfc822date, ESMTPSenderFactory
from twisted.plugin import IPlugin
from twisted.python.usage import Options, UsageError
from twisted.web import resource, server, client
@@ -56,6 +56,13 @@
import os
import uuid
+try:
+ from cStringIO import StringIO
+except ImportError:
+ from StringIO import StringIO
+
+
+
__all__ = [
"IMIPInboxResource",
"MailGatewayServiceMaker",
@@ -793,9 +800,20 @@
self.log_error("Mail gateway failed to send message %s from %s to %s (Reason: %s)" %
(msgId, fromAddr, toAddr, failure.getErrorMessage()))
- deferred = sendmail(settings['Server'], fromAddr, toAddr, message,
- port=settings['Port'])
+ deferred = defer.Deferred()
+ if settings["UseSSL"]:
+ contextFactory = ssl.ClientContextFactory()
+ else:
+ contextFactory = None
+
+ factory = ESMTPSenderFactory(settings['Username'], settings['Password'],
+ fromAddr, toAddr, StringIO(str(message)), deferred,
+ contextFactory=contextFactory,
+ requireAuthentication=False,
+ requireTransportSecurity=False)
+
+ reactor.connectTCP(settings['Server'], settings['Port'], factory)
deferred.addCallback(_success, msgId, fromAddr, toAddr)
deferred.addErrback(_failure, msgId, fromAddr, toAddr)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20090205/2b03167e/attachment.html>
More information about the calendarserver-changes
mailing list