21x9.org | System Administration | Home Automation | Smart Home
07.02.2013

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

Tags: imported

Tags

imported

Feeds

Atom 1.0 RSS JSON
  • Datenschutz
  • Impressum
  • Archiv