Ioan Eugen Stan - James
Click here to load reader
-
Upload
asociatia-prolinux -
Category
Technology
-
view
357 -
download
1
Transcript of Ioan Eugen Stan - James
Introducere: Apache James
Ioan Eugen StanÎntâlnirea RLUG iunie 2011
Ioan Eugen StanÎ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 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
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
● CommandForListserv
● CommandListservMatcher
● CompareNumericHeaderValue
● FetchedFrom
● HasAttachment
● HasHeader
● HasMailAttribute
● HostIs
● HostIsLocal
● UserIs
● IsSingleRecipient
● RecipientIs
● RelayLimit
● SMTPAuthSuccessful
● SMTPAuthUserIs
● SenderHostIs
● SenderHostIsLocal
● SenderIs
● SizeGreaterThan
● SubjectStartsWith
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
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!