Benutzer-Werkzeuge

Webseiten-Werkzeuge


tachtler:dovecot_pigeonhole_sieve

Dovecot Pigeonhole (Sieve)

Diese Dokumentation ist nach dem Kurs: Dovecot bei www.heinlein-support.de - Peer Heinlein entstanden. Hier noch einmal meinen Dank für die Informationen und das ☛ Buch: Dovecot

:!: HINWEIS - Die Nachfolgende Installation von Dovecot Pigeonhole setzt eine lauffähige Installation von Dovecot voraus, wie unter nachfolgendem internen Link beschrieben !!!

Dovecot Pigeonhole fügt zum Dovecot Open-Source-IMAP-und POP3-E-Mail-Server für Linux bzw. UNIX-ähnlichen Systeme, die Benutzung der Sprache „Sieve“ und des Protokolls „ManageSieve“ hinzu.

Die Sprache „Sieve“ kann dazu benutzt werden, um zu bestimmen, wie e-Mails verarbeitet werden. Durch erstellen von „Sieve“-Skripte, können Filterregeln erstellt werden, welche nicht auf einen bestimmten Client begrenzt sind, sondern direkt bei der Einlieferung in einen MDA (Mail Delivery Agent) angewannt werden.

Ab hier werden root-Rechte zur Ausführung der nachfolgenden Befehle benötigt. Um root zu werden geben Sie bitte folgenden Befehl ein:

$ su -
Password: 

Installation - Allgemein

Jede ernst zunehmende Linux-Distribution sollte ein vorkonfiguriertes Dovecot Pigeonhole-Paket mit sich bringen. Deswegen ist eine Installation auch unter CentOS eine Sache des Paket-Managers yum.

Zur Installation eines Dovecot Pigeonhole wird nachfolgendes Paket benötigt:

  • dovecot-pigeonhole - ist im base-Repository von CentOS enthalten.
  • dovecot-managesieve - ist im atrpms-testing-Repository enthalten.

Wer die neuste Version des Dovecot Pigeonhole als rpm-Paket installieren möchte, kann unter nachfolgenden externen Links, diese herunterladen:

Installation - CentOS 6 - ATrpms

Bevor die Installation von Dovecot Pigeonhole unter Zuhilfenahme des ATrpms-Repositorys erfolgen kann, muss dieses zunächst in CentOS eingebunden werden, was unter nachfolgendem internen Link beschrieben ist:

/etc/yum.repos.d/atrpms-testing.repo

Falls das ATrpms-Repository wie beschrieben eingebunden wurde, ist es aktuell erforderlich den ATrpms-Repository-Zweig

  • atrpms-testing

zu aktivieren.

Dies wird in der Konfigurationsdatei

  • /etc/yum.repos.d/atrpms-testing.repo

durch nachfolgende Änderung innerhalb dieser Konfigurationsdatei erreicht (nur relevanter Ausschnitt):

[atrpms-testing]
name=Red Hat Enterprise Linux $releasever - $basearch - ATrpms testing
failovermethod=priority
baseurl=http://dl.atrpms.net/el$releasever-$basearch/atrpms/testing
# Tachtler
# default: enabled=0
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-atrpms
priority=30
...

/etc/yum.repos.d/CentOS-Base.repo

Zusätzlich müssen noch, falls wie beschrieben priority protection zum Einsatz kommt und es sowohl im CentOS-Base-Repository als auch im ATrpms-Testing-Repository Dovecot Pigeonhole-Pakete gibt und durch die priority protection die CentOS-Base-Repository Vorrang hätten, hier die Dovecot Pigeonhole-Pakete vom Vorrang ausgeschlossen werden.

Dazu muss nachfolgende Ergänzung in der Konfigurationsdatei

  • /etc/yum.repos.d/CentOS-Base.repo

durchgeführt werden (nur relevanter Ausschnitt):

...
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
priority=1
exclude=dovecot, dovecot-pigeonhole

#released updates
[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
priority=1
exclude=dovecot, dovecot-pigeonhole
...

ATrpms yum Test

Nachfolgender Befehl löscht die temporär gespeicherten Informationen über die Repository-Daten in yum:

# yum clean all
Loaded plugins: priorities
Cleaning repos: atrpms atrpms-testing base epel extras rpmforge updates
Cleaning up Everything

Anschließend kann durch nachfolgenden Befehl überprüft werden, ob das Dovecot Pigeonhole-Paket aus dem ATrpms-Testing-Repository bevorzugt werden würde:

# yum list dovecot-pigeonhole
Loaded plugins: priorities
atrpms                                                   | 3.5 kB     00:00     
atrpms/primary_db                                        | 1.7 MB     00:00     
atrpms-testing                                           | 3.5 kB     00:00     
atrpms-testing/primary_db                                | 202 kB     00:00     
base                                                     | 3.7 kB     00:00     
base/primary_db                                          | 4.4 MB     00:00     
cr                                                       | 2.9 kB     00:00     
cr/primary_db                                            | 1.2 kB     00:00     
epel                                                     | 4.2 kB     00:00     
epel/primary_db                                          | 6.0 MB     00:00     
extras                                                   | 3.4 kB     00:00     
extras/primary_db                                        |  19 kB     00:00     
rpmforge                                                 | 1.9 kB     00:00     
rpmforge/primary_db                                      | 2.7 MB     00:00     
updates                                                  | 3.4 kB     00:00     
updates/primary_db                                       | 2.1 MB     00:00     
2073 packages excluded due to repository priority protections
Available Packages
dovecot-pigeonhole.x86_64            2:0.4.2-32.1.el6             atrpms-testing

Pakete installieren

Mit nachfolgendem Befehl, wird das Pakete dovecot-pigeonhole installiert:

# yum install dovecot-pigeonhole
Loaded plugins: priorities
2070 packages excluded due to repository priority protections
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package dovecot-pigeonhole.x86_64 2:0.4.2-32.1.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package               Arch      Version                Repository         Size
================================================================================
Installing:
 dovecot-pigeonhole    x86_64    2:0.4.2-32.1.el6       atrpms-testing    388 k

Transaction Summary
================================================================================
Install       1 Package(s)

Total download size: 388 k
Installed size: 1.5 M
Is this ok [y/N]: y
Downloading Packages:
dovecot-pigeonhole-0.4.2-32.1.el6.x86_64.rpm             | 388 kB     00:00     
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : 2:dovecot-pigeonhole-0.4.2-32.1.el6.x86_64                   1/1 
  Verifying  : 2:dovecot-pigeonhole-0.4.2-32.1.el6.x86_64                   1/1 

Installed:
  dovecot-pigeonhole.x86_64 2:0.4.2-32.1.el6                                    

Complete!

Mit nachfolgendem Befehl kann überprüft werden, welche Inhalte mit den Paket dovecot-pigeonhole installiert wurden.

# rpm -qil dovecot-pigeonhole
Name        : dovecot-pigeonhole           Relocations: (not relocatable)
Version     : 0.4.2                             Vendor: ATrpms.net
Release     : 32.1.el6                      Build Date: Mon 06 Jan 2014 07:25:43 AM CET
Install Date: Thu 13 Mar 2014 05:45:58 PM CET      Build Host: flocki.atrpms.net
Group       : System Environment/Daemons    Source RPM: dovecot-pigeonhole-0.4.2-32.1.el6.src.rpm
Size        : 1535241                          License: LGPL
Signature   : DSA/SHA1, Mon 06 Jan 2014 07:25:44 AM CET, Key ID 508ce5e666534c2b
Packager    : ATrpms <http://ATrpms.net/>
URL         : http://pigeonhole.dovecot.org/
Summary     : Sieve plugin for dovecot
Description :
Sieve is a language that can be used to create filters for electronic
mail.

Dovecot Sieve is a fully rewritten Sieve implementation for Dovecot
v1.2 and newer. The main reason for rewriting the Sieve engine was
to provide more reliable script execution and to provide better
error messages to users and system administrators. This
implementation is part of the Pigeonhole project.

**IMPORTANT NOTICE**
Read this before migrating from dovecot-sieve-cmu package:
http://wiki.dovecot.org/LDA/Sieve/Dovecot#Migration_from_CMUSieve
/usr/bin/sieve-dump
/usr/bin/sieve-filter
/usr/bin/sieve-test
/usr/bin/sievec
/usr/lib64/dovecot/doveadm/lib10_doveadm_sieve_plugin.so
/usr/lib64/dovecot/lib90_sieve_plugin.so
/usr/lib64/dovecot/libdovecot-sieve.so
/usr/lib64/dovecot/libdovecot-sieve.so.0
/usr/lib64/dovecot/libdovecot-sieve.so.0.0.0
/usr/lib64/dovecot/sieve/lib90_sieve_extprograms_plugin.so
/usr/share/doc/dovecot-2.2.10/example-config/conf.d/90-sieve-extprograms.conf
/usr/share/doc/dovecot-2.2.10/example-config/conf.d/90-sieve.conf
/usr/share/doc/dovecot-2.2.10/sieve
/usr/share/doc/dovecot-2.2.10/sieve/script-location-dict.txt
/usr/share/doc/dovecot-pigeonhole-0.4.2
/usr/share/doc/dovecot-pigeonhole-0.4.2/AUTHORS
/usr/share/doc/dovecot-pigeonhole-0.4.2/COPYING
/usr/share/doc/dovecot-pigeonhole-0.4.2/COPYING.LGPL
/usr/share/doc/dovecot-pigeonhole-0.4.2/ChangeLog
/usr/share/doc/dovecot-pigeonhole-0.4.2/INSTALL
/usr/share/doc/dovecot-pigeonhole-0.4.2/NEWS
/usr/share/doc/dovecot-pigeonhole-0.4.2/README
/usr/share/man/man1/sieve-dump.1.gz
/usr/share/man/man1/sieve-filter.1.gz
/usr/share/man/man1/sieve-test.1.gz
/usr/share/man/man1/sievec.1.gz
/usr/share/man/man1/sieved.1.gz
/usr/share/man/man7/pigeonhole.7.gz

Mit nachfolgendem Befehl, wird das Pakete dovecot-managesieve installiert:

# yum install dovecot-managesieve
Loaded plugins: priorities
2077 packages excluded due to repository priority protections
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package dovecot-managesieve.x86_64 2:0.4.2-32.1.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package                Arch      Version               Repository         Size
================================================================================
Installing:
 dovecot-managesieve    x86_64    2:0.4.2-32.1.el6      atrpms-testing     47 k

Transaction Summary
================================================================================
Install       1 Package(s)

Total download size: 47 k
Installed size: 130 k
Is this ok [y/N]: y
Downloading Packages:
dovecot-managesieve-0.4.2-32.1.el6.x86_64.rpm            |  47 kB     00:00     
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : 2:dovecot-managesieve-0.4.2-32.1.el6.x86_64                  1/1 
  Verifying  : 2:dovecot-managesieve-0.4.2-32.1.el6.x86_64                  1/1 

Installed:
  dovecot-managesieve.x86_64 2:0.4.2-32.1.el6                                   

Complete!

Mit nachfolgendem Befehl kann überprüft werden, welche Inhalte mit den Paket dovecot-managesieve installiert wurden.

# rpm -qil dovecot-managesieve
Name        : dovecot-managesieve          Relocations: (not relocatable)
Version     : 0.4.2                             Vendor: ATrpms.net
Release     : 32.1.el6                      Build Date: Mon 06 Jan 2014 07:25:43 AM CET
Install Date: Tue 01 Apr 2014 05:18:56 PM CEST      Build Host: flocki.atrpms.net
Group       : System Environment/Daemons    Source RPM: dovecot-pigeonhole-0.4.2-32.1.el6.src.rpm
Size        : 133150                           License: LGPL
Signature   : DSA/SHA1, Mon 06 Jan 2014 07:25:44 AM CET, Key ID 508ce5e666534c2b
Packager    : ATrpms <http://ATrpms.net/>
URL         : http://pigeonhole.dovecot.org/
Summary     : Manage Sieve daemon for dovecot
Description :
This package provides the Manage Sieve daemon for dovecot.
/usr/lib64/dovecot/settings
/usr/lib64/dovecot/settings/libmanagesieve_login_settings.so
/usr/lib64/dovecot/settings/libmanagesieve_settings.so
/usr/libexec/dovecot/managesieve
/usr/libexec/dovecot/managesieve-login
/usr/share/doc/dovecot-2.2.10/example-config/conf.d/20-managesieve.conf

Installation CentOS 7 - mailserver.guru

Nachfolgend soll ein Drittanbieter-Repository, welches von dem mir sehr geschätzten Michael Nausch betrieben wird und eine sichere und verlässliche Quelle für rpm-Pakete darstellt, wie unter nachfolgendem internen Link dargestellt, eingebunden werden:

Paket installieren

Nachdem das Drittanbieter-Repository

erfolgreich eingebunden wurde, kann mit nachfolgendem Befehl, das rpm-Paket - dovecot-pigeonhole installiert werden:

# yum install dovecot-pigeonhole
Loaded plugins: changelog, priorities
base                                                     | 3.6 kB     00:00     
epel                                                     | 4.4 kB     00:00     
extras                                                   | 3.4 kB     00:00     
mailserver.guru-os                                       | 2.9 kB     00:00     
updates                                                  | 3.4 kB     00:00     
102 packages excluded due to repository priority protections
Resolving Dependencies
--> Running transaction check
---> Package dovecot-pigeonhole.x86_64 1:2.2.18-1.el7.centos will be installed
--> Finished Dependency Resolution

Changes in packages about to be updated:


Dependencies Resolved

================================================================================
 Package             Arch    Version                  Repository           Size
================================================================================
Installing:
 dovecot-pigeonhole  x86_64  1:2.2.18-1.el7.centos    mailserver.guru-os  343 k

Transaction Summary
================================================================================
Install  1 Package

Total download size: 343 k
Installed size: 1.2 M
Is this ok [y/d/N]: y
Downloading packages:
dovecot-pigeonhole-2.2.18-1.el7.centos.x86_64.rpm          | 343 kB   00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : 1:dovecot-pigeonhole-2.2.18-1.el7.centos.x86_64              1/1 
  Verifying  : 1:dovecot-pigeonhole-2.2.18-1.el7.centos.x86_64              1/1 

Installed:
  dovecot-pigeonhole.x86_64 1:2.2.18-1.el7.centos                               

Complete!

Mit nachfolgendem Befehl kann überprüft werden, welche Inhalte mit den Paket dovecot-pigeonhole installiert wurden.

# rpm -qil dovecot-pigeonhole
Name        : dovecot-pigeonhole
Epoch       : 1
Version     : 2.2.18
Release     : 1.el7.centos
Architecture: x86_64
Install Date: Fri 10 Jul 2015 01:58:24 PM CEST
Group       : System Environment/Daemons
Size        : 1290355
License     : MIT and LGPLv2
Signature   : RSA/SHA1, Thu 21 May 2015 11:19:08 PM CEST, Key ID 60ecfb9e8195aea0
Source RPM  : dovecot-2.2.18-1.el7.centos.src.rpm
Build Date  : Thu 21 May 2015 11:17:58 PM CEST
Build Host  : vml000200.dmz.nausch.org
Relocations : (not relocatable)
Packager    : Django <django@mailserver.guru>
URL         : http://www.dovecot.org/
Summary     : Sieve and managesieve plug-in for dovecot
Description :
This package provides sieve and managesieve plug-in for dovecot LDA.
/etc/dovecot/conf.d/20-managesieve.conf
/etc/dovecot/conf.d/90-sieve-extprograms.conf
/etc/dovecot/conf.d/90-sieve.conf
/usr/bin/sieve-dump
/usr/bin/sieve-filter
/usr/bin/sieve-test
/usr/bin/sievec
/usr/lib64/dovecot/doveadm/lib10_doveadm_sieve_plugin.so
/usr/lib64/dovecot/lib90_sieve_plugin.so
/usr/lib64/dovecot/settings/libmanagesieve_login_settings.so
/usr/lib64/dovecot/settings/libmanagesieve_settings.so
/usr/lib64/dovecot/settings/libpigeonhole_settings.so
/usr/lib64/dovecot/sieve
/usr/lib64/dovecot/sieve/lib90_sieve_extprograms_plugin.so
/usr/libexec/dovecot/managesieve
/usr/libexec/dovecot/managesieve-login
/usr/share/doc/dovecot-pigeonhole
/usr/share/doc/dovecot-pigeonhole/AUTHORS
/usr/share/doc/dovecot-pigeonhole/COPYING
/usr/share/doc/dovecot-pigeonhole/COPYING.LGPL
/usr/share/doc/dovecot-pigeonhole/ChangeLog
/usr/share/doc/dovecot-pigeonhole/INSTALL
/usr/share/doc/dovecot-pigeonhole/NEWS
/usr/share/doc/dovecot-pigeonhole/README
/usr/share/doc/dovecot-pigeonhole/example-config
/usr/share/doc/dovecot-pigeonhole/example-config/conf.d
/usr/share/doc/dovecot-pigeonhole/example-config/conf.d/20-managesieve.conf
/usr/share/doc/dovecot-pigeonhole/example-config/conf.d/90-sieve-extprograms.conf
/usr/share/doc/dovecot-pigeonhole/example-config/conf.d/90-sieve.conf
/usr/share/doc/dovecot-pigeonhole/sieve
/usr/share/doc/dovecot-pigeonhole/sieve/extensions
/usr/share/doc/dovecot-pigeonhole/sieve/extensions/duplicate.txt
/usr/share/doc/dovecot-pigeonhole/sieve/extensions/editheader.txt
/usr/share/doc/dovecot-pigeonhole/sieve/extensions/include.txt
/usr/share/doc/dovecot-pigeonhole/sieve/extensions/spamtest-virustest.txt
/usr/share/doc/dovecot-pigeonhole/sieve/extensions/vacation.txt
/usr/share/doc/dovecot-pigeonhole/sieve/locations
/usr/share/doc/dovecot-pigeonhole/sieve/locations/dict.txt
/usr/share/doc/dovecot-pigeonhole/sieve/locations/file.txt
/usr/share/doc/dovecot-pigeonhole/sieve/locations/ldap.txt
/usr/share/doc/dovecot-pigeonhole/sieve/plugins
/usr/share/doc/dovecot-pigeonhole/sieve/plugins/sieve_extprograms.txt
/usr/share/dovecot
/usr/share/dovecot/stopwords
/usr/share/dovecot/stopwords/stopwords_en.txt
/usr/share/dovecot/stopwords/stopwords_fi.txt
/usr/share/dovecot/stopwords/stopwords_fr.txt
/usr/share/man/man1/sieve-dump.1.gz
/usr/share/man/man1/sieve-filter.1.gz
/usr/share/man/man1/sieve-test.1.gz
/usr/share/man/man1/sievec.1.gz
/usr/share/man/man1/sieved.1.gz
/usr/share/man/man7/pigeonhole.7.gz

Konfiguration

Konfigurationsdateien

:!: HINWEIS - Nur - Centos 6 - Atrpms!

Nach der erfolgreichen Installation von Dovecot Pigeonhole müssen noch die Konfigurationsdateien aus dem installierten rpm-Paket dovecot-pigeonhole und dovecot-managesieve in das Konfigurationsverzeichnis von Dovecot kopiert werden, was mit nachfolgendem Befehl durchführt werden kann:

# cp -a /usr/share/doc/dovecot-2.2.10/example-config/conf.d/*sieve* /etc/dovecot/conf.d

:!: HINWEIS - Nur - Centos 6 - Atrpms!

Anschließend kann mit nachfolgendem Befehl überprüft werden, ob dies erfolgreich durchgeführt wurde:

# ls -l /etc/dovecot/conf.d/*sieve*
-rw-r--r-- 1 root root 2398 May 24  2013 /etc/dovecot/conf.d/20-managesieve.conf
-rw-r--r-- 1 root root 5062 Apr  7  2013 /etc/dovecot/conf.d/90-sieve.conf
-rw-r--r-- 1 root root 1829 Apr  7  2013 /etc/dovecot/conf.d/90-sieve-extprograms.conf

/etc/dovecot/dovecot.conf

In der Hauptkonfigurationsdatei von Dovecot wird unter anderem bestimmt, welche Dienste Dovecot anbietet.

protocols

Zusätzlich zu den bereits vorhandenen Protokollen, welche Dovecot überhaupt zur Kommunikation mit dem Client anbietet, soll das Protokoll sieve hinzugefügt werden, um den Dienst/Daemon ManageSieve durch Dovecot anbieten zu können. (Die Benennung ist hier etwas irreführend, sieve anstelle von managesieve)

Dies kann durch nachfolgend gezeigte Ergänzung erfolgen: (Nur relevanter Ausschnitt)

...
# Protocols we want to be serving.
# Tachtler
# default: #protocols = imap pop3 lmtp
protocols = imap lmtp sieve
...

Zusätzliche Informationen hierzu, können unter nachfolgendem internen Link nachgelesen werden

/etc/doveconf/conf.d/20-managesieve.conf

Dies ist die Konfigurationsdatei des Dienstes/Daemons ManageSieve, welcher von einem client wie z.B. Horde - Ingo oder jedem anderen client, welcher die Sieve filter language (Sieve Filter Sprache/Kodierung) versteht und in dieser Skripte erstellen kann, zur Einlieferung von Filter-Regeln an den Dovecot genutzt werden kann.

:!: HINWEIS - Dovecot bringt hier eine vollständig eigene RFC-Konforme Implementierung mit.

Nachfolgende Anpassungen an der Konfigurationsdatei müssen vorgenommen werden, um den Dienst/Daemon ManageSieve in Dovecot einbinden zu können: (Nur relevanter Ausschnitt)

##
## ManageSieve specific settings
##
 
# Uncomment to enable managesieve protocol:
#protocols = $protocols sieve
 
# Service definitions
 
# Tachtler - enabled -
service managesieve-login {
  inet_listener sieve {
    # Tachtler -new
    address = 192.178.0.80
    port = 4190
  }
 
  #inet_listener sieve_deprecated {
  #  port = 2000
  #}
 
  # Number of connections to handle before starting a new process. Typically
  # the only useful values are 0 (unlimited) or 1. 1 is more secure, but 0
  # is faster. <doc/wiki/LoginProcess.txt>
  #service_count = 1
 
  # Number of processes to always keep waiting for more connections.
  #process_min_avail = 0
 
  # If you set service_count=0, you probably need to grow this.
  #vsz_limit = 64M
}
...

:!: HINWEIS - Es empfiehlt sich ggf. auch den bereits als „deprecated“ (veraltet) gekennzeichneten Port 2000 trotzdem zu aktivieren, wenn evtl. alte Clients noch versuchen, hier ihre sieve-Skripte zum Dovecot hochzuladen!

/etc/dovecot/conf.d/20-lmtp.conf

In nachfolgender Konfigurationsdatei werden Einstellungen zum Protokoll lmpt durchgeführt.

Nachfolgend soll die Filterung via sieve beim Einliefern von e-Mails mittels dem Protokoll lmtp ermöglicht werden, was durch nachfolgende Änderungen realisiert werden kann: (Vollständige Konfigurationsdatei)

##
## LMTP specific settings
##
 
# Support proxying to other LMTP/SMTP servers by performing passdb lookups.
#lmtp_proxy = no
 
# When recipient address includes the detail (e.g. user+detail), try to save
# the mail to the detail mailbox. See also recipient_delimiter and
# lda_mailbox_autocreate settings.
#lmtp_save_to_detail_mailbox = no
 
# Verify quota before replying to RCPT TO. This adds a small overhead.
#lmtp_rcpt_check_quota = no
 
protocol lmtp {
  # Space separated list of plugins to load (default is global mail_plugins).
  # Tachtler
  # default: #mail_plugins = $mail_plugins
  mail_plugins = $mail_plugins sieve
}

/etc/dovecot/conf.d/90-sieve.conf

In dieser Konfigurationsdatei können Einstellungen zum Sieve-Interpreter selbst durchgeführt werden.

Die Vorkonfiguration dieser Konfigurationsdatei enthält bereits alle benötigten Einstellungen zum Betrieb von sieve.

:!: HINWEIS - Es sind keine Anpassungen erforderlich !

(Nur relevanter Ausschnitt)

...
plugin {
  # The path to the user's main active script. If ManageSieve is used, this the
  # location of the symbolic link controlled by ManageSieve.
  sieve = ~/.dovecot.sieve
 
  # The default Sieve script when the user has none. This is a path to a global
  # sieve script file, which gets executed ONLY if user's private Sieve script
  # doesn't exist. Be sure to pre-compile this script manually using the sievec
  # command line tool.
  # --> See sieve_before fore executing scripts before the user's personal
  #     script.
  #sieve_default = /var/lib/dovecot/sieve/default.sieve
 
  # Directory for :personal include scripts for the include extension. This
  # is also where the ManageSieve service stores the user's scripts.
  sieve_dir = ~/sieve
...
bzw.
...
plugin {
  # The location of the user's main Sieve script or script storage. The LDA
  # Sieve plugin uses this to find the active script for Sieve filtering at
  # delivery. The "include" extension uses this location for retrieving
  # :personal scripts. This is also where the  ManageSieve service will store
  # the user's scripts, if supported.
  # 
  # Currently only the 'file:' location type supports ManageSieve operation.
  # Other location types like 'dict:' and 'ldap:' can currently only
  # be used as a read-only script source ().
  #
  # For the 'file:' type: use the ';active=' parameter to specify where the
  # active script symlink is located.
  # For other types: use the ';name=' parameter to specify the name of the
  # default/active script.
  sieve = file:~/sieve;active=~/.dovecot.sieve
...

/etc/dovecot/conf.d/90-sieve-extprograms.conf

Dies Konfigurationsdatei enthält Plugin Konfigurationen für extern anzubindende Skripte oder Programme.

Die Vorkonfiguration dieser Konfigurationsdatei enthält bereits alle benötigten Einstellungen zum Betrieb von sieve.

:!: HINWEIS - Es sind keine Anpassungen erforderlich !

Neustart

Bevor der der dovecot-Daemon/Dienst neu gestartet werden soll, ist eine Überprüfung der korrekten Konfiguration durch nachfolgenden Befehl, zu empfehlen

# doveconf -n
# 2.2.18: /etc/dovecot/dovecot.conf
# Pigeonhole version 0.4.8 (0c4ae064f307+)
# OS: Linux 3.10.0-229.7.2.el7.x86_64 x86_64 CentOS Linux release 7.1.1503 (Core)  
auth_debug = yes
auth_debug_passwords = yes
auth_master_user_separator = *
auth_mechanisms = plain digest-md5 cram-md5 login
auth_verbose = yes
listen = *
mail_debug = yes
mail_location = maildir:~/Maildir
mail_plugins = " quota acl"
managesieve_notify_capability = mailto
managesieve_sieve_capability = fileinto reject envelope encoded-character vacation subaddress comparator-i;ascii-numeric relational regex imap4flags copy include variables body enotify environment mailbox date index ihave duplicate
mbox_write_locks = fcntl
namespace {
  list = children
  location = maildir:%%h/Maildir:INDEX=%h/shared/%%u:CONTROL=%h/shared/%%u
  prefix = shared/%%u/
  separator = /
  subscriptions = yes
  type = shared
}
namespace inbox {
  inbox = yes
  location = 
  mailbox Drafts {
    special_use = \Drafts
  }
  mailbox Junk {
    special_use = \Junk
  }
  mailbox Sent {
    special_use = \Sent
  }
  mailbox "Sent Messages" {
    special_use = \Sent
  }
  mailbox Trash {
    special_use = \Trash
  }
  prefix = INBOX/
  separator = /
}
passdb {
  args = /etc/dovecot/master-users
  driver = passwd-file
  master = yes
  pass = yes
}
passdb {
  args = scheme=CRYPT username_format=%u /etc/dovecot/users
  driver = passwd-file
}
plugin {
  acl = vfile
  acl_shared_dict = file:/var/lib/dovecot/db/shared-mailboxes.db
  quota = maildir:User quota
  quota_grace = 10%%
  quota_rule = *:storage=1G
  quota_rule2 = INBOX/Trash:storage=+100M
  quota_status_nouser = DUNNO
  quota_status_overquota = 552 5.2.2 Mailbox is over quota
  quota_status_success = DUNNO
  quota_warning = storage=95%% quota-warning 95 %u
  quota_warning2 = storage=80%% quota-warning 80 %u
  sieve = file:~/sieve;active=~/.dovecot.sieve
}
protocols = imap lmtp sieve
service auth {
  unix_listener auth-userdb {
    group = vmail
    user = vmail
  }
}
service lmtp {
  inet_listener lmtp {
    address = 192.168.0.80
    port = 24
  }
}
service managesieve-login {
  inet_listener sieve {
    address = 192.168.0.80
    port = 4190
  }
}
service quota-status {
  client_limit = 1
  executable = quota-status -p postfix
  inet_listener {
    address = 192.168.0.80
    port = 12340
  }
}
service quota-warning {
  executable = script /usr/local/bin/quota-warning.sh
  unix_listener quota-warning {
    user = vmail
  }
  user = vmail
}
ssl_cert = </etc/pki/dovecot/certs/CAcert-class3-wildcard_all_in_one.crt
ssl_cipher_list = ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
ssl_dh_parameters_length = 2048
ssl_key = </etc/pki/dovecot/private/tachtler.net.key
ssl_prefer_server_ciphers = yes
ssl_protocols = !SSLv2 !SSLv3
userdb {
  args = username_format=%u /etc/dovecot/users
  driver = passwd-file
}
verbose_proctitle = yes
protocol lmtp {
  mail_plugins = " quota acl sieve"
}
protocol imap {
  mail_max_userip_connections = 10
  mail_plugins = " quota acl imap_quota imap_acl"
}
protocol sieve {
  mail_max_userip_connections = 10
}

:!: HINWEIS - die Konfiguration des dovecot-Daemon/Dienst konnte korrekt gelesen werden, wenn die Konfiguration erscheint, was letztendlich zwar nicht bedeutet, das Sie auch korrekt ist, aber syntaktische Fehler ausschließt !!!

Danach kann der dovecot-Server mit nachfolgendem Befehle neu gestartet werden:

# service dovecot restart
Stopping Dovecot Imap:                                     [  OK  ]
Starting Dovecot Imap:                                     [  OK  ]
bzw.
# systemctl restart dovecot

Ob alle aktuell konfigurierten Dienste von Dovecot gestartet sind, kann mit nachfolgendem Befehl überprüft werden, und sollte eine Ausgabe wie die nachfolgende zurück liefern:

# netstat -tulpen | grep dovecot
tcp        0      0 0.0.0.0:993            0.0.0.0:*          LISTEN      0     92423      20786/dovecot       
tcp        0      0 0.0.0.0:143            0.0.0.0:*          LISTEN      0     92422      20786/dovecot       
tcp        0      0 192.168.0.80:12340     0.0.0.0:*          LISTEN      0     92484      20786/dovecot       
tcp        0      0 192.168.0.80:24        0.0.0.0:*          LISTEN      0     92395      20786/dovecot       
tcp        0      0 192.168.0.80:4190      0.0.0.0:*          LISTEN      0     92364      20786/dovecot

Nachfolgender Auszug aus der Log-Datei

  • /var/log/maillog

zeigt eine Anmeldung mit einer

  • e-Mail-Adresse als Benutzerkennung und
  • der Verwendung des CRAM-MD5 Verfahrens

(Nur relevanter Ausschnitt')

...
...dovecot: managesieve-login: Login: user=<klaus@tachtler.net>, method=CRAM-MD5, rip=192.168.0.60,
lip=192.168.0.80, mpid=26952, TLS, session=<K+ysXhM15wBKAAA8>
...dovecot: managesieve: Debug: Loading modules from directory: /usr/lib64/dovecot
...dovecot: managesieve: Debug: Module loaded: /usr/lib64/dovecot/lib01_acl_plugin.so
...dovecot: managesieve: Debug: Module loaded: /usr/lib64/dovecot/lib10_quota_plugin.so
...dovecot: managesieve: Debug: Added userdb setting: plugin/quota_rule=*:storage=1G
...dovecot: managesieve(klaus@tachtler.net): Debug: Effective uid=10000, gid=10000,
home=/var/spool/vmail/tachtler.net/klaus
...dovecot: managesieve(klaus@tachtler.net): Debug: Quota root: name=User quota backend=maildir args=
...dovecot: managesieve(klaus@tachtler.net): Debug: Quota rule: root=User quota mailbox=* bytes=1073741824
messages=0
...dovecot: managesieve(klaus@tachtler.net): Debug: Quota warning: bytes=1020054732 (95%) messages=0
reverse=no command=quota-warning 95 klaus@tachtler.net
...dovecot: managesieve(klaus@tachtler.net): Debug: Quota warning: bytes=858993459 (80%) messages=0
reverse=no command=quota-warning 80 klaus@tachtler.net
...dovecot: managesieve(klaus@tachtler.net): Debug: Quota grace: root=User quota bytes=107374182 (10%)
...dovecot: managesieve(klaus@tachtler.net): Debug: Namespace inbox: type=private, prefix=INBOX/, sep=/,
inbox=yes, hidden=no, list=yes, subscriptions=yes location=maildir:~/Maildir
...dovecot: managesieve(klaus@tachtler.net): Debug: maildir++: root=/var/spool/vmail/tachtler.net/klaus
Maildir, index=, indexpvt=, control=, inbox=/var/spool/vmail/tachtler.net/klaus/Maildir, alt=
...dovecot: managesieve(klaus@tachtler.net): Debug: acl: initializing backend with data: vfile
...dovecot: managesieve(klaus@tachtler.net): Debug: acl: acl username = klaus@tachtler.net
...dovecot: managesieve(klaus@tachtler.net): Debug: acl: owner = 1
...dovecot: managesieve(klaus@tachtler.net): Debug: acl vfile: Global ACL directory: (none)
...dovecot: managesieve(klaus@tachtler.net): Debug: Namespace : type=shared, prefix=shared/%u/, sep=/,
inbox=no, hidden=no, list=children, subscriptions=yes location=maildir:%h/Maildir:INDEX=/var/spool/vmail
/tachtler.net/klaus/shared/%u:CONTROL=/var/spool/vmail/tachtler.net/klaus/shared/%u
...dovecot: managesieve(klaus@tachtler.net): Debug: shared: root=/var/run/dovecot, index=, indexpvt=,
control=, inbox=, alt=
...dovecot: managesieve(klaus@tachtler.net): Debug: acl: initializing backend with data: vfile
...dovecot: managesieve(klaus@tachtler.net): Debug: acl: acl username = klaus@tachtler.net
...dovecot: managesieve(klaus@tachtler.net): Debug: acl: owner = 0
...dovecot: managesieve(klaus@tachtler.net): Debug: acl vfile: Global ACL directory: (none)
...dovecot: managesieve(klaus@tachtler.net): Debug: Namespace : type=private, prefix=, sep=, inbox=no,
hidden=yes, list=no, subscriptions=no location=fail::LAYOUT=none
...dovecot: managesieve(klaus@tachtler.net): Debug: none: root=, index=, indexpvt=, control=, inbox=, alt=
...dovecot: managesieve(klaus@tachtler.net): Debug: sieve: Pigeonhole version 0.4.2 initializing
...dovecot: managesieve(klaus@tachtler.net): Debug: sieve: include: sieve_global_dir is not set; it is
currently not possible to include `:global' scripts.
...dovecot: managesieve(klaus@tachtler.net): Debug: sieve-storage: using active sieve script path:
/var/spool/vmail/tachtler.net/klaus/.dovecot.sieve
...dovecot: managesieve(klaus@tachtler.net): Debug: sieve-storage: using sieve script storage directory:
/var/spool/vmail/tachtler.net/klaus/sieve
...dovecot: managesieve(klaus@tachtler.net): Debug: sieve-storage: using permissions from /var/spool/vmail
/tachtler.net/klaus/sieve: mode=0700 gid=-1
...dovecot: managesieve(klaus@tachtler.net): Debug: sieve-storage: relative path to sieve storage in active
link: sieve/
...

Horde.org - ingo

Horde - Ingo als client, welcher die Sieve filter language (Sieve Filter Sprache/Kodierung) versteht und in dieser Skripte erstellen kann, um zur Einlieferung von Filter-Regeln an den Dovecot nutzen zu können, bedarf es nachfolgender Konfiguration um mit

  1. Dovecot kommunizieren zu können
  2. und Benutzernamen im Format e-Mail-Adresse localpart@domain.tld

verwenden zu können.

Horde .../ingo/config/backend.local.php

Diese Konfigurationsdatei kann, falls noch nicht vorhanden mit nachfolgendem Befehl von der Grundkonfigurationsdatei

  • ../ingo/config/backends.php

als Kopiervorlage erstellt werden.

# cp -a <PFAD HORDE INSTALLATION/ingo/config/backends.php <PFAD HORDE INSTALLATION/ingo/config/backends.local.php

:!: HINWEIS - Damit werden bei einem Horde - Ingo update, die eigenen Konfigurationen NICHT überschrieben !!!

Nachfolgende Konfiguration stellt die Kommunikation zwischen Horde - Ingo als client und Dovecot her:

:!: HINWEIS - Es werden alle, auch evtl. Standardwerte gesetzt!

(Komplette Konfigurationsdatei)

<?php
/**
 * Ingo works purely on a preferred mechanism for server selection. There are
 * a number of properties that you can set for each backend:
 *
 * Example configuration to use a Dovecot Managesieve backend on a different
 * host:
 *
 * <?php
 * $backends['imap']['disabled'] = true;
 * $backends['sieve']['disabled'] = false;
 * $backends['sieve']['transport'][Ingo::RULE_ALL]['params']['hostspec'] = 'sieve.example.com';
 * $backends['sieve']['script'][Ingo::RULE_ALL]['params']['utf8'] = true;
 *
 * Properties that can be set for each server:
 *
 * disabled: (boolean) If true, the config entry is disabled.
 *
 * preferred: (string) This is the field that is used to choose which server
 *            is used. The value for this field may be a single string or an
 *            array of strings containing the hostnames to use with this
 *            server.
 *
 * script: (array) The type of script drivers this server uses. Different
 *         drivers can be specified for different filter rules. The following
 *         rules can be set as keys: Ingo::RULE_FILTER, Ingo::RULE_BLACKLIST,
 *         Ingo::RULE_WHITELIST, Ingo::RULE_VACATION, Ingo::RULE_FORWARD,
 *         Ingo::RULE_SPAM, and finally Ingo::RULE_ALL as a catch-all key for
 *         any rules not further specified.
 *         'params' is an array containing any additional information that the
 *         script driver needs. See examples below for further details.
 *         Valid options for 'driver' are:
 *   - customsql: Custom SQL queries (only for vacation notices).
 *   - imap:      IMAP client side filtering (POP3 servers NOT supported).
 *   - ispconfig: ISPConfig SOAP Server (only for vacation notices).
 *   - maildrop:  Maildrop scripts.
 *   - procmail:  Procmail scripts.
 *   - sieve:     Sieve scripts.
 *
 * shares: (boolean) Some transport drivers (timsieved, vfs, ispconfig) support
 *         sharing filter rules with other users. Users can then configure
 *         filters for each other if they give them permissions to do so. If
 *         you want to enable this feature, you need to set this parameter to
 *         true. Transport backend authentication needs to be configured, so
 *         that it allows to upload other users' rules, e.g. by granting FTP
 *         access to .procmail files, or using an administrative user for
 *         Sieve.
 *
 * transport: (array) The transport drivers to use to store the scripts on the
 *            backend server. Different drivers can be specified for different
 *            filter rules. The following rules can be set as keys:
 *            Ingo::RULE_FILTER, Ingo::RULE_BLACKLIST, Ingo::RULE_WHITELIST,
 *            Ingo::RULE_VACATION, Ingo::RULE_FORWARD, Ingo::RULE_SPAM, and
 *            finally Ingo::RULE_ALL as a catch-all key for any rules not
 *            further specified.
 *            'params' is an array containing any additional information that
 *            the transport class needs. See examples below for further details.
 *            Valid options for 'driver' are:
 *   - ispconfig: ISPConfig SOAP server (only for vacation notices).
 *   - ldap:      LDAP server.
 *   - null:      No backend server (i.e. for script drivers, such as 'imap',
 *                that does not use scripts).
 *   - sql:       Database server (only for vacation notices).
 *   - timsieved: Timsieved (managesieve) server.
 *   - vfs:       Use Horde VFS.
 *
 *   NOTE: By default, the transport driver will use Horde credentials to
 *         authenticate to the backend. If a different username/password is
 *         needed, use the 'transport_auth' hook (see hooks.php) to define
 *         these values.
 */
 
/* IMAP */
$backends['imap']['disabled'] = true;
/* Sieve */
$backends['sieve']['disabled'] = false;
$backends['sieve']['transport'][Ingo::RULE_ALL]['driver'] = 'timsieved';
$backends['sieve']['transport'][Ingo::RULE_ALL]['params']['hostspec'] = 'imap.tachtler.net';
$backends['sieve']['transport'][Ingo::RULE_ALL]['params']['logintype'] = 'CRAM-MD5';
$backends['sieve']['transport'][Ingo::RULE_ALL]['params']['usetls'] = true;
$backends['sieve']['transport'][Ingo::RULE_ALL]['params']['port'] = 4190;
$backends['sieve']['transport'][Ingo::RULE_ALL]['params']['scriptname'] = 'ingo';
$backends['sieve']['transport'][Ingo::RULE_ALL]['params']['debug'] = false;
$backends['sieve']['script'][Ingo::RULE_ALL]['driver'] = 'sieve';
$backends['sieve']['script'][Ingo::RULE_ALL]['params']['utf8'] = true;
$backends['sieve']['shares'] = false;

:!: DANKSAGUNG - Vielen Dank an Andreas Schulze, für die Verbesserungsvorschläge!

Horde .../ingo/config/hooks.php

Diese Konfigurationsdatei muss, falls noch nicht vorhanden mit nachfolgendem Befehl von der Grundkonfigurationsdatei ../ingo/config/hooks.php.dist erstellt werden.

# cp -a <PFAD HORDE INSTALLATION/ingo/config/hooks.php.dist <PFAD HORDE INSTALLATION/ingo/config/hooks.php

:!: HINWEIS - Damit werden zusätzliche Konfigurationen für Horde - Ingo aktiviert bzw. ermöglicht !!!

Nachfolgende Konfiguration erlaubt Horde - Ingo als client die Verwendung des Benutzernamens im Format e-Mail-Adresse localpar@domain.tld für Dovecot: (Nur relevanter Ausschnitt)

...
    // Tachtler - ENABLED -
    public function transport_auth($driver)
    {
        switch ($driver) {
//        case 'foo':
        // Tachtler - new -
        case 'timsieved':
//            // Example #1: Use full Horde username for password.
//            return array(
//                'username' => $GLOBALS['registry']->getAuth(null)
//            );
//
//            // Example #2: Use IMP password/username.
            $ob = $GLOBALS['registry']->call('mail/imapOb');
            return array(
                // Tachtler - new -
                'euser' => $ob->getParam('username'),
                'password' => $ob->getParam('password'),
                'username' => $ob->getParam('username')
            );
        }
//
//        // DEFAULT: Use hordeauth (identical to not defining hook at all).
        return true;
    }
...

Cookies helfen bei der Bereitstellung von Inhalten. Durch die Nutzung dieser Seiten erklären Sie sich damit einverstanden, dass Cookies auf Ihrem Rechner gespeichert werden. Weitere Information
tachtler/dovecot_pigeonhole_sieve.txt · Zuletzt geändert: 2015/07/10 15:31 von klaus