apache james
TRANSCRIPT
![Page 1: Apache James](https://reader035.vdocument.in/reader035/viewer/2022081421/5551c6e3b4c905922b8b4a34/html5/thumbnails/1.jpg)
Apache James
The complete email application platform
Danny Angus
![Page 2: Apache James](https://reader035.vdocument.in/reader035/viewer/2022081421/5551c6e3b4c905922b8b4a34/html5/thumbnails/2.jpg)
What is James?
• Modular– An SMTP Server– A POP3 Server– An email application server– An IMAP server– An NNTP Server– Mail Storage manager
• Version: 2.3.1
Apache James - The complete email application platform
![Page 3: Apache James](https://reader035.vdocument.in/reader035/viewer/2022081421/5551c6e3b4c905922b8b4a34/html5/thumbnails/3.jpg)
Standards Standards Standards
Apache James - The complete email application platform
RFC 2087: IMAP4 QUOTA extensionRFC 2088: IMAP4 non-synchronizing literalsRFC 2177: IMAP4 IDLE commandRFC 2180: IMAP4 Multi-accessed Mailbox PracticeRFC 2192: IMAP URL SchemeRFC 2193: IMAP4 Mailbox ReferralsRFC 2195: IMAP/POP AUTHorize Extension for Simple Challenge/ResponseRFC 2221: IMAP4 Login ReferralsRFC 2342: IMAP4 Namespace (elective)RFC 2359: IMAP4 UIDPLUS extension (elective)RFC 2595: Using TLS with IMAP, POP and ACAPRFC 2683: IMAP4 Implementation RecommendationsRFC 977 : NNTP ProtocolRFC 1036: Format of News MessagesRFC 2980: Common NNTP ExtensionsRFC 3377 : Lightweight Directory Access Protocol (v3): Technical SpecificationRFC 2251 : Lightweight Directory Access Protocol (v3)RFC 2252 : Lightweight Directory Access Protocol (v3): Attribute Syntax DefinitionsRFC 2253 : Lightweight Directory Access Protocol (v3): UTF-8 String Representation of Distinguished NamesRFC 2254 : The String Representation of LDAP Search FiltersRFC 2255 : The LDAP URL FormatRFC 2256 : A Summary of the X.500(96) User Schema for use with LDAPv3RFC 2829 : Authentication Methods for LDAPRFC 2830 : Lightweight Directory Access Protocol (v3): Extension for Transport Layer Security
Don’t try to read this list!RFC 822: Mail Message FormatRFC 1123: Requirements for Internet Hosts -- Application and Support (updated by RFC 2821)RFC 2045: Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message BodiesRFC 2822: Internet Message FormatRFC 821: SMTP ProtocolRFC 974: Mail Routing and the Domain SystemRFC 1652: SMTP Service Extension for 8bit-MIMEtransport (elective, but widely adopted)RFC 1830: SMTP Service Extensions for Transmission of Large and Binary MIME Messages (experimental, but cool idea)RFC 1869: SMTP Service ExtensionsRFC 1870: SMTP Service Extension for Message Size DeclarationRFC 1891: SMTP Service Extension for Delivery Status Notifications (elective)RFC 1893: Enhanced Mail System Status Codes (experimental)RFC 1985: SMTP Service Extension for Remote Message Queue Starting (elective)RFC 2034: SMTP Service Extension for Returning Enhanced Error Codes (elective)RFC 2142: Mailbox Names For Common Services, Roles And FunctionsRFC 2197: SMTP Service Extension for Command Pipelining (elective)RFC 2554: SMTP Service Extension for AuthenticationRFC 2821: Simple Mail Transfer Protocol (obsoletes RFC 821)RFC 1725: POP3 ProtocolRFC 1734: POP3 AUTHentication commandRFC 1939: POP3 Protocol (obsoletes RFC 1725)RFC 1731: IMAP4 Authentication MechanismsRFC 2060: IMAP Version 4rev1RFC 2086: IMAP4 ACL extension
![Page 4: Apache James](https://reader035.vdocument.in/reader035/viewer/2022081421/5551c6e3b4c905922b8b4a34/html5/thumbnails/4.jpg)
What do you get?
Container
Configuration
SMTPHANDLER CHAIN
HELO/EHLO
AUTH
DATA
EXPN
RCPT
HELP
VRFY
QUIT
RSET
NOOP
SPOOLPROCESSOR
MAILET
MAILET
MAILET
F
PROCESSOR
MAILET
MAILET
MAILET
STORERepository
DB
Repository
DB/File
Repository
MBOX
FETCH
IMAP
POP3
NNTP
Apache James - The complete email application platform
![Page 5: Apache James](https://reader035.vdocument.in/reader035/viewer/2022081421/5551c6e3b4c905922b8b4a34/html5/thumbnails/5.jpg)
Container
•Distribution•Embedding•Modular•Flexible•Options
Container
Apache James - The complete email application platform
![Page 6: Apache James](https://reader035.vdocument.in/reader035/viewer/2022081421/5551c6e3b4c905922b8b4a34/html5/thumbnails/6.jpg)
Server
•Ready to use•Easy to configure•Flexible•Scaleable•High Uptimes
Container
Configuration
Apache James - The complete email application platform
![Page 7: Apache James](https://reader035.vdocument.in/reader035/viewer/2022081421/5551c6e3b4c905922b8b4a34/html5/thumbnails/7.jpg)
SMTP
•Handler Chain•Command handlers•Extend - ESMTP•Modify – R&D•Fast Fail – Don’t waste time on Spam•TLS•SMTP AUTH•Bind to IP
SMTPHANDLER CHAIN
HELO/EHLO
AUTH
DATA
EXPN
RCPT
HELP
VRFY
QUIT
RSET
NOOP
Apache James - The complete email application platform
![Page 8: Apache James](https://reader035.vdocument.in/reader035/viewer/2022081421/5551c6e3b4c905922b8b4a34/html5/thumbnails/8.jpg)
Mailet
•Email applications•JavaMail•Provided Mailets•Remote & local delivery•Mailing lists•AV/A-Spam•Gateway to other transports•And Loads More
SPOOLPROCESSOR
MAILET
MAILET
MAILET
PROCESSOR
MAILET
MAILET
MAILET
Apache James - The complete email application platform
![Page 9: Apache James](https://reader035.vdocument.in/reader035/viewer/2022081421/5551c6e3b4c905922b8b4a34/html5/thumbnails/9.jpg)
Persistence
•Derby – by default•File•Mbox – for archives•Maildir•Dbfile•Rdbms syntax-
–SQL Server–Oracle–Mysql–Postgres–DB2–…and more… add your favourite.
STORERepository
DB
Repository
DB/File
Repository
MBOX
Apache James - The complete email application platform
![Page 10: Apache James](https://reader035.vdocument.in/reader035/viewer/2022081421/5551c6e3b4c905922b8b4a34/html5/thumbnails/10.jpg)
POP3
•Host v Vhost•TLS•Bind
POP3
Apache James - The complete email application platform
![Page 11: Apache James](https://reader035.vdocument.in/reader035/viewer/2022081421/5551c6e3b4c905922b8b4a34/html5/thumbnails/11.jpg)
IMAP
•At Last we’re getting there•Not bullet proof … yet•Module•TLS•Bind IMAP
Apache James - The complete email application platform
![Page 12: Apache James](https://reader035.vdocument.in/reader035/viewer/2022081421/5551c6e3b4c905922b8b4a34/html5/thumbnails/12.jpg)
NNTP
•Independent•Great for Workgroups•Auth•No mail->news
NNTP
Apache James - The complete email application platform
![Page 13: Apache James](https://reader035.vdocument.in/reader035/viewer/2022081421/5551c6e3b4c905922b8b4a34/html5/thumbnails/13.jpg)
Fetch Mail
•Blend Your Channels•Java Mail•IMAP•POP3 •Schedule•Fetched mail is 1st class citizen•Re-route mail from logical accounts to actual users or lists•Manage virtual domains
FETCH
Apache James - The complete email application platform
![Page 14: Apache James](https://reader035.vdocument.in/reader035/viewer/2022081421/5551c6e3b4c905922b8b4a34/html5/thumbnails/14.jpg)
What Else We Have
•Mail related Sub projects• (What did you expect?)
Apache James - The complete email application platform
![Page 15: Apache James](https://reader035.vdocument.in/reader035/viewer/2022081421/5551c6e3b4c905922b8b4a34/html5/thumbnails/15.jpg)
JSPF
• 100% Java implementation of SPF
• Passes the Open SPF Tests (openspf testsuite-2007.01)
• Fully RFC4480 compliant
• Apr/2008 - jSPF-0.9.6
Apache James - The complete email application platform
![Page 16: Apache James](https://reader035.vdocument.in/reader035/viewer/2022081421/5551c6e3b4c905922b8b4a34/html5/thumbnails/16.jpg)
Mime4j• Mime Parser
– Mime is complex due to its open-ended nature
– Mime is powerful due to its open-ended nature
– Multipart Mime is recursive
• Independent of JavaMail• Performance• Mime4J 0.5
Apache James - The complete email application platform
![Page 17: Apache James](https://reader035.vdocument.in/reader035/viewer/2022081421/5551c6e3b4c905922b8b4a34/html5/thumbnails/17.jpg)
JSieve
•Sieve is a language that can be used to create filters for electronic mail.•Apache JSieve 0.2
PROCESSOR
SIEVE MAILET
SCRIPT
Apache James - The complete email application platform
100% Java implementation of Sieve RFC3028Can be used to script James-Server.
![Page 18: Apache James](https://reader035.vdocument.in/reader035/viewer/2022081421/5551c6e3b4c905922b8b4a34/html5/thumbnails/18.jpg)
Apache James - The complete email application platform
if header :contains ["X-Spam"] "high" { discard; stop;}if header :contains ["X-Spam-Flag"] "HIGH" { discard; stop;}if header :contains ["X-Spam"] "spam" { fileinto "INBOX.spam";# some emails get SA tagged like this stop;}if header :contains ["X-Spam-Flag"] "YES" { fileinto "INBOX.spam"; stop;}
(http://wiki.fastmail.fm/index.php/MoreSieveExamples)
Sieve Script
![Page 19: Apache James](https://reader035.vdocument.in/reader035/viewer/2022081421/5551c6e3b4c905922b8b4a34/html5/thumbnails/19.jpg)
Postage
• Soak/Stress test mainly for James
• Provides comprehensive metrics and benchmarks.
• Compare: – Configurations– Deployment strategies– Hardware/environments
Apache James - The complete email application platform
![Page 20: Apache James](https://reader035.vdocument.in/reader035/viewer/2022081421/5551c6e3b4c905922b8b4a34/html5/thumbnails/20.jpg)
How can this all be used?
• Easily
• Quickly
• To great effect
• At low cost
• (I would say that wouldn’t I)
Apache James - The complete email application platform
![Page 21: Apache James](https://reader035.vdocument.in/reader035/viewer/2022081421/5551c6e3b4c905922b8b4a34/html5/thumbnails/21.jpg)
Stand Alone
•Out of the box, set some parameters•All you need for straightforward email•It Works™ - yes it does!
Container
Configuration
SMTPHANDLER
CHAINHELO/EHLO
AUTH
DATA
EXPN
RCPT
HELP
VRFY
QUIT
RSET
NOOP
SPOOLPROCESS
ORMAILET
MAILET
MAILET
F
PROCESSORMAILET
MAILET
MAILET
STORERepository
DB
RepositoryDB/File
RepositoryMBOX IMAP
POP3
NNTP
DERBY
FETCH
Apache James - The complete email application platform
![Page 22: Apache James](https://reader035.vdocument.in/reader035/viewer/2022081421/5551c6e3b4c905922b8b4a34/html5/thumbnails/22.jpg)
Distributed
Container
Configuration
SMTPHANDLER
CHAINHELO/EHLO
AUTH
DATA
EXPN
RCPT
HELP
VRFY
QUIT
RSET
NOOP
STORERepository
DB
RepositoryDB/File
RepositoryMBOX
Container
Configuration
SMTPHANDLER
CHAINHELO/EHLO
AUTH
DATA
EXPN
RCPT
HELP
VRFY
QUIT
RSET
NOOP
STORERepository
DB
RepositoryDB/File
RepositoryMBOX
Apache James - The complete email application platform
Container
Configuration
SPOOLPROCESS
ORMAILET
MAILET
MAILET
PROCESSORMAILET
MAILET
MAILET
STORERepository
DB
RepositoryDB/File
RepositoryMBOX
Container
Configuration
POP3
IMAP
STORERepository
DB
RepositoryDB/File
RepositoryMBOX
100% is possible.RDBMS for shared storageResponsibilities can be separated
Use MX Priorities to manage high availability.
![Page 23: Apache James](https://reader035.vdocument.in/reader035/viewer/2022081421/5551c6e3b4c905922b8b4a34/html5/thumbnails/23.jpg)
Container
Configuration
SMTPHANDLER
CHAINHELO/EHLO
AUTH
DATA
EXPN
RCPT
HELP
VRFY
QUIT
RSET
NOOP
STORERepository
DB
RepositoryDB/File
RepositoryMBOX
Container
Configuration
SPOOLPROCESS
ORMAILET
MAILET
MAILET
PROCESSORMAILET
MAILET
MAILET
STORERepository
DB
RepositoryDB/File
RepositoryMBOX
Container
Configuration
SPOOLPROCESS
ORMAILET
MAILET
MAILET
PROCESSORMAILET
MAILET
MAILET
STORERepository
DB
RepositoryDB/File
RepositoryMBOX
Performant
•Scale Horizontally
•Divide and Protect
•Integrate with your business systems
Apache James - The complete email application platform
Container
Configuration
SMTPHANDLER
CHAINHELO/EHLO
AUTH
DATA
EXPN
RCPT
HELP
VRFY
QUIT
RSET
NOOP
STORERepository
DB
RepositoryDB/File
RepositoryMBOX
Container
Configuration
SMTPHANDLER
CHAINHELO/EHLO
AUTH
DATA
EXPN
RCPT
HELP
VRFY
QUIT
RSET
NOOP
STORERepository
DB
RepositoryDB/File
RepositoryMBOX
Container
Configuration
POP3
IMAP
STORERepository
DB
RepositoryDB/File
RepositoryMBOX
Container
Configuration
POP3
IMAP
STORERepository
DB
RepositoryDB/File
RepositoryMBOX
J2EE
Throughput depends on message sizeAdministration – James doesn’t provide toolingJames Can be made Highly Available
![Page 24: Apache James](https://reader035.vdocument.in/reader035/viewer/2022081421/5551c6e3b4c905922b8b4a34/html5/thumbnails/24.jpg)
Integrated
•Integrate•Use another container
–JCA–OSGi–Spring–Geronimo
Container
Configuration
SMTPHANDLER CHAIN
HELO/EHLO
AUTH
DATA
EXPN
RCPT
HELP
VRFY
QUIT
RSET
NOOP
SPOOLPROCESSOR
MAILET
MAILET
MAILET
F
PROCESSOR
MAILET
MAILET
MAILET
STORERepository
DB
Repository
DB/File
Repository
MBOX IMAP
POP3
NNTP
J2EE
FETCH
Apache James - The complete email application platform
![Page 25: Apache James](https://reader035.vdocument.in/reader035/viewer/2022081421/5551c6e3b4c905922b8b4a34/html5/thumbnails/25.jpg)
Extended
Container
Configuration
SMTPHANDLER CHAIN
HELO/EHLO
AUTH
DATA
EXPN
RCPT
HELP
SPOOLPROCESSOR
MAILET
MAILET
MAILET
F
STORERepository
DB
Repository
DB/File
IMAP
POP3
NNTP
Proto-X
FETCH
Repository
X-File
Repository
MBOX
PROCESSOR
X-Handler
PROCESSOR
MAILET
MAILET
X-Filter
MAILET
VERB-X
VRFY
QUIT
RSET
NOOP
Apache James - The complete email application platform
AddReplaceEnhanceRemove•Protocols•Storage types•Configuration•Mailets•SMTP commands
![Page 26: Apache James](https://reader035.vdocument.in/reader035/viewer/2022081421/5551c6e3b4c905922b8b4a34/html5/thumbnails/26.jpg)
Embeded
Programme - X
SPOOLPROCESSOR
MAILET
MAILET
X-Filter
MAILET
Derby
STORERepository
DB
Apache James - The complete email application platform
Use James modulesAs much or as little as you want toExtend everything
BSF (See Felix next in this room!)
Reuse Mailetssieve scripts
![Page 27: Apache James](https://reader035.vdocument.in/reader035/viewer/2022081421/5551c6e3b4c905922b8b4a34/html5/thumbnails/27.jpg)
Embeded
PROCESSOR
MAILET
MAILET
MAILET
HANDLER CHAIN
HELO/EHLO
AUTH
DATA
EXPN
RCPT
HELP
VRFY
QUIT
RSET
NOOP
Apache James - The complete email application platform
Lower levelUse our API’s
Independent ModulesJust what you need
Test bedBe radical!
ReuseBe modular!
![Page 28: Apache James](https://reader035.vdocument.in/reader035/viewer/2022081421/5551c6e3b4c905922b8b4a34/html5/thumbnails/28.jpg)
What Next?
• Mailet++– 100% independent 100% useful– Annotations– JNDI
• IMAP – the end in sight?
• Alternative Distributions– Make your own!
• JavaMail re-implement or re-write?
Apache James - The complete email application platform
![Page 29: Apache James](https://reader035.vdocument.in/reader035/viewer/2022081421/5551c6e3b4c905922b8b4a34/html5/thumbnails/29.jpg)
Questions?Danny Angus
http://james.apache.org
http://www.google.com/search?q=danny+angus