Ioan Eugen Stan - James
Upcoming SlideShare
Loading in...5
×
 

Ioan Eugen Stan - James

on

  • 490 views

 

Statistics

Views

Total Views
490
Views on SlideShare
490
Embed Views
0

Actions

Likes
0
Downloads
1
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Ioan Eugen Stan - James Ioan Eugen Stan - James Presentation Transcript

  • Introducere: Apache James Ioan Eugen Stan Ioan Eugen Stan Întâlnirea RLUG iunie 2011 Întâlnirea RLUG iunie 2011
  • 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
  • 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)
  • 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
  • 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
  • Componente (2)● Mime4j – parser pentru mesaje RFC822 și MIME● JSPF – implementare pentru Sender Policy Framework● JSieve – implementare a limbajului Sieve
  • Hupa – interfață web (IMAP)
  • 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)
  • 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).
  • 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
  • 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)
  • Mailet = Matcher + Mailet● Matcher = clasă care face filtrarea mesajului după criterii complexe (ex. RecepientIs).● Mailet = clasă ce implementează procesarea mesajului
  • 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
  • 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
  • Alte Mailet-uri interesante● Sieve Mailets● CryptoMailets: S/MIME: ● SMIMECheckSignature ● SMIMEDecrypt ● SMIMESign
  • 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
  • Gata!Mulțumesc pentru atenție! Aștept întrebări.James caută contribuitori!stan.ieugen@gmail.com