Da sich leider unter Ubuntu 8.04 nur die dovecot 1.0 version über die Ubuntu Repositories installieren lässt, und diese auch kein Managesieve support haben, müssen wir leider uns eine eigene Version erstellen.
Im Moment ist die Dovecot Version 1.2.6 aktuell, welche einige Vorteile gegenüber der 1.0 mit sich bringt.
So ist z.B. das Plugin autocreate schon standardmässig mit dabei. Dieses hilft Ihnen wenn es darum geht Ordner wie Spam, Gesendet etc. automatisch beim Anmelden anzulegen.
Inhaltsverzeichnis:
1. Download der Sourcen und benötigte Pakete
2. Dovecot kompilieren und installieren
3. Dovecot SIEVE kompilieren und installieren
4. Dovecot ManageSIEVE kompilieren und installieren
5. Dovecot konfigurieren
5.0 Konfigurationsdatei bereitstellen
5.1 Protokolle
5.2 Mails ablegen
5.3 Namenräume definieren
5.4 Authentifizierung
5.5 LDA – Der Zustellagent
5.6 Dovecot Benutzer anlegen
6. Dovecot starten
7. Dovecot SIEVE konfigurieren
Die aktullen Version finden wir auf der Dovecot officiellen Webseite: www.dovecot.org.
Wir benötigen folgende Pakete:
| dovecot | Dovecot selbst dovecot-1.2.6.tar.gz |
| dovecot sieve | Ist der SIEVE filter für den dovecot dovecot-1.2-sieve-0.1.13.tar.gz |
| dovecot manage sieve | Manage SIEVE. Über diesen können andere Applikationen wie Open Xchange mit dem SIEVE Filter kommunizieren. dovecot-1.2-managesieve-0.11.9.tar.gz |
| dovecot patch für manage sieve | Mit diesem Patch weis Dovecot überhaupt von der existenz des Manage SIEVE dovecot-1.2.6-managesieve-0.11.9.diff.gz |
| MySQL |
apt-get install mysql-server libmysql++-dev |
| OpenSSL |
apt-get install openssl libcurl4-openssl-dev |
| C++ Compiler und Essentielles |
apt-get install build-essential |
| libpam |
apt-get install libpam0g-dev |
Nach dem wir alle notwedigen Pakete installiert und die Sourcen rungeladen haben, entpacken wir als erstes dovecot und patches es mit Manage SIEVE:
$ tar xzvf dovecot-1.2.6.tar.gz $ cd dovecot-1.2.6 $ gzip -dc ../dovecot-1.2.6-managesieve-0.11.9.diff.gz | patch -p1
Jetzt können wir dovecot Kompilieren. Unsere Optionen sind MySQL, SSL support. Ich verwende hier auch “/” (root) als prefix. Damit entstehen die gleichen Pfade wie bei der standard Paket Installation:
$ ./configure --with-sql \
--with-mysql \
--with-gssapi \
--with-passwd \
--with-passwd-file \
--with-shadow \
--with-pam \
--with-checkpassword \
--with-static-userdb \
--with-prefetch-userdb
$ make
$ make install
Nach dem wir dovecot selbst kompiliert haben können wir an SIEVE heran gehen. SIEVE benötigt nämlich den Dovecot Verzeichnisbaum für die Kompilierung.
$ cd .. $ tar xzvf dovecot-1.2-sieve-0.1.13.tar.gz $ cd dovecot-1.2-sieve-0.1.13 $ ./configure --with-dovecot=../dovecot-1.2.6 $ make $ make install
Jetzt fehlt nur ManageSIEVE.
$ cd ..
$ tar xzvf dovecot-1.2-managesieve-0.11.9.tar.gz
$ cd dovecot-1.2-managesieve-0.11.9
$ ./configure --with-dovecot=../dovecot-1.2.6 \
--with-dovecot-sieve=../dovecot-1.2-sieve-0.1.13
$ make
$ make install
Zum gegensatz der Paket Installation, liegen alle unsere Dovecot Pfade unter /usr/local
Dass muss immer beachtet werden. Daher liegt unsere dovecot.conf nicht unter /etc/dovecot/dovecot.conf sondern wie oben schon gesehen unter /usr/local/etc/dovecot.conf
5.0 Konfigurationsdatei bereitstellen
cp -pi /usr/local/etc/dovecot-example.conf /usr/local/etc/dovecot.conf
Setzten Sie die Parameter in der Zeile protocols auf folgende Werte:
protocols = imap imaps pop3 pop3s
Damit startet Dovecot und stellt und die Verbindungsprotokolle IMAP und POP3, sowie die äquivalenten Dienste die eine SSL (secure socket layer)-verschlüsselte Verbindung benutzen.
Sollten sich mal Benutzer beschweren, dass sie keine E-Mails empfangen können, ändern Sie folgende Einstellung:
disable_plaintext_auth = no
Dies bewirkt, dass man sich auch mit Klartext Passwörtern über eine unsichere (nicht-SSL verschlüsselte) Verbindung authentifizieren kann. Standardmäßig ist der Wert aus Sicherheitsgründen auf ‘yes’ gesetzt. Ihn auf ‘no’ zu setzten, bedeutet weniger Sicherheit wird aber Nutzern helfen, die keine sichere Verbindung verwenden können.
Weiter teilen wir Dovecot mit wo er die Mails ablegen soll:
mail_location = maildir:/home/vmail/%d/%n
Damit speichert Dovecot die Mails unter /home/vmail/meineDomain/meinBenutzer
Frühere Versionen dieses Tutorials empfahlen stattdessen mail_location = maildir:/home/vmail/%d/%n (ohne den zusätzlichen Maildir-Teil). Jetzt empfehle ich eher das zusätzliche Verzeichnis, damit Steuerdateien im virtuellen Mailboxverzeichnis nicht versehentlich als Mail-Ordner angezeigt werden. Falls Sie also bereits eine bestehende Verzeichnisstruktur haben, müssen Sie in Maildir-Verzeichnis genau dort anlegen und alle Mail-Ordner (cur, new, temp und alle anderen Ordner, die mit einem Punkt anfangen) dort hinein verschieben.
5.3 Namenräume definieren
Falls Sie eine frühereninstallation haben und bereits virtuelle Mailpostfächer auf Ihrem System sind, sollten Sie den eindeutigen Namensraum für IMAP definieren, damit die Benutzer Ihre Ordner dort vorfinden, wo Sie vorher auch waren:
namespace private {
separator = .
prefix = INBOX.
inbox = yes
}
Ich aber bevorzuge für eine Neuinstallation keine Namesräume, da dies die weiteren Einstellungen, wie in Plugins meist erleichtert. Ohne eindeutigen Namensraum für IMAP sieht es dann so aus:
namespace private {
separator = .
prefix =
inbox = yes
}
5.4 Authentifizierung
Suchen Sie den Konfigurationsabschnitt “auth default”. Definieren Sie zuerst die erlaubten Authentifizierungsmodi:
mechanisms = plain login
Im gleichen Abschnitt müssen Sie ändern:
passdb sql {
args = /usr/local/libexec/dovecot/dovecot-sql.conf
}
Dies teilt Dovecot mit, dass die Passwörter in einer SQL-Datenbank gespeichert sind. Und durch den Eintrag:
userdb static {
args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes
}
weiß Postfix wo sich die Postfächer befinden. Dies ist das gleiche wie die mail_location Einstellung.
Jetzt legen wir noch die Datei /usr/local/libexec/dovecot/dovecot-sql.conf mit folgedem Inhalt an:
driver = mysql connect = host=127.0.0.1 dbname=mailserver user=mailuser password=secret default_pass_scheme = PLAIN-MD5 password_query = SELECT email as user, password FROM view_users WHERE email='%u';
Nicht vergessen, dbname,user und passwort mit eigenen Angaben ersetzten.
passdb pam abschalten
Den Abschnitt namens passdb pam der den Zugang für System-Benutzer erlaubt, sollten Sie auskommentieren. Andernfalls wird Dovecot auch nach Systembenutzern Ausschau halten, wenn jemand Emails abruft. Dies führt zu Warnungen in Ihren Log-Dateien.
Suchen Sie nun den Abschnitt socket listen. Hier definieren Sie die Socket-Dateien, die für die Kommunikation mit Dovecot’s Autentifizierungsmethoden verwendet werden:
socket listen {
master {
path = /usr/local/var/run/dovecot/auth-master
mode = 0600
user = vmail
}
client {
path = /var/spool/postfix/private/auth
mode = 0660
user = postfix
group = postfix
}
}
Der Abschnitt master wird benutzt, um dem Zustellagenten von Dovecot (das Programm, dass die Mails in die Postfächer der Benutzer speichert) Zugang zu den userdb-Informationen zu erlauben. Der Abschnitt client erstellt einen Socket im “chroot” Verzeichnis von Postfix. Chroot bedeutet dass einige Teile von Postfix unter /var/spool/postfix gefangen sind und nur auf Dateien in diesem Verzeichnis zugreifen können. Es stellt ein gutes Maß an Sicherheit dar. Sogar wenn Postfix Fehler haben sollte und ein Angriff stattfinden würde, hätte der Angreifer trotzdem keinen Zugriff auf z.B. /etc/passwd.
5.5 LDA – Der Zustellagent
Zum Schluss muss noch der Abschnitt protocol lda angepasst werden. Der Zustellagent (LDA) ist geeigneter als der mit Postfix kommende “virtual”-Agent. Er ermöglicht Quotas und Sieve-Filter. Der Abschnitt sollte so aussehen:
protocol lda {
log_path = /home/vmail/dovecot-deliver.log
auth_socket_path = /usr/local/var/run/dovecot/auth-master
postmaster_address = postmaster@example.com
}
Bitte ändern Sie die obige postmaster E-Mail Adresse auf eine gültige Adresse, über die der Administrator erreicht werden kann.
useradd -d /usr/local/libexec/dovecot -g mail -s /bin/false -r dovecot
Dovecot kann direkt gestartet werden:
/usr/local/sbin/dovecot
Es ist aber zu empfählen ein /etc/init.d/dovecot Script anzulegen. Um es zu vereinfachen lege ich ein Beispielsscript bei:
# License is public domain.
DAEMON=/usr/local/sbin/dovecot
test -x $DAEMON || exit 1
set -e
base_dir=`$DAEMON -a|grep '^base_dir: '|sed 's/^base_dir: //'`
pidfile=$base_dir/master.pid
if test -f $pidfile; then
running=yes
else
running=no
fi
case "$1" in
start)
echo -n "Starting Dovecot"
$DAEMON
echo "."
;;
stop)
if test $running = yes; then
echo "Stopping Dovecot"
kill `cat $pidfile`
echo "."
else
echo "Dovecot is already stopped."
fi
;;
reload)
if test $running = yes; then
echo -n "Reloading Dovecot configuration"
kill -HUP `cat $pidfile`
echo "."
else
echo "Dovecot isn't running."
fi
;;
restart|force-reload)
echo -n "Restarting Dovecot"
if test $running = yes; then
kill `cat $pidfile`
sleep 1
fi
$DAEMON
echo "."
;;
*)
echo "Usage: /etc/init.d/dovecot {start|stop|reload|restart|force-reload}" >&2
exit 1
;;
esac
exit 0
Nach dem unser Script angelegt wurde geben wir Ihm noch die richtigen Privilegien zum Ausführen:
$ chmod a+x /etc/init.d/dovecot
Und unser script soll ja auch automatisch gestartet und gestopt werden:
$ update-rc.d dovecot defaults
Seit der Version 1.2 von Dovecot hat sich das SIEVE und dessen Einbinden etwas verändert.
Bitte fügen sie im Bereich protocol lda unter mail_plugins sieve ein. Sollte da schon ein anderes Plugin sein welches sie benutzen, so hängen sie es mit einem Komma (,) an.
protocol lda {
..
# Support for dynamically loadable plugins. mail_plugins is a space separated
# list of plugins to load.
# Beispiel: mail_plugins = sieve,quota
mail_plugins = sieve
}
Den Bereich plugin ergänzen wir noch:
plugin {
...
# The location of the user's active script:
sieve = ~/.dovecot.sieve
# If the user has no personal active script (i.e. if the file
# indicated in sieve= does not exist), use this one:
sieve_global_path = /home/vmail/sieve/default.sieve
# The include extension fetches the :personal scripts from this
# directory. When ManageSieve is used, this is also where scripts
# are uploaded.
sieve_dir = ~/sieve
# The include extension fetches the :global scripts from this
# directory.
sieve_global_dir = /home/vmail/sieve/global/
}
jetzt müssen wir noch die angegebenen sieve Verzeichnisse anlegen:
$ cd /home/vmail $ mkdir -p sieve/global $ chown -R vmail:vmail sieve
Auf meinem System habe ich ein globales Script welches mir die mit Spam markierten Mails in den Spamordner des Benutzers verschiebt. Dazu legen wir die Datei /home/vmail/sieve/global/spam.sieve an:
require ["fileinto"];
# Move spam to spam folder
if header :contains "X-Spam-Flag" ["YES"] {
fileinto "spam";
stop;
}
http://wiki.dovecot.org/LDA/Sieve
http://wiki.dovecot.org/ManageSieve
http://www.howtoforge.com/dovecot_mail_server_sieve_virtual_users
http://workaround.org/articles/ispmail-etch/