| |
centos:mail_c7:dovecot_1 [04.08.2014 20:03. ] – [Unterkapitel Logging] ergänzt #Dovecot #centos7 #pop3 #imap #mailserver django | centos:mail_c7:dovecot_1 [18.11.2024 07:06. ] (aktuell) – Externe Bearbeitung 127.0.0.1 |
---|
====== Dovecot, "der" IMAP-Server unter CentOS 7.x ====== | ====== Dovecot, "der" IMAP-Server unter CentOS 7.x ====== |
{{:centos:mail_c7:dovecot_logo.png?nolink&225 |Dovecot-Logo}} Für die eMailkommunikation in unserem SOHO(( **S**mall **O**ffice **H**ome **O**ffice ))-LAN bedienen wir uns des IMAP-Server **[[http://dovecot.org/|Dovecot]]**. Dies nicht zuletzt, da dieser, im Gegensatz zum Dinosaurier verschrieenen **Cyrus** wesentlich einfacher zu konfigurieren ist und auch sicherheitstechnische Vorteile bietet. Da der Dovecot-IMAP-Server, keine großartigen und besonderen Voraussetzungen erfordert, einfach und sehr schnell zu installieren ist, ist dies in der Regel die //**erste Wahl**// ein jedes Postmasters bei der Installation von kleinen bis hin zu großen Unternehmens oder sogar Carrier-Lösungen. | {{:centos:mail_c7:dovecot_logo.png?nolink&225 |Dovecot-Logo}} Für die eMail-Kommunikation in unserem SOHO(( **S**mall **O**ffice **H**ome **O**ffice ))-LAN bedienen wir uns des IMAP-Server **[[http://dovecot.org/|Dovecot]]**. Dies nicht zuletzt, da dieser, im Gegensatz zum Dinosaurier verschrieenen **Cyrus** wesentlich einfacher zu konfigurieren ist und auch sicherheitstechnische Vorteile bietet. Da der Dovecot-IMAP-Server, keine großartigen und besonderen Voraussetzungen erfordert, einfach und sehr schnell zu installieren ist, ist dies in der Regel die //**erste Wahl**// ein jedes Postmasters bei der Installation von kleinen bis hin zu großen Unternehmens oder sogar Carrier-Lösungen. |
| |
Die nachfolgende Beschreibung zeigt, wie man unter CentOS 7.x einen Dovecot-Mailserver **MUA**((**M**ail **U**ser **A**gent)) aufsetzen und sicher betreiben kann. | Die nachfolgende Beschreibung zeigt, wie man unter CentOS 7.x einen Dovecot-Mailserver **MUA**((**M**ail **U**ser **A**gent)) aufsetzen und sicher betreiben kann. |
</WRAP> | </WRAP> |
| |
Eine der Eigenschaften, die **Dovecot** als die erste Wahl bei der Installation eines POP3/IMAP-Servers machen, ist neben den Sicherheits- und Performanceaspekten, die leichte und einfache Konfiguration. Wer schon mal **SASL** beim [[http://cyrusimap.org/|Cyrus-IMAP-Server]] und beim [[http://dovecot.org/|Dovecot]] installiert und Konfiguriert hat, wird hierbei sicherlich zustimmen. | Eine der Eigenschaften, die **Dovecot** als die erste Wahl bei der Installation eines POP3/IMAP-Servers machen, ist neben den Sicherheits- und Performanceaspekten, die leichte und einfache Konfiguration. Wer schon mal **SASL** beim [[http://cyrusimap.org/|Cyrus-IMAP-Server]] und beim [[http://dovecot.org/|Dovecot]] installiert und konfiguriert hat, wird hierbei sicherlich zustimmen. |
| |
===== Installation ===== | ===== Installation ===== |
Am Einfachsten bedienen wir uns eines aktuell gepflegten Dovecot-Repositories, wie z.B. dem Repository **[[http://repo.mailserver.guru/7/|mailserver.guru]]**. Der dort enthaltene Release-Kandidat ist **Dovecot //2.2.13//**((Stand Juli 2014)). Die Intstallation und Integration des **[[http://repo.mailserver.guru/7/|Repositories mailserver.guru]]** ist im Kapitel **[[centos:mailserver.guru|mailserver.guru unter CentOS 6 und CentOS 7 einbinden]]** erklärt. | Am einfachsten bedienen wir uns eines aktuell gepflegten Dovecot-Repositories, wie z.B. dem Repository **[[http://repo.nausch.org/7/|repo.nausch.org]]**. Der dort enthaltene Release-Kandidat ist **Dovecot //2.2.36//**((Stand Januar 2019)). |
| |
# yum list dovecot* | # yum list dovecot* |
8 packages excluded due to repository priority protections | 8 packages excluded due to repository priority protections |
Available Packages | Available Packages |
dovecot.x86_64 1:2.2.13-1.el7.centos mailserver.guru | dovecot.x86_64 1:2.2.13-1.el7.centos repo.nausch.org |
dovecot-debuginfo.x86_64 1:2.2.13-1.el7.centos mailserver.guru | dovecot-debuginfo.x86_64 1:2.2.13-1.el7.centos repo.nausch.org |
dovecot-mysql.x86_64 1:2.2.13-1.el7.centos mailserver.guru | dovecot-mysql.x86_64 1:2.2.13-1.el7.centos repo.nausch.org |
dovecot-pgsql.x86_64 1:2.2.13-1.el7.centos mailserver.guru | dovecot-pgsql.x86_64 1:2.2.13-1.el7.centos repo.nausch.org |
dovecot-pigeonhole.x86_64 1:2.2.13-1.el7.centos mailserver.guru | dovecot-pigeonhole.x86_64 1:2.2.13-1.el7.centos repo.nausch.org |
</code> | </code> |
| |
Build Host : vml000200.dmz.nausch.org | Build Host : vml000200.dmz.nausch.org |
Relocations : (not relocatable) | Relocations : (not relocatable) |
Packager : Django <django@mailserver.guru> | Packager : Django <django@nausch.org> |
Vendor : django | Vendor : django |
URL : http://www.dovecot.org/ | URL : http://www.dovecot.org/ |
| |
==== Benutzerverwaltung / Anmeldenamen ==== | ==== Benutzerverwaltung / Anmeldenamen ==== |
Doch selbst bei kleinen Installationen, lohnt es sich, kurz inne zu halten und zu überlegen, wo denn die Reise hingehen könnte. Der Wunsch nach **KISS**((**K**eep **I**t **S**tupid and **S**imple)) kann bei Zeiten gehörig nach hinten losgehen. Ganz klar, eine Benutzer- und Passwort-Verwaltung mit Hilfe der **userdb** und **passdb** scheint für eine kleine Firma auf den ersten Blick eine lohnende Sache zu sein. Warum solle ein **//Robert Nullinger//** seine eMail-Adresse beim Anmelden verwenden, wenn denn der doch kürzere Vorname **//Robert Nullinger//** auch ausreicht. Na ja, spätestens dann, wenn **//Robert Priesemut//** eingestellt oder eine zweite oder sehr viele Domains ins Spiel kommen, ist recht schnell "//Schluß mit lustig//"! Der spätere Mehraufwand bei Umstellungen, wird hier durchaus sehr schnell zum Showstopper und kosten (Arbeits-/Lebens)-Zeit sowie einen Haufen Nerven. Und von beiden hat der **Admin** und **Postmaster** gewöhnlich nie ausreichend viel über. ;-) | Doch selbst bei kleinen Installationen, lohnt es sich, kurz inne zu halten und zu überlegen, wo denn die Reise hingehen könnte. Der Wunsch nach **KISS**((**K**eep **I**t **S**tupid and **S**imple)) kann bei Zeiten gehörig nach hinten losgehen. Ganz klar, eine Benutzer- und Passwort-Verwaltung mit Hilfe der **userdb** und **passdb** scheint für eine kleine Firma auf den ersten Blick eine lohnende Sache zu sein. Warum solle ein **//Robert Nullinger//** seine eMail-Adresse beim Anmelden verwenden, wenn denn der doch kürzere Vorname **//robert//** auch ausreicht. Na ja, spätestens dann, wenn **//Robert Priesemut//** eingestellt oder eine zweite oder sehr viele Domains ins Spiel kommen, ist recht schnell "//Schluß mit lustig//"! Der spätere Mehraufwand bei Umstellungen, wird hier durchaus sehr schnell zum Showstopper und kosten (Arbeits-/Lebens)-Zeit sowie einen Haufen Nerven. Und von beiden hat der **Admin** und **Postmaster** gewöhnlich nie ausreichend viel über. ;-) |
| |
Wir werden daher nur ganz kurz zum [[centos:mail_c7:dovecot_6|Einstieg]] und Grundverständnis, auf die scheinbar einfachste Variante mit **userdb** und **passdb** eingehen. Die eigentliche Lösung, auf die wir im Detail genauer eingehen werden, nutzt zur Benutzerverwaltung **[[centos:mail_c6:pfadmin_1|Postfixadmin]]** und zur Speicherung der Nutzerdaten eine **[[centos:mysql|MySQL-Datenbank]]**. Alternativ kann man natürlich hierzu auch **[[centos:ldap:start|LDAP]]**, **[[http://de.wikipedia.org/wiki/Active_Directory|Active Directory]]**. | Wir werden daher nur ganz kurz zum [[centos:mail_c7:dovecot_6|Einstieg]] und Grundverständnis, auf die scheinbar einfachste Variante mit **userdb** und **passdb** eingehen. Die eigentliche Lösung, auf die wir im Detail genauer eingehen werden, nutzt zur Benutzerverwaltung **[[centos:mail_c6:pfadmin_1|Postfixadmin]]** und zur Speicherung der Nutzerdaten eine **[[centos:mysql|MySQL-Datenbank]]**. Alternativ kann man natürlich hierzu auch **[[centos:ldap:start|LDAP]]**, **[[http://de.wikipedia.org/wiki/Active_Directory|Active Directory]]**. |
| |
==== Datenspeicher ==== | ==== Datenspeicher ==== |
| === Speicherformat === |
Eine sehr technikgetriebene Überlegung, ist die Frage, welches Format verwenden wir beim Speichern der eMails auf unseren Festplatten bzw. Netzwerkspeichern. Theoretisch stehen uns drei Formate zur Verfügung - theoretisch aus dem Grund, da eine der drei Kandidaten keine ernsthafte Alternative (mehr) für den Einsatz auf unserem Dovecot IMAP-Server sein kann. Doch sehen wir uns erst einaml die drei Formate kurz an. | Eine sehr technikgetriebene Überlegung, ist die Frage, welches Format verwenden wir beim Speichern der eMails auf unseren Festplatten bzw. Netzwerkspeichern. Theoretisch stehen uns drei Formate zur Verfügung - theoretisch aus dem Grund, da eine der drei Kandidaten keine ernsthafte Alternative (mehr) für den Einsatz auf unserem Dovecot IMAP-Server sein kann. Doch sehen wir uns erst einaml die drei Formate kurz an. |
- **[[http://wiki2.dovecot.org/MailboxFormat/mbox|mbox]]** \\ :NULL::NULL::DOWN: Pro IMAP-Verzeichnis werden alle Nachrichten in nur **eine große** Datei geschrieben. \\ :NULL::NULL::DOWN: Geht die eine Datei verloren, sind alle (!) eMails verloren! \\ :NULL::NULL::DOWN: Bei sehr vielen Nachrichten in einem Ordner werden die Dateien mit unter sehr groß und verursachen \\ :NULL::NULL::NULL: daher eine höhere **I/O**-Last beim Verarbeiten. \\ :NULL::NULL::DOWN: **Write-Locks** werden benötigt, da nur ein Prozess in ein mbox-Datei schreiben kann. \\ \\ <WRAP center round alert 80%> | - **[[http://wiki2.dovecot.org/MailboxFormat/mbox|mbox]]** \\ :NULL::NULL::DOWN: Pro IMAP-Verzeichnis werden alle Nachrichten in nur **eine große** Datei geschrieben. \\ :NULL::NULL::DOWN: Geht die eine Datei verloren, sind alle (!) eMails verloren! \\ :NULL::NULL::DOWN: Bei sehr vielen Nachrichten in einem Ordner werden die Dateien mit unter sehr groß und verursachen \\ :NULL::NULL::NULL: daher eine höhere **I/O**-Last beim Verarbeiten. \\ :NULL::NULL::DOWN: **Write-Locks** werden benötigt, da nur ein Prozess in ein mbox-Datei schreiben kann. \\ \\ <WRAP center round alert 80%> |
</WRAP> | </WRAP> |
- **[[http://wiki2.dovecot.org/MailboxFormat/dbox|mdbox]]** \\ :NULL::NULL::UP: Properitäres **//"High-End Speicherformat"//** für sehr große Installationen. \\ :NULL::NULL::UP: Viele Nachrichten werden in mehrere größere Dateien geschrieben, daher sind inkrementelle Backups \\ :NULL::NULL::NULL: weiterhin ohne großen Aufwand möglich. \\ :NULL::NULL::DOWN: Ähnlich wie schon beim Cyrus-IMAP-Server wird eine eigene Datenbank zur Informationsspeicherung der \\ :NULL::NULL::NULL: eMails benötigt. Daher können nicht mehr nur auf Dateiebene Nachrichten verarbeitet werden. Änderungen \\ :NULL::NULL::NULL: im mdbox-Speicherbereich müssen ausschließlich über entsprechende **doveadm**-Befehle vorgenommen \\ :NULL::NULL::NULL: werden! Ebenso muss bei Backups/Restores der Nachrichten muß die Datenbank mit ihren Abhängigkeiten \\ :NULL::NULL::NULL: berücksichtigt werden. Entsprechendes //**Knowhow**// auf Seiten des Postmasters und Administrators ist \\ :NULL::NULL::NULL: zwingend gegeben! \\ \\ <WRAP center round info 80%> | - **[[http://wiki2.dovecot.org/MailboxFormat/dbox|mdbox]]** \\ :NULL::NULL::UP: Properitäres **//"High-End Speicherformat"//** für sehr große Installationen. \\ :NULL::NULL::UP: Viele Nachrichten werden in mehrere größere Dateien geschrieben, daher sind inkrementelle Backups \\ :NULL::NULL::NULL: weiterhin ohne großen Aufwand möglich. \\ :NULL::NULL::DOWN: Ähnlich wie schon beim Cyrus-IMAP-Server wird eine eigene Datenbank zur Informationsspeicherung der \\ :NULL::NULL::NULL: eMails benötigt. Daher können nicht mehr nur auf Dateiebene Nachrichten verarbeitet werden. Änderungen \\ :NULL::NULL::NULL: im mdbox-Speicherbereich müssen ausschließlich über entsprechende **doveadm**-Befehle vorgenommen \\ :NULL::NULL::NULL: werden! Ebenso muss bei Backups/Restores der Nachrichten muß die Datenbank mit ihren Abhängigkeiten \\ :NULL::NULL::NULL: berücksichtigt werden. Entsprechendes //**Knowhow**// auf Seiten des Postmasters und Administrators ist \\ :NULL::NULL::NULL: zwingend gegeben! \\ \\ <WRAP center round info 80%> |
**Performantes //"High-End Speicherformat"//** für sehr große Installationen. Hinreichende Kenntnisse übder das **mbox**-Format und die **doveadm**-Kommandos sind Grundvoraussetzung für den Einsatz. Für den Einsteiger und bei überschaubaren Menge an eMails und Postfächern, eher nicht zu empfehlen! | **Performantes //"High-End Speicherformat"//** für sehr große Installationen. Hinreichende Kenntnisse über das **mbox**-Format und die **doveadm**-Kommandos sind Grundvoraussetzung für den Einsatz. Für den Einsteiger und bei überschaubaren Menge an eMails und Postfächern, eher nicht zu empfehlen! |
</WRAP> | </WRAP> |
| |
| === Komprimierung === |
| In der Konfigurationsdatei //**/etc/dovecot/conf.d/90-plugin.conf**// wird dann das Komprimierungsverfahren und der Komprimierungsfaktor eingetragen. Laut dem [[http://www.dovecot-buch.de/|Dovecot-Buch]] von [[http://www.postfixbuch.de/web/home/autor/|Peer Heinlein]] ist das ältere **gzip**-Verfahren 3x schneller als der neuere bzip2((Dovecot Buch Seite 156)). |
| # vim /etc/dovecot/conf.d/90-plugin.conf |
| <file bash /etc/dovecot/conf.d/90-plugin.conf>## |
| ## Plugin settings |
| ## |
| |
| # All wanted plugins must be listed in mail_plugins setting before any of the |
| # settings take effect. See <doc/wiki/Plugins.txt> for list of plugins and |
| # their configuration. Note that %variable expansion is done for all values. |
| |
| plugin { |
| #setting_name = value |
| # Django : 2014-08-05 |
| # default: unset |
| zlib_save = gz |
| # zlib_save = bz2 |
| # Komprimierungslevel Wert zwischen 1 und 9 |
| zlib_save_level = 6 |
| } |
| </file> |
| |
| Die Aktivierung der Komprimierung erfolgt dann nur noch durch anfügen des Mail-plugins **zlib** in der Konfigiurationsdatei //**/etc/dovecot/conf.d/10-mail.conf**//. |
| # vim /etc/dovecot/conf.d/10-mail.conf |
| <code bash>... |
| |
| # Space separated list of plugins to load for all services. Plugins specific to |
| # IMAP, LDA, etc. are added to this list in their own .conf files. |
| # Django : 2014-08-05 |
| # default: #mail_plugins = |
| mail_plugins = zlib |
| |
| ... |
| </code> |
| |
| Zum Aktivieren führen wir nun kurz einen **Reload** der Konfigurationsdateien durch. |
| # systemctl reload dovecot |
| |
| Den erfolgreichen Reload der konfiguration sehen wir dann auch bei der Statusabfrage des Daemon. |
| # systemctl status dovecot |
| <code>dovecot.service - Dovecot IMAP/POP3 email server |
| Loaded: loaded (/usr/lib/systemd/system/dovecot.service; disabled) |
| Active: active (running) since Tue 2014-08-05 13:00:00 CEST; 2h 15min ago |
| Process: 5375 ExecReload=/bin/kill -HUP $MAINPID (code=exited, status=0/SUCCESS) |
| Process: 5247 ExecStartPre=/usr/libexec/dovecot/prestartscript (code=exited, status=0/SUCCESS) |
| Main PID: 5251 (dovecot) |
| CGroup: /system.slice/dovecot.service |
| ├─5251 /usr/sbin/dovecot -F |
| ├─5254 dovecot/anvil [0 connections] |
| ├─5377 dovecot/log |
| └─5379 dovecot/config |
| |
| Aug 05 14:54:30 vml000070.dmz.nausch.org dovecot[5255]: imap(django@nausch.org): Debug: Namespace : type=private, prefix=, sep=, inbox=no, hidden=yes, list=no, subs...AYOUT=none |
| Aug 05 14:54:30 vml000070.dmz.nausch.org dovecot[5255]: imap(django@nausch.org): Debug: none: root=, index=, indexpvt=, control=, inbox=, alt= |
| Aug 05 14:54:30 vml000070.dmz.nausch.org dovecot[5255]: imap-login: Login: user=<django@nausch.org>, method=PLAIN, rip=10.0.0.20, mpid=5349, TLS, TLSv1 with cipher .../ngAKAAAU> |
| Aug 05 15:14:54 vml000070.dmz.nausch.org systemd[1]: Reloading Dovecot IMAP/POP3 email server. |
| Aug 05 15:14:54 vml000070.dmz.nausch.org dovecot[5251]: master: Warning: SIGHUP received - reloading configuration |
| Aug 05 15:14:54 vml000070.dmz.nausch.org systemd[1]: Reloaded Dovecot IMAP/POP3 email server. |
| Aug 05 15:14:54 vml000070.dmz.nausch.org dovecot[5255]: imap: Server shutting down. in=319 out=1486 |
| Aug 05 15:14:54 vml000070.dmz.nausch.org dovecot[5255]: imap: Server shutting down. in=107224 out=3408 |
| Aug 05 15:14:54 vml000070.dmz.nausch.org dovecot[5255]: imap: Server shutting down. in=174 out=1137 |
| Aug 05 15:14:54 vml000070.dmz.nausch.org dovecot[5255]: imap: Server shutting down. in=1675 out=4568 |
| Hint: Some lines were ellipsized, use -l to show in full. |
| </code> |
| |
| Im folgendem Beispiel wurde eine Nachricht in den Unterordner **Test** kopiert. Nach der aktivierung der Komprimierung wurde erneut die Nachricht in den gleichen Unterordner kopiert. |
| |
| Auf Dateiebene sieht man dann sehr deutlich den Grad der Komprimierung. Hatte die eMail vor der Komprimierung noch **103.504 Bytes** sind des bei aktivierter Komprimierung nur noch **16646 Bytes**. |
| # ll /srv/vmail/nausch.org/django/Maildir/.Test/cur/ |
| |
| <code>-rw------- 1 vmail vmail 103504 Jul 18 20:19 1407243162.M32318P5341.vml000070.dmz.nausch.org,S=103504,W=106112:2,S |
| -rw------- 1 vmail vmail 16646 Jul 18 20:19 1407244896.M19043P5389.vml000070.dmz.nausch.org,S=16646,W=106112:2,S |
| </code> |
==== Mailbox Location / vmail-Directory ==== | ==== Mailbox Location / vmail-Directory ==== |
Für unseren Mailserver mit seinen Mailboxen brauchen wir noch ein entsprechendes Verzeichnis, in dem Dovecot später die Nutzerkonten anlegen sowie die Nachrichten und ggf. die SIEVE-Scripte ablegen kann. | Für unseren Mailserver mit seinen Mailboxen brauchen wir noch ein entsprechendes Verzeichnis, in dem Dovecot später die Nutzerkonten anlegen sowie die Nachrichten und ggf. die SIEVE-Scripte ablegen kann. |
| |
Haben wir das dovecot-Paket aus dem Repository **[[http://repo.mailserver.guru/7/|mailserver.guru]]** installiert, ist hierzu das Verzeichnis //**/srv/vmail**// angelegt und mit den richtigen Rechten ausgestattet worden. Weiterhin wurde auch schon der User **vmail**, mit dessen UID und GID die virtuellen Mailboxen benutzt werden, angelegt. | Haben wir das dovecot-Paket aus dem Repository **[[http://repo.nausch.org/7/|repo.nausch.org]]** installiert, ist hierzu das Verzeichnis //**/srv/vmail**// angelegt und mit den richtigen Rechten ausgestattet worden. Weiterhin wurde auch schon der User **vmail**, mit dessen UID und GID die virtuellen Mailboxen benutzt werden, angelegt. |
| |
Ob dieser User bei anderen Paketen auch schon mitangelegt wurde, überprüfen wir bei Bedarf mit folgendem Aufruf: | Ob dieser User bei anderen Paketen auch schon mitangelegt wurde, überprüfen wir bei Bedarf mit folgendem Aufruf: |
| |
Fehlt das entsprechende Verzeichnis, ist auch dies kein allzugroßer Act, legen wir bei Bedarf dieses Verzeichnis einfach schnell an. Wir orientieren uns dabei an den **[[http://de.wikipedia.org/wiki/Filesystem_Hierarchy_Standard#.2Fsrv_.E2.80.93_Daten.2C_die_von_Diensten_angeboten_werden|FHS]]**((**F**ilesystem **H**ierarchy **S**tandard)), der für den Daten, die von Diensten angeboten werden, das Verzeichnis //**/srv**// vorsieht. | Fehlt das entsprechende Verzeichnis, ist auch dies kein allzugroßer Act, legen wir bei Bedarf dieses Verzeichnis einfach schnell an. Wir orientieren uns dabei an den **[[http://de.wikipedia.org/wiki/Filesystem_Hierarchy_Standard#.2Fsrv_.E2.80.93_Daten.2C_die_von_Diensten_angeboten_werden|FHS]]**((**F**ilesystem **H**ierarchy **S**tandard)), der für den Daten, die von Diensten angeboten werden, das Verzeichnis //**/srv**// vorsieht. |
# mkdir -p -/srv/vmail | # mkdir -m 770 -p /srv/vmail |
| |
Für die Berechtigungen wählen wir nun als //**User**// und als //**Gruppe**// jeweils **vmail**. Somit haben wir später keinen Streß wenn dovecot versucht ein Benutzerverzeichnis neu anzulegen! | Für die Berechtigungen wählen wir nun als //**User**// und als //**Gruppe**// jeweils **vmail**. Somit haben wir später keinen Streß wenn dovecot versucht ein Benutzerverzeichnis neu anzulegen! |
# chown vmail.vmail /srv/vmail | # chown vmail.vmail /srv/vmail |
# chmod 770 /srv/vmail | |
| |
<WRAP center round important> | <WRAP center round important> |
| |
Auf Grund der Erfahrungen und der Rückfragen meiner Endkunden, werden fast nur noch ausschließlich die Ordner Unterhalb des **namespaces**. Im Fall vom namespace **INBOX** setzen wir dann den **prefix** auf den Wert **INBOX/**. | Auf Grund der Erfahrungen und der Rückfragen meiner Endkunden, werden fast nur noch ausschließlich die Ordner Unterhalb des **namespaces**. Im Fall vom namespace **INBOX** setzen wir dann den **prefix** auf den Wert **INBOX/**. |
#vim /etc/dovecot/conf.d/10-mail.conf | # vim /etc/dovecot/conf.d/10-mail.conf |
| |
<code bash>... | <code bash>... |
ps-Werten zusätzlich noch der Login-Name, die Client-IP-Adresse und auch noch der ausgeführte IMAP-Befehl angezeigt wird. | ps-Werten zusätzlich noch der Login-Name, die Client-IP-Adresse und auch noch der ausgeführte IMAP-Befehl angezeigt wird. |
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND | USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND |
dovecot 19907 66.6 0.0 18860 1684 ? S 18:45 0:00 dovecot/imap [django@mailserver.guru 10.0.0.20] | dovecot 19907 66.6 0.0 18860 1684 ? S 18:45 0:00 dovecot/imap [django@nausch.org 10.0.0.20] |
dovecot 19971 0.0 0.0 19204 2088 ? S 18:46 0:00 dovecot/imap [django@nausch.org 109.43.1.83 IDLE] | dovecot 19971 0.0 0.0 19204 2088 ? S 18:46 0:00 dovecot/imap [django@nausch.org 109.43.1.83 IDLE] |
| |
# Folgende Parameter wurden aktiviert: | # Folgende Parameter wurden aktiviert: |
# %u : User/Login-Namen | # %u : User/Login-Namen |
# %m : Authentication-Pethode | # %m : Authentication-Methode |
# %r : Remote IP Adress | # %r : Remote IP Adress |
# %e : Mail-Process-ID (imap/pop3) der post-login Verbindung | # %e : Mail-Process-ID (imap/pop3) der post-login Verbindung |
Die benutzen Variablen in der Konfigurationsdatei //**/etc/dovecot/conf.d/10-logging.conf**// sind im [[http://wiki2.dovecot.org/Variables|Dovecot Wiki]] ausführlich beschrieben. | Die benutzen Variablen in der Konfigurationsdatei //**/etc/dovecot/conf.d/10-logging.conf**// sind im [[http://wiki2.dovecot.org/Variables|Dovecot Wiki]] ausführlich beschrieben. |
| |
| === 10-mail.conf === |
| Normalerweise loggt Dovecot nur mit, wann sich ein Nutzer am server an und abmeldet. Möchte man darüber hinaus sehen, welche IMAP-Kommandos der eMail-Client abgesetzt hat, muß man auf die beiden plugins **[[http://wiki2.dovecot.org/Plugins/Notify|notify]]** und **[[http://wiki2.dovecot.org/Plugins/MailLog|mail_log]]** zurückgreifen. Das Plugin **mail_log** schreibt dabei die Änderungen, die das **notify**-Plugin meldet, ins Maillog des Servers. |
| # vim /etc/dovecot/conf.d/10-mail.conf |
| |
| <code bash>... |
| |
| # Space separated list of plugins to load for all services. Plugins specific to |
| # IMAP, LDA, etc. are added to this list in their own .conf files. |
| # Django : 2014-08-05 - zlib-Kompremmierung der Mailkonten |
| # default: #mail_plugins = |
| #mail_plugins = zlib |
| # Django : 2014-08-06 - Quotaregelung aktiviert |
| # last : mail_plugins = zlib |
| # mail_plugins = zlib quota |
| # Django : 2014-08-08 - ACL-Plugin für Shared Folders |
| # mail_plugins = zlib quota acl |
| # Django : 2014-08-10 - Loggen der IMAP-Kommandos im Maillog des Servers |
| mail_plugins = zlib quota acl notify mail_log |
| |
| ... |
| </code> |
| |
| |
In dem Beispiel sehen wir folgende möglichen Verbindungen: | In dem Beispiel sehen wir folgende möglichen Verbindungen: |
* **[[centos:mail_c7:dovecot_2|10.0.0.70:24]]** das ist unser **LMTP**-Port für die Annahme der Nachrichten vom Frontendserver **[[centos:mail_c6:mta_1|Postfix]]**. | * **[[centos:mail_c7:dovecot_2|10.0.0.70:24]]** das ist unser **LMTP**-Port für die Annahme der Nachrichten vom Frontendserver **[[centos:mail_c6:mta_1|Postfix]]**. |
* **110** und **143** : **IMAP** und **IMAPs** Port unseres Dovecot-Servers | * **110** und **995** : **POP3** und **POP3s** Port unseres Dovecot-Servers |
* **993** und **995** : **POP3** und **POP3s** Port unseres Dovecot-Servers | * **143** und **993** : **IMAP** und **IMAPs** Port unseres Dovecot-Servers |
| |
Die gesetzte **0.0.0.0** bedeutet, dass auf allen **IPv4** | Die gesetzte **0.0.0.0** bedeutet, dass auf allen **IPv4** |
</code> | </code> |
| |
| ===== erweiterte Konfiguration(en) ===== |
| ==== nötige Erweiterungen ==== |
| Für folgende Themen wurden separate WIKI-Seiten erstellt: |
| * [[centos:mail_c7:dovecot_6|Dovecot, Authentifizierung(en)]] |
| * [[centos:mail_c7:dovecot_2|Dovecot, Anbindung an einen Frontend-Mailserver (Postfix-SMTP-Server)]] |
| * [[centos:mail_c7:dovecot_4|Dovecot, SSL/TLS - Dovecotverbindungen verschlüsselte Kommunikation]] |
| * [[centos:mail_c7:dovecot_3|Dovecot, Nachrichten auf dem Server mit SIEVE filtern]] |
| * [[centos:mail_c7:dovecot_8|Dovecot, Quotas - Speicherquoten für User]] |
| * [[centos:mail_c7:dovecot_7|Dovecot, Shared Folder und Shared Namespace]] |
| |
| ==== Lucene Full Text Search Indexing ==== |
| Zum Aktivieren der //**[[http://sourceforge.net/projects/clucene/|Lucene]] Full Text Search Indexing**// nutzen wir die Mailplugins **fta** und **fts_lucene**. In der Konfigurationsdatei //**/etc/dovecot/conf.d/10-mail.conf**// tragen wir die nachfolgenden Zeilen nach. |
| # vim /etc/dovecot/conf.d/10-mail.conf |
| |
| <code bash>... |
| |
| # Space separated list of plugins to load for all services. Plugins specific to |
| # IMAP, LDA, etc. are added to this list in their own .conf files. |
| # Django : 2014-08-05 |
| # default: #mail_plugins = |
| #mail_plugins = zlib |
| # Django : 2014-08-06 - Quotaregelung aktiviert |
| # last : mail_plugins = zlib |
| # mail_plugins = zlib quota |
| # Django : 2014-08-08 - ACL-Plugin für Shared Folders |
| # mail_plugins = zlib quota acl |
| # Django : 2014-08-10 - Loggen der IMAP-Kommandos im Maillog des Servers |
| #mail_plugins = zlib quota acl notify mail_log |
| # Django : 2014-08-12 - gesperrte Sonderzeichen im Verzeichnisnamen erlauben |
| #mail_plugins = zlib quota acl notify mail_log listescape |
| # Django : 2014-08-14 - Full text search indexing FTS |
| mail_plugins = zlib quota acl notify mail_log listescape fts fts_lucene |
| |
| # Django : 2014-08-12 |
| # Mailplugin FS und fts_lucene aktiviert |
| plugin { |
| fts=lucene |
| # Lucene-specific settings, good ones are: |
| fts_lucene = whitespace_chars=@. |
| # Index new messages immediately after they've been saved/copied. (v2.2.9+) |
| fts_autoindex = yes |
| # Skip autoindexing the mailbox if it has more than n \Recent messages (implying |
| # that the mailbox is never actually being accessed). (v2.2.9+) |
| # fts_autoindex_max_recent_msgs = n |
| # When SEARCH notices that index isn't up to date, it tells indexer to index the |
| # mails and waits until it is finished. This setting adds a maximum timeout to |
| # this wait. If the timeout is reached, the SEARCH fails with: NO [INUSE] Timeout |
| # while waiting for indexing to finish (v2.1+) |
| # fts_index_timeout = n |
| } |
| |
| ... |
| </code> |
| |
| Zum Aktivieren unserer Programmänderung führen wir einen **Reload** des Dovecot-Daemon durch. |
| |
| Der Index wird übrigens automatisch bei jedem Suchvorgang **__auf dem Server__** aktualisiert. |
| |
| Mit der Option **fts_autoindex = yes** werden die Nachrichten automatisch indiziert, wenn diese per **LMTP** eingeliefert werden. |
| |
| Möchte man den Index für einen Benutzer neu anlegen benutzt man folgenden Aufruf: |
| # doveadm index -u django@nausch.org -q 'INBOX' |
| Mit der Option **-D** kann man sich **Debugmeldungen** mit ausgeben lassen. |
| # doveadm -D index -u django@nausch.org -q 'INBOX' |
| <code>doveadm(root): Debug: Loading modules from directory: /usr/lib64/dovecot |
| doveadm(root): Debug: Module loaded: /usr/lib64/dovecot/lib01_acl_plugin.so |
| doveadm(root): Debug: Module loaded: /usr/lib64/dovecot/lib10_quota_plugin.so |
| doveadm(root): Debug: Module loaded: /usr/lib64/dovecot/lib15_notify_plugin.so |
| doveadm(root): Debug: Module loaded: /usr/lib64/dovecot/lib20_fts_plugin.so |
| doveadm(root): Debug: Module loaded: /usr/lib64/dovecot/lib20_listescape_plugin.so |
| doveadm(root): Debug: Module loaded: /usr/lib64/dovecot/lib20_mail_log_plugin.so |
| doveadm(root): Debug: Module loaded: /usr/lib64/dovecot/lib20_zlib_plugin.so |
| doveadm(root): Debug: Module loaded: /usr/lib64/dovecot/lib21_fts_lucene_plugin.so |
| doveadm(root): Debug: Loading modules from directory: /usr/lib64/dovecot/doveadm |
| doveadm(root): Debug: Module loaded: /usr/lib64/dovecot/doveadm/lib10_doveadm_acl_plugin.so |
| doveadm(root): Debug: Module loaded: /usr/lib64/dovecot/doveadm/lib10_doveadm_quota_plugin.so |
| doveadm(root): Debug: Module loaded: /usr/lib64/dovecot/doveadm/lib10_doveadm_sieve_plugin.so |
| doveadm(root): Debug: Module loaded: /usr/lib64/dovecot/doveadm/lib20_doveadm_fts_lucene_plugin.so |
| doveadm(root): Debug: Module loaded: /usr/lib64/dovecot/doveadm/lib20_doveadm_fts_plugin.so |
| doveadm(django@nausch.org): Debug: auth input: django@nausch.org home=/srv/vmail/nausch.org/django/ uid=10000 gid=10000 quota_rule=*:bytes=10240000000 |
| doveadm(django@nausch.org): Debug: Added userdb setting: plugin/quota_rule=*:bytes=10240000000 |
| doveadm(django@nausch.org): Debug: Effective uid=10000, gid=10000, home=/srv/vmail/nausch.org/django/ |
| doveadm(django@nausch.org): Debug: Quota root: name=User quota backend=maildir args=ignoreunlimited:noenforcing |
| doveadm(django@nausch.org): Debug: Quota rule: root=User quota mailbox=* bytes=10240000000 messages=0 |
| doveadm(django@nausch.org): Debug: Quota rule: root=User quota mailbox=INBOX bytes=0 messages=+10240 |
| doveadm(django@nausch.org): Debug: Quota rule: root=User quota mailbox=INBOX/Trash bytes=+131072000 messages=0 |
| doveadm(django@nausch.org): Debug: Quota rule: root=User quota mailbox=INBOX/Sent ignored |
| doveadm(django@nausch.org): Debug: Quota rule: root=User quota mailbox=INBOX/Archiv bytes=+2560000000 (25%) messages=0 |
| doveadm(django@nausch.org): Debug: Quota warning: bytes=10240000000 (100%) messages=0 reverse=no command=quota-warning 100 django@nausch.org |
| doveadm(django@nausch.org): Debug: Quota warning: bytes=9728000000 (95%) messages=0 reverse=no command=quota-warning 95 django@nausch.org |
| doveadm(django@nausch.org): Debug: Quota warning: bytes=8192000000 (80%) messages=0 reverse=no command=quota-warning 80 django@nausch.org |
| doveadm(django@nausch.org): Debug: Quota grace: root=User quota bytes=1024000000 (10%) |
| doveadm(django@nausch.org): Debug: Namespace inbox: type=private, prefix=INBOX/, sep=/, inbox=yes, hidden=no, list=yes, subscriptions=yes location=maildir:/srv/vmail/nausch.org/django/Maildir |
| doveadm(django@nausch.org): Debug: maildir++: root=/srv/vmail/nausch.org/django/Maildir, index=, indexpvt=, control=, inbox=/srv/vmail/nausch.org/django/Maildir, alt= |
| doveadm(django@nausch.org): Debug: acl: initializing backend with data: vfile |
| doveadm(django@nausch.org): Debug: acl: acl username = django@nausch.org |
| doveadm(django@nausch.org): Debug: acl: owner = 1 |
| doveadm(django@nausch.org): Debug: acl vfile: Global ACLs disabled |
| doveadm(django@nausch.org): Debug: Namespace : type=shared, prefix=shared/%u/, sep=/, inbox=no, hidden=no, list=children, subscriptions=yes location=maildir:%h/Maildir:INDEX=/srv/vmail/nausch.org/django//shared/%u:CONTROL=/srv/vmail/nausch.org/django//shared/%u |
| doveadm(django@nausch.org): Debug: shared: root=/var/run/dovecot, index=, indexpvt=, control=, inbox=, alt= |
| doveadm(django@nausch.org): Debug: fts: Indexes disabled for namespace 'shared/%u/' |
| doveadm(django@nausch.org): Debug: acl: initializing backend with data: vfile |
| doveadm(django@nausch.org): Debug: acl: acl username = django@nausch.org |
| doveadm(django@nausch.org): Debug: acl: owner = 0 |
| doveadm(django@nausch.org): Debug: acl vfile: Global ACLs disabled |
| doveadm(django@nausch.org): Debug: Namespace : type=private, prefix=, sep=, inbox=no, hidden=yes, list=no, subscriptions=no location=fail::LAYOUT=none |
| doveadm(django@nausch.org): Debug: none: root=, index=, indexpvt=, control=, inbox=, alt= |
| doveadm(django@nausch.org): Debug: fts: Indexes disabled for namespace '' |
| </code> |
| |
| Den Index aller Benutzer würde man mit folgendem Aufruf anstoßen: |
| # doveadm index -A -q 'INBOX' |
| |
| Mit dem nun vorhandenen Suchindex'n **lucene-indexes** in den Mail-Verzeichen der Nutzer, können nunmehr Volltextsuchen __**auf dem Server**__ wesentlich effizienter und schneller ausgeführt werden. |
===== Systemstart ===== | ===== Systemstart ===== |
==== erster manueller Start ==== | ==== erster manueller Start ==== |
</code> | </code> |
| |
Im Verzeichnis //**/srv/vmail/**// wurden die zugehörigen Verzeichnisse und die Nachricht selbst, alos die Datei **__1407165099.M887118P3930.vml000070.dmz.nausch.org,S=409,W=422__** angelegt. | Im Verzeichnis //**/srv/vmail/**// wurden die zugehörigen Verzeichnisse und die Nachricht selbst, also die Datei **__1407165099.M887118P3930.vml000070.dmz.nausch.org,S=409,W=422__** angelegt. |
<code># tree /srv/vmail/nausch.org/django/ -alF | <code># tree /srv/vmail/nausch.org/django/ -alF |
/srv/vmail/nausch.org/django/ | /srv/vmail/nausch.org/django/ |
</code> | </code> |
| |
Wir können uns nun auch die Datei/eMAil natürlich auch direkt auf der Konsole ansehen. | Wir können uns nun auch die Datei/eMail natürlich auch direkt auf der Konsole ansehen. |
# cat /srv/vmail/nausch.org/django/Maildir/new/1407165099.M887118P3930.vml000070.dmz.nausch.org\,S\=409\,W\=422 | # cat /srv/vmail/nausch.org/django/Maildir/new/1407165099.M887118P3930.vml000070.dmz.nausch.org\,S\=409\,W\=422 |
<code>Return-Path: <michael@nausch.org> | <code>Return-Path: <michael@nausch.org> |
* **[[http://dokuwiki.nausch.org/doku.php/|Zurück zur Startseite]]** | * **[[http://dokuwiki.nausch.org/doku.php/|Zurück zur Startseite]]** |
| |
~~DISCUSSION~~ | |
~~AUTOTWEET:~~ | |