Archiveopteryx FAQ

How can I use my OpenSSL certificate?

As of 3.1.3, put both the cert and the private key into a single file and set tls-certificate to the filename.

How can I copy mail from somewhere else?

The aoximport program can copy mail from several mailbox formats into Archiveopteryx.

imapsync can copy mail from many other IMAP servers, and also keep two mailboxes in sync. Several people have suggested using imapsync.

There are many other similar programs; most of the ones we've seen work poorly. Suggestions are welcome.

Some question about capacity.

This question crops up in different shapes — how many users?, how big?

Archiveopteryx's bottleneck is the number of deliveries per minute, everything else is irrelevant.

How many messages do you need to inject into the database in the busiest five-minute period of the day? In a business, that's usually in the morning and immediately after lunch. On fast PC hardware, Archiveopteryx currently handles in the neighbourhood of 4000 deliveries per minute.

PostgreSQL refuses authentication because this process is not running as user postgres

This error should not normally be encountered with recent versions of Archiveopteryx, but this explanation is retained for the record.

On some systems, including old versions of Debian and Suse Linux, Postgres is configured to use ident authentication, and accept connections only if the connecting process is running as a Unix user that has the same name as the database user it wants to use. If a process is started as root and it immediately drops privileges, then this logic often bases its test on root instead of the correct unix user.

Archiveopteryx tries to work around it (by using setuid, and falling back to SET SESSION AUTHORIZATION), but it may fail under certain circumstances.

The simplest solution is to disable ident authentication in pg_hba.conf (for example, by replacing ident sameuser with md5 or trust).

How does Archiveopteryx compare to DBmail?

Archiveopteryx supports only PostgreSQL, while DBmail also supports MySQL (MyISAM and InnoDB) and SQLite. Archiveopteryx uses advanced SQL features (prepared statements, row-level locking, transactions, savepoints, constraints) without having to worry about a portable subset of SQL.

The Archiveopteryx schema is more advanced than DBmail's. For example, it stores each MIME bodypart as a separate row, while DBmail splits messages into 512-byte blocks and stores those.

DBmail is written in ANSI C, using autoconf for portability. Query strings are built using sprintf(), with all its implied problems. The source code isn't impressively well documented, but it's better than some.

Archiveopteryx is written in C++, and does not use ifdef, autoconf or sprintf. It handles all queries using prepared statements and a typesafe query API. The source is fully documented (as an example, see the Query class).

Because of autoconf, DBmail works on practically all Unix systems, whether tested or not, while Archiveopteryx works only where we test it.

Both systems include IMAP and POP servers. Archiveopteryx includes a basic webmail server, as well as command-line administration tools, and a tool to import mail in bulk from existing sources. DBmail has a third-party GUI administration tool written in Perl, by Mike O'Brien. Only Archiveopteryx supports TLS, which is now required for IMAP compliance.

There was also a thread on the dbmail-users list about this in August 2008.

For other questions, please ask

About this page

Last modified: 2010-11-19