Apache_James

advertisement
Apache James
The complete email
application platform
Danny Angus
What is James?
Modular
An SMTP Server
A POP3 Server
An email application server
An IMAP server
An NNTP Server
Mail Storage manager
Apache James - The complete email application platform
What do you get?
SMTP SPOOL STORE
HANDLER CHAIN
PROCESSOR
HELO/EHLO
MAILET
AUTH
MAILET
DATA
MAILET
Repository
DB
Repository
EXPN
MAIL
PROCESSOR
RCPT
MAILET
HELP
MAILET
NOOP
MAILET
DB/File
Repository
MBOX
RSET
F
QUIT
VRFY
FETCH
IMAP
NNTP
POP3
Configuration
Container
Apache James - The complete email application platform
Container
Distribution
Embedding
Modular
Flexible
Options
Container
Apache James - The complete email application platform
Server
Ready to use
Simple to configure
Flexible
Scaleable
High Uptimes
Configuration
Container
Apache James - The complete email application platform
SMTP
Handler Chain
Command handlers
Extend - ESMTP
Modify – R&D
Fast Fail – Don’t
waste time on
Spam
TLS
SMTP AUTH
Bind to IP
SMTP
HANDLER CHAIN
Apache James - The complete email application platform
HELO/EHLO
AUTH
DATA
EXPN
MAIL
RCPT
HELP
NOOP
RSET
QUIT
VRFY
Mailet
Email applications
JavaMail
Provided Mailets
Remote & local
delivery
Mailing lists
AV/A-Spam
Gateway to other
transports
And Loads More
SPOOL
PROCESSOR
MAILET
MAILET
MAILET
PROCESSOR
Apache James - The complete email application platform
MAILET
MAILET
MAILET
Persistence
Derby – by default
File
Mbox – for archives
Maildir
Dbfile
Rdbms syntax-
STORE
SQL Server
Oracle
Mysql
Postgres
DB2
…and more… add
your favourite.
Apache James - The complete email application platform
Repository
DB
Repository
DB/File
Repository
MBOX
POP3
Host v Vhost
TLS
Bind
POP3
Apache James - The complete email application platform
IMAP
At Last we’re getting there
Not bullet proof … yet
Module
TLS
Bind
IMAP
Apache James - The complete email application platform
NNTP
Independent
Great for Workgroups
Auth
No mail->news 
NNTP
Apache James - The complete email application platform
Fetch Mail
Blend Your Channels
Java Mail
IMAP
POP3
FETCH
Schedule
Fetched mail is 1st class citizen
Re-route mail from logical accounts to
actual users or lists
Manage virtual domains
Apache James - The complete email application platform
What Else We Have
Mail related Sub projects
(What did you expect?)
Apache James - The complete email application platform
JSPF
100% Java implementation of SPF
Passes the Open SPF Tests
(openspf testsuite-2007.01)
Apache James - The complete email application platform
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
Apache James - The complete email application platform
JSieve
Sieve is a language that can
be used to create filters for
electronic mail.
PROCESSOR
SIEVE MAILET
SCRIPT
100% Java Sieve implementation of
RFC3028
Can be used to script James-Server.
Apache James - The complete email application platform
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
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
Stand Alone
SMTP
SPOOL
STORE
HANDLER
HELO/EHLO
CHAIN
PROCESS
MAILET
OR
Repository
AUTH
MAILET
DATA
MAILET
DB
DERBY
Repository
EXPN
DB/File
MAIL
RCPT
PROCESS
MAILET
OR
HELP
MAILET
NOOP
FETCH
Repository
IMAP
MBOX
MAILET
RSET
F
QUIT
VRFY
NNTP
POP3
Configuration
Container
Out of the box, set some parameters
All you need for straightforward email
It Works™ - yes it does!
Apache James - The complete email application platform
Distributed
SMTP
STORE
HANDLER
HELO/EHLO
CHAIN
Repository
DB
AUTH
DATA
EXPN
Repository
DB/File
MAIL
RCPT
HELP
NOOP
Repository
MBOX
RSET
QUIT
VRFY
SMTP
STORE
HANDLER
HELO/EHLO
CHAIN
Repository
DB
AUTH
SPOOL
STORE
STORE
PROCESS
MAILET
OR
Repository
Repository
DATA
EXPN
Repository
DB/File
Configuration
MAIL
DB
DB
Repository
Repository
MAILET
RCPT
Container
HELP
NOOP
Repository
MBOX
DB/File
DB/File
Repository
Repository
MBOX
MBOX
PROCESS
MAILET
OR
RSET
Use MX Priorities to
manage high
availability.
MAILET
QUIT
MAILET
VRFY
MAILET
IMAP
POP3
Configuration
Configuration
Configuration
Container
Container
Container
100% is possible.
RDBMS for shared storage
Responsibilities can be separated
Apache James - The complete email application platform
Performant
SMTP
HANDLER
HELO/EHLO
CHAIN
STORE
HANDLER
HELO/EHLO
CHAIN
Repository
AUTH
Repository
EXPN
DB
MAIL
AUTH
DB
DATA
Repository
DB/File
RCPT
DATA
EXPN
SMTP
STORE
HELP
Repository
NOOP
Repository
MBOX
DB/File
MAIL
RSET
RCPT
HELP
NOOP
QUIT
Repository
VRFY
MBOX
RSET
QUIT
VRFY
Configuration
Configuration
Container
SPOOL
STORE
PROCESS
MAILET
OR
Repository
DB
MAILET
MAILET
Container
Repository
DB/File
Scale Horizontally
Divide and Protect
Integrate with your
business systems
PROCESS
MAILET
OR
MAILET
Repository
MBOX
MAILET
SMTP
STORE
SPOOL
STORE
STORE
STORE
HANDLER
HELO/EHLO
CHAIN
Repository
PROCESS
MAILET
OR
Repository
Repository
Repository
DB
DB
DB
Repository
Repository
Repository
DB
Configuration
AUTH
DATA
EXPN
Repository
MAILET
MAILET
DB/File
DB/File
MAIL
RCPT
HELP
NOOP
Repository
MBOX
Container
PROCESS
MAILET
OR
MAILET
Repository
DB/File
DB/File
Repository
Repository
MBOX
MBOX
MBOX
MAILET
RSET
QUIT
VRFY
Configuration
Container
IMAP
IMAP
POP3
POP3
Configuration
Configuration
Configuration
Container
Container
Container
Throughput depends on message size
Administration – James doesn’t provide tooling
James Can be made Highly Available
J2EE
Apache James - The complete email application platform
Integrated
Integrate
Use another
container
JCA
OSGi
Spring
Geronimo
SMTP SPOOL STORE
HANDLER CHAIN
PROCESSOR
HELO/EHLO
MAILET
AUTH
MAILET
DATA
MAILET
Repository
DB
J2EE
Repository
EXPN
MAIL
PROCESSOR
RCPT
MAILET
HELP
MAILET
NOOP
MAILET
DB/File
Repository
MBOX
RSET
F
QUIT
VRFY
FETCH
IMAP
NNTP
POP3
Configuration
Container
Apache James - The complete email application platform
Extended
Add
Replace
Enhance
Remove
•Protocols
•Storage types
•Configuration
•Mailets
•SMTP commands
SMTP SPOOL STORE
HANDLER CHAIN
PROCESSOR
HELO/EHLO
MAILET
AUTH
MAILET
DATA
MAILET
Repository
DB
Proto-X
Repository
EXPN
MAIL
PROCESSOR
RCPT
MAILET
HELP
MAILET
NOOP
MAILET
DB/File
Repository
MBOX
RSET
X-Filter
Repository
QUIT
VRFY
PROCESSOR
F
X-File
FETCH
IMAP
NNTP
VERB-X
X-Handler
Configuration
Container
Apache James - The complete email application platform
POP3
Embeded
Use James modules
As much or as little as you
want to
Extend everything
Reuse
Mailets
sieve scripts
SPOOL
PROCESSOR
MAILET
MAILET
MAILET
X-Filter
STORE
Repository
DB
Derby
Programme - X
Apache James - The complete email application platform
Embeded
Lower level
Use our API’s
Independent Modules
Just what you need
Test bed
Be radical!
Reuse
Be modular!
PROCESSOR
HANDLER CHAIN
HELO/EHLO
MAILET
AUTH
MAILET
DATA
MAILET
EXPN
MAIL
RCPT
HELP
NOOP
RSET
QUIT
VRFY
Apache James - The complete email application platform
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
Questions?
Danny Angus
danny@apache.org
http://james.apache.org
http://blog.killerbees.co.uk
Or Google for: Detroit Derby Girls Swim the Atlantic Ocean
Download