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 NN...
Standards Standards Standards
                                  Don’t try to read this list!
                             ...
What do you get?
 SMTP SPOOL STORE
 HANDLER CHAIN        PROCESSOR        Repository

   HELO/EHLO            MAILET
     ...
Container
•Distribution
•Embedding
•Modular
•Flexible
•Options




                                               Containe...
Server
•Ready to use
•Easy to configure
•Flexible
•Scaleable
•High Uptimes


                                             ...
SMTP
•Handler Chain
                                                       SMTP
•Command handlers                         ...
Mailet
•Email applications
                                                      SPOOL
•JavaMail                          ...
Persistence
•Derby – by default
•File
                                                       STORE
                       ...
POP3
•Host v Vhost
•TLS
•Bind


                                                        POP3




       Apache James - The...
IMAP
•At Last we’re getting there
•Not bullet proof … yet
•Module
•TLS
•Bind                                              ...
NNTP
•Independent
•Great for Workgroups
•Auth
•No mail->news 
                                                       NNTP...
Fetch Mail
•Blend Your Channels
•Java Mail
•IMAP
•POP3
•Schedule                          FETCH
•Fetched mail is 1st class...
What Else We Have
•Mail related Sub projects
• (What did you expect?)




       Apache James - The complete email applica...
JSPF
• 100% Java implementation of SPF
• Passes the Open SPF Tests
  (openspf testsuite-2007.01)
• Fully RFC4480 compliant...
Mime4j
• Mime Parser
  – Mime is complex due to its open-ended
    nature
  – Mime is powerful due to its open-ended
    n...
JSieve
•Sieve is a language that can be                                PROCESSOR
used to create filters for               ...
Sieve Script
if header :contains ["X-Spam"] "high" {
      discard;
      stop;
}
if header :contains ["X-Spam-Flag"] "HIG...
Postage
• Soak/Stress test mainly for James
• Provides comprehensive metrics and
  benchmarks.
• Compare:
  – Configuratio...
How can this all be used?
•   Easily
•   Quickly
•   To great effect
•   At low cost

       • (I would say that wouldn’t ...
Stand Alone

                           SMTP           SPOOL           STORE
                           HANDLER        PRO...
Distributed
      SMTP               STORE
      HANDL ER            Re po sitory
       HCHAIN
        ELO/ EH LO        ...
Performant
                                      SMTP              STORE
                                      HANDL ER   ...
Integrated
•Integrate
                               SMTP SPOOL STORE
•Use another                    HANDLER CHAIN

     ...
Extended
Add
                 SMTP             SPOOL STORE
Replace           HANDLER CHAIN    PROCESSOR

                 ...
Embeded
Use James modules                                    SPOOL
As much or as little as you
                           ...
Embeded
Lower level                                PROCESSOR

  Use our API’s                              MAILET
        ...
What Next?
• Mailet++
  – 100% independent 100% useful
  – Annotations
  – JNDI
• IMAP – the end in sight?
• Alternative D...
Questions?
                      Danny Angus
                   danny@apache.org



                 http://james.apache.o...
Upcoming SlideShare
Loading in …5
×

Apache James

2,698
-1

Published on

1 Comment
1 Like
Statistics
Notes
  • Hi,
    How to deploy Sieve scripts on James?
    Which folder do I need to put it into? What configuration setting do I need to change?
    I am particularly interested in version 2.2, but anything helps.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total Views
2,698
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
67
Comments
1
Likes
1
Embeds 0
No embeds

No notes for slide

Apache James

  1. 1. Apache James The complete email application platform Danny Angus
  2. 2. 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
  3. 3. Standards Standards Standards Don’t try to read this list! RFC 2087: IMAP4 QUOTA extension RFC 822: Mail Message Format RFC 2088: IMAP4 non-synchronizing literals RFC 1123: Requirements for Internet Hosts -- Application and RFC 2177: IMAP4 IDLE command Support (updated by RFC 2821) RFC 2180: IMAP4 Multi-accessed Mailbox Practice RFC 2045: Multipurpose Internet Mail Extensions (MIME) Part One: RFC 2192: IMAP URL Scheme Format of Internet Message Bodies RFC 2193: IMAP4 Mailbox Referrals RFC 2822: Internet Message Format RFC 2195: IMAP/POP AUTHorize Extension for Simple RFC 821: SMTP Protocol Challenge/Response RFC 974: Mail Routing and the Domain System RFC 2221: IMAP4 Login Referrals RFC 1652: SMTP Service Extension for 8bit-MIMEtransport RFC 2342: IMAP4 Namespace (elective) (elective, but widely adopted) RFC 2359: IMAP4 UIDPLUS extension (elective) RFC 1830: SMTP Service Extensions for Transmission of Large and RFC 2595: Using TLS with IMAP, POP and ACAP Binary MIME Messages (experimental, but cool idea) RFC 2683: IMAP4 Implementation Recommendations RFC 1869: SMTP Service Extensions RFC 977 : NNTP Protocol RFC 1870: SMTP Service Extension for Message Size Declaration RFC 1036: Format of News Messages RFC 1891: SMTP Service Extension for Delivery Status Notifications RFC 2980: Common NNTP Extensions (elective) RFC 3377 : Lightweight Directory Access Protocol (v3): Technical RFC 1893: Enhanced Mail System Status Codes (experimental) Specification RFC 1985: SMTP Service Extension for Remote Message Queue RFC 2251 : Lightweight Directory Access Protocol (v3) Starting (elective) RFC 2252 : Lightweight Directory Access Protocol (v3): Attribute RFC 2034: SMTP Service Extension for Returning Enhanced Error Syntax Definitions Codes (elective) RFC 2253 : Lightweight Directory Access Protocol (v3): UTF-8 String RFC 2142: Mailbox Names For Common Services, Roles And Representation of Distinguished Names Functions RFC 2254 : The String Representation of LDAP Search Filters RFC 2197: SMTP Service Extension for Command Pipelining RFC 2255 : The LDAP URL Format (elective) RFC 2256 : A Summary of the X.500(96) User Schema for use with RFC 2554: SMTP Service Extension for Authentication LDAPv3 RFC 2821: Simple Mail Transfer Protocol (obsoletes RFC 821) RFC 2829 : Authentication Methods for LDAP RFC 1725: POP3 Protocol RFC 2830 : Lightweight Directory Access Protocol (v3): Extension for RFC 1734: POP3 AUTHentication command Transport Layer Security RFC 1939: POP3 Protocol (obsoletes RFC 1725) RFC 1731: IMAP4 Authentication Mechanisms RFC 2060: IMAP Version 4rev1 RFC 2086: IMAP4 ACL extension Apache James - The complete email application platform
  4. 4. What do you get? SMTP SPOOL STORE HANDLER CHAIN PROCESSOR Repository HELO/EHLO MAILET DB AUTH MAILET DATA MAILET Repository EXPN FETCH DB/File MAIL PROCESSOR RCPT MAILET Repository IMAP HELP MAILET MBOX NOOP MAILET RSET NNTP QUIT F VRFY POP3 Configuration Container Apache James - The complete email application platform
  5. 5. Container •Distribution •Embedding •Modular •Flexible •Options Container Apache James - The complete email application platform
  6. 6. Server •Ready to use •Easy to configure •Flexible •Scaleable •High Uptimes Configuration Container Apache James - The complete email application platform
  7. 7. SMTP •Handler Chain SMTP •Command handlers HANDLER CHAIN •Extend - ESMTP HELO/EHLO AUTH •Modify – R&D DATA EXPN •Fast Fail – Don’t MAIL waste time on Spam RCPT HELP •TLS NOOP RSET •SMTP AUTH QUIT VRFY •Bind to IP Apache James - The complete email application platform
  8. 8. Mailet •Email applications SPOOL •JavaMail PROCESSOR •Provided Mailets MAILET MAILET •Remote & local MAILET delivery PROCESSOR •Mailing lists MAILET MAILET •AV/A-Spam MAILET •Gateway to other transports •And Loads More Apache James - The complete email application platform
  9. 9. Persistence •Derby – by default •File STORE Repository •Mbox – for archives DB •Maildir Repository •Dbfile DB/File •Rdbms syntax- Repository –SQL Server MBOX –Oracle –Mysql –Postgres –DB2 –…and more… add your favourite. Apache James - The complete email application platform
  10. 10. POP3 •Host v Vhost •TLS •Bind POP3 Apache James - The complete email application platform
  11. 11. IMAP •At Last we’re getting there •Not bullet proof … yet •Module •TLS •Bind IMAP Apache James - The complete email application platform
  12. 12. NNTP •Independent •Great for Workgroups •Auth •No mail->news  NNTP Apache James - The complete email application platform
  13. 13. Fetch Mail •Blend Your Channels •Java Mail •IMAP •POP3 •Schedule FETCH •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
  14. 14. What Else We Have •Mail related Sub projects • (What did you expect?) Apache James - The complete email application platform
  15. 15. 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
  16. 16. 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
  17. 17. JSieve •Sieve is a language that can be PROCESSOR used to create filters for SIEVE MAILET electronic mail. SCRIPT •Apache JSieve 0.2 100% Java implementation of Sieve RFC3028 Can be used to script James-Server. Apache James - The complete email application platform
  18. 18. Sieve Script 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) Apache James - The complete email application platform
  19. 19. 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
  20. 20. 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
  21. 21. Stand Alone SMTP SPOOL STORE HANDLER PROCESS Repository CHAIN HE LO/E HLO MOR T A ILE DB A UTH M A ILE T DERBY DA TA M A ILE T Repository E XPN FETCH DB /File M A IL PROCESS RCP T MOR T A ILE HE LP M A ILE T Repository NOOP M A ILE T M B OX IMAP RS E T F QUIT V RFY 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
  22. 22. Distributed SMTP STORE HANDL ER Re po sitory HCHAIN ELO/ EH LO DB AU TH DA TA EX PN Re po sitory DB / File M AI L RC PT HE LP Re po sitory M B OX NOOP SMTP STORE RS ET QUI T VR FY HANDLER CHAIN HE LO/ E HLO Repository DB SPOOL STORE STORE A UTH Configuration DA TA PROCESS Repository Repository EXPN Repository M A I LE T OR DB DB DB / File Container M AI L M A I LE T RCP T M A I LE T Repository Repository Repository HE LP D B / File DB / File M B OX NOOP PROCESS RS E T OR M A I LE T QUI T Repository Repository M A I LE T V RFY M B OX M B OX M A I LE T Use MX Priorities to Configuration IMAP manage high POP3 Container Configuration Configuration availability. Container Container 100% is possible. RDBMS for shared storage Responsibilities can be separated Apache James - The complete email application platform
  23. 23. Performant SMTP STORE HANDL ER Reposito ry CHAIN HE LO/ EHLO DB SMTP STORE A UTH DATA E XP N Reposito ry HANDL ER Reposito ry DB/ File CHAIN HE LO/ EHLO DB MAIL A UTH RCP T DATA HELP Reposito ry E XP N Reposito ry M BOX NOOP DB/ File MAIL RSE T RCP T QUIT HELP Reposito ry V RFY M BOX NOOP RSE T QUIT V RFY Configuration SPOOL STORE Configuration Container PROCESS Repository M AI LE T OR DB Container M AI LE T M AI LE T Repository DB /File •Scale Horizontally PROCESS OR M AI LE T M AI LE T Repository M B OX M AI LE T •Divide and Protect SMTP HANDLER CHAIN HE LO/ EHLO AUTH STORE Repository DB SPOOL Configuration PROCESS OR M AI LE T STORE Re posito ry DB STORE Repository DB STORE Repository DB M AI LE T •Integrate with your DATA EXP N Repository DB /File Container M AI LE T Re posito ry Repository DB/ File Repository DB/ File DB / File M AI L PROCESS RCP T OR M AI LE T HELP Repository Re posito ry Repository Repository M AI LE T M BOX M BOX M BOX N OOP M B OX business systems M AI LE T RSE T QU IT VRFY IMAP IMAP POP3 POP3 Configuration Configuration Configuration Configuration Container 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
  24. 24. Integrated •Integrate SMTP SPOOL STORE •Use another HANDLER CHAIN HELO/EHLO PROCESSOR MAILET Repository J2EE DB container AUTH DATA MAILET MAILET Repository EXPN –JCA MAIL RCPT PROCESSOR MAILET DB/File FETCH Repository –OSGi HELP NOOP MAILET MAILET MBOX IMAP –Spring RSET NNTP QUIT F VRFY –Geronimo POP3 Configuration Container Apache James - The complete email application platform
  25. 25. Extended Add SMTP SPOOL STORE Replace HANDLER CHAIN PROCESSOR MAILET Repository Enhance HELO/EHLO Proto-X DB AUTH MAILET DATA MAILET Repository Remove EXPN FETCH DB/File MAIL PROCESSOR RCPT MAILET •Protocols Repository IMAP HELP MAILET MBOX NOOP MAILET •Storage types RSET X-Filter Repository NNTP QUIT F •Configuration VRFY X-File PROCESSOR VERB-X POP3 X-Handler •Mailets •SMTP commands Configuration Container Apache James - The complete email application platform
  26. 26. Embeded Use James modules SPOOL As much or as little as you PROCESSOR MAILET MAILET want to MAILET X-Filter Extend everything STORE BSF (See Felix next in this room!) Repository Reuse DB Mailets Derby sieve scripts Programme - X Apache James - The complete email application platform
  27. 27. Embeded Lower level PROCESSOR Use our API’s MAILET HANDLER CHAIN HELO/EHLO Independent Modules MAILET AUTH MAILET DATA Just what you need EXPN Test bed MAIL RCPT Be radical! HELP NOOP Reuse RSET QUIT Be modular! VRFY Apache James - The complete email application platform
  28. 28. 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
  29. 29. Questions? Danny Angus danny@apache.org http://james.apache.org http://www.google.com/search?q=danny+angus
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×