E-Mail Server 2: Dovecot (Debian Wheezy)
Im [[/e-mail-server-1-ldap-debian-wheezy/|letzten Artkel]] wurde der LDAP-Server bereitgestellt. Nun soll es mit dem Mail-Delivery-Agent (MDA) weitergehen. In unserem Fall wird dovecot
verwendet. Er dient später als Authentication Layer für postfix
und natürlich in erster Linie als IMAP
-Server. Aber auch der Mailfilter sieve
wird eingerichtet.## Installation ##
apt-get install dovecot-core dovecot-imapd dovecot-ldap dovecot-managesieved dovecot-sieve dovecot-lmtpd
Konfiguration
Die eigentliche Konfiguration von Dovecot erfolgt über diverse kleine Config-Dateischnipsel. Um einen besseren Überblick über die Konfiguration zu erhalten legen wir die Datei /etc/dovecot/local.conf
an. Der Inhalt:
# /etc/dovecot/local.conf
# Logging
log_path = syslog
syslog_facility = mail
auth_verbose = no
auth_verbose_passwords = no
auth_debug = no
auth_debug_passwords = no
mail_debug = no
verbose_ssl = no
plugin {
}
log_timestamp = "%b %d %H:%M:%S "
login_log_format_elements = user=<%u> method=%m rip=%r lip=%l mpid=%e %c
login_log_format = %$: %s
mail_log_prefix = "%s(%u): "
deliver_log_format = msgid=%m: %$
# Mail
mail_location = maildir:/var/mail/%u
namespace inbox {
inbox = yes
}
# Master
default_login_user = dovenull
default_internal_user = dovecot
service imap-login {
inet_listener imap {
}
inet_listener imaps {
}
}
service pop3-login {
inet_listener pop3 {
}
inet_listener pop3s {
}
}
service lmtp {
unix_listener lmtp {
mode = 0666
}
}
service imap {
}
service pop3 {
}
service auth {
unix_listener auth-userdb {
}
unix_listener /var/spool/postfix/private/auth {
mode = 0666
}
}
service auth-worker {
}
service dict {
unix_listener dict {
}
}
# Sieve
plugin {
sieve = ~/.dovecot.sieve
sieve_dir = ~/sieve
sieve_max_script_size = 1M
sieve_max_actions = 32
sieve_max_redirects = 4
sieve_quota_max_scripts = 0
sieve_quota_max_storage = 0
}
# Managesieve
service managesieve-login {
inet_listener sieve {
port = 4190
}
inet_listener sieve_deprecated {
port = 2000
}
service_count = 1
process_min_avail = 1
vsz_limit = 64M
}
service managesieve {
}
protocol sieve {
managesieve_max_line_length = 65536
mail_max_userip_connections = 10
managesieve_logout_format = bytes=%i/%o
managesieve_implementation_string = Dovecot Pigeonhole
managesieve_max_compile_errors = 5
log_path=/var/log/sieve.log
info_log_path=/var/log/sieve.log
}
# lda
quota_full_tempfail = yes
rejection_subject = Rejected: %s
rejection_reason = Your message to <%t> was automatically rejected:%n%r
recipient_delimiter = +
lda_mailbox_autocreate = yes
lda_mailbox_autosubscribe = yes
protocol lda {
mail_plugins = $mail_plugins sieve
}
# lmtp
protocol lmtp {
mail_plugins = $mail_plugins sieve
}
Leider muss die LDAP-Konfiguration in einer separaten Datei /etc/dovecot/dovecot-ldap.conf
verwaltet werden:
# LDAP
hosts = localhost
uris = ldap://localhost:389/
dn = cn=admin,dc=ldap,dc=21x9,dc=org
ldap_version = 3
base = dc=ldap,dc=21x9,dc=org
deref = never
scope = subtree
user_attrs = homeDirectory=home,uidNumber=uid,gidNumber=gid
user_filter = (&(objectClass=posixAccount)(uid=%u))
pass_attrs = uid=user,userPassword=password
homeDirectory=userdb_home,uidNumber=userdb_uid,gidNumber=userdb_gid
pass_filter = (&(objectClass=posixAccount)(uid=%u))
iterate_attrs = uid=user
iterate_filter = (objectClass=posixAccount)
default_pass_scheme = CRYPT
Abschluss
Abschließend muss dovecot neu gestartet werden: /etc/init.d/dovecot restart
WICHTIG: Der Start des LDAP-Server wird fehlschlagen solange postix
noch nicht installiert wurde, da /var/spool/postfix/private/auth
noch nicht gefunden werden kann:
# /etc/init.d/dovecot restart
[....] Restarting IMAP/POP3 mail server: dovecotError: bind(/var/spool/postfix/private/auth) failed: No such file or directory
Fatal: Failed to start listeners
failed!
Sieve-Test
Mit dem Befehl sieve-test
kann ein Sieve-Script getestet werden. Hierzu wird einfach eine Mail inkl. aller Header als Datei gespeichert. Dann wird sieve-test
aufgerufen:
sieve-test ~/sieve/default.sieve ~/mail.txt
Der Output sollte so aussehen:
Performed actions:
* store message in folder: INBOX.system
Implicit keep:
(none)
sieve-test(root): Info: final result: success
Eine gute Anleitung zur Erstellung von Sieve-Filtern findet sich im Dovecot-Wiki: http://wiki.dovecot.org/LDA/Sieve#Example_scripts