Inhaltsverzeichnis
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.
Beschreibung | Externer Link |
---|---|
Homepage | http://pigeonhole.dovecot.org/ |
Dokumentation | http://pigeonhole.dovecot.org/documentation.html |
Wiki Dovecot2 | http://wiki2.dovecot.org/Pigeonhole/Sieve |
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-managesieve
- ist imatrpms-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
- Dovecot kommunizieren zu können
- 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; } ...