| |
centos:mail_c7:dovecot_1 [04.08.2014 19:00. ] – [Abholung via POP3] 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>... |
</file> | </file> |
| |
| ==== Logging und Fehlersuche ==== |
| Dovecot unterstützt uns bei der Fehlersuche mit aussagekräftigen Einträgen im Maillog unseres Servers. Zum Feinjustieren und individuellen Loggingverhalten bietet uns Dovecot mehrere Optionen. |
| |
| === dovecot.conf === |
| Rufen wir die Prozessliste auf, sehen wir je nach Auslastung unseres Servers einen oder mehrere Dovecot-Prozesse. |
| USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND |
| dovecot 19666 0.0 0.0 19204 2072 ? S 18:40 0:00 dovecot/imap |
| |
| Zieht jetzt ein Client mehr Ressourcen, als wir diesem zugestehen wollen, können wir so leider nicht ohne weiteres herausfinden, wer das ist. |
| |
| Über den Konfigurationsparameter **verbose_proctitle** können wir definieren, dass uns neben den üblichen |
| 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 |
| 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] |
| |
| Zum Aktivieren dieser Option tragen wir nun einfach ein **verbose_proctitle=yes** in der Konfigurationsdatei //**/etc/dovecot/dovecot.conf**// ein. |
| # vim /etc/dovecot/dovecot.conf |
| <file bash /etc/dovecot/dovecot.conf>## Dovecot configuration file |
| |
| # If you're in a hurry, see http://wiki2.dovecot.org/QuickConfiguration |
| |
| # "doveconf -n" command gives a clean output of the changed settings. Use it |
| # instead of copy&pasting files when posting to the Dovecot mailing list. |
| |
| # '#' character and everything after it is treated as comments. Extra spaces |
| # and tabs are ignored. If you want to use either of these explicitly, put the |
| # value inside quotes, eg.: key = "# char and trailing whitespace " |
| |
| # Most (but not all) settings can be overridden by different protocols and/or |
| # source/destination IPs by placing the settings inside sections, for example: |
| # protocol imap { }, local 127.0.0.1 { }, remote 10.0.0.0/8 { } |
| |
| # Default values are shown for each setting, it's not required to uncomment |
| # those. These are exceptions to this though: No sections (e.g. namespace {}) |
| # or plugin settings are added by default, they're listed only as examples. |
| # Paths are also just examples with the real defaults being based on configure |
| # options. The paths listed here are for configure --prefix=/usr |
| # --sysconfdir=/etc --localstatedir=/var |
| |
| # Protocols we want to be serving. |
| #protocols = imap pop3 lmtp |
| |
| # A comma separated list of IPs or hosts where to listen in for connections. |
| # "*" listens in all IPv4 interfaces, "::" listens in all IPv6 interfaces. |
| # If you want to specify non-default ports or anything more complex, |
| # edit conf.d/master.conf. |
| #listen = *, :: |
| |
| # Base directory where to store runtime data. |
| #base_dir = /var/run/dovecot/ |
| |
| # Name of this instance. In multi-instance setup doveadm and other commands |
| # can use -i <instance_name> to select which instance is used (an alternative |
| # to -c <config_path>). The instance name is also added to Dovecot processes |
| # in ps output. |
| #instance_name = dovecot |
| |
| # Greeting message for clients. |
| #login_greeting = Dovecot ready. |
| |
| # Space separated list of trusted network ranges. Connections from these |
| # IPs are allowed to override their IP addresses and ports (for logging and |
| # for authentication checks). disable_plaintext_auth is also ignored for |
| # these networks. Typically you'd specify your IMAP proxy servers here. |
| #login_trusted_networks = |
| |
| # Space separated list of login access check sockets (e.g. tcpwrap) |
| #login_access_sockets = |
| |
| # With proxy_maybe=yes if proxy destination matches any of these IPs, don't do |
| # proxying. This isn't necessary normally, but may be useful if the destination |
| # IP is e.g. a load balancer's IP. |
| #auth_proxy_self = |
| |
| # Show more verbose process titles (in ps). Currently shows user name and |
| # IP address. Useful for seeing who are actually using the IMAP processes |
| # (eg. shared mailboxes or if same uid is used for multiple accounts). |
| # Django : 2014-07-21 |
| # In der Prozessliste bei den POP3/IMAP-Prozessen zusätzlich den Usernamen, |
| # die Client-IP-Adresse und den ausgeführten IMAP-Befehl anzeigen. |
| # default: #verbose_proctitle = no |
| verbose_proctitle = yes |
| |
| # Should all processes be killed when Dovecot master process shuts down. |
| # Setting this to "no" means that Dovecot can be upgraded without |
| # forcing existing client connections to close (although that could also be |
| # a problem if the upgrade is e.g. because of a security fix). |
| #shutdown_clients = yes |
| |
| # If non-zero, run mail commands via this many connections to doveadm server, |
| # instead of running them directly in the same process. |
| #doveadm_worker_count = 0 |
| # UNIX socket or host:port used for connecting to doveadm server |
| #doveadm_socket_path = doveadm-server |
| |
| # Space separated list of environment variables that are preserved on Dovecot |
| # startup and passed down to all of its child processes. You can also give |
| # key=value pairs to always set specific settings. |
| #import_environment = TZ |
| |
| ## |
| ## Dictionary server settings |
| ## |
| |
| # Dictionary can be used to store key=value lists. This is used by several |
| # plugins. The dictionary can be accessed either directly or though a |
| # dictionary server. The following dict block maps dictionary names to URIs |
| # when the server is used. These can then be referenced using URIs in format |
| # "proxy::<name>". |
| |
| dict { |
| #quota = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext |
| #expire = sqlite:/etc/dovecot/dovecot-dict-sql.conf.ext |
| } |
| |
| # Most of the actual configuration gets included below. The filenames are |
| # first sorted by their ASCII value and parsed in that order. The 00-prefixes |
| # in filenames are intended to make it easier to understand the ordering. |
| !include conf.d/*.conf |
| |
| # A config file can also tried to be included without giving an error if |
| # it's not found: |
| !include_try local.conf |
| </file> |
| |
| === 10-logging.conf === |
| Weitere Optionen zum Umfang beim Logging nehmen wir an Hand der Datei //**10-logging.conf**// vor. Die einzelnen Parameter sind mit entsprechenden Kommentaren versehen. |
| # vim /etc/dovecot/conf.d/10-logging.conf |
| <file bash /etc/dovecot/conf.d/10-logging.conf>## |
| ## Log destination. |
| ## |
| |
| # Log file to use for error messages. "syslog" logs to syslog, |
| # /dev/stderr logs to stderr. |
| #log_path = syslog |
| |
| # Log file to use for informational messages. Defaults to log_path. |
| #info_log_path = |
| # Log file to use for debug messages. Defaults to info_log_path. |
| #debug_log_path = |
| |
| # Syslog facility to use if you're logging to syslog. Usually if you don't |
| # want to use "mail", you'll use local0..local7. Also other standard |
| # facilities are supported. |
| #syslog_facility = mail |
| |
| ## |
| ## Logging verbosity and debugging. |
| ## |
| |
| # Log unsuccessful authentication attempts and the reasons why they failed. |
| #auth_verbose = no |
| # Django : 2014-07-21 |
| # Detaillierte Loginformationen zum positiven Authentifizierungsprozess |
| # bzw. im Fehlerfall mit Details zu den Fehlern |
| # default: auth_verbose = no |
| auth_verbose = no |
| |
| # In case of password mismatches, log the attempted password. Valid values are |
| # no, plain and sha1. sha1 can be useful for detecting brute force password |
| # attempts vs. user simply trying the same password over and over again. |
| # You can also truncate the value to n chars by appending ":n" (e.g. sha1:6). |
| #auth_verbose_passwords = no |
| |
| # Even more verbose logging for debugging purposes. Shows for example SQL |
| # queries. |
| #auth_debug = no |
| # Django : 2014-07-21 |
| # Detaillierte Debug-Loginformationen zum Authentifizierungsprozess inkl. |
| # der SQL-Abfragen und deren Ergebnisse ins Logfile schreiben |
| |
| # In case of password mismatches, log the passwords and used scheme so the |
| # problem can be debugged. Enabling this also enables auth_debug. |
| #auth_debug_passwords = no |
| # Django : 2014-07-21 |
| # Passwort zum Debuggen mitloggen? |
| |
| # Enable mail process debugging. This can help you figure out why Dovecot |
| # isn't finding your mails. |
| #mail_debug = no |
| # Django : 2014-07-21 |
| # Detailierte Loginformationen zur Verarbeitung der eMails durch Dovecot. |
| |
| # Show protocol level SSL errors. |
| #verbose_ssl = no |
| # Django : 2014-07-21 |
| # SSL-Debugmode aktivieren. |
| |
| # mail_log plugin provides more event logging for mail processes. |
| plugin { |
| # Events to log. Also available: flag_change append |
| #mail_log_events = delete undelete expunge copy mailbox_delete mailbox_rename |
| # Available fields: uid, box, msgid, from, subject, size, vsize, flags |
| # size and vsize are available only for expunge and copy events. |
| #mail_log_fields = uid box msgid size |
| } |
| |
| ## |
| ## Log formatting. |
| ## |
| |
| # Prefix for each line written to log file. % codes are in strftime(3) |
| # format. |
| #log_timestamp = "%b %d %H:%M:%S " |
| # Django : 2014-07-21 |
| # default: unset |
| log_timestamp = "%Y-%m-%d %H:%M:%S " |
| |
| # Space-separated list of elements we want to log. The elements which have |
| # a non-empty variable value are joined together to form a comma-separated |
| # string. |
| #login_log_format_elements = user=<%u> method=%m rip=%r lip=%l mpid=%e %c |
| # Django : 2014-07-21 |
| # default: unset |
| # Folgende Parameter wurden aktiviert: |
| # %u : User/Login-Namen |
| # %m : Authentication-Methode |
| # %r : Remote IP Adress |
| # %e : Mail-Process-ID (imap/pop3) der post-login Verbindung |
| # %c : "secured" String "SSL", "TLS" |
| # %k : SSL Protokoll und Cipher-Information |
| # %{session} : Session-ID der Client-Verbindung |
| login_log_format_elements = user=<%u> method=%m rip=%r mpid=%e %c %k session=<%{session}> |
| |
| # Login log format. %s contains login_log_format_elements string, %$ contains |
| # the data we want to log. |
| #login_log_format = %$: %s |
| |
| # Log prefix for mail processes. See doc/wiki/Variables.txt for list of |
| # possible variables you can use. |
| #mail_log_prefix = "%s(%u): " |
| |
| # Format to use for logging mail deliveries. You can use variables: |
| # %$ - Delivery status message (e.g. "saved to INBOX") |
| # %m - Message-ID |
| # %s - Subject |
| # %f - From address |
| # %p - Physical size |
| # %w - Virtual size |
| #deliver_log_format = msgid=%m: %$ |
| </file> |
| |
| 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> |
| |
| |
FIXME | |
==== IP-Adressen ==== | ==== IP-Adressen ==== |
Welche IP-Adressen unser Dovecot-Server zur Verfügung stellt fragen wir mit dem Befehl **netstat** ab. | Welche IP-Adressen unser Dovecot-Server zur Verfügung stellt fragen wir mit dem Befehl **netstat** ab. |
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> |
| |
Auf unserem IMAP-Server ist die gelöschte Nachricht auch nichtmehr vorhanden, da diese ja mit dem Befehl **CLOSE** des Client gelöscht wurde. | Auf unserem IMAP-Server ist die gelöschte Nachricht auch nichtmehr vorhanden, da diese ja mit dem Befehl **CLOSE** des Client gelöscht wurde. |
<close>/srv/vmail/nausch.org/django/ | <code>/srv/vmail/nausch.org/django/ |
└── Maildir/ | └── Maildir/ |
├── cur/ | ├── cur/ |
├── new/ | ├── new/ |
└── tmp/ | └── tmp/ |
</close> | </code> |
| |
====== Links ====== | ====== Links ====== |
* **[[http://dokuwiki.nausch.org/doku.php/|Zurück zur Startseite]]** | * **[[http://dokuwiki.nausch.org/doku.php/|Zurück zur Startseite]]** |
| |
~~DISCUSSION~~ | |