Ioan Eugen Stan - James

534 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
534
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Ioan Eugen Stan - James

  1. 1. Introducere: Apache James Ioan Eugen Stan Ioan Eugen Stan Întâlnirea RLUG iunie 2011 Întâlnirea RLUG iunie 2011
  2. 2. Date generale● Server de poștă electronică● Mailet container● Scris în Java● folosește Spring, se trece către OSGI● Cunoaște: SMTP, LMTP, POP3, IMAP, Sieve, NNTP (în versiunea 2)● Ultima versiune: 3.0M3 (beta)● Lista completa: http://james.apache.org/server/index.html Features
  3. 3. Puncte tari● Maileturi – putere în procesarea de emailuri● Protocol hooks (smtp, pop3, imap)● Sistem extensibil de stocare a mesajelor: ● În baze de date prin OpenJPA ● Maildir ● JCR – Java Content Repository ● În curând HBase (proiectul la care lucrez eu)
  4. 4. Puncte slabe● Noua versiune, V3, nu este încă suficient testată● Totuși, este folosită în producție de către (cel puțin) o companie
  5. 5. Componente (1)● Hupa – interfață IMAP web, scrisă în GWT● IMAP – bibliotecă de funcții pentru IMAP (implementează RFC3501 + alte extensii)● Mailet – specificatie pentru container și agenți de emailuri● Mailbox – API și biblioteca pentru stocare emailuri
  6. 6. Componente (2)● Mime4j – parser pentru mesaje RFC822 și MIME● JSPF – implementare pentru Sender Policy Framework● JSieve – implementare a limbajului Sieve
  7. 7. Hupa – interfață web (IMAP)
  8. 8. Mailbox● Stocare de emailuri, accesibile prin IMAP, POP3, SMTP sau alte protocoale● API destul de stabil● Implementări curente: ● Maildir ● Baze de date (JPA) ● JCR● În lucru: mailbox peste Hbase (Hadoop/HDFS)
  9. 9. Implementarea IMAP● RFC3501 (IMAP4 rev1)● Extensii: LITERAL+, CHILDREN, I18NLEVEL=1, WITHIN, ESEARCH, SEARCHRES, IDLE, NAMESPACE, UIDPLUS, UNSELECT, AUTH=PLAIN, SASL-IR, ENABLE● Extensii în lucru: SORT,ESORT,CONDSTORE și QRESYNC.● Trece testele de la http://imapwiki.org/ImapTest (cu excepția a două, mai exotice).
  10. 10. Compatibilitate cu clienții (James V3) Client OS PO3 IMAP4 IMAP4SSLThunderbird 3.1 Windows OK OK OKThunderbird 3.1 Ubuntu OK OKThunderbird 3.1 OSX 1.6 OK OK OK Android Android 2.0 OK iPhone iPhone 4 OK iPad iPad 2 OK
  11. 11. Mailet-uri● Un set de clase (Java)● Folosite pentru a scrie aplicații email● James exportă procesarea de mesaje folosind Mailet-uri● Inspirate după modelul servlet● Încapsulează partea de procesare de mesaje● Rulează în Mailet container (James)● Ciclu de viață simplu (init, service, destroy)
  12. 12. Mailet = Matcher + Mailet● Matcher = clasă care face filtrarea mesajului după criterii complexe (ex. RecepientIs).● Mailet = clasă ce implementează procesarea mesajului
  13. 13. Câteva clase Matcher standard● All● AttachmentFileNameIs ● IsSingleRecipient● CommandForListserv ● RecipientIs CommandListservMatcher RelayLimit● ●● CompareNumericHeaderValue ● SMTPAuthSuccessful● FetchedFrom ● SMTPAuthUserIs● HasAttachment ● SenderHostIs● HasHeader● HasMailAttribute ● SenderHostIsLocal● HostIs ● SenderIs● HostIsLocal ● SizeGreaterThan● UserIs ● SubjectStartsWith
  14. 14. Câteva Mailet-uri standard● AddFooter ● RemoveMimeHeader● AddHabeasWarrantMark ● ReplaceContent● AddSubjectPrefix ● ServerTime● ClamAVScan● Counter ● SetMailAttribute● ExceptionThrowingMailet ● SetMimeHeader● Identity ● StripAttachment● LogMessage ● ToProcessor● PostmasterAlias ● UnwrapText● RecoverAttachment● RemoveAllMailAttributes ● UseHeaderRecipients● RemoveMailAttribute ● WrapText
  15. 15. Alte Mailet-uri interesante● Sieve Mailets● CryptoMailets: S/MIME: ● SMIMECheckSignature ● SMIMEDecrypt ● SMIMESign
  16. 16. James in numbers● James „duce” mai mult de 100 de mesaje pe secundă (configurat cu Maildir) fără optimizări● Cu optimizări ~ 250 mesaje pe secunda● Test făcut din distribuția postfix● Detalii la: http://james.apache.org/server/3/feature-perfomance.html
  17. 17. Gata!Mulțumesc pentru atenție! Aștept întrebări.James caută contribuitori!stan.ieugen@gmail.com

×