=head1 SYNOPSIS
-Email::Archive provides an interface to store emails. Storage engines should implement
+Email::Archive provides an interface to store emails.
+
+The default storage is Email::Archive::Storage::DBI that uses DBI.
+All dokumented examples assume you use this default. For information
+on how to use different engines see those modules documentation.
+
+ my $email_archive = Email::Archive->new;
+ $email_archive->connect($dsn);
+ $email_archive->store($msg);
+
+ $email_archive->retrieve($msg_id);
+ $email_archive->search({ from_addr => $from });
+
+=head1 ATTRIBUTES
+
+=head2 storage
+
+Defaults to Email::Archive::Storage::DBI->new.
+
+ my $e = Email::Archive->new;
+
+is equvalent to
+
+ my $storage = Email::Archive::Storage::DBI->new;
+ my $e = Email::Archive->new(
+ storage => $storage,
+ );
+
+This usage will be necessary if a storage different form
+Email::Archive::Storage::DBI is used.
+
+=head1 METHODS
+
+=head2 connect
+
+Takes a DBI connection string as parameter.
+
+ $email_archive->connect('dbi:SQLite:dbname=emails');
+
+For more information see DBI documentation.
+
+If the database schema does not exist it will be deployed automatically by
+the connect method.
+
+=head2 store
+
+ $email_archive->store($msg);
+
+Where $msg could be anything feedable to Email::Abstract. That is a raw
+email, an Email::MIME object or even an Email::Abstract object.
+
+The message will be stored in the messages table of the connected database.
+
+=head2 search
+
+ $email_archive->search($attributes);
+
+Search the database for emails where $attributes is a hashref containing
+the fields to search and the values filter.
+
+ $attributes = { from_addr => $addr };
+
+Will return the first found result as Email::MIME object.
+
+ $email_archive->search({ message_id => $some_id });
+
+Is exactly the same as retrieval by Message-ID.
+
+=head2 retrieve
+
+ $email_archive->retrieve($msg_id);
+
+Retrieve emails by Message-ID. Is a shortcut for
+
+ $email_archive->search({ message_id => $some_id });
=head1 LICENSE