Ioan Eugen Stan - James

17

Click here to load reader

Transcript of Ioan Eugen Stan - James

Page 1: Ioan Eugen Stan - James

Introducere: Apache James

Ioan Eugen StanÎntâlnirea RLUG iunie 2011

Ioan Eugen StanÎntâlnirea RLUG iunie 2011

Page 2: Ioan Eugen Stan - James

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

Page 3: Ioan Eugen Stan - James

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)

Page 4: Ioan Eugen Stan - James

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

Page 5: Ioan Eugen Stan - James

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

Page 6: Ioan Eugen Stan - James

Componente (2)

● Mime4j – parser pentru mesaje RFC822 și MIME

● JSPF – implementare pentru Sender Policy Framework

● JSieve – implementare a limbajului Sieve

Page 7: Ioan Eugen Stan - James

Hupa – interfață web (IMAP)

Page 8: Ioan Eugen Stan - James

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)

Page 9: Ioan Eugen Stan - James

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).

Page 10: Ioan Eugen Stan - James

Compatibilitate cu clienții (James V3)

Client OS PO3 IMAP4 IMAP4SSL

Thunderbird 3.1 Windows OK OK OK

Thunderbird 3.1 Ubuntu OK OK

Thunderbird 3.1 OSX 1.6 OK OK OK

Android Android 2.0 OK

iPhone iPhone 4 OK

iPad iPad 2 OK

Page 11: Ioan Eugen Stan - James

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)

Page 12: Ioan Eugen Stan - James

Mailet = Matcher + Mailet

● Matcher = clasă care face filtrarea mesajului după criterii complexe (ex. RecepientIs).

● Mailet = clasă ce implementează procesarea mesajului

Page 13: Ioan Eugen Stan - James

Câteva clase Matcher standard

● All

● AttachmentFileNameIs

● CommandForListserv

● CommandListservMatcher

● CompareNumericHeaderValue

● FetchedFrom

● HasAttachment

● HasHeader

● HasMailAttribute

● HostIs

● HostIsLocal

● UserIs

● IsSingleRecipient

● RecipientIs

● RelayLimit

● SMTPAuthSuccessful

● SMTPAuthUserIs

● SenderHostIs

● SenderHostIsLocal

● SenderIs

● SizeGreaterThan

● SubjectStartsWith

Page 14: Ioan Eugen Stan - James

Câteva Mailet-uri standard

● AddFooter● AddHabeasWarrantMark● AddSubjectPrefix● ClamAVScan● Counter● ExceptionThrowingMailet● Identity● LogMessage● PostmasterAlias● RecoverAttachment● RemoveAllMailAttributes● RemoveMailAttribute

● RemoveMimeHeader

● ReplaceContent

● ServerTime

● SetMailAttribute

● SetMimeHeader

● StripAttachment

● ToProcessor

● UnwrapText

● UseHeaderRecipients

● WrapText

Page 15: Ioan Eugen Stan - James

Alte Mailet-uri interesante

● Sieve Mailets● CryptoMailets: S/MIME:

● SMIMECheckSignature ● SMIMEDecrypt ● SMIMESign

Page 16: Ioan Eugen Stan - James

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

Page 17: Ioan Eugen Stan - James

Gata!

Mulțumesc pentru atenție!Aștept întrebări.

James caută contribuitori!

[email protected]