We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

Dovecot: More than an email server

00:00

Formal Metadata

Title
Dovecot: More than an email server
Title of Series
Number of Parts
84
Author
License
CC Attribution 2.0 Belgium:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Identifiers
Publisher
Release Date
Language
Production Year2012

Content Metadata

Subject Area
Genre
Abstract
Dovecot is primarily an IMAP server, but nowadays it could also be used as a core for many other things: Rapid development of a feature rich email client, easily trying out your own IMAP protocol replacement, creating an IMAP proxy with mail filtering capabilities, and so on. Most of this is possible due to a new "imapc" mail storage backend, which makes Dovecot act as an IMAP client. Dovecot is a widely used open source IMAP/POP3 server. Its internal design is based around libraries, which aren't very IMAP-specific. This allows using the same libraries to implement any kind of email related products. This talk gives a quick overview about 3 rapidly developed product prototypes: MH-like email client built entirely with shell scripts and doveadm tool. The client is capable of reading emails from any IMAP server, as well as having a local full text search index. A server for XML-based "XMLMAP" email access protocol. This server was used by a friend of mine who wanted to create a prototype email client without bothering to learn the IMAP protocol. The best thing about it was that he could access his own mails from GMail by using the "imapc" backend, almost as if GMail itself had implemented XMLMAP. An IMAP proxy that can modify the message body contents, such as transparently decrypting PGP encrypted mails.
Proxy serverEmailClient (computing)Communications protocolPrototypeDemo (music)Demo (music)PrototypeSoftware testingTouchscreenMultiplication signFilm editingComputer animation
Open sourceEnterprise architectureClient (computing)Film editingProjective planeServer (computing)Coefficient of determinationClient (computing)Multiplication signJava appletAuthenticationOpen sourcePlug-in (computing)Computer animation
Client (computing)EmailData storage deviceFront and back endsScripting languageLine (geometry)Gastropod shellEmailClient (computing)Server (computing)State observerFilm editingParsingRemote procedure callCodeFunctional (mathematics)Scripting languagePrototypeData storage deviceFront and back endsException handlingComputer animation
Thomas KuhnScripting languageLine (geometry)Gastropod shellClient (computing)EmailFile formatEmailGastropod shellScripting languageAsynchronous Transfer ModeComputer animation
Message passingAddress spaceClient (computing)CodeLevel (video gaming)Query languageSubject indexingEmailFilm editingEmailClient (computing)File formatSoftware developerCache (computing)Server (computing)Subject indexingComputer fileMessage passingCodeComputer animation
10 (number)Airy functionAddress spaceCommunications protocolExecution unitPersonal identification numberFlagCommunications protocolPrototypeError messageClient (computing)CodeEmailFilm editingJava appletSource code
Scripting languageLoginDigital filterRevision controlLine (geometry)Proxy serverServer (computing)Message passingScripting languagePrototypeEmailMultiplication signClient (computing)Process (computing)Film editingComputer animation
PasswordError messageElectronic mailing listServer (computing)InformationData storage deviceInternetworkingClient (computing)EmailSoftwareMedical imagingComputer animation
PasswordEmailSoftware testingUnicodeFehlererkennungEmailGoodness of fit2 (number)Computer animation
Message passingSoftware frameworkLemma (mathematics)BitSource codeComputer animation
Message passingSoftware frameworkEmailPoint cloudComputer fontOffice suiteLemma (mathematics)ParsingMessage passingSource codeComputer animation
Message passingCodierung <Programmierung>TwitterMessage passingDemo (music)Source codeComputer animation
Intel9K33 OsaUnicodeGoogolLocal ringStructural loadSource codeComputer animation
MathematicsTelnetComputer animation
PasswordCache (computing)Client (computing)Configuration spaceComputer fileComputer-assisted translationComputer animation
IntelUnicode9K33 OsaPasswordCache (computing)Server (computing)Computer animation
IntelUnicodeRevision control9K33 OsaMenu (computing)Codierung <Programmierung>EncryptionLimit (category theory)Data typePasswordServer (computing)Cache (computing)FehlererkennungGoodness of fitMessage passingSource codeComputer animation
Server (computing)PasswordCache (computing)HoaxExecution unitElectronic mailing listEmpennageEmailMessage passingNormal (geometry)Computer animation
EmailComa BerenicesStructural loadEmpennageComputer animation
Maß <Mathematik>EmpennageEmailDemo (music)Computer animation
Limit (category theory)Default (computer science)UnicodeStructural loadInformationServer (computing)EmpennageEmailComa BerenicesTelnetLocal ringReal numberCloud computingLoginDemo (music)Computer animation
SpacetimeQuicksortElectronic mailing listFuzzy logicServer (computing)Computer data loggingReal numberMultiplicationChi-squared distributionInformationTelnetLocal ringLoginCloud computingSynchronizationExistenceSequenceGastropod shellFlagMessage passingHeat transferCodierung <Programmierung>Software frameworkRevision controlEmailComputer animation
Data typeHeat transferCodierung <Programmierung>PermianMessage passingSoftware frameworkRevision controlChi-squared distributionPoint cloudLimit (category theory)Default (computer science)UnicodeRootComputer animationSource code
Limit (category theory)Default (computer science)Local ringDedekind cutClient (computing)RootEmailSource codeComputer animation
Fuzzy logicElectronic mailing listSpacetimeExistenceSequenceQuicksortFlagGastropod shellEmailMessage passingSoftware frameworkServer (computing)EmailKey (cryptography)Server (computing)NeuroinformatikClient (computing)Computer animation
JSONXMLUML
Open setGoogolVideoconferencingXMLUML
Transcript: English(auto-generated)
Okay, so quick overview of what I'm going to talk about is so first some introduction about me and Davokat and then I'll talk about some quick prototypes that I developed for like in a just only a few hours of days or something and then hopefully some
demoing and for those demos I'm using my gmail account so you can if you want to see your some test emails or something on the screen you can send some test
emails to that gmail account and hopefully you won't break any of my tests but okay so I've been coding for a really long time and I've been yeah so I guess my biggest first first big open source projects was IRC client except I
haven't really done anything about it for I don't know eight years or nothing but so okay Davokat was the next thing it's almost 10 years ago and
then since then I've been working on Davokat for a while now and finally I created a company if you want some kind of support you can now buy it so what is Davokat? It's mainly an IMAP server. There's also some other stuff like
PUB3 and ManageSieve in general and actually well Davokat 2.0 is really really flexible so if you are thinking about creating some kind of server
which requires authentication it's possible to just create a plugin or some kind of external package so this IMAP adapter is basically just another
mail storage backend except it's an it works as an IMAP client remote IMAP server so you can do a lot of stuff using that and all of my prototype
stuff is I'm demoing through Davokat's IMAP adapter stuff which goes to Gmail okay so first thing is this yeah you can you can for
example I mean yeah Davokat is, Davokat has a lot of email code if you want like sure it's an IMAP server, email server but because it has a lot of email parsing stuff and so on you can just as well use it to build an email client if you want to and I developed this in only a couple of hours this
it's a pretty stupid I'm a pretty stupid email client I was kind of I remember this MH mail client a long time ago so I kind of took some of its
commands and made the script use them so for example well yeah nice thing about this is that Davokat has all these different functions so you so it's
really simple to do stuff like converting emails from whatever character set format to UTF-8 and yeah this is completely a shell script and our ADM tool there's some UTF-8 if you don't put the UTF-8 then it comes in
whatever original format it was so pretty simple things so hope maybe like a lot of it doesn't seem like a lot of people are interested in writing
email servers but maybe someone might be interested in using Davokat's code to build an email client or something so it would be nice to get more developers ok so there's a bunch of things that Davokat offers for email client
developers indexing caching with caching it means like there's not there's in IMAP like IMAP clients already can ask from Davokat to like give me this and this and this header so to make it efficient Davokat uses these
cache files and puts those headers that the client is interested about to those cache files so basically you can do the same thing automatically with if you develop an email client with Davokat's and full text search index is
IMAP has really great search queries you can use them as well and other stuff okay another prototype was this my friend really wanted to write an email client but he didn't want to he didn't want to learn IMAP protocol so
I kind of yeah I'll just build some I don't know some stupid protocol that you can use so that you can get emails with as an email as XML and he was really happy about this so if you are interested in writing an IMAP protocol replacement you can really easily do this with Davokat I actually just
took the Davokat's pop3 code and then just kind of hacked these commands so that all the error messages are actually coming as pop3 errors but anyway so yeah this is pretty normal XML and a third thing is this you can
use the Davokat's IMAP adapter stuff in a way that it allows passing the mails through some kind of a filter and filter is some kind of script and with the script you can do pretty much anything you want so I
built this prototype that takes a PGP encrypted mail and then decrypts it and shows it really simple script 25 lines okay so we have five minutes of
demoing time hopefully okay so this is the DMH kind of email client pretty stupid email client but anyway so this should fetch some emails from my Gmail
account no DMH of course it's not working it's in the wrong network it
doesn't have a very good error recovery okay let's see maybe some no yeah you have sent some emails to me okay and see that this you tell you
def8 works just fine so and then it gets the first email second a little bit slow because well it seems like well Gmail is a little bit slow at
least to connect from here oh thanks okay some HTML well yeah there's no HTML parsing in Davokat okay apparently there's some Unicode message
somewhere okay so what else the next demo okay well let's try the
XML I'm actually I was supposed to use this maybe if it shows up better oh actually I'll show the Davokat wasn't even running when I was using the
DMH client it it's using this kind of a configuration file there's like yes the where it connects and well as SSL stuff and some other stuff what
was I doing right the XML IMAP stuff oh actually I have to yeah not a very good error recovery okay so yeah it says you have eight messages and then
I can get some kind of headers of them and pretty normal XML stuff
fetching a buddy and it's there okay and yeah it kind of supports pretty much the same as I'm an idol that push mail if someone right now sent me an email then it should at least I really sent this XML thing here about
the new mail okay and final demo about about the PGP thing first this shows
that yeah okay there's this PGP encrypted email and this is how it normally shows up but if I enable where do I enable it here I think okay
mail filter plug-in enabled and now if I do the same thing it should decrypt it
so the yeah so it's right the nice thing about like if you you can you
could for example use this if you wanted to like support PGP in some kind of email client that doesn't natively support PGP and you don't really trust your email server to actually decrypt the mail so you can use
this kind of I'm a adapter in the middle like maybe put it in your home computer or something and that thing your home computer hopefully has secure is secure enough to trust your PGP keys and well that's pretty much it
you