Re: [Dovecot] Private message flags in shared mailboxes
On Sat, 2013-02-16 at 20:19 +0200, Timo Sirainen wrote: > I'm wondering a bit how these should work. Comments welcome. Well, I guess: > In v2.2 the recommended way to enable private flags for shared mailboxes is > to create private indexes with :INDEXPVT=. This creates > dovecot.index.pvt[.log] files which only contain message UIDs and flags. The > indexes are updated somewhat lazily by updating them whenever user has the > shared mailbox opened and it gets synced. > > 1. What would be a good place to configure which flags are shared and which > are private? Currently it forces \Seen flag to be private and others not. > With Maildir I used to have the idea of configuring these in dovecot-shared > file, but that's a rather annoying extra file. Then again it could be cached > into dovecot.index. Another possibility would be in dovecot-acl file, but > public mailboxes might be enabled without ACL plugin. Mailbox attributes (for > URLAUTH and for future METADATA) also exist in v2.2, but they require > configuring a dict for them, which isn't very efficient either to read every > time a mailbox is accessed. Mailbox's admin user should be able to do this > somehow via IMAP protocol also. METADATA would pretty much be required for > that I guess. Probably won't happen before v2.3. > 2. Private flags aren't currently inherited from the primary (shared) flags. > With user-shared mailboxes this is good, because the owner doesn't have > private indexes for the mailboxes, so when owner reads a mail it gets a \Seen > flag in the primary index. If that mailbox was shared to someone else, the > \Seen flag shouldn't be set. But this also means that for truly shared > (public) mailboxes that have no owner you can't set initial flags with > Sieve's addflag command (e.g. \Seen flag to high-scored mails in Spam). I > guess it could be possible to change this so that the inheritance is done for > public namespaces but not for shared namespaces, but is that really a good > idea either?.. Initial private flags are copied now from shared flags for mailboxes in public namespaces, but not elsewhere. > 3. Currently COPY/APPEND ignore any private flags (which also means dsync > won't set them always). Fixing this would require remembering these flags, > committing the save to primary index, syncing the private index to get the > new mails added there, then updating their flags (or doing it directly at > sync stage with some kludging code). To avoid race conditions the private > index would need to be locked before committing the save. I guess this is > doable.. Fixed. > 4. Private keywords aren't supported. I guess not much worse than system > flags, but more code complexity. Wonder if anyone would care about them. Private \Seen flag is good enough for now.
Re: [Dovecot] Defer emails until the user is ready to deal with them (snooze button / bring-forward file / bring-up file for emails)
Am 18.02.2013 21:36, schrieb Daniel Parthey: > Robert Schetterer wrote: >> Am 18.02.2013 10:03, schrieb Steffen Kaiser: >>> move the messages back to INBOX >> ideally such functions should be able to handle from a thunderbird plugin > > What about > http://mailmindr.net/ > > Regards > Daniel > Hi Daniel, simply try it , and look if it fits to your needs, but i guess there is no real relation to the imap server you use, it may be a client function ,only, please test and report Best Regards MfG Robert Schetterer -- [*] sys4 AG http://sys4.de, +49 (89) 30 90 46 64 Franziskanerstraße 15, 81669 München Sitz der Gesellschaft: München, Amtsgericht München: HRB 199263 Vorstand: Patrick Ben Koetter, Axel von der Ohe, Marc Schiffbauer Aufsichtsratsvorsitzender: Joerg Heidrich
Re: [Dovecot] dsync replication errors
On 18.2.2013, at 23.50, Michael Grimm wrote: >> % doveconf -H dovecot%2d >> No duplicate host hashes in dovecot0 .. dovecot99 > > With "doveconf -H dovecot%9d" I do end in tons of reported collisions like ... > | doveconf: Error: Duplicate host hashes: dovecot1368344 and dovecot2055005 > | doveconf: Error: Duplicate host hashes: dovecot2042008 and dovecot2056918 > | doveconf: Error: Duplicate host hashes: dovecot1844965 and dovecot2058312 Sure there are going to be hash collisions at some point, but I highly doubt you're going to create a million server Dovecot cluster. :)
Re: [Dovecot] dsync replication errors
On 18.02.2013, at 07:07, Timo Sirainen wrote: > On 17.2.2013, at 22.04, Michael Grimm wrote: >> First of all: whenever you referred to "hostname" in this thread you have >> been using it as a synonym for the local part [1] of a FQDN, right? > > I mean what gethostname() function returns, which is what "hostname" command > usually also returns. And yes, I think it's the local part always. I am not familiar with the gethostname() function within FreeBSD, but the "hostname" command normally returns your FQDN, if set. That has been the case because I didn't configure my service jails with FQDNs, thus a "hostname" couldn't return something else then the local hostname. >> Given that all my interpretations of your statements are correct I do have >> difficulties in understanding why a "generic communication between Dovecot >> servers" should be limited to enforcing different local parts of all Dovecot >> servers implied instead of different FQDN? That would make much more sense >> regarding uniqueness in hostnames, IMHO. Two servers like >> "dovecot.forget-about.it" and "dovecot.you-name.it" should be able to >> communicate generically, again: IMHO. > > I think systems named those would belong to different clusters and wouldn't > need to communicate with each others. Well, now I do understand my misunderstanding: I did consider replication between different clusters a "generic communication between Dovecot servers", as well. > I looked through the code. The hostname (without domain) are currently used > for: > > * maildir filenames > * temporary filenames > * authentication challenge strings in some auth mechanisms > * logging > > So I think the hostname uniqueness matters mainly when using a shared > filesystem (e.g. NFS). So, I'm confident that I may stick to identical local hostnames regarding both servers of mine. Thanks and with kind regards, Michael
Re: [Dovecot] dsync replication errors
On 18.02.2013, at 07:49, Timo Sirainen wrote: > On Sun, 2013-02-17 at 12:30 +0200, Timo Sirainen wrote: >> (So yeah, ideally there should be checks for detecting hostname hash >> collisions..) > > Added to v2.2 hg: > > % doveconf -H dovecot%2d > No duplicate host hashes in dovecot0 .. dovecot99 With "doveconf -H dovecot%9d" I do end in tons of reported collisions like ... | doveconf: Error: Duplicate host hashes: dovecot1368344 and dovecot2055005 | doveconf: Error: Duplicate host hashes: dovecot2042008 and dovecot2056918 | doveconf: Error: Duplicate host hashes: dovecot1844965 and dovecot2058312 (No wonder, I am running 2.1 replicator with identical local hostnames for some time now.) ... and ending with: | Killed > doveconf -H without the template it attempts to detect it from the > current hostname. mail> doveconf -H doveconf: Fatal: Hostname 'xxx.yyy.tld' has no digits, can't verify JFTR and regards, Michael
Re: [Dovecot] Defer emails until the user is ready to deal with them (snooze button / bring-forward file / bring-up file for emails)
Robert Schetterer wrote: > Am 18.02.2013 10:03, schrieb Steffen Kaiser: > > move the messages back to INBOX > ideally such functions should be able to handle from a thunderbird plugin What about http://mailmindr.net/ Regards Daniel -- https://plus.google.com/103021802792276734820
Re: [Dovecot] Dovecot-2.1.14 - pop3 processes always hangs forever - another follow-up
Le 18 févr. 2013 à 10:28, Axel Luttgens a écrit : > [...] > > It seems it could be easily back ported to 2.1.x. > I'll try and report back here. Hello Timo, Please find hereafter a proposal based on 2.1.4. Tested here, no hangs anymore with virtual uids/gids. I'm just wondering about the call to hostpid_init() at line 364 of master/main.c, the one related to a config reload; since provisions seem to have been made for taking a possible hostname change into account, wouldn't it be needed to unset the environment variables there? Axel --- src/lib/hostpid.c.original 2013-02-18 12:46:25.0 +0100 +++ src/lib/hostpid.c 2013-02-18 17:18:32.0 +0100 @@ -3,9 +3,12 @@ #include "lib.h" #include "hostpid.h" +#include #include #include +#define HOSTNAME_DISALLOWED_CHARS "/\r\n\t" + const char *my_hostname = NULL; const char *my_pid = NULL; @@ -15,13 +18,19 @@ { static char hostname[256], pid[MAX_INT_STRLEN]; - if (gethostname(hostname, sizeof(hostname)-1) == -1) - i_strocpy(hostname, "unknown", sizeof(hostname)); - hostname[sizeof(hostname)-1] = '\0'; - my_hostname = hostname; + /* Children should find MY_HOSTNAME_ENV set by master process. */ + /* Only master process should have to call gethostname() once. */ + my_hostname = getenv(MY_HOSTNAME_ENV); + if (my_hostname == NULL) { + if (gethostname(hostname, sizeof(hostname)-1) < 0) + i_fatal("gethostname() failed: %m"); + hostname[sizeof(hostname)-1] = '\0'; + my_hostname = hostname; + } - if (strchr(hostname, '/') != NULL) - i_fatal("Invalid system hostname: %s", hostname); + if (my_hostname[0] == '\0' || + strcspn(my_hostname, HOSTNAME_DISALLOWED_CHARS) != strlen(my_hostname)) + i_error("Invalid system hostname: '%s'", my_hostname); /* allow calling hostpid_init() multiple times to reset hostname */ i_free_and_null(my_domain); @@ -35,12 +44,17 @@ struct hostent *hent; const char *name; + /* Children should find MY_HOSTDOMAIN_ENV set by master process. */ + /* Only master process should have to call gethostbyname() once. */ if (my_domain == NULL) { - hent = gethostbyname(my_hostname); - name = hent != NULL ? hent->h_name : NULL; + name = getenv(MY_HOSTDOMAIN_ENV); if (name == NULL) { - /* failed, use just the hostname */ - name = my_hostname; + hent = gethostbyname(my_hostname); + name = hent != NULL ? hent->h_name : NULL; + if (name == NULL) { + /* failed, use just the hostname */ + name = my_hostname; + } } my_domain = i_strdup(name); } --- src/lib/hostpid.h.original 2013-02-18 13:13:44.0 +0100 +++ src/lib/hostpid.h 2013-02-18 13:21:24.0 +0100 @@ -11,5 +11,10 @@ hostname. */ const char *my_hostdomain(void); +/* When set, these environments override above my_hostname and static my_domain. */ +/* Master process normally sets these to child processes. */ +#define MY_HOSTNAME_ENV "DOVECOT_HOSTNAME" +#define MY_HOSTDOMAIN_ENV "DOVECOT_HOSTDOMAIN" + #endif --- src/master/service-process.c.original 2013-02-18 13:24:23.0 +0100 +++ src/master/service-process.c2013-02-18 13:39:15.0 +0100 @@ -234,6 +234,8 @@ service->set->service_count)); } env_put(t_strdup_printf(MASTER_UID_ENV"=%u", uid)); + env_put(t_strdup_printf(MY_HOSTNAME_ENV"=%s", my_hostname)); + env_put(t_strdup_printf(MY_HOSTDOMAIN_ENV"=%s", my_hostdomain())); if (!service->set->master_set->version_ignore) env_put(MASTER_DOVECOT_VERSION_ENV"="PACKAGE_VERSION);
[Dovecot] Full-text search
Hi all I discovered that the full-text search (fts) plugin can work without SQUAT/LUCENE/SOLR backend. I.e., Dovecot creates separate indexes for header search in files dovecot.index and dovecot.index.cache. Even, the search by headers is fast enough, and can search for phrases. Also, it seems that this buillt-in search is faster than Solr-based search. But if I enable the Solr backend (fts_solr), then the FTS generic plugin built-in search becomes disabled. But, Solr-based Full-text search is faster if search inside message bodies. Also, it appears that the built-in search inside message bodies works too, but very slow (it seems that is because it is dumb file-based search and does not use indexes at all) So, my question is: is it possible to combine the built-in search with Solr or Lucene plugin-based search so that the first one searches by headers, and the second one works by bodies? This could make the advantages of both search methods combined. WBR, valery
Re: [Dovecot] statistics on proxy ???
On Mon, 2013-02-18 at 14:33 +0100, Marco Giunta wrote: > could I have imap statistics on my dovecot proxy server ?? Nope, sorry. Dovecot proxy is very dummy and can't provide any but the most basic statistics, like number of connections, which you can get another way.
Re: [Dovecot] Quota Problems with LMTP in HG 62a930eb22b5
* Timo Sirainen 2013.02.18 14:18: > > > ==> /var/log/dovecot/dovecot.log <== > > > Feb 18 09:47:32 spectre dovecot: lmtp(14340): Connect from local > > > Feb 18 09:47:32 spectre dovecot: lmtp(14340, t...@leuxner.net): Error: > > > mkdir_parents(/var/vmail/domains/leuxner.net/tlx/mdbox) failed: File > > > exists > > > Feb 18 09:47:32 spectre dovecot: lmtp(14340, t...@leuxner.net): Error: > > > mkdir_parents(/var/vmail/domains/leuxner.net/tlx/mdbox) failed: File > > > exists > > > Feb 18 09:47:32 spectre dovecot: lmtp(14340, t...@leuxner.net): Error: > > > dict quota: Quota update failed, it's now desynced > > Not sure about these. Are they fixed now? > > > Feb 18 13:00:33 spectre dovecot: lmtp(15093): Error: Temp file creation to > > /tmp/dovecot.lmtp.�/usr/lib/dovecot/lmtp.15093. > > failed: No such file or directory > > This is definitely fixed. I was worried about the environment getting > cleared when coding it, but it appeared to work and looks like I didn't > test well enough. Both seem to be fixed with 2.2.beta1 (3ca7e0eaaf4b). Thanks Timo. signature.asc Description: Digital signature
[Dovecot] statistics on proxy ???
Hi at all, could I have imap statistics on my dovecot proxy server ?? Here my config: # 2.1.13: /etc/dovecot/dovecot.conf ... mail_plugins = stats ... plugin { ... stats_refresh = 30 secs stats_track_cmds = yes } ... service stats { fifo_listener stats-mail { mode = 0666 } } ... protocol imap { ... mail_plugins = stats imap_stats } File '/var/run/dovecot/stats' is always 0 byte: # ls -la /var/run/dovecot/stats srw---. 1 root root 0 Feb 18 14:24 /var/run/dovecot/stats and 'dovecotadm' say always: # doveadm stats dump session doveadm(root): Info: no statistics available Is there something wrong in my config, or stats are not available on proxy ??? Cheers, Marco
Re: [Dovecot] Quota Problems with LMTP in HG 62a930eb22b5
On Mon, 2013-02-18 at 13:24 +0100, Thomas Leuxner wrote: > * Thomas Leuxner 2013.02.18 09:58: > > > Since updating to the latest HG these errors occur. Nothing else changed in > > the config: > > > > $ dovecot --version > > 2.2.beta1 (62a930eb22b5) > > > > ==> /var/log/dovecot/dovecot.log <== > > Feb 18 09:47:32 spectre dovecot: lmtp(14340): Connect from local > > Feb 18 09:47:32 spectre dovecot: lmtp(14340, t...@leuxner.net): Error: > > mkdir_parents(/var/vmail/domains/leuxner.net/tlx/mdbox) failed: File exists > > Feb 18 09:47:32 spectre dovecot: lmtp(14340, t...@leuxner.net): Error: > > mkdir_parents(/var/vmail/domains/leuxner.net/tlx/mdbox) failed: File exists > > Feb 18 09:47:32 spectre dovecot: lmtp(14340, t...@leuxner.net): Error: dict > > quota: Quota update failed, it's now desynced Not sure about these. Are they fixed now? > Feb 18 13:00:33 spectre dovecot: lmtp(15093): Error: Temp file creation to > /tmp/dovecot.lmtp.�/usr/lib/dovecot/lmtp.15093. > failed: No such file or directory This is definitely fixed. I was worried about the environment getting cleared when coding it, but it appeared to work and looks like I didn't test well enough.
Re: [Dovecot] Quota Problems with LMTP in HG 62a930eb22b5
* Thomas Leuxner 2013.02.18 09:58: > Since updating to the latest HG these errors occur. Nothing else changed in > the config: > > $ dovecot --version > 2.2.beta1 (62a930eb22b5) > > ==> /var/log/dovecot/dovecot.log <== > Feb 18 09:47:32 spectre dovecot: lmtp(14340): Connect from local > Feb 18 09:47:32 spectre dovecot: lmtp(14340, t...@leuxner.net): Error: > mkdir_parents(/var/vmail/domains/leuxner.net/tlx/mdbox) failed: File exists > Feb 18 09:47:32 spectre dovecot: lmtp(14340, t...@leuxner.net): Error: > mkdir_parents(/var/vmail/domains/leuxner.net/tlx/mdbox) failed: File exists > Feb 18 09:47:32 spectre dovecot: lmtp(14340, t...@leuxner.net): Error: dict > quota: Quota update failed, it's now desynced Seems there's more to the latest changes as a mail that has to be saved temporarily also breaks LMTP: Feb 18 13:00:32 spectre postfix/qmgr[21702]: 3Z8hWT6jxszFV: from=, size=460096, nrcpt=1 (queue active) ==> /var/log/dovecot/dovecot.log <== Feb 18 13:00:32 spectre dovecot: lmtp(15093): Connect from local Feb 18 13:00:33 spectre dovecot: lmtp(15093): Error: Temp file creation to /tmp/dovecot.lmtp.�/usr/lib/dovecot/lmtp.15093. failed: No such file or directory Feb 18 13:00:33 spectre dovecot: lmtp(15093): Disconnect from local: Temporary internal failure (in DATA) signature.asc Description: Digital signature
Re: [Dovecot] Defer emails until the user is ready to deal with them (snooze button / bring-forward file / bring-up file for emails)
Am 18.02.2013 10:03, schrieb Steffen Kaiser: > Have a cron job on the server that moves the messages back to INBOX. Hi Steffen, please describe how such cron should be invoked , created, edited, deleted with some user friendly interface i.e in some sieve webmail client or thunderbird, using tons of different guis for different jobs is not very nice, ideally such functions should be able to handle from a thunderbird plugin then etc this is not a general critic at this idea, but it must match real world sceanrios like isp setup etc at last Best Regards MfG Robert Schetterer -- [*] sys4 AG http://sys4.de, +49 (89) 30 90 46 64 Franziskanerstraße 15, 81669 München Sitz der Gesellschaft: München, Amtsgericht München: HRB 199263 Vorstand: Patrick Ben Koetter, Axel von der Ohe, Marc Schiffbauer Aufsichtsratsvorsitzender: Joerg Heidrich
Re: [Dovecot] Dovecot-2.1.14 - pop3 processes always hangs forever - another follow-up
Le 18 févr. 2013 à 06:21, Timo Sirainen a écrit : > On Sun, 2013-02-17 at 12:24 +0100, Axel Luttgens wrote: >> Le 17 févr. 2013 à 05:47, Timo Sirainen a écrit : >> >>> [...] >>> The gethostbyname() call is used to figure out the current system's domain. >>> Why it would be hanging there, I don't really know. That call anyway isn't >>> fully required, you could just replace it with "hent = NULL;" >> >> Yes, looks like those gethostbyname() require some investigations here... >> I'll have a look and provide my "findings" here. Very modest findings; anyway, here they are, should they be of some help for nailing the causes down. First, having the db query returning only a virtual uid (eg, 12), thus making use of a system group set with mail_gid (e.g., 999), those hangs do not occur anymore. On the other hand, this quick one: #include #include #define NULL ((void *)0) int main( int argc, const char * argv[]) { struct hostent *hent; hent = gethostbyname("ALMba.local"); if ( hent != NULL ) { syslog(LOG_NOTICE|LOG_MAIL, "name returned by gethostbyname(): %s\n", hent->h_name); } return(0); } compiled as ghbn and with perms set to: -rwsr-sr-x 1 12 12 8816 18 fév 09:08 ghbn doesn't hang and yields: [ASLMessageID 385162] [Time 1361175967] [TimeNanoSec 451292000] [Level 5] [PID 5616] [UID 12] [GID 12] [ReadGID 80] [Host ALMba.local] [Sender ghbn] [Facility mail] [Message name returned by gethostbyname(): almba.local] It could thus be inferred that the problems encountered here are related to virtual gids only when setting up child processes from within Dovecot. Don't know whether this impacts those calls to gethostbyname() only, or if other side-effects may be expected as well. Now, would all this be a Mac OS X thing only? Or are such problems liable to occur on other platforms as well? >> In the meantime, I don't really like the idea of messing with a general >> purpose function, my_hostdomain(), just to avoid a local problem... >> Wouldn't you have a better idea? ;-) > > Solution for v2.2: http://hg.dovecot.org/dovecot-2.2/rev/a6b40687c0a4 Wow, that's a good idea. :-) This should indeed circumvent those hangs, but also avoid many rather costly system calls. It seems it could be easily back ported to 2.1.x. I'll try and report back here. Many thanks, Axel
Re: [Dovecot] Defer emails until the user is ready to deal with them (snooze button / bring-forward file / bring-up file for emails)
-BEGIN PGP SIGNED MESSAGE- Hash: SHA1 On Sat, 16 Feb 2013, Chris Laif wrote: Thanks Timo, at least one person understands me ;-) Unfortunately, both solutions require programming skills far better than I have. So I start enjoying my weekend doing other things ... thank you for your great work on dovecot! I like Daniel's idea: + Have Thunderbird move unwanted messages to Delayed/ + Have a cron job on the server that moves the messages back to INBOX. - -- Steffen Kaiser -BEGIN PGP SIGNATURE- Version: GnuPG v1.4.11 (GNU/Linux) iQEVAwUBUSHua13r2wJMiz2NAQK7NAf+MEujHadBqNN7+7EWphjQj31vuEq/jFW7 xNY+jE9s/IBd0hmUY1cQLS6/X4n4EOOy4lAhzJIkE4/x8pqlQhlaA7L5kR8zkcK0 pNOzJHqOoWq0NL83WUf8kq/2BP6HUqL0nWX0Dgz5sWYvvXlGmKHND3eNZ5WX9IME Yj8QEbCDTqnMAh/jGjJVW8tzHtoGVBpGQ8EJbjUh8/QIciWtEVvz8ofmgz/5vpL3 r5XKiNHMyZs9dhaLvMsos7Qhln89XvANir8GAE0CFEFm+8mJDzzQU3RkAkj/ohT2 9MSYCQGDCiS3hcazZTRiCNvIup+t4vXGICVCtHjZHr8zUwsNqp5PCw== =070+ -END PGP SIGNATURE-
[Dovecot] Quota Problems with LMTP in HG 62a930eb22b5
Since updating to the latest HG these errors occur. Nothing else changed in the config: $ dovecot --version 2.2.beta1 (62a930eb22b5) ==> /var/log/dovecot/dovecot.log <== Feb 18 09:47:32 spectre dovecot: lmtp(14340): Connect from local Feb 18 09:47:32 spectre dovecot: lmtp(14340, t...@leuxner.net): Error: mkdir_parents(/var/vmail/domains/leuxner.net/tlx/mdbox) failed: File exists Feb 18 09:47:32 spectre dovecot: lmtp(14340, t...@leuxner.net): Error: mkdir_parents(/var/vmail/domains/leuxner.net/tlx/mdbox) failed: File exists Feb 18 09:47:32 spectre dovecot: lmtp(14340, t...@leuxner.net): Error: dict quota: Quota update failed, it's now desynced $ doveconf -n # 2.2.beta1 (62a930eb22b5): /etc/dovecot/dovecot.conf # OS: Linux 3.2.0-0.bpo.4-amd64 x86_64 Debian 6.0.6 auth_cache_size = 16 k auth_verbose = yes mail_location = mdbox:~/mdbox mail_plugins = acl quota stats mailbox_list_index = yes namespace { list = yes location = mdbox:/var/vmail/public:INDEXPVT=~/mdbox/public prefix = Public/ separator = / subscriptions = no type = public } namespace inbox { hidden = no 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 = separator = / type = private } passdb { args = username_format=%u /var/vmail/auth.d/%d/passwd driver = passwd-file } plugin { acl = vfile:/var/vmail/conf.d/%d/acls:cache_secs=300 mail_log_events = expunge mailbox_delete quota = dict:user::file:%h/mdbox/dovecot-quota quota_rule = *:storage=1GB quota_rule2 = Trash:storage=+10%% sieve = ~/.dovecot.sieve sieve_dir = ~/sieve sieve_global_dir = /var/vmail/conf.d/%d/sieve stats_refresh = 30s stats_track_cmds = yes } protocols = " imap lmtp" quota_full_tempfail = yes service auth-worker { unix_listener auth-worker { user = doveauth } user = doveauth } service auth { unix_listener /var/spool/postfix/private/auth { group = postfix mode = 0660 user = postfix } user = doveauth } service imap-login { inet_listener imap { address = 1.2.3.4 port = 143 } inet_listener imaps { port = 0 } } service lmtp { unix_listener /var/spool/postfix/private/dovecot-lmtp { group = postfix mode = 0660 user = postfix } } service stats { fifo_listener stats-mail { mode = 0600 user = vmail } } ssl_ca = signature.asc Description: Digital signature