Apache James

2,872 views
2,796 views

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,872
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

×