The Net Wizard HauptseiteISP SetupNetzwerkeVelotourenSoftwareKryptografieVaria

Dovecot

Um den Benutzern die Möglichkei zu geben, mit ihren Clients auf die Mailboxen zuzugreifen, braucht es ein Programm, dass die Protokolle pop3 und imap versteht. Es gibt da einiges an Auswahl (z. B. courier und cyrus), aber Dovecot hat mich aufgrund seiner Übersichtlichen Konfiguration und wegen des geringen Verbrauches an Resourcen am meisten überzeugt. Hinzu kommt, dass Dovecot sehr einfach konfiguriert werden kann, um noch zusätzliche Aufgaben zu übernehmen.

Server für Pop und Imap

Damit Dovecot als pop oder imap Server funktionieren kann, muss es in der Lage sein, Benutzer zu autentifizieren, was in diesem Fall bedeutet, dass es eine Schnittstelle zur Datenbank mit den Benutzern geben muss. Dazu muss man als erstes in /etc/dovecot/dovecot.conf definieren, wo die Informationen zur Autentifizierung zu finden sind, wo die Mailboxen liegen und in welchem Format sie abgespeichert sind:
auth_mechanisms = login plain digest-md5
passdb {
args = /etc/dovecot/dovecot-sql.conf
driver = sql
}
mail_location = maildir:/data/vmail/%u
In /etc/dovecot/dovecot-sql.conf müssen dann die Details vermerkt werden:
driver = pgsql
connect = host=localhost dbname=dbname user=dbuser password=dbpasswort
default_pass_scheme = MD5
password_query = SELECT md5_hash AS password FROM users WHERE email = '%u'
Als nächstes muss man definieren, welche Protokolle gesprochen werden sollen. In meinem Fall sind das pop3 und imap sowie sieve und auth, worauf ich später noch eingehen werde.
protocols = imap pop3 sieve lmtp
service imap-login {
client_limit = 256
executable = /usr/libexec/dovecot/imap-login
process_limit = 128
user = dovecot
} service imap {
executable = /usr/libexec/dovecot/imap
}
service pop3-login {
client_limit = 256
executable = /usr/libexec/dovecot/pop3-login
process_limit = 128
user = dovecot
}
service pop3 {
executable = /usr/libexec/dovecot/pop3
}
Um die verschlüsselten Varianten von pop und imap zu konfigurieren, muss man im wesentlichen angeben, wo die Zertifikate und Keys gespeichert sind:
ssl_cert = </etc/dovecot/private/dovecot.crt
ssl_key = </etc/dovecot/private/dovecot.key

Authentifizierung für andere Dienste.

Eine der hauptaufgaben von Dovecot ist es ja, login Daten zu überprüfen. Dovecot kann diese Funktion auch anderen Diensten zur Verfügung stellen. In meinem Setup nutze ich das einerseits für die smtp Authentifizierung für Postfix, und andererseits für Sieve. Letzteres wird weiter unten noch eingehender beschrieben. Die notwendigen Konfigurationen sehen folgendermassen aus:
service auth {
user = root
#listener for smtp-auth
unix_listener /var/spool/postfix/private/auth {
mode = 0660
user = postfix
group = postfix
}
#listener for Sieve
unix_listener auth-master {
group = vmail
mode = 0660
user = vmail
}
}
Im wesentlichen werden hier zusätzliche Sockets definiert, welche für die Authentifizierung genutzt werden können. Der Teil, der Postfix Konfiguration, der für dieses Zusammenspiel nötig ist, sind die beiden Variablen smtpd_sasl_type und smtpd_sasl_path.

Sieve, local mail delivery agent

Ursprünglich war Postfix für das Ausliefern der Emails in die Mailbox zuständig. Postfix kann aber keine Sieve. Sieve ist ein Protokoll, welches es erlaubt, Abwesenheitsmeldungen und automatische Weiterleitungen zu konfigurieren. Das sind Erweiterungen, die man den Kunden gerne zur Verfügung stellt. Aus diesem Grund habe ich die Auslieferung von Mails an Dovecot delegiert. Die Direktiven für Mail delivery und Sieve sehen folgendermassen aus:
userdb {
args = uid=5000 gid=5000 home=/data/vmail/%u
driver = static
}
protocol lda {
mail_plugins = $mail_plugins sieve
}
protocol lmtp {
postmaster_address = postmaster@net-wizard.org
mail_plugins = $mail_plugins sieve
}
protocol sieve {
managesieve_max_line_length = 65536
managesieve_implementation_string = dovecot
log_path = /var/log/dovecot-sieve-errors.log
info_log_path = /var/log/dovecot-sieve.log
}
plugin {
sieve_before = /data/vmail/sieve/spam-global.sieve
sieve_dir = /data/vmail/%d/%n/sieve/scripts/
sieve = /data/vmail/%d/%n/sieve/active-script.sieve
}
service managesieve-login {
inet_listener sieve {
port = 4190
}
user = dovecot
}
service managesieve {
}
Diese Einstellungen bewirken, dass auf Port 4190 ein Daemon läuft. Wenn man nun mit einem Sieve Client eine Regel konfiguriert, verbindet sich der Client mit dieesm Daemon und übergibt ihm die Regeln. Diese werden dann beim Ausliefern der Mail berücksichtigt.

Powered by w3.css