Re: When is imapproxy usefull?

2020-03-09 Thread Nic Bernstein

Dilyan,
In my own experience, an IMAP proxy is helpfulfor webmail clients, in 
that the proxy can maintain a persistent connection to the IMAP server, 
thus saving the time & CPU cycles which would otherwise go in to 
bringing up and tearing down the TCP/IP sessions.  This isespecially 
important for web clients which are using frames (like SquirrelMail) or 
would otherwise spawn multiple connections to the IMAP server.


The best performance may be had by placing the proxy on the web server, 
so the bulk of the connections can happen via Unix sockets, or localhost 
TCP/IP connections.  Then just a handful of IMAP connections happen 
between the web and IMAP servers.


I've used the old imapproxyd, as well as Perdition, for this.  I have 
not tried nginx, so cannot speak to that.


I hope this is useful information,
    -nic

On 3/9/20 12:10 PM, Дилян Палаузов wrote:

Hello,

the documentation on performance of Horde/Imp: 
https://www.horde.org/apps/imp/docs/PERFORMANCE recommends installing 
an imap proxy , e.g. the one from 
https://squirrelmail.org/download.php which ceased deveopment decades 
ago. The idea is that horde/imp/the-webmail-client connects to the 
imap-proxy and this should make everything faster.


Does such an imap-proxy make things faster for a webmail client? Is 
nginx-imap-proxy or anything else better than squirrelmail-imap-proxy?


Greetings
Дилян 



--
Nic Bernstein   n...@nicbernstein.com
mobile: +1 414 807 1734
snail:  N Astor St Apt A5, Milwaukee, WI  53202-3319
https://www.nicbernstein.com
https://www.linkedin.com/in/nic-b-26577a178/



Re: Question for upgrading

2018-12-15 Thread Nic Bernstein

On 12/13/18 9:52 AM, Egoitz Aurrekoetxea wrote:


I was trying to upgrade part of our Cyrus imap installation, 
concretely that one consisting in still 2.3. I was planning to set up 
Cyrus 3.0. I have seen all works properly except for the unexpunge 
command because as someone stated here, a reconstruct -V max was 
needed.The problem is that this reconstruct command, takes ages and 
I'm not able to keep the service offline so many time. So I have been 
thinking in the following scenario :




Egoitz,
As long as you've followed all of the various steps needed to account 
for version changes, as outlined in the Release Notes for /all/ 
intermediary releases, then the last step should be the updating of the 
indexes.  Rather than running "reconstruct -V max" on all mailboxes at 
once, simply run it on subsets.  We've done this on large installations 
without ill effect.  You can have the service on line during the 
reconstruct, and, as you note, have most all functionality present.


We build a list of users (mboxlist.txt), and then run a cron job, during 
off-peak hours, using the 'parallel' command like so (from 'crontab -e 
-u cyrus'):


   ### ## Start a batch of recursive reconstruct jobs at 7PM and
   discontinue ## at 6:53AM. 0 19 * * * parallel -j 5 --resume --joblog
   /var/lib/imap/reconstruct.log cyrus reconstruct -G -V max -r -u {} <
   /var/lib/imap/mboxlist.txt 53 06 * * * kill -TERM `ps ax | grep
   [p]arallel | awk '{print $1}'`

Cheers,
    -nic

--
Nic Bernstein n...@onlight.com
Onlight Inc.  www.onlight.com
6525 W Bluemound Rd., Ste 24  v. 414.272.4477
Milwaukee, Wisconsin  53213-4073  f. 414.290.0335



Re: backup replication: sync_try_imap

2018-09-05 Thread Nic Bernstein

On 09/04/2018 09:56 PM, ellie timoney wrote:

Can you please point out where in the docs csync is described as 
deprecated/outdated?  Those docs are probably bad and need reviewing!


Ellie,
The reference to deprecated operation in 
/docsrc/imap/reference/admin/sop/replication.rst, (line 172 in my checkout):

2. If using the deprecated sync_server scheme, add the following line
   to the ``/etc/services`` file. Note that the port number is
   arbitrary as long as its not being used by any other services on the
   network.

    ::

    csync 2005/tcp

3. If using the deprecated sync_server scheme, add a line similar to
   the following in the SERVICES section of :cyrusman:`cyrus.conf(5)`:

    ::

    syncserver   cmd="/usr/cyrus/bin/sync_server" listen="csync"
This is in the general discussion on configuration of a replica server.  
I think this is correct for a typical replica, just not for a backup 
server, whose configuration is discussed elsewhere, 
/docsrc/imap/reference/admin/backups.rst.


Cheers,
    -nic

--
Nic Bernstein n...@onlight.com
Onlight Inc.  www.onlight.com
6525 W Bluemound Rd., Ste 24  v. 414.272.4477
Milwaukee, Wisconsin  53213-4073  f. 414.290.0335



Re: Internal error: assertion failed imap/message.c: 4246: !message_need(m, M_RECORD)

2018-07-26 Thread Nic Bernstein

Bron,
Answering my own question, I now see that the fix you refer to is in 
cfb3054, imap/mailbox.c on 1/2/2017, which is in both master and 3.0... 
However, I've still got the problem, so same failed assertion, but 
different bug?

    -nic

On 07/24/2018 12:10 PM, Nic Bernstein wrote:

Bron, et al.,
Was this change ever cherry-picked to 3.0?  I am seeing the same issue 
with recent 3.0 HEAD, but slightly different location:


user.masked: updating sync_crc 521983118 => 503807715
fatal error: Internal error: assertion failed: imap/message.c:
4286: !message_need(m, M_RECORD)

A git log of imap/message.c doesn't show a commit from 1/2/2017, and 
nothing affecting imap/message.c around that time seems to line up 
with this.


Please advise,
    -nic

On 01/02/2017 07:13 AM, Bron Gondwana via Cyrus-devel wrote:
Thanks for the data.  It was 8 bytes of zeros across a UID and 
INTERNALDATE in the cyrus.index file.


I now have a fixed reconstruct which can detect and repair this 
rather than aborting, pushed to master.
I also have a Cassandane testcase for this and a couple of other 
things that reconstruct does :)


Bron.

On Thu, 29 Dec 2016, at 09:45, Bron Gondwana via Cyrus-devel wrote:
Wow, interesting.  Are you willing to send me a tarball containing 
the spool folder including cyrus.index and cyrus.cache files as well 
as the email files themselves?  I'll need your imapd.conf file as 
well :)


Cheers,

Bron.


On Thu, 29 Dec 2016, at 00:28, Thomas Cataldo via Cyrus-devel wrote:

Hi,

Running a build of 3.0.0-beta6 I hit the following assertion on one 
of my test mailboxes after playing a bit with the replication stuff :


root@bm1604:~# /usr/lib/cyrus/sbin/sync_client -n eclipse -o -u 
t...@ex2016.vmw


Fatal error: Internal error: assertion failed: imap/message.c: 
4246: !message_need(m, M_RECORD)


root@bm1604:~# cyradm -u admin0 localhost

Password:

localhost> version

name       : Cyrus IMAPD

version    : 3.0.0-beta6-3-gf721e5b

vendor     : Project Cyrus

support-url: http://www.cyrusimap.org

os         : Linux

os-version : 4.4.0-57-generic

environment: Built w/Cyrus SASL 2.1.26

             Running w/Cyrus SASL 2.1.26

             Built w/OpenSSL 1.0.2g  1 Mar 2016

             Running w/OpenSSL 1.0.2g  1 Mar 2016

             Built w/zlib 1.2.8

             Running w/zlib 1.2.8

             CMU Sieve 2.4

             mmap = shared

             lock = fcntl

             nonblock = ioctl

             idle = idled


root@bm1604:~# telnet localhost 1143

Connected to localhost.

Escape character is '^]'.

* OK [CAPABILITY IMAP4rev1 LITERAL+ ID ENABLE STARTTLS AUTH=PLAIN 
SASL-IR] server ready


. login t...@ex2016.vmw xx

. OK [CAPABILITY IMAP4rev1 LITERAL+ ID ENABLE ACL RIGHTS=kxten 
QUOTA MAILBOX-REFERRALS NAMESPACE UIDPLUS NO_ATOMIC_RENAME UNSELECT 
CHILDREN MULTIAPPEND BINARY CATENATE CONDSTORE ESEARCH SEARCH=FUZZY 
SORT SORT=MODSEQ SORT=DISPLAY SORT=UID THREAD=ORDEREDSUBJECT 
THREAD=REFERENCES THREAD=REFS ANNOTATEMORE ANNOTATE-EXPERIMENT-1 
METADATA LIST-EXTENDED LIST-STATUS LIST-MYRIGHTS LIST-METADATA 
WITHIN QRESYNC SCAN XLIST XMOVE MOVE SPECIAL-USE CREATE-SPECIAL-USE 
DIGEST=SHA1 X-REPLICATION URLAUTH URLAUTH=BINARY LOGINDISABLED 
COMPRESS=DEFLATE X-QUOTA=STORAGE X-QUOTA=MESSAGE 
X-QUOTA=X-ANNOTATION-STORAGE X-QUOTA=X-NUM-FOLDERS IDLE] User 
logged in SESSIONID=


. select inbox

* BYE Fatal error: Internal error: assertion failed: 
imap/message.c: 4246: !message_need(m, M_RECORD)


Connection closed by foreign host.


Trying to reconstruct the mailbox does not help :

root@bm1604:~# /usr/lib/cyrus/sbin/reconstruct -rfxGROU t...@ex2016.vmw

t...@ex2016.vmw

The error is still here after that.

Any idea ?

Regards,

Thomas.




--
  Bron Gondwana
br...@fastmail.fm




--
  Bron Gondwana
br...@fastmail.fm




--
Nic bernstein...@onlight.com
Onlight, Inc.www.onlight.com
6525 W Bluemound Road, Suite 24   v. 414.272.4477
Milwaukee, Wisconsin  53213-4073


--
Nic Bernstein n...@onlight.com
Onlight, Inc. www.onlight.com
6525 W Bluemound Road, Suite 24   v. 414.272.4477
Milwaukee, Wisconsin  53213-4073

<>

Re: Internal error: assertion failed imap/message.c: 4246: !message_need(m, M_RECORD)

2018-07-26 Thread Nic Bernstein

Anthony,
I think this is a different error, just hitting the same assertion 
tripwire.  I'm getting a problem in reconstruct(8), but your is showing 
up in imapd.

    -nic

On 07/26/2018 04:16 AM, Anthony Prades via Cyrus-devel wrote:


Hi,

Same problem here.

Context:
Upgrade cyrus from 2.4.20 to Cyrus 3.0.7.
As our spool is very big, we plan to run reconstruct -V max in a 
second time as it seems to be possible from 2.5 
(https://www.cyrusimap.org/2.5/imap/release-notes/2.5/x/2.5.0.html).


After upgrade binaries, mailbox are available until we change a flag.
After changing a flag, mailbox is unavailable with message:
Jul 25 12:39:28 bluemind-debian cyrus/imap[9875]: Fatal error: 
Internal error: assertion failed: imap/message.c: 4286: 
!message_need(m, M_RECORD)
Jul 25 12:39:28 bluemind-debian cyrus/master[8463]: process 
type:SERVICE name:imap path:/usr/lib/cyrus/imapd age:0.138s pid:9875 
exited, status 75


To reproduce:
 - create a new mailbox using Cyrus 2.4.20: user/ad...@apr-vmnet.loc
 - put at least 2 messages - using LMTP:
# ls -l /var/spool/cyrus/data/mail/domain/a/apr-vmnet.loc/a/user/admin/
total 12
-rw--- 1 cyrus mail 1423 Jul 25 12:31 1.
-rw--- 1 cyrus mail 1425 Jul 25 12:31 2.

 - upgrade to cyrus 3.0.7
 - update flags on mail 1:
# telnet localhost 143
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ ID ENABLE AUTH=PLAIN SASL-IR] 
server ready

A1 LOGIN ad...@apr-vmnet.loc admin
A1 OK [CAPABILITY IMAP4rev1 LITERAL+ ID ENABLE ACL RIGHTS=kxten QUOTA 
MAILBOX-REFERRALS NAMESPACE UIDPLUS NO_ATOMIC_RENAME UNSELECT CHILDREN 
MULTIAPPEND BINARY CATENATE CONDSTORE ESEARCH SEARCH=FUZZY SORT 
SORT=MODSEQ SORT=DISPLAY SORT=UID THREAD=ORDEREDSUBJECT 
THREAD=REFERENCES THREAD=REFS ANNOTATEMORE ANNOTATE-EXPERIMENT-1 
METADATA LIST-EXTENDED LIST-STATUS LIST-MYRIGHTS LIST-METADATA WITHIN 
QRESYNC SCAN XLIST XMOVE MOVE SPECIAL-USE CREATE-SPECIAL-USE 
DIGEST=SHA1 X-REPLICATION URLAUTH URLAUTH=BINARY LOGINDISABLED 
X-QUOTA=STORAGE X-QUOTA=MESSAGE X-QUOTA=X-ANNOTATION-STORAGE 
X-QUOTA=X-NUM-FOLDERS IDLE] User logged in 
SESSIONID=

A2 SELECT INBOX
* 2 EXISTS
* 0 RECENT
* FLAGS (\Answered \Flagged \Draft \Deleted \Seen)
* OK [PERMANENTFLAGS (\Answered \Flagged \Draft \Deleted \Seen \*)] Ok
* OK [UNSEEN 1] Ok
* OK [UIDVALIDITY 1532514648] Ok
* OK [UIDNEXT 3] Ok
* OK [HIGHESTMODSEQ 3] Ok
* OK [URLMECH INTERNAL] Ok
* OK [ANNOTATIONS 65536] Ok
A2 OK [READ-WRITE] Completed
A3 STORE 1 +FLAGS \Flagged
* 1 FETCH (FLAGS (\Flagged))
A3 OK Completed
A4 LOGOUT
* BYE LOGOUT received
A4 OK Completed
Connection closed by foreign host.

 - select INBOX:
# telnet localhost 143
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ ID ENABLE AUTH=PLAIN SASL-IR] 
server ready

A1 LOGIN ad...@apr-vmnet.loc admin
A1 OK [CAPABILITY IMAP4rev1 LITERAL+ ID ENABLE ACL RIGHTS=kxten QUOTA 
MAILBOX-REFERRALS NAMESPACE UIDPLUS NO_ATOMIC_RENAME UNSELECT CHILDREN 
MULTIAPPEND BINARY CATENATE CONDSTORE ESEARCH SEARCH=FUZZY SORT 
SORT=MODSEQ SORT=DISPLAY SORT=UID THREAD=ORDEREDSUBJECT 
THREAD=REFERENCES THREAD=REFS ANNOTATEMORE ANNOTATE-EXPERIMENT-1 
METADATA LIST-EXTENDED LIST-STATUS LIST-MYRIGHTS LIST-METADATA WITHIN 
QRESYNC SCAN XLIST XMOVE MOVE SPECIAL-USE CREATE-SPECIAL-USE 
DIGEST=SHA1 X-REPLICATION URLAUTH URLAUTH=BINARY LOGINDISABLED 
X-QUOTA=STORAGE X-QUOTA=MESSAGE X-QUOTA=X-ANNOTATION-STORAGE 
X-QUOTA=X-NUM-FOLDERS IDLE] User logged in 
SESSIONID=

A2 SELECT INBOX
* BYE Fatal error: Internal error: assertion failed: imap/message.c: 
4286: !message_need(m, M_RECORD)

Connection closed by foreign host.

Running reconstruct -V max on this mailbox fix the problem but we 
loose mail 2 flags as it is rediscovered:

# reconstruct -V max user/ad...@apr-vmnet.loc
apr-vmnet.loc!user.admin: update uniqueid from header (null) => 
5d0161495b585158

apr-vmnet.loc!user.admin uid 2 rediscovered - appending
apr-vmnet.loc!user.admin updating quota_mailbox_used: 4273 => 2848
apr-vmnet.loc!user.admin: updating exists 3 => 2
apr-vmnet.loc!user.admin: updating sync_crc 3520663294 => 4247682740
user/ad...@apr-vmnet.loc
Repacked user/ad...@apr-vmnet.loc to version 13

# ls -l /var/spool/cyrus/data/mail/domain/a/apr-vmnet.loc/a/user/admin/
total 16
-rwxr-x--- 1 cyrus mail 1423 Jul 25 12:31 1.
-rwxr-x--- 1 cyrus mail 1425 Jul 25 12:31 3.

Anthony

On 07/24/2018 07:10 PM, Nic Bernstein wrote:

Bron, et al.,
Was this change ever cherry-picked to 3.0?  I am seeing the same 
issue with recent 3.0 HEAD, but slightly different location:


user.masked: updating sync_crc 521983118 => 503807715
fatal error: Internal error: assertion failed: imap/message.c:
4286: !message_need(m, M_RECORD)

A git log of imap/message.c doesn't show a commit from 1/2/2017, and 
nothing affecting imap/message.c around that time seems to line up 
with this.


Please advise,
    -nic

On 01/02/2017 07:13 AM, Bron Gondwana via Cyrus-deve

Re: Internal error: assertion failed imap/message.c: 4246: !message_need(m, M_RECORD)

2018-07-24 Thread Nic Bernstein

Bron, et al.,
Was this change ever cherry-picked to 3.0?  I am seeing the same issue 
with recent 3.0 HEAD, but slightly different location:


   user.masked: updating sync_crc 521983118 => 503807715
   fatal error: Internal error: assertion failed: imap/message.c: 4286:
   !message_need(m, M_RECORD)

A git log of imap/message.c doesn't show a commit from 1/2/2017, and 
nothing affecting imap/message.c around that time seems to line up with 
this.


Please advise,
    -nic

On 01/02/2017 07:13 AM, Bron Gondwana via Cyrus-devel wrote:
Thanks for the data.  It was 8 bytes of zeros across a UID and 
INTERNALDATE in the cyrus.index file.


I now have a fixed reconstruct which can detect and repair this rather 
than aborting, pushed to master.
I also have a Cassandane testcase for this and a couple of other 
things that reconstruct does :)


Bron.

On Thu, 29 Dec 2016, at 09:45, Bron Gondwana via Cyrus-devel wrote:
Wow, interesting.  Are you willing to send me a tarball containing 
the spool folder including cyrus.index and cyrus.cache files as well 
as the email files themselves?  I'll need your imapd.conf file as well :)


Cheers,

Bron.


On Thu, 29 Dec 2016, at 00:28, Thomas Cataldo via Cyrus-devel wrote:

Hi,

Running a build of 3.0.0-beta6 I hit the following assertion on one 
of my test mailboxes after playing a bit with the replication stuff :


root@bm1604:~# /usr/lib/cyrus/sbin/sync_client -n eclipse -o -u 
t...@ex2016.vmw


Fatal error: Internal error: assertion failed: imap/message.c: 4246: 
!message_need(m, M_RECORD)


root@bm1604:~# cyradm -u admin0 localhost

Password:

localhost> version

name       : Cyrus IMAPD

version    : 3.0.0-beta6-3-gf721e5b

vendor     : Project Cyrus

support-url: http://www.cyrusimap.org

os         : Linux

os-version : 4.4.0-57-generic

environment: Built w/Cyrus SASL 2.1.26

             Running w/Cyrus SASL 2.1.26

             Built w/OpenSSL 1.0.2g  1 Mar 2016

             Running w/OpenSSL 1.0.2g  1 Mar 2016

             Built w/zlib 1.2.8

             Running w/zlib 1.2.8

             CMU Sieve 2.4

             mmap = shared

             lock = fcntl

             nonblock = ioctl

             idle = idled


root@bm1604:~# telnet localhost 1143

Connected to localhost.

Escape character is '^]'.

* OK [CAPABILITY IMAP4rev1 LITERAL+ ID ENABLE STARTTLS AUTH=PLAIN 
SASL-IR] server ready


. login t...@ex2016.vmw xx

. OK [CAPABILITY IMAP4rev1 LITERAL+ ID ENABLE ACL RIGHTS=kxten QUOTA 
MAILBOX-REFERRALS NAMESPACE UIDPLUS NO_ATOMIC_RENAME UNSELECT 
CHILDREN MULTIAPPEND BINARY CATENATE CONDSTORE ESEARCH SEARCH=FUZZY 
SORT SORT=MODSEQ SORT=DISPLAY SORT=UID THREAD=ORDEREDSUBJECT 
THREAD=REFERENCES THREAD=REFS ANNOTATEMORE ANNOTATE-EXPERIMENT-1 
METADATA LIST-EXTENDED LIST-STATUS LIST-MYRIGHTS LIST-METADATA 
WITHIN QRESYNC SCAN XLIST XMOVE MOVE SPECIAL-USE CREATE-SPECIAL-USE 
DIGEST=SHA1 X-REPLICATION URLAUTH URLAUTH=BINARY LOGINDISABLED 
COMPRESS=DEFLATE X-QUOTA=STORAGE X-QUOTA=MESSAGE 
X-QUOTA=X-ANNOTATION-STORAGE X-QUOTA=X-NUM-FOLDERS IDLE] User logged 
in SESSIONID=


. select inbox

* BYE Fatal error: Internal error: assertion failed: imap/message.c: 
4246: !message_need(m, M_RECORD)


Connection closed by foreign host.


Trying to reconstruct the mailbox does not help :

root@bm1604:~# /usr/lib/cyrus/sbin/reconstruct -rfxGROU t...@ex2016.vmw

t...@ex2016.vmw

The error is still here after that.

Any idea ?

Regards,

Thomas.




--
  Bron Gondwana
  br...@fastmail.fm




--
  Bron Gondwana
  br...@fastmail.fm




--
Nic Bernstein n...@onlight.com
Onlight, Inc. www.onlight.com
6525 W Bluemound Road, Suite 24   v. 414.272.4477
Milwaukee, Wisconsin  53213-4073

<>

Using LDAP with Cyrus [was: Re: [Diffusion] [Committed] rI0b8b7ab02b36: Documentated several saslauthd ldap options.]

2018-03-13 Thread Nic Bernstein

Dan,
I am trying for the first time to set up Cyrus (3.0.4 & 3.0.5) with 
ptloader, sasl auxprop, etc.  Even though I've used LDAP for many years, 
I've only ever used saslauthd with mech=ldap or mech=pam, and a fairly 
simple configuration.  For example:


   ldap_servers: ldapi://%2fvar%2frun%2fopenldap%2fldapi
   ldap_bind_dn: cn=proxyUser,ou=systems,dc=example,dc=com
   ldap_bind_pw: secret
   ldap_filter: 
(|(&(|(uid=%u)(mail=%u)(mailRoutingAddress=%u))(objectClass=person))(&(cn=%u)(objectClass=organizationalRole)))
   ldap_search_base: dc=example,dc=com

When I search my archive of the cyrus-devel list, the only references to 
ldap in the subjects are you making some commits to the old Phabricator 
system.  Unfortunately all of the associated tracking from that era is 
gone.  Could you perhaps provide some guidance on this? (see below)  
I've looked in the modern-day equivalent to the affected documents 
listed below, but don't see many notes on LDAP.


I was hoping to write up some comprehensive documentation on using LDAP 
with Cyrus, as there is currently nothing beyond the imapd.conf(5) man 
page.  Any help you could provide would be most welcome.  The only 
cogent examples I find online are all from you, but are many years old, 
so I have no frame of reference as to how accurate they still are.  If 
you would prefer to discuss this off-list, or via phone, please advise.


Specifically, I am trying to configure so that users may authenticate 
with either just UID (i.e. "nic") or email address (i.e. 
"n...@onlight.com").  The saslauthd example shown above does just this, 
but Cyrus still only works with the simple user ID, not the email 
address, which is what leads me to trying ptloader and auxprop.


Anyone else,
I would welcome working LDAP configuration examples from any and all, 
just remember to obfuscate or remove any security information.


Thanks in advance,
    -nic

On 03/14/2016 02:52 AM, Phabricator wrote:

Dan White <dwh...@olp.net> committed rI0b8b7ab02b36: Documentated several saslauthd 
ldap options. (authored by Dan White <dwh...@olp.net>).
Herald added auditors: Documentation.

Documentated several saslauthd ldap options.


AFFECTED FILES
   /doc/Administrator_Guide/en-US/Administrator_Guide.xml
   /doc/Administrator_Guide/en-US/appe-Mailbox_Distribution.xml
   /doc/Administrator_Guide/en-US/part-Configuration_Reference.xml
   /doc/Deployment_Guide/Makefile
   /doc/Deployment_Guide/en-US/Deployment_Guide.xml
   /doc/Deployment_Guide/en-US/Deployment_Scenarios.xml
   /doc/Deployment_Guide/en-US/Performance_Recommendations.xml

USERS
   Documentation (Auditor)

COMMIT
   https://git.cyrus.foundation/rI0b8b7ab02b36

EMAIL PREFERENCES
   https://git.cyrus.foundation/settings/panel/emailpreferences/

To: davies, nicolan, onlight, amor, admin, vanmeeuwen


--

Nic bernstein...@onlight.com
Onlight Inc.www.onlight.com
6525 W Bluemound Rd., Ste 24  v. 414.272.4477
Milwaukee, Wisconsin  53213-4073  f. 414.290.0335

<>

Re: Xapian partition definition when using archiving?

2017-12-29 Thread Nic Bernstein

Ellie,
Thanks for weighing in on this, and for doing so on a weekend! :-)

I've just pushed some documentation edits in PR #2224 as a first attempt 
at clarifying this stuff.


Cheers,
    -nic

On 12/28/2017 09:22 PM, ellie timoney wrote:
> It's really the default search tier to use, and has no direct 
relationship to the "default" partition.


Yep, or at least, this is my understanding too.

> In other words, this is just another circumstance where seemingly 
obvious partition names (like default-default) get us into 
documentation trouble.  Right?


We trip over this all the time... and it's hard to document because 
the trivial case and the complicated cases are so divergent.  Even at 
FM, where our setup is pretty advanced, it's still relatively simple, 
in that we only have a single partition-/name/ entry ("default") per 
Cyrus instance.  So all of our /foo/partition-/name/ settings are 
/foo/partition-default!


I guess what I'm getting at is there's a few dimensions of complexity 
here.  I think the "multiple-named-partitions" dimension of complexity 
might be reasonably well documented, but then each additional 
dimension (e.g. archive partitions, search tiers, etc) is only 
documented for the single-named-default-partition case.


It'd be great if the documentation could move away from the "single 
partition is named 'default'" scheme -- I think that would ease a LOT 
of confusion for people trying to understand the different dimensions 
all at once.  But I don't really have any ideas for what might be a 
better name for it.  I haven't seen real-world multi-partition Cyrus 
instances, so I don't know the use cases for having multiple 
partitions, so it's hard to suggest a good name for someone's first 
and maybe only partition.


Cheers,

ellie

On Fri, Dec 29, 2017, at 4:47 AM, Nic Bernstein wrote:

Bron, et al.,
Okay, one more time around on this.  When I try a version of the 
partition layout listed below, in my original post, and run "cyr_info 
conf-lint" against it, I get all of the "/yadda/searchtier: blah" 
lines thrown back at me.  I had assumed that "/default/searchtier: 
blah" was to specify to which tier to index the default partition, 
but that's wrong, isn't it?  It's really the default search tier to 
use, and has no direct relationship to the "default" partition.


Am I correct in this new interpretation?  It is implied by the man 
page for imapd.conf (derived from lib/imapoptions):


   defaultsearchtier: 
   Name of the default tier that messages will be indexed to. 
Search indexes can be organized in tiers to allow index
   storage in different directories and physical media. See the man 
page of squatter for details. The default  search
   tier also requires the definition of an according 
searchtierpartition-name entry.

   This option MUST be specified for xapian search.
...
   searchtierpartition-name: 
   The  pathname where to store the xapian search indexes of 
searchtier for mailboxes of partition name. This must be
   configured for the defaultsearchtier and any additional search 
tier (see squatter for details).

   For example: if defaultpartition is defined as part1 and 
defaultsearchtier as tier1 then  the  configuration  must
   contain  an  entry tier1partitionname-part1 that defines the 
path where to store this tier1's search index for the
   part1 partition.

   This option MUST be specified for xapian search.

This is all so muddled, due to the use of the word "default" as an 
embedded string within so many settings, some of which refer to a 
default value and some of which refer to a partition called 
"default".  I really think we need to go through the documentation 
from top to bottom and weed out such confusing language.  The same is 
true for the various uses of the word "archive" and some others.  
This sort of thing is clearly leading to some folks just giving up on 
complex Cyrus features, the implementation of which depend upon 
piercing the veil of confusion surround this language (he says in 
frustration).


Oh, and that imapd.conf(5) comment "(see sqautter for details)" is 
useless, as the squatter(8) man page says nothing about this (damn 
manpage writers!).


Thanks in advance,
    -nic


On 12/20/2017 04:04 PM, Bron Gondwana wrote:
Totally!  The name "archive" is overused.  It could be called 
something else easily enough.


Bron.


On Thu, 21 Dec 2017, at 01:05, Nic Bernstein wrote:

Bron,
Thanks for the swift reply. So if I understand this correctly, the 
"archivesearchpartition-default" is named such because it's for the 
archive location of Xapian search data, not because it's Xapian 
search data from an Archive partition.  Is that correct?  In other 
words, this

Re: Xapian partition definition when using archiving?

2017-12-28 Thread Nic Bernstein

Bron, et al.,
Okay, one more time around on this.  When I try a version of the 
partition layout listed below, in my original post, and run "cyr_info 
conf-lint" against it, I get all of the "/yadda/searchtier: blah" lines 
thrown back at me.  I had assumed that "/default/searchtier: blah" was 
to specify to which tier to index the default partition, but that's 
wrong, isn't it?  It's really the default search tier to use, and has no 
direct relationship to the "default" partition.


Am I correct in this new interpretation?  It is implied by the man page 
for imapd.conf (derived from lib/imapoptions):


  defaultsearchtier: 
  Name of the default tier that messages will be indexed to. Search 
indexes can be organized in tiers to allow index
  storage in different directories and physical media. See the man 
page of squatter for details. The default  search
  tier also requires the definition of an according 
searchtierpartition-name entry.

  This option MUST be specified for xapian search.
...
  searchtierpartition-name: 
  The  pathname where to store the xapian search indexes of 
searchtier for mailboxes of partition name. This must be
  configured for the defaultsearchtier and any additional search 
tier (see squatter for details).

  For example: if defaultpartition is defined as part1 and 
defaultsearchtier as tier1 then  the  configuration  must
  contain  an  entry tier1partitionname-part1 that defines the path 
where to store this tier1's search index for the
  part1 partition.

  This option MUST be specified for xapian search.

This is all so muddled, due to the use of the word "default" as an 
embedded string within so many settings, some of which refer to a 
default value and some of which refer to a partition called "default".  
I really think we need to go through the documentation from top to 
bottom and weed out such confusing language.  The same is true for the 
various uses of the word "archive" and some others. This sort of thing 
is clearly leading to some folks just giving up on complex Cyrus 
features, the implementation of which depend upon piercing the veil of 
confusion surround this language (he says in frustration).


Oh, and that imapd.conf(5) comment "(see sqautter for details)" is 
useless, as the squatter(8) man page says nothing about this (damn 
manpage writers!).


Thanks in advance,
    -nic

On 12/20/2017 04:04 PM, Bron Gondwana wrote:
Totally!  The name "archive" is overused.  It could be called 
something else easily enough.


Bron.


On Thu, 21 Dec 2017, at 01:05, Nic Bernstein wrote:

Bron,
Thanks for the swift reply.  So if I understand this correctly, the 
"archivesearchpartition-default" is named such because it's for the 
archive location of Xapian search data, not because it's Xapian 
search data from an Archive partition.  Is that correct?  In other 
words, this is just another circumstance where seemingly obvious 
partition names (like default-default) get us into documentation 
trouble.  Right?


Thanks again,
    -nic


On 12/20/2017 05:39 AM, Bron Gondwana wrote:

Hi Nic,

The Xapian partitions are entirely separate from archive 
partitions.  The indexing code will find the file in the correct 
location if it needs to read it.


Here's an example from one of our servers:

defaultpartition: default
defaultsearchtier: temp
partition-default: /mnt/ssd21d2/sloti21d2t40/store254/spool
tempsearchpartition-default: /tmpfs-search/sloti21d2t40
metasearchpartition-default: /mnt/ssd21d2/sloti21d2t40/store254/search
datasearchpartition-default: 
/mnt/i21d2search/sloti21d2t40/store254/search
archivesearchpartition-default: 
/mnt/i21d2search/sloti21d2t40/store254/search-archive
archivepartition-default: 
/mnt/i21d2t40/sloti21d2t40/store254/spool-archive


(clearly auto-generated!)

Bron.


On Wed, 20 Dec 2017, at 07:32, Nic Bernstein wrote:

Bron, et al.,
We're about to set up a whole new bunch of partitions in support of 
Xapian indexing, for a 2.5.10-to-3.0.4 upgrade, and then will be 
introducing archive functionality, too.  How do archive partitions 
and Xapian partitions interact?


For example, the server currently has the following in imapd.conf:

defaultpartition: default
partition-default: /var/mailstores/default
metapartition-default: /var/imapmeta/default
partition-1: /var/mailstores/1
partition-2: /var/mailstores/2
partition-3: /var/mailstores/3
partition-4: /var/mailstores/4
...
partition-29: /var/mailstores/29
partition-30: /var/mailstores/30
partition-100: /var/mailstores/100
partition-temp: /var/mailstores/temp
...
# non-default metapartitions
metapartition-1: /var/imapmeta/1
metapartition-2: /var/imapmeta/2
metapartition-3: /var/imapmeta/3
metapa

Xapian partition definition when using archiving?

2017-12-19 Thread Nic Bernstein

Bron, et al.,
We're about to set up a whole new bunch of partitions in support of 
Xapian indexing, for a 2.5.10-to-3.0.4 upgrade, and then will be 
introducing archive functionality, too.  How do archive partitions and 
Xapian partitions interact?


For example, the server currently has the following in imapd.conf:

   defaultpartition: default
   partition-default: /var/mailstores/default
   metapartition-default: /var/imapmeta/default
   partition-1: /var/mailstores/1
   partition-2: /var/mailstores/2
   partition-3: /var/mailstores/3
   partition-4: /var/mailstores/4
   ...
   partition-29: /var/mailstores/29
   partition-30: /var/mailstores/30
   partition-100: /var/mailstores/100
   partition-temp: /var/mailstores/temp
   ...
   # non-default metapartitions
   metapartition-1: /var/imapmeta/1
   metapartition-2: /var/imapmeta/2
   metapartition-3: /var/imapmeta/3
   metapartition-4: /var/imapmeta/4
   ...
   metapartition-29: /var/imapmeta/29
   metapartition-30: /var/imapmeta/30
   metapartition-100: /var/imapmeta/100
   metapartition-temp: /var/imapmeta/temp

Going by the documentation, which I wrote with help from you good folk 
at Fastmail, the Archive partition scheme might look something like this:

https://www.cyrusimap.org/imap/reference/admin/locations/archive-partitions.html

   archivepartition-default: /var/mailarchives/default
   archivepartition-1: /var/mailarchives/1
   archivepartition-2: /var/mailarchives/2
   archivepartition-3: /var/mailarchives/3
   archiveartition-4: /var/mailarchives/4
   ...
   archivepartition-29: /var/mailarchives/29
   archivepartition-30: /var/mailarchives/30
   archivepartition-100: /var/mailarchives/100
   archivepartition-temp: /var/mailarchives/temp

And the Xapian partition structure to mate with this would look 
something like this (again, from the docs):

https://www.cyrusimap.org/imap/developer/install-xapian.html

   defaultpartition: default
   partition-default: /var/mailstores/default
   search_engine:xapian
   search_index_headers: no
   search_batchsize: 8192
   defaultsearchtier: t1
   1searchtier: t1
   2searchtier: t1
   3searchtier: t1
   4searchtier: t1
   ...
   29searchtier: t1
   30searchtier: t1
   100searchtier: t1
   tempsearchtier: t1
   ...
   t1searchpartition-default: /var/search/default
   t1searchpartition-1: /var/search/1
   t1searchpartition-2: /var/search/2
   t1searchpartition-3: /var/search/3
   t1searchpartition-4: /var/search/4
   ...
   t1searchpartition-29: /var/search/29
   t1searchpartition-30: /var/search/30
   t1searchpartition-100: /var/search/100
   t1searchpartition-temp: /var/search/temp

First question, since there's no examples to work from; Is this Xapian 
layout correct?


Do I need to define & create Xapian partitions for the metadata 
partitions, as is indirectly implied in Bron's original email on this topic:

https://lists.tartarus.org/pipermail/xapian-discuss/2014-October/009112.html

Also, how do these Xapian and Archive, interact?  Do I need to add a 
separate Xapian partition for each Archive partition, or will the 
Archive partition be treated like a child of the non-Archive partition?  
(again, implied but not directly addressed in that email).


Any guidance gladly accepted, and whatever I learn will be repackaged 
into more complete documentation on same.


Cheers,
    -nic

--
Nic Bernstein n...@onlight.com
Onlight, Inc. www.onlight.com
6525 W Bluemound Road, Suite 24   v. 414.272.4477
Milwaukee, Wisconsin  53213-4073

<>

Re: Notes 27/11

2017-11-28 Thread Nic Bernstein

Nicola,
Thanks for this write-up.  My comments interspersed, below...

On 11/27/2017 06:43 PM, Nicola Nye wrote:

Summary of feedback from the Write the Docs doc sprint last Friday.
http://www.writethedocs.org/conf/au/2017/

As mentioned, I had two users I was talking with. One is a technical 
writer and used to dealing with subject-specific terminology but  had 
no experience with mail systems. The other is an engineer who 
currently runs Dovecot for a side project and thinks he might have 
used Cyrus in the past.


*Front page*
Wall of text and acronyms. Intimidating.


I'm looking at the website (https://www.cyrusimap.org/) and I'm not 
seeing a lot of acronyms.  Were you referring to some other location?



  * Pull in content from the github readme that explains in simpler
language what Cyrus is



Yes!


  * Some images to break up the text and reinforce that Cyrus supports
not just mail, but calendaring and contacts on mobile too.



Yes!


  * Showcase places that Cyrus is being used. (If you're happy for
your organization name to appear in the docs, please let me know!
Optional: send me a logo and a link) This helps distinguish Cyrus
as mail software, not a mail hosting service.
  * If there's anyone who does professional services support for
Cyrus, make sure they're listed. (anyone? anyone?)



We do, we do!  Onlight, Inc. are an Internet consultancy, and Cyrus has 
been a focus of ours for over 20 years.

    http://www.onlight.com/products/email-groupware/


  * Explain target profile. "You want to run Cyrus if you want these
features, and you have this many mailboxes/users and you know what
you're doing with running/supporting a mail system. You do not
want to run Cyrus if: ..."



I think we've developed some verbiage on this, which we'll be happy to 
share.  I'll dig it up when I've got a chance.



*Navigation*
The top navigation bar confused users. They were expecting dropdown 
sub menu, but then there's also the left menu.


  * The top menu bar no longer needs to be there. It's a hangover from
when the left hand menu bar was a maze of twisty passages all
alike and I wanted a way to quickly help users find common entry
points.

The search box was overlooked.

  * I might make this bigger and/or put it in the top menu bar as the
only thing.

Confused by left hand menu ordering.

  * They both expected the Overview to come first, followed by
Quickstart, then Download, then Setup.
  * They did like the categorization of the top level menu hierarchy.
Easy to drill down one level.
  * Second level and beyond menu items were intimidating in many
places. Again, technical overwhelm.



I agree with all of this.  Reminds me of the late discussions we had 
whilst I was in Melbourne.



*Content*

  * Cyrus is not a complete solution on its own: you need other system
components (MTA: sendmail/postfix/exim/..., possibly webmail
interface).
  * Both users went looking for system requirements and couldn't find
a succinct list. I'll need to write this. (including content from
the above point)
  * They wanted to know if it could be run on vmware (or equivalent)
or cloud hosted.
  * Overview was deemed too technical.
  o The Overview/Features section was just okay
  o The Overview/Concepts section was more of a reference manual
than an explanation of ideas: need to review and split this apart.


The documentation has plenty of ways to evolve! If anyone is 
interested in helping out, do let me know.


I should be able to get back into this in the new year.  I've just 
completed an extraordinary season of travel, and have three Cyrus 
upgrades planned in the next month.  Come January, I should have a lot 
to say about upgrading and new feature deployment.



And if you know of anyone who

  * does professional Cyrus support, or



Ahem, 


  * uses Cyrus and is happy to have that listed on our site

drop me a line and I'll put you in.


Will see if any clients would not object to such a listing.

Cheers,
    -nic


Cheers,

    Nicola

On Mon, Nov 27, 2017, at 10:26 PM, Bron Gondwana wrote:

Present: Bron, Ken, Nicola, ellie

Bron:
* Lots of Xapian issues last week
* including seqset bug
* incorrect UID issue for per-user-data only updates with calendar 
events.
* index_snippets is keeping the mailbox locked while reading from 
disk and generating snippets, which can be slow and block out other 
actions.  We should find a solution to this.


Ken:
* working on docs for internals changes - sync, rename safety etc
* SASL - looks like Alexey is correct, and people were relying on 
buggy behaviour

* found a logic error with Bearer Token authentication.
* short week this week

Nicola:
* went to write-the-docs on Friday, single day conference
* didn't fix any doc bugs
* had people with mail server knowledge
  - used them as guinea-pigs to look at our existing docs
  - have notes which will write up and send to 

Won't make conference call...

2017-06-25 Thread Nic Bernstein

Cyrus friends,
Having just returned late from travels, I shan't make the meeting to 
commence in a mere 7hrs.  Please have productive fun in my absence.


Cheers,
-nic

--
Nic Bernstein n...@onlight.com
Onlight Inc.  www.onlight.com
6525 W Bluemound Rd., Ste 24  v. 414.272.4477
Milwaukee, Wisconsin  53213-4073  f. 414.290.0335



Re: [cyrusimap/cyrus-imapd] man cyradm: document getmd and setmd (#1965)

2017-05-18 Thread Nic Bernstein

Dillian,
Please read the very next sentence in the documentation: "To set 
annotations for another user you must *authorize* as that user." 
(emphasis added)


If the user invokes cyradm without a specific --authz parameter, they 
will automatically *authorize* with the same identity as they have 
*authenticated*.


Cheers,
-nic

PS - Please direct queries related to Cyrus directly to the list and not 
to my company email (which this is).


On 05/18/2017 11:23 AM, Дилян Палаузов wrote:

Hello Nic,

  Note, too, that "private" annotations are private to the user currently
  authenticated as, not necessarily the owner of the mailbox.

is this really the user who is authenticated, or the user who is 
authorized?  In terms of cyradm --user A --authz B, will setdm 
--private Spam "\\Junk" will set the special use for A or for B?


Greetings
  Dilian

On 05/18/17 18:02, Nic Bernstein wrote:
This is addressed in PR #1977 
<https://github.com/cyrusimap/cyrus-imapd/pull/1977>


—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub 
<https://github.com/cyrusimap/cyrus-imapd/issues/1965#issuecomment-302450965>, 
or mute the thread 
<https://github.com/notifications/unsubscribe-auth/AEwvsyktvWzEBcOYh98_-61B42jGbYypks5r7GukgaJpZM4NV59T>.




<>

How to prime user calendars in Cyrus 3?

2017-05-04 Thread Nic Bernstein

Ken,
I'm back to the project of trying to migrate my own Cal/CardDav users 
from DaviCal to Cyrus 3.  Problem I'm faced with is that other than 
myself, my users do not have #calendars or #addressbooks in the Cyrus 
mail store.  Thus my migration script fails, as destination collections 
do not exist.


I do have "|caldav_create_default:| 1" set, but when pointing a browser 
to "http://newjiji:8008/dav/calendars/user/" for users who don't 
already have the collections created, I get a 404 error "Mailbox does 
not exist."


So my question is, how does one get these users primed?  My migration 
scripts use the administrative user to connect and perform the work, so 
such connection is not happening as the user themselves.  If my only 
recourse is to make each user connect a calendar client, then I'll do 
that, but I don't think that scales well.


My concern here is dealing with sites which, like our own, have already 
deployed a CalDav solution and are looking to migrate to the inbuilt 
solution on Cyrus.


Any thoughts?

Cheers,
-nic

--
Nic Bernstein n...@onlight.com
Onlight, Inc. www.onlight.com
6525 W Bluemound Road, Suite 24   v. 414.272.4477
Milwaukee, Wisconsin  53213-4073

<>

Re: RPM packaging help sought

2017-04-05 Thread Nic Bernstein

Pavel,
Could you send us a copy of your spec file, so we can get this into our 
testing rig?  Please send to myself or Nicola.

-nic

On 04/06/2017 03:31 PM, Pavel Zhukov wrote:

Hi,
I'm working on update in Fedora. 
https://bugzilla.redhat.com/show_bug.cgi?id=1435623
It should land in rawhide soon and hopefully in will be included in next
Fedora release (F27).

Nic Bernstein <n...@onlight.com> writes:

Cyrus IMAP Friends,
We're preparing a small set of "official" Cyrus IMAP packages for the
purposes of bootstrapping adoption of 3.0 within the community of
people loathe to install from source.

We've got packages for Ubuntu (Xenial) and Debian (Jessie) but would
appreciate if someone with recent RPM building experience would be
willing to step up and prepare the appropriate spec file for modern
Fedora/RHEL/CentOS and related distros.

It's not our goal to supplant vendor-supplied packages.  We merely
want to leapfrog the current situation where we want folks to be using
Cyrus IMAP 3.0.0 as soon as possible, but there are no packages
available to start with.

Please respond to the list, or to myself or Nicola Nye
<nico...@fastmail.com>.

Thanks in advance,
 -nic


--
Nic Bernstein n...@onlight.com
Onlight Inc.  www.onlight.com
6525 W Bluemound Rd., Ste 24  v. 414.272.4477
Milwaukee, Wisconsin  53213-4073  f. 414.290.0335



Re: cyrus 2.5, 3.0 and DAV

2017-04-03 Thread Nic Bernstein

Dilia,
Thanks for your notes.  I'm forwarding this to the cyrus-devel list, as 
I don't have answers for all of this.  Please submit any further 
documentation notes to the mailing list for action, or open an issue on 
github:

https://github.com/cyrusimap/cyrus-imapd/issues

Cheers,
-nic

On 04/04/2017 05:05 AM, Дилян Палаузов wrote:

Some other DAV related questions:

https://cyrusimap.org/imap/rfc-support.html should not mention RFC 
2445, as it is obsoleted by RFC 5545.


https://cyrusimap.org/imap/rfc-support.html mentions 
draft-daboo-calendar-availability and the latter is superseded by 
RFC7953.  If Cyrus does support the draft, but not the RFC, please 
make this clear at the abovementioned address.


Likewise for RFC7953 and draft-ietf-calext-availability .

2.5/docs/specs.html and https://cyrusimap.org/imap/rfc-support.html 
mention "RFC 6231 xCal: The XML Format for Icalendar", but the xcal 
rfc is 6321.


Why does https://cyrusimap.org/imap/rfc-support.html end with:

RFC Wishlist
RFC 6851

Internet Message Access Protocol (IMAP) - MOVE Extension

New in version 2.5.0.

Is RFC6851 in the wishlist, or is implemented in 2.5?

Do RFC6715, RFC 7986, RFC 6474, RFC 6473 require any changes on the 
server side, in terms of grammar parsing, in order to be supported?


Can you document under "Features' what is supported at 
Dav/Caldav/Carddav level and what is not supported?


In particular CardDav 4.0, WebDav (CardDav + CalDav) resource sharing, 
as discussed at https://evertpot.com/webdav-caldav-carddav-sharing/ 
and the mentioned drafts


E.g. I know that in 2.5 the non-standard apple calendar colors can be 
set and CardDav 4.0 is not supported, but this is nowhere documented. 
As for Carddav 4.0, which is RFC 6350, it is mentioned under 
2.5/docs/specs.html, but CardBook does not work, if I specify, that my 
address book is 4.0, it works when I enter 3.0. My experience with 
CardBook is that it works reliably, so I guess the 4.0 problem is on 
cyrus side.


Greetings
  Dilia

On 04/03/2017 08:19 PM, Дилян Палаузов wrote:

Hello,

docsrc/imap/concepts/features/dav-collection-mgmt.rst is rendered at
https://cyrusimap.org/imap/concepts/features/dav-collection-mgmt.html as
"https:///dav/calendars/user/%3Cusername%3E". Yo mean
probably  and an obligatory terminating slash.

This happens also for the addressbooks URL.

At the header of the page is written:

"Calendars and addressbooks are maintained as “Collections” within the
Cyrus mail store. They appear as mailboxes within the heirarchy, as set
by the calendarprefix: option in imapd.conf(5) (default is #calendars),
but should rarely be directly manipulated using either cyradm(8) or
other mailbox-centric tools."

If claendarprefix is mentioned, so must be addressbookprefix.

Greetings
  Dilian


--
Nic Bernstein n...@onlight.com
Onlight Inc.  www.onlight.com
6525 W Bluemound Rd., Ste 24  v. 414.272.4477
Milwaukee, Wisconsin  53213-4073  f. 414.290.0335



Re: Typo in quota.h or imapoptions?

2017-01-19 Thread Nic Bernstein via Cyrus-devel

Thanks, will update accordingly.
-nic

On 01/19/2017 05:43 PM, Bron Gondwana via Cyrus-devel wrote:

The code is correct, so quotas.db.

Bron.


On Fri, 20 Jan 2017, at 09:16, Nic Bernstein via Cyrus-devel wrote:

Folks,
cyrus-imapd/lib/imapoptions (line 1655) says this:

{ "quota_db_path", NULL, STRING }
/* The absolute path for the quota database (if you choose a single-file
quota DB type - or the base path if you choose quotalegacy).  If
not specified will be confdir/*quota.db*  or confdir/quota/ */

but cyrus-imapd/imap/quota.h (line 55) says this:

#define FNAME_QUOTADB "/*quotas.db*"

Which should it be?
-nic

--
Nic bernstein...@onlight.com <mailto:n...@onlight.com>
Onlight, Inc.www.onlight.com <http://www.onlight.com>
6525 W Bluemound Road, Suite 24   v. 414.272.4477
Milwaukee, Wisconsin  53213-4073

Email had 1 attachment:

 *
|nic.vcf|
  1k (text/x-vcard)



--
  Bron Gondwana
  br...@fastmail.fm




--
Nic Bernstein n...@onlight.com
Onlight Inc.  www.onlight.com
6525 W Bluemound Rd., Ste 24  v. 414.272.4477
Milwaukee, Wisconsin  53213-4073  f. 414.290.0335



Quota namespace questions

2017-01-18 Thread Nic Bernstein via Cyrus-devel

Friends,
I'm working on documentation for various things Quota related, and find 
that I'm a little confused about the "quota namespace."  It appears 
that, due to the second argument in 
"mboxname_init_namespace(_namespace, 1)" (quota.c:176) that quota 
operations don't use 'altnamespace':


namespace->isadmin = isadmin;

namespace->hier_sep =
config_getswitch(IMAPOPT_UNIXHIERARCHYSEP) ? '/' : '.';
namespace->isalt = !isadmin && config_getswitch(IMAPOPT_ALTNAMESPACE);

namespace->accessible[NAMESPACE_INBOX] = 1;
namespace->accessible[NAMESPACE_USER] = 
!config_getswitch(IMAPOPT_DISABLE_USER_NAMESPACE);
namespace->accessible[NAMESPACE_SHARED] = 
!config_getswitch(IMAPOPT_DISABLE_SHARED_NAMESPACE);

if (namespace->isalt) {
   ...
}

else {
/* standard namespace */
sprintf(namespace->prefix[NAMESPACE_INBOX], "%s%c",
"INBOX", namespace->hier_sep);
sprintf(namespace->prefix[NAMESPACE_USER], "%s%c",
"user", namespace->hier_sep);
strcpy(namespace->prefix[NAMESPACE_SHARED], "");
}

return 0;
   }

Am I reading that right (hint: not a C programmer)?  But it also looks 
to me like it should still use '/' as the hierarchy separator, right?


That's not what I'm seeing in my quota_db.  I started with a system with 
no quotas.  The old configuration used quotalegacy, so when I added some 
quotas, they ended up in /var/lib/imap/quota...:


   # cyradm -U cyrus localhost
   Password:
   localhost> sq user/nic STORAGE 2000
   localhost> sq user/tim STORAGE 2000
   localhost> sq user/crystal STORAGE 2000
   localhost> sq user/nic X-NUM-FOLDERS 1000
   localhost> quit

   # head /var/lib/imap/quota/*/*
   ==> /var/lib/imap/quota/H/user.crystal <==
   %(S (1190064060 2000) M (13742) AS (3) NF (15))

   ==> /var/lib/imap/quota/K/user.tim <==
   %(S (401903846 2000) M (7308) AS (2) NF (8))

   ==> /var/lib/imap/quota/N/user.nic <==
   %(S (1484883490) M (36930) AS (18) NF (42 1000))

I then used cvt_cyrusdb to convert from quotalegacy to twoskip, and I 
still am seeing the netnews separator, rather than unix, both in the 
quota_db and in the output from "quota -f":


   # strings /tmp/quota.db
   twoskip file
   user.crystal%(S (1190064060 2000) M (13742) AS (3) NF (15))
   user.nic%(S (1484883490 2000) M (36930) AS (18) NF (42))
   user.tim%(S (401903846 2000) M (7308) AS (2) NF (8))$

   # su cyrus -c "cyrus quota -f"
   Quota   % Used Used Resource Root
 20005  1162171  STORAGE user.crystal
 13742  MESSAGE user.crystal
 0 X-ANNOTATION-STORAGE user.crystal
15X-NUM-FOLDERS user.crystal
   1450081  STORAGE user.nic
 36930  MESSAGE user.nic
 0 X-ANNOTATION-STORAGE user.nic
10004   42X-NUM-FOLDERS user.nic
 20001   392484  STORAGE user.tim
  7308  MESSAGE user.tim
 0 X-ANNOTATION-STORAGE user.tim
 8X-NUM-FOLDERS user.tim


Now to be clear, I have no problem with this if it works, but I'm 
concerned about confusing administrators.


We already have the task of teaching existing Cyrus admins about all of 
the ramifications of converting to 'altnamespace: on' and 
'unixhierarchysep: on' as the new defaults.  This brings a new "but not 
here" context on top of it.


Similarly, for new folks, who don't know or care about historical 
legacies, we need to explain that while they're used to using slash "/" 
they won't see that from "quota" runs, or when they go poking around to 
repair quota problems.


I think I just need a good dose of cluefullness to proceed. :-)

Cheers,
-nic

PS - perl/imap/IMAP/Shell.pm POD info still says "The only I 
understood by B is C."  This needs updating (I'm happy 
to do this.)


--
Nic Bernstein n...@onlight.com
Onlight, Inc. www.onlight.com
6525 W Bluemound Road, Suite 24   v. 414.272.4477
Milwaukee, Wisconsin  53213-4073

<>

Update to cyr_info(8) to reflect "reid" command

2017-01-17 Thread Nic Bernstein via Cyrus-devel

On Friday Jan 13, at 09:12AM CST, Onlight wrote:
brong: or whomever, cyr_info appears to have a command "reid" which is 
not explained
in either the usage or man page.  The purpose seems to be to create a 
new UID for a given

mailbox.  Is that correct?  Shall I add that to the usage and man page?


On Sunday Jan 15, at 10:52PM CST, Bron wrote:
onlight: yeah, it creates a new uniqueid for the mailbox.  It's 
slightly buggy
it should be documented though.  It does indeed just give the mailbox 
a new uniqueid.  It doesn't fix up seen state for other people or 
anything like that


This is fixed in the following pull request #1798 
<https://github.com/cyrusimap/cyrus-imapd/pull/1798>

Add "reid" command information to cyr_info #1798

Cheers,
-nic

--
Nic Bernstein n...@onlight.com
Onlight, Inc. www.onlight.com
6525 W Bluemound Road, Suite 24   v. 414.272.4477
Milwaukee, Wisconsin  53213-4073

<>

Re: State of Perl scripts in tools, esp. in re: hash

2017-01-14 Thread Nic Bernstein via Cyrus-devel
After much git heroism (new desktop) a new version of translatesieve is 
available here:

https://github.com/cyrusimap/cyrus-imapd/pull/1792

Comments please, or merge.
-nic

On 01/13/2017 12:39 PM, Nic Bernstein via Cyrus-devel wrote:

On 01/13/2017 07:00 AM, Nic Bernstein via Cyrus-devel wrote:
I can (and, honestly, already have) fix translatesieve, and a similar 
fix can be added to upgradesieve or any other of these scripts.  I 
think rehash should be left alone, as anyone who's already used 
hashing has what they have, which means they may already have 
upper-case directories.  Let's not break that.


I'll have something committed in an hour or two.


Okay, that was a bogus claim.  Turns out translatesieve assumes that 
one needs adjust for both altnamespace AND unixhierarchysep. If you 
have already been using altnamespace, it borks up the sieve scripts 
mercilessly.  This requires a complete rewrite, which I've undertaken, 
so it won't be getting committed anytime soon. Hopefully this weekend :-)


Cheers,
-nic



--
Nic bernstein...@onlight.com
Onlight Inc.www.onlight.com
6525 W Bluemound Rd., Ste 24  v. 414.272.4477
Milwaukee, Wisconsin  53213-4073  f. 414.290.0335



Re: State of Perl scripts in tools, esp. in re: hash

2017-01-13 Thread Nic Bernstein via Cyrus-devel

On 01/13/2017 07:00 AM, Nic Bernstein via Cyrus-devel wrote:
I can (and, honestly, already have) fix translatesieve, and a similar 
fix can be added to upgradesieve or any other of these scripts.  I 
think rehash should be left alone, as anyone who's already used 
hashing has what they have, which means they may already have 
upper-case directories.  Let's not break that.


I'll have something committed in an hour or two.


Okay, that was a bogus claim.  Turns out translatesieve assumes that one 
needs adjust for both altnamespace AND unixhierarchysep.  If you have 
already been using altnamespace, it borks up the sieve scripts 
mercilessly.  This requires a complete rewrite, which I've undertaken, 
so it won't be getting committed anytime soon. Hopefully this weekend :-)


Cheers,
-nic

--
Nic Bernstein n...@onlight.com
Onlight, Inc. www.onlight.com
6525 W Bluemound Road, Suite 24   v. 414.272.4477
Milwaukee, Wisconsin  53213-4073

<>

Re: State of Perl scripts in tools, esp. in re: hash

2017-01-13 Thread Nic Bernstein via Cyrus-devel

Bron,
I'll agree that there are good reasons to keep this part (i.e. systems 
sans shebang):


   exec perl -x -S $0 ${1+"$@"} # -*-perl-*-

Or even to keep the second chunk, which searches for a Perl 5 interpreter:

   if ($] !~ /^5\..*/) {
  # uh-oh. this isn't perl 5.
  foreach (split(/:/, $ENV{PATH})) { # try to find "perl5".
exec("$_/perl5", "-x", "-S", $0, @ARGV) if (-x "$_/perl5");
  }
  # we failed. bail.
  die "Your perl is too old; I need perl 5.\n";
   }

But my argument in re: Perl5 being over 20 years old bears on that.

The ugly, gnarly part is the final eval blob to protect potential Perl 4 
users.


   # load the real script. this is isolated in an 'eval' so perl4 won't
   # choke on the perl5-isms.
   eval join("\n", );
   if ($@) { die "$@"; }

   __END__

And it's unnecessary given that the next line is:

   require 5;

That eval's the thing which bullocks up the syntax highlighters and 
tends to confuse idle readers.


How about we keep the former and ditch the latter?
-nic

On 01/12/2017 10:54 PM, Bron Gondwana via Cyrus-devel wrote:
It's there because lots of people on non-Linux systems have their perl 
in somewhere other than /usr/bin.  It is annoying for syntax 
highlighting, though we could work around that with some build magic.


It works fine, there's no reason to remove it.

The rehash stuff no the other hand, yeah - those scripts should be 
fixed.  I don't have time to do it today before the rc though!


Bron.

On Fri, 13 Jan 2017, at 10:30, ellie timoney via Cyrus-devel wrote:
I'm 100% in favour of discarding the "exec perl" hack -- solely 
because it confuses syntax highlighting something fierce :P


But I have no particular familiarity with its historical context, so 
can't reliably evaluate whether it's still needed for some obscure reason


On Fri, Jan 13, 2017, at 06:08 AM, Nic Bernstein via Cyrus-devel wrote:

Folks,
I've been working on an upgrade from 2.4.18 to 3.0.0rc1, and 
simultaneously adding to Nicola's fine Upgrading document.  Along 
the way, however, I've encountered several anomalies with the wide 
assortment of Perl scripts accumulated in cyrus-imapd/tools.  
There's a lot of them, they often overlap and sometimes don't 
inter-operate.


For example, 'rehash' understands the 'fulldirhash' setting, but 
'dohash' does not.  Furthermore, that setting, when processed by 
'rehash', results in directories named "A" - "Z", but most of the 
other tools, such as 'translatesieve' or 'upgradesieve' (why so 
many?) explicitly expect these to be lower cased, "a" - "z":


foreach $i ("a".."z") {
...

and so ignore the fulldirhash-ed directories.

Also, most of the Perl scripts still have this sort of baggage:

exec perl -x -S $0 ${1+"$@"} # -*-perl-*-
...
if ($] !~ /^5\..*/) {
   # uh-oh. this isn't perl 5.
   foreach (split(/:/, $ENV{PATH})) { # try to find "perl5".
 exec("$_/perl5", "-x", "-S", $0, @ARGV) if (-x "$_/perl5");
   }
   # we failed. bail.
   die "Your perl is too old; I need perl 5.\n";
}

# load the real script. this is isolated in an 'eval' so perl4 won't
# choke on the perl5-isms.
eval join("\n", );
if ($@) { die "$@"; }

__END__
require 5;
...

Given that Perl5 was released over twenty years ago, do we really 
need this, as opposed to say, "#!/usr/bin/perl -w"?  Hell, we could 
even parameterize that and substitute with @PERL@?


Just asking, because one needs a tool such as translatesieve to 
handle the transition to ``unixhierarchysep: yes'', and as it sits, 
that tool won't work.  I'm happy to fix it, but would like guidance 
on how far to go.


Cheers,
-nic

--
Nic bernstein...@onlight.com <mailto:n...@onlight.com>
Onlight, Inc.www.onlight.com <http://www.onlight.com>
6525 W Bluemound Road, Suite 24   v. 414.272.4477
Milwaukee, Wisconsin  53213-4073

Email had 1 attachment:

 *
|nic.vcf|
  1k (text/x-vcard)





--
  Bron Gondwana
  br...@fastmail.fm




--
Nic Bernstein n...@onlight.com
Onlight Inc.  www.onlight.com
6525 W Bluemound Rd., Ste 24  v. 414.272.4477
Milwaukee, Wisconsin  53213-4073  f. 414.290.0335



Re: State of Perl scripts in tools, esp. in re: hash

2017-01-13 Thread Nic Bernstein via Cyrus-devel
I can (and, honestly, already have) fix translatesieve, and a similar 
fix can be added to upgradesieve or any other of these scripts.  I think 
rehash should be left alone, as anyone who's already used hashing has 
what they have, which means they may already have upper-case 
directories.  Let's not break that.


I'll have something committed in an hour or two.
-nic

On 01/12/2017 10:54 PM, Bron Gondwana via Cyrus-devel wrote:
It's there because lots of people on non-Linux systems have their perl 
in somewhere other than /usr/bin.  It is annoying for syntax 
highlighting, though we could work around that with some build magic.


It works fine, there's no reason to remove it.

The rehash stuff no the other hand, yeah - those scripts should be 
fixed.  I don't have time to do it today before the rc though!


Bron.

On Fri, 13 Jan 2017, at 10:30, ellie timoney via Cyrus-devel wrote:
I'm 100% in favour of discarding the "exec perl" hack -- solely 
because it confuses syntax highlighting something fierce :P


But I have no particular familiarity with its historical context, so 
can't reliably evaluate whether it's still needed for some obscure reason


On Fri, Jan 13, 2017, at 06:08 AM, Nic Bernstein via Cyrus-devel wrote:

Folks,
I've been working on an upgrade from 2.4.18 to 3.0.0rc1, and 
simultaneously adding to Nicola's fine Upgrading document.  Along 
the way, however, I've encountered several anomalies with the wide 
assortment of Perl scripts accumulated in cyrus-imapd/tools.  
There's a lot of them, they often overlap and sometimes don't 
inter-operate.


For example, 'rehash' understands the 'fulldirhash' setting, but 
'dohash' does not.  Furthermore, that setting, when processed by 
'rehash', results in directories named "A" - "Z", but most of the 
other tools, such as 'translatesieve' or 'upgradesieve' (why so 
many?) explicitly expect these to be lower cased, "a" - "z":


foreach $i ("a".."z") {
...

and so ignore the fulldirhash-ed directories.

Also, most of the Perl scripts still have this sort of baggage:

exec perl -x -S $0 ${1+"$@"} # -*-perl-*-
...
if ($] !~ /^5\..*/) {
   # uh-oh. this isn't perl 5.
   foreach (split(/:/, $ENV{PATH})) { # try to find "perl5".
 exec("$_/perl5", "-x", "-S", $0, @ARGV) if (-x "$_/perl5");
   }
   # we failed. bail.
   die "Your perl is too old; I need perl 5.\n";
}

# load the real script. this is isolated in an 'eval' so perl4 won't
# choke on the perl5-isms.
eval join("\n", );
if ($@) { die "$@"; }

__END__
require 5;
...

Given that Perl5 was released over twenty years ago, do we really 
need this, as opposed to say, "#!/usr/bin/perl -w"?  Hell, we could 
even parameterize that and substitute with @PERL@?


Just asking, because one needs a tool such as translatesieve to 
handle the transition to ``unixhierarchysep: yes'', and as it sits, 
that tool won't work.  I'm happy to fix it, but would like guidance 
on how far to go.


Cheers,
-nic

--
Nic bernstein...@onlight.com <mailto:n...@onlight.com>
Onlight, Inc.www.onlight.com <http://www.onlight.com>
6525 W Bluemound Road, Suite 24   v. 414.272.4477
Milwaukee, Wisconsin  53213-4073

Email had 1 attachment:

 *
|nic.vcf|
  1k (text/x-vcard)





--
  Bron Gondwana
  br...@fastmail.fm




--
Nic Bernstein n...@onlight.com
Onlight Inc.  www.onlight.com
6525 W Bluemound Rd., Ste 24  v. 414.272.4477
Milwaukee, Wisconsin  53213-4073  f. 414.290.0335



Missing Upgrade docs [was Re: Release plan blog post]

2016-12-28 Thread Nic Bernstein via Cyrus-devel

On 12/27/2016 06:04 PM, Bron Gondwana via Cyrus-devel wrote:

Hi,

Sorry for the delay in responding to this - I left it over Christmas 
so I could sit down without distraction and reply when I was back in 
the office.


On Sat, 24 Dec 2016, at 17:09, Anatoli via Cyrus-devel wrote:

*3. New deployments* (vs ongoing upgrades/maintenance). How easy and 
straightforward it is to setup a new deployment (possibly migrating 
from other email servers). Here I'm referring to both the initial 
configuration, tools and documentation.




Yeah, we know about this one. I'm not going to create a specific bug 
for it, because it's kind of spread out over lots of different 
things.  Nicola is working on improving our documentation, but again 
the best people to give advice are people who've recently done it.  I 
haven't really "installed Cyrus from scratch" for 12 years, certainly 
not without the FastMail configuration and build systems.  Except for 
the test environment, which has its own special magics.


Hey, on a related note, I've just noticed that 
"cyrus-imapd/doc/legacy/install-upgrade.html" is not up on cyrusimap.org 
and there doesn't appear to be any equivalent.  Is there a plan for this?


   I'll confess that I'm a little perplexed by how the stuff at
   cyrusimap.org is updated or maintained.  The document tree doesn't
   seem to match what I see in git.

   I'm not trying to be whiny here; Hell, I'll even help with it.  I
   just don't know what the general plan is, or where things are
   supposed to go.

Seeing as I'm in the midst of a 2.3.16 => 2.5.10 upgrade, I can probably 
help, but I also need to find the proper information.


Cheers,
    -nic

--
Nic Bernstein n...@onlight.com
Onlight, Inc. www.onlight.com
6525 W Bluemound Road, Suite 24   v. 414.272.4477
Milwaukee, Wisconsin  53213-4073

<>

Re: Where did old Tasks go? [was Re: git.cyrus.foundation deprecated]

2016-12-22 Thread Nic Bernstein via Cyrus-devel

On 12/21/2016 05:55 PM, Nicola Nye wrote:
So it looks like the release notes going to 2.5 need to understand the 
implications of using the dot separator. Please go ahead and update 
the release notes for 2.5.X accordingly!


Of course, if you're going to move to the (soon to be released) 3.0, 
we ditch netnews in favour of unixhs anyway. (Now more fully 
documented 
http://cyrusimap.org/dev/imap/concepts/features/namespaces.html)


But we do need to check that the docs don't contain any more 
references to poor Phabricator as it's now defunct. Long may it RIP.


Nicola,
Actually, that snippet from Jeroen's commit had nothing at all to do 
with T16, as I had previously reported.  He must have typo'd that. 
However, Bron helpfully mined the Internet archive to find the original 
T16, which included this text:


   When upgrading a Cyrus IMAP Murder (discrete), 2.4 backends do not
   advertise the MOVE capability, but 2.5 frontends will -- and happily
   proxy the UID MOVE command despite the fact that the backends do not
   support RFC 6851
   
<https://web.archive.org/web/20150406213645/https://tools.ietf.org/html/rfc6851>

   So the fix is to disable MOVE on the frontend by suppressing the
   capability.

But, what users have reported on the list is that the approach of using 
"suppress_capabilities" may not do the trick.  So, I have updated the 
2.5.0 Release Notes thus:



 Cyrus IMAP Murder Topologies

   Environments that run a Cyrus IMAP Murder topology will want to
   upgrade their backends before they upgrade their frontends:

   When upgrading a Cyrus IMAP Murder (discrete), 2.4 backends do
   not advertise the |MOVE| capability, but 2.5 frontends will –
   and happily proxy the |UID MOVE| command despite the fact that
   the backends do not support *RFC 6851*
   <https://tools.ietf.org/html/rfc6851.html> So the fix is to
   disable |MOVE| on the frontend by suppressing the capability.

   However, subsequent to these notes, users in the field have found
   the use of |suppress_capabilities| on frontends may not be a
   suitable fix in all situations.

It is unclear to me how to effect this change to github, however, as the 
file referenced on the active website doesn't appear in the same place 
in my checkouts.  So, I am attaching it herein for you to figure out how 
to apply. :-)


Cheers,
-nic

--
Nic Bernstein n...@onlight.com
Onlight, Inc. www.onlight.com
6525 W Bluemound Road, Suite 24   v. 414.272.4477
Milwaukee, Wisconsin  53213-4073

:tocdepth: 3

==
Cyrus IMAP 2.5.0 Release Notes
==

.. IMPORTANT::

Make sure to read the :ref:`imap-relnotes-2.5.0-upgrading` notes
(all of them).

*   :ref:`relnotes-2.5.0-new-features`
*   :ref:`relnotes-2.5.0-config-option-changes`
*   :ref:`relnotes-2.5.0-development-autoconf`
*   :ref:`relnotes-2.5.0-development-phabricator`
*   :ref:`relnotes-2.5.0-development-documentation`

Download via HTTP:

*   http://www.cyrusimap.org/releases/old/cyrus-imapd-2.5.0.tar.gz
*   http://www.cyrusimap.org/releases/old/cyrus-imapd-2.5.0.tar.gz.sig

Download via FTP:

*   ftp://ftp.cyrusimap.org/cyrus-imapd/OLD-VERSIONS/cyrus-imapd-2.5.0.tar.gz
*   ftp://ftp.cyrusimap.org/cyrus-imapd/OLD-VERSIONS/cyrus-imapd-2.5.0.tar.gz.sig

.. _imap-relnotes-2.5.0-upgrading:

Upgrading to Cyrus IMAP 2.5.0
=

It is strongly recommended to shut down the Cyrus IMAP services before
performing the upgrade, as the newer binaries will end up writing to
``mailboxes.db`` in a way that is not compatible with the older binaries
(that would otherwise still be running).

You can start the server immediately after upgrading, however.

Underscores in ``cmd`` Names in :cyrusman:`cyrus.conf(5)`
-

Underscores (the ``_`` character) are no longer allowed in the
``START``, ``SERVICES`` and ``EVENTS`` sections of
:cyrusman:`cyrus.conf(5)`, as they interfere with configuration options
in :cyrusman:`imapd.conf(5)` being prefixed by service names and an
underscore (``_``) character.

Database Format Upgrade for Mailboxes
-

Upgrading to Cyrus IMAP 2.5.0 recommends the upgrade of database
formats, for which the reconstruct utility has been modified allowing
administrators to run:

.. parsed-literal::

# :command:`/usr/lib/cyrus-imapd/reconstruct -V max` [options]

This command can be run at the administrator's convenience, and while
running the database format upgrade process is not strictly required, it
is certainly strongly recommended.

Releases prior to 2.5.0, namely the 2.4 series, upgraded ``cyrus.index``
database formats in-line (i.e. as the mailbox in question as being
used). This may have caused an I/O storm in some situations, which 2.5.0
aims to address.

The minor versio

Where did old Tasks go? [was Re: git.cyrus.foundation deprecated]

2016-12-21 Thread Nic Bernstein via Cyrus-devel

Friends,
Where did the Maniphest Tasks go when the move to github was made?

I ask because the release notes for 2.5.X say:

   Make sure to read the Upgrading to Cyrus IMAP 2.5.0
   
<https://cyrusimap.org/imap/release-notes/2.5/x/2.5.0.html#imap-relnotes-2-5-0-upgrading>
   notes (all of them).

and those notes contain this:


 Cyrus IMAP Murder Topologies

   Environments that run a Cyrus IMAP Murder topology will want to
   upgrade their backends before they upgrade their frontends. See Task
   #16 <https://git.cyrus.foundation/T16> for details.

But the link for Task #16 is dead, still pointing to git.cyrus.foundation:

   glop:master$ grep -iR foundation cyrus-imapd/docsrc/
   cyrus-imapd/docsrc/imap/download/release-notes/2.5/x/2.5.0.rst:Please
   see https://git.cyrus.foundation/.
   cyrus-imapd/docsrc/conf.py:
   'task':('https://git.cyrus.foundation/T%s', 'Task #'),

I'd be happy to fix that, but am unclear as to where this information 
now lives.


Cheers,
-nic

On 06/23/2016 06:37 PM, Bron Gondwana via Cyrus-devel wrote:

Hi all,

Phabricator is being deprecated.  The project is moving to github at:

https://github.com/cyrusimap/

I'm working on migrating all the bugs from bugzilla and phabricator to be 
github issues.  For now the website is still hosted at CMU.

One thing I'm doing is applying a "kill commit" to the top of the git 
repositories at the other locations.  This doesn't lose any history, you can just reset 
--hard HEAD^ to get back to the latest master commit - but it does discourage any further 
pushes of commits that get lost, because they won't merge or rebase very happily on top 
of the kill commit!

The kill commit contains a small README.txt which tells you how to update your 
git repository to point to the new location.

Cheers,

Bron.



--
Nic Bernstein n...@onlight.com
Onlight, Inc. www.onlight.com
6525 W Bluemound Road, Suite 24   v. 414.272.4477
Milwaukee, Wisconsin  53213-4073

<>

Re: Q about gs2 plugin

2016-03-11 Thread Nic Bernstein via Cyrus-devel
I suspect you should post this to the Cyrus-SASL mailing list, as this 
is a SASL issue.  More info here:

http://cyrusimap.org/feedback-mailing-lists.html

Cheers,
-nic

On 03/10/2016 11:05 AM, Jan Parcel via Cyrus-devel wrote:
In 2.1.26, configure --help does not offer a way to enable the gs2 
plugin.


Does that mean it's severely under-utilized and under-tested, i.e. 
immature?


Is it being tested with imap?

Just wanted to get a handle on how experimental it is.

Thanks

Jan Parcel
Senior Software Engineer
Oracle


--
Nic Bernstein n...@onlight.com
Onlight, Inc. www.onlight.com
6525 W Bluemound Road, Suite 24   v. 414.272.4477
Milwaukee, Wisconsin  53213-4073

<>

Re: Meeting minutes 15 Feb [was Re: Meeting minutes 8 Feb]

2016-02-16 Thread Nic Bernstein via Cyrus-devel

On 02/15/2016 05:16 PM, ellie timoney via Cyrus-devel wrote:

But the really fiddly thing here is always going to be the fact that we
need to build most of the man pages from rst files, but we need to build
some of them (and thus their corresponding web pages...) from imapd
source files.  Taken broadly, i.e. treating "man pages" as a homogenous
collection, that's a cyclical dependency.  Squishing it all together
(options 1, 2, 4) makes that relatively easy to resolve just with
autoconf, but option 3 will need tooling/process work.


Ellie, Nicola, et alia,
As far as I'm aware, the only man page (RST file) which depends upon 
imapd source files is cyrus-docs/source/imap/admin/configs/imapd.conf, 
which derives from cyrus-imapd/lib/imapoptions by way of the 
cyrus-imapd/tools/config2rst perl script -- the same as the old 
cyrus-imapd/man/imapd.conf.5 was created.  This is handled by the 
top-level Makefile (from Makefile.am):


   man/imapd.conf.5: $(top_srcdir)/tools/config2man 
$(top_srcdir)/lib/imapoptions
@echo creating man/imapd.conf.5
@$(MKDIR_P) man
$(AM_V_GEN)$(top_srcdir)/tools/config2man $(top_srcdir)/lib/imapoptions 
> $@

   doc/rst/imapd.conf.rst: $(top_srcdir)/tools/config2rst 
$(top_srcdir)/lib/imapoptions
@echo creating man/imapd.conf.rst
@$(MKDIR_P) doc/rst
$(AM_V_GEN)$(top_srcdir)/tools/config2rst $(top_srcdir)/lib/imapoptions 
> $@

So as long as Sphinx's "make man" target depends on 
doc/rst/imapd.conf.rst -- which is the same as 
/imap/admin/configs/imapd.conf.rst, or would be in a post-merge world -- 
then we should be fine with our existing autoconf stuff.


There's also some HTML pages which depend upon doc/rst/imapd.conf.rst, 
but again, if Sphinx's "make html" target depends on 
/imap/admin/configs/imapd.conf.rst that should sort itself out, too.


What's missing, of course, is some super sweet autoconf goodness on the 
cyrus-docs side of things, which would wrap this all up.


Just my tupence...
-nic

--
Nic Bernstein n...@onlight.com
Onlight, Inc. www.onlight.com
6525 W Bluemound Road, Suite 24   v. 414.272.4477
Milwaukee, Wisconsin  53213-4073

<>

Re: Meeting minutes 15 Feb [was Re: Meeting minutes 8 Feb]

2016-02-15 Thread Nic Bernstein via Cyrus-devel
Oops!  My bad!  I was looking at the cyrus-sasl repo, which has it's own 
doc branch, and took that to be the cyrus-sasl documentation. Upon 
further review, that seems to be mostly the supporting RFC data.


My apologies for the snap-answer.  I've spent so much time buried in 
cyrus-docs, I somehow managed to miss this.

-nic

On 02/15/2016 07:14 PM, ellie timoney via Cyrus-devel wrote:
But the cyrus-docs repository appears (at a superficial glance) to 
contain SASL docs?  So merging it wholesale into the cyrus-imapd 
repository, especially in a way that obsoletes or removes the 
cyrus-docs repository, could have ramifications

On Tue, Feb 16, 2016, at 12:08 PM, Nic Bernstein via Cyrus-devel wrote:
The cyrus-sasl <https://git.cyrus.foundation/diffusion/S/> software 
and documentation is in a wholly separate repository, and should not 
be in any way affected by what happens with the cyrus-docs 
<https://git.cyrus.foundation/diffusion/D/> and cyrus-imapd 
<https://git.cyrus.foundation/diffusion/I/> repositories.

-nic
On 02/15/2016 06:53 PM, ellie timoney via Cyrus-devel wrote:

Hmm.  I don't know if/how this will affect SASL.

On Tue, Feb 16, 2016, at 11:44 AM, Jan Parcel via Cyrus-devel wrote:

As a consumer, I'd like to say a couple of things.

1.  I really REALLY don't want to see it become difficult, on my end, to
get the right versions of the libsasl2 docs on download. Apparently
quite a few pages disappeared between 1.5.28 and 2.1.26, but those pages
still appear in other places (including Solaris, possibly-corrected for
2.N.N)  I don't view them as "part of" imap.

2.  I've got some severe formatting problems displaying saslauthd(8) ,
which I hope is unique to that file and not a trend.  saslauthd.8
appears to be pre-roff'd, it looks like the others are not.

--
Nic bernstein...@onlight.com  <mailto:n...@onlight.com>
Onlight Inc.www.onlight.com  <http://www.onlight.com>
6525 W Bluemound Rd., Ste 24  v. 414.272.4477
Milwaukee, Wisconsin  53213-4073  f. 414.290.0335


--
Nic Bernstein n...@onlight.com
Onlight Inc.  www.onlight.com
6525 W Bluemound Rd., Ste 24  v. 414.272.4477
Milwaukee, Wisconsin  53213-4073  f. 414.290.0335



Re: Meeting minutes 15 Feb [was Re: Meeting minutes 8 Feb]

2016-02-15 Thread Nic Bernstein via Cyrus-devel
The cyrus-sasl <https://git.cyrus.foundation/diffusion/S/> software and 
documentation is in a wholly separate repository, and should not be in 
any way affected by what happens with the cyrus-docs 
<https://git.cyrus.foundation/diffusion/D/> and cyrus-imapd 
<https://git.cyrus.foundation/diffusion/I/> repositories.

-nic

On 02/15/2016 06:53 PM, ellie timoney via Cyrus-devel wrote:

Hmm.  I don't know if/how this will affect SASL.

On Tue, Feb 16, 2016, at 11:44 AM, Jan Parcel via Cyrus-devel wrote:

As a consumer, I'd like to say a couple of things.

1.  I really REALLY don't want to see it become difficult, on my end, to
get the right versions of the libsasl2 docs on download. Apparently
quite a few pages disappeared between 1.5.28 and 2.1.26, but those pages
still appear in other places (including Solaris, possibly-corrected for
2.N.N)  I don't view them as "part of" imap.

2.  I've got some severe formatting problems displaying saslauthd(8) ,
which I hope is unique to that file and not a trend.  saslauthd.8
appears to be pre-roff'd, it looks like the others are not.


--
Nic Bernstein n...@onlight.com
Onlight Inc.  www.onlight.com
6525 W Bluemound Rd., Ste 24  v. 414.272.4477
Milwaukee, Wisconsin  53213-4073  f. 414.290.0335



Re: Meeting today (Jan 4)

2016-01-03 Thread Nic Bernstein via Cyrus-devel

On 01/03/2016 06:21 PM, Bron Gondwana via Cyrus-devel wrote:

Happy New Year all in Cyrus Land

We're going to have a meeting today - it's been a while, and I've missed the 
last couple of timeslots due to moving house and not being set up for it.

The meeting will be a the usual time: 11am GMT (10pm Melbourne, 6am New York, 
etc)


That's the brutally early hour of 5:00CST, so I'll miss this one.  I 
would like to get a thread going, however, about documentation again, 
and the grand reunification with the source tree, as a recently 
rejuvenated discussion ("Unifying the Cyrus World") touched on in this list.


I know I've been out of the loop a bit lately, but think I could start 
to pick things up a bit.  In particular, I think Patrick Goetz made an 
interesting point in a recent post in the Unification thread:


   On 12/30/2015 07:01 AM, Patrick Goetz wrote:
Tutorials are good even when they dont match your exact use case. 
Too much abstract hand-waving is just confusing to most people. 
I'd rather read a common use case tutorial and then extrapolate to

my own situation from there.  Way too many critical details end up
getting left out when you talk about these issues absractly. 

   ...

My suggestion is to look at the organization of the documentation
from different perspectives:

 - a new or potentially new cyrus user who knows absolutely nothing

 - a somewhat experienced cyrus admin looking to quickly get an
answer to a specific question

 - a cyrus admin who wants to implement some new functionality,
say moving from a single server to a murder, or start using sieve
scripts 


I think Patrick's got some good ideas there, although his citations (in 
the unquoted portions of the message) indicate that his comments and 
complaints have mostly to do with the older cyrusimap.org documentation, 
and not the newer work that Jeroen, Nicola and myself have worked on.


In any event, if it's at all possible, could someone post minutes or 
notes from the meeting?  That was handy back when Bron (who has too much 
time on his hands ;-) was doing so.


Cheers,
    -nic

--
Nic Bernstein n...@onlight.com
Onlight Inc.  www.onlight.com
6525 W Bluemound Rd., Ste 24  v. 414.272.4477
Milwaukee, Wisconsin  53213-4073  f. 414.290.0335



Re: Unifying the Cyrus World

2015-09-17 Thread Nic Bernstein

Nicola, et alia.,
Firstly, I apologize that I haven't made a hang-out in ages -- for 
reasons too long, boring and personal to get into -- but I'll stick my 
head above the ramparts long enough to cause some trouble...


On 09/16/2015 08:50 PM, Nicola Nye wrote:


Equally, there are some documentation issues that are affected by our 
current straddling of two worlds. Read on for a discussion of the 
issues and down to the options and recommendation.
I'd love to have your input (particularly Nic Bernstein on the docs 
angle!) if you agree or disagree so we can make for a more unified 
Cyrus presence.

*Issues*
1) Branding
 
2) Docs logistics
The docs repo is separate to source which is causing friction keeping 
man pages updated.


Yes!  We need to get cyrus-docs into cyrus-imapd, and eliminate the 
problems caused by the split repos.  Bron and I discussed this some time 
back, when I had tackled config2rst, and needed to find a target home 
for the resultant doc/rst/imapd.conf.rst


We want man pages in two formats: *nix for actual man pages to ship 
and install with cyrus, and html for web presentation.
Nice to have: ship a snapshot of all current docs (not just man pages) 
along with source distribution.

3) Sphinx vs wiki
We have been working towards making the content on cyrus.foundation to 
be the most up to date. This is using Sphinx, which allows us to 
generate, from the same source, man pages as well as web pages. (And 
even pdf or single page html). So we get nicer output format options. 
Clearer history in the git log than you get from wiki.
Cyrusimap docs are held in mediawiki. Not so great for man pages. But 
it's much easier for third party contributor to pitch in and help out: 
they don't need to learn rst, they don't need a phabricator account, 
they don't need to navigate git.


I like the git/sphinx combo for the audit trail it provides (blame) and 
the easy ability to back out errant changes.  I am not a MediaWiki 
expert, barely a novice, so if it offers the same capabilities...


But perhaps more importantly, the existing docs on cyrus.foundation make 
use of the nifty macros and such in Sphinx, in order that they can 
include references to, or portions of, man pages.  The aforementioned 
config2rst, for example, was purposefully written such that it adds 
useful delimiters into the resultant imapd.config.rst to facilitate 
this, thus eliminating duplication of information.


For an example of this, check out the page on automatic creation of 
mailboxes, which makes heavy use of this to present the actual 
imapd.conf settings to the user, in context:

https://docs.cyrus.foundation/imap/features/automatic-creation-of-mailboxes.html

Which is produced by the simple code here:
https://docs.cyrus.foundation/_sources/imap/features/automatic-creation-of-mailboxes.txt

This ensures that the docs for the website (or package inclusion, why 
not?) will always accurately reflect the actual settings in 
lib/imapoptions, tracking changes as they're made.


Is there any parallel in MediaWiki?

For all of these reasons, I vote for solution 1, below.

Cheers,
-nic (ducking back below the wall...)


*Possible solutions*

Option 1: Single domain, unify git repos, use sphinx everywhere

Moving the git repo to cyrusimap (or anywhere) isn't hard. (a job for 
Bron)
Get rid of separate cyrus-docs repo. Put cyrus-docs stuff back inside 
cyrus-imapd/docs for easier man page generation and tagging of docs 
versions with source, and shipping of current docs with source.

Put sphinx on cyrusimap to replace the wiki. This requires either:

1.
working out how to set up the existing generated docs for use with
sphinx,
2.
or make all the stuff in cyrus-imapd/doc into rst so it works with
sphinx. We can still ship the built html.

Option 2: Single domain, unify git repos, use wiki for docs
-
Put sphinx on cyrusimap.org just for generating man page html. Leave 
the existing wiki where it is for documentation. (Requires porting the 
page updates I made from cyrus.foundation onto the wiki).
This means the only thing left in the cyrus-docs git repo would be the 
man pages, at which point it makes more sense to put them back into 
the cyrus-source repo.
We can still ship docs with the release if we tie in a wiki export 
into the release-building process. (A job for Ellie and I)

Option 3: Single domain, separate git repos, use sphinx for docs
--
Move all services to cyrusimap.org, but still leaves us with all the 
docs logistics and sphinx and wiki chafe points. Not recommended.

*Recommendation*
I am leaning towards suggesting option 2. Anything that makes 
documentation support easier is a good! But we'd still like to retain 
the usefulness of sphinx for generating

Re: Update to Murder docs (D69) and question on style.

2015-08-21 Thread Nic Bernstein

On 08/21/2015 02:58 AM, Michael Menge wrote:

Hi,


Quoting Nic Bernstein n...@onlight.com:
snip
I can write this up, I just wasn't sure if it was still needed.  I 
put a big ol' Note: in the replication page saying:


   Important

   Within a Cyrus /Murder/
https://docs.cyrus.foundation/imap/developer/architecture.html#architecture-murder
   environment, replicas must *not* be configured to invoke
   ctl_mboxlist(8)
http://docs.cyrus.foundation/imap/admin/commands/ctl_mboxlist.html
   on startup (pushing the local mailbox list to the *Mupdate Master*).
   This may only be done on the Master instance.

That's the only real gotcha I know of, but, having said that, I did 
write up a brief set of instructions about this very topic not that 
long ago (IIRC) for user mailing list.  I figured I could start with 
that.





For the initial configuration I second this. But there are IHMO things
to consider on failover.


1. ctl_mboxlist must be used with -m and -a Option on failover
2. on big installations updating all entries in mailbox.db on the
   mupdate server can take some time, on our setup we switch the IP 
address

   of master and replic on failover


And on 21 August at 06:12AM CDT, Ken Murchison wrote:
Right.  We don't even have our replicas as part of our Murder.  They 
replicate their backend as if it were a standalone server.



Yes indeed.  We use the following in /etc/imapd.conf on our servers:

   ##
   # Only one of these should be uncommented
   @include: /etc/imapd-master.conf
   #@include: /etc/imapd-replica.conf

And then comment/uncomment as needed.  The difference between these 
being the following (sanitized for your protection):


   root@mailbox:~# diff -uwb /etc/imapd-master.conf /etc/imapd-replica.conf
   --- /etc/imapd-master.conf   2014-11-24 23:06:49.830675999 +
   +++ /etc/imapd-replica.conf  2014-11-24 23:06:49.834675999 +
   -servername: mailbox.example.com
   +servername: mailbox.wi.example.com
 
   -##

   -# Auth credentials
   -mupdate_server: postman.example.com
   -mupdate_username: postman
   -mupdate_authname: postman
   -mupdate_password: secret
   -
   -##
   -# Replication support
   -# This is how the BACKEND for this host is defined
   -sync_host: mailbox.ia.example.com
   -sync_authname: mailproxy
   -sync_password: secret
   -sync_compress: true
   -sync_log: true
   -sync_repeat_interval: 5
   -sync_shutdown_file: /var/run/cyrus/sync_stop
   +## Auth credentials
   +# The credentials below must match the account listed in lmtp_admins
   +# on the backend servers.
   +proxy_authname: mailproxy
   +proxy_password: secret
   +serverlist: mailbox mailbox.wi

So the replica has no clue about the Murder.  We switch DNS between the 
two hosts during failover, so no IP address change [the servers are in 
different data centers, so that wouldn't be practical in any event].  I 
doubt we actually need that last blob of stuff on the replica, but it 
doesn't seem to have hurt.


As for /etc/cyrus.conf, we do something similar, in regards to 
commenting/uncommenting START entries for ctl_mboxlist and sync_client, 
versus an SERVICES entry for sync_server.


It's not the cleanest process in failover, but a damn sight better than 
nothing.


Cheers,
-nic

--
Nic Bernstein n...@onlight.com
Onlight, Inc. www.onlight.com
6525 W Bluemound Road, Suite 24   v. 414.272.4477
Milwaukee, Wisconsin  53213-4073

attachment: nic.vcf

Clarification needed on replication frequency settings

2015-08-20 Thread Nic Bernstein

Mostly to Bron, but if anyone else wishes to jump in...

There seems to be a conflict between documentation and code in regards 
to the settings for replication frequency.  Specifically, 
cyrus-imapd/lib/imapoptions has this:


   { sync_repeat_interval,*1*, INT }
   /* Minimum interval (in seconds) between replication runs in rolling
   replication mode. If a replication run takes longer than this
   time, we repeat immediately.
   Prefix with a channel name to only apply for that channel */

which would seem to indicate that the default is 1 second. Meanwhile, 
sync_client(8) has this:


   .. option:: -d delay

Minimum delay between replication runs in rolling replication mode.
Larger values provide better efficiency as transactions can be
merged. Smaller values mean that the replica system is more up to
date and that you don't end up with large blocks of replication
transactions as a single group. Default:*3 seconds*.

and the code, sync_client.c, has this:

int   timeout  = 600;
int   min_delta = 0;
const char *channel = NULL;
   ...
case 't':
timeout = atoi(optarg);
break;

case 'd':
min_delta = atoi(optarg);
break;
   ...
else {
/* rolling replication */
if (!sync_shutdown_file)
sync_shutdown_file = get_config(channel, 
sync_shutdown_file);

if (!min_delta)
min_delta = get_intconfig(channel, sync_repeat_interval);

do_daemon(channel, sync_shutdown_file, timeout, min_delta);
}

So I'm thinking that the actual default is 1, not 3.  Am I right, or 
confused?


Cheers,
-nic

--
Nic Bernstein n...@onlight.com
Onlight, Inc. www.onlight.com
6525 W Bluemound Road, Suite 24   v. 414.272.4477
Milwaukee, Wisconsin  53213-4073

attachment: nic.vcf

Update to Murder docs (D69) and question on style.

2015-08-20 Thread Nic Bernstein

Nicola,
I've edited your recent commit of Murder docs, and added some stuff 
therein.  Please take a look at D69 and send me any feedback.  If you've 
not got a problem with it, then one or the other of us should land it.  
Just let me know.


Based on your commit comment recently, something like Rewording install 
guide to third person. I've been trying to do the same for the 
reference docs we're preparing.  Was this your intent, too; to aim for 
third person for all docs?  I'd like to see that, although I'll admit 
that there are times where second person allows for more expeditious 
conveyance of information.  Whatever you think is best, I'll gladly follow.


Similarly, we have a mix of, for example, frontend and front end in 
the Murder docs.  I think we should standardize, but have no strong 
preference as to which is better.  The former seems to better serve as a 
noun, but the latter lends itself to list usages, such as both front 
and back ends should have ``servername`` set...  Again, you lead, I'll 
follow.  But whatever the decision is, let's effect a bulk replace to 
cope with it.


Lastly, Ellie had suggested, in IRC:

   i'm thinking, maybe the murder docs should include specifics on
   replication in a murder environment (assuming you probably want the
   one if you've got the other), and the replication-only doc should
   just be like if you're using a murder, see the other doc instead

Given the current state of both documents, which is quite different than 
that Ellie was commenting upon, do we still think this would be a Good 
Thing®? I'm ambivalent, but will be glad to do whatever needs doing for 
this.


Your thoughts?  Anyone else (there's a reason this is posted to the 
list, too)?


Cheers,
-nic

--
Nic Bernstein n...@onlight.com
Onlight, Inc. www.onlight.com
6525 W Bluemound Road, Suite 24   v. 414.272.4477
Milwaukee, Wisconsin  53213-4073

attachment: nic.vcf

Re: Docs and the :manpage: tag

2015-08-13 Thread Nic Bernstein

On 08/13/2015 12:15 AM, Nicola Nye wrote:

Delicious victory is mine!
We now have a :cyrusman: sphinx option which generates urls into our 
docs.cyrus.foundation tree, performing string munging magic to match 
the generated url to our directory and filename structure.
Now, to look at updating all the references in our existing docs so 
that it uses the new tag...


Nicola,
Doesn't work for me.

I pulled your changes, and then ran the following script to replace all 
:manpage: references with :cyrusman:


   $ for file in `grep -lR :manpage: source/imap`; do sed -i $file -e 
's/:manpage:/:cyrusman:/g'; done

Then I ran a build:

   $ make man html
   sphinx-build -b cyrman -d build/doctrees   source build/man
   Running Sphinx v1.2.2
   Initializing cyrusman plugin
   loading pickled environment... done
   building [cyrman]: all manpages
   updating environment: [extensions changed] 274 added, 18 changed, 0 removed
   reading sources... [  3%] imap/admin/access-control/rights-reference
   Exception occurred:
  File 
/home/nic/Checkouts/cyrus.foundation/cyrus-docs/source/exts/sphinxlocal/writers/cyrusman.py,
 line 49, in man_role
manpage_num = m.group(2)
   AttributeError: 'NoneType' object has no attribute 'group'
   The full traceback has been saved in /tmp/sphinx-err-yWaXf3.log, if you want 
to report the issue to the developers.

Full traceback is attached.

Cheers,
-nic

--
Nic Bernstein n...@onlight.com
Onlight llc.  www.onlight.com
219 N. Milwaukee St., Ste. 2A v. 414.272.4477
Milwaukee, Wisconsin  53202   f. 414.290.0335

# Sphinx version: 1.2.2
# Python version: 2.7.6
# Docutils version: 0.11 release
# Jinja2 version: 2.7.2
# Loaded extensions:
#   sphinx.ext.graphviz from /usr/lib/python2.7/dist-packages/sphinx/ext/graphviz.pyc
#   sphinx.ext.mathjax from /usr/lib/python2.7/dist-packages/sphinx/ext/mathjax.pyc
#   sphinx.ext.extlinks from /usr/lib/python2.7/dist-packages/sphinx/ext/extlinks.pyc
#   sphinxlocal.builders.manpage from /home/nic/Checkouts/cyrus.foundation/cyrus-docs/source/exts/sphinxlocal/builders/manpage.pyc
#   sphinx.ext.coverage from /usr/lib/python2.7/dist-packages/sphinx/ext/coverage.pyc
#   sphinx.ext.todo from /usr/lib/python2.7/dist-packages/sphinx/ext/todo.pyc
#   sphinxlocal.writers.cyrusman from /home/nic/Checkouts/cyrus.foundation/cyrus-docs/source/exts/sphinxlocal/writers/cyrusman.py
#   sphinx.ext.ifconfig from /usr/lib/python2.7/dist-packages/sphinx/ext/ifconfig.pyc
#   sphinx.ext.oldcmarkup from /usr/lib/python2.7/dist-packages/sphinx/ext/oldcmarkup.pyc
Traceback (most recent call last):
  File /usr/lib/python2.7/dist-packages/sphinx/cmdline.py, line 254, in main
app.build(force_all, filenames)
  File /usr/lib/python2.7/dist-packages/sphinx/application.py, line 212, in build
self.builder.build_update()
  File /usr/lib/python2.7/dist-packages/sphinx/builders/__init__.py, line 209, in build_update
self.build(['__all__'], to_build)
  File /usr/lib/python2.7/dist-packages/sphinx/builders/__init__.py, line 234, in build
purple, length):
  File /usr/lib/python2.7/dist-packages/sphinx/builders/__init__.py, line 134, in status_iterator
for item in iterable:
  File /usr/lib/python2.7/dist-packages/sphinx/environment.py, line 477, in update_generator
self.read_doc(docname, app=app)
  File /usr/lib/python2.7/dist-packages/sphinx/environment.py, line 624, in read_doc
pub.publish()
  File /usr/lib/python2.7/dist-packages/docutils/core.py, line 217, in publish
self.settings)
  File /usr/lib/python2.7/dist-packages/docutils/readers/__init__.py, line 72, in read
self.parse()
  File /usr/lib/python2.7/dist-packages/docutils/readers/__init__.py, line 78, in parse
self.parser.parse(self.input, document)
  File /usr/lib/python2.7/dist-packages/docutils/parsers/rst/__init__.py, line 172, in parse
self.statemachine.run(inputlines, document, inliner=self.inliner)
  File /usr/lib/python2.7/dist-packages/docutils/parsers/rst/states.py, line 171, in run
input_source=document['source'])
  File /usr/lib/python2.7/dist-packages/docutils/statemachine.py, line 239, in run
context, state, transitions)
  File /usr/lib/python2.7/dist-packages/docutils/statemachine.py, line 460, in check_line
return method(match, context, next_state)
  File /usr/lib/python2.7/dist-packages/docutils/parsers/rst/states.py, line 2962, in text
self.section(title.lstrip(), source, style, lineno + 1, messages)
  File /usr/lib/python2.7/dist-packages/docutils/parsers/rst/states.py, line 328, in section
self.new_subsection(title, lineno, messages)
  File /usr/lib/python2.7/dist-packages/docutils/parsers/rst/states.py, line 396, in new_subsection
node=section_node, match_titles=True)
  File /usr/lib/python2.7/dist-packages/docutils/parsers/rst/states.py, line 283, in nested_parse
node=node, match_titles=match_titles)
  File /usr/lib/python2.7/dist-packages

Re: Patch: forcing SSL before auth

2015-08-09 Thread Nic Bernstein

Carlos,
Could you add a stanza to /lib/imapoptions describing any configuration 
options you've added?  Don't worry if it's perfect, just get something 
in there so we documentation folk can make sure they get into the man pages.


Thanks!
-nic

On 08/09/2015 09:17 AM, Carlos Velasco wrote:

Version 2 patch. Including timsieved.
Also in the patch is some code for Serverinfo switch in timsieved to not disclose name 
and/or version info in IMPLEMENTATION if Serverinfo is Off or Min.

Regards,
Carlos Velasco

 Original Message 
Subject: Patch: forcing SSL before auth
From: Carlos Velasco carlos.vela...@nimastelecom.com
To: cyrus-devel@lists.andrew.cmu.edu
Date: 9/8/2015 12:18:36

Hi,

Right now, allowplaintext option disallow using a plain authentication if 
session is not protected by TLS.
However, this setting still allows a client to make MD5 or SHA1 auth without 
session being protected by TLS. This can lead to not data confidentiality when 
using not plain auth.
There are several admins now requesting to force TLS for all sessions, and although this 
can be done using allowplaintext and removing all mechs but Plain, it would 
be right to be able to provide another layer of security and use TLS+SHA1 or so...

Attached is a patch with a new imapd.conf option:
forcetlsauth: 0 | 1. Default 0
If enabled all authentications require a TLS session negotiated before.

Patch also hides AUTH and other authentication commands that are not allowed 
before TLS, in Capabilites commands.
Patched in imapd, pop3d, nntpd, httpd.

This patch does not break cyradm functionality at all, however I attach another patch for 
the cyradm perl part to allow --cafile option (got tired of certificate 
validation warnings) and also fixed a minor bug when requesting capabilities to server 
without the callback.

Please, consider committing this to mainstream.

Regards,
Carlos Velasco



--
Nic Bernstein n...@onlight.com
Onlight llc.  www.onlight.com
219 N. Milwaukee St., Ste. 2A v. 414.272.4477
Milwaukee, Wisconsin  53202   f. 414.290.0335



Re: Today's pop quiz: replication

2015-07-24 Thread Nic Bernstein

On 07/24/2015 12:07 AM, ellie timoney wrote:



- a single cyrus instance may be the primary server for some
users but a replica server for other users

Are you sure about that?

I'm not sure about any of this.  But you make a good point: I
thought I could see a way that this was possible, but now I don't
think I can.

I think I can, again, though I guess not in a murder.
But in a non-murder setup, I believe the only difference between a 
primary vs replica is which one the user interacts with?  Which, in 
a non-murder setup, one is presumably managing in some way external to 
cyrus (e.g. database, proxies, and some glue)...
So it seems like it should be plausible to have two (or more) cyrus 
instances (hosted wherever), each running a sync_server plus a 
channel/sync_client for each of the others, and whatever happens on 
any replicates to the others.  You'd be trusting your outer, non-cyrus 
layer to make sure not to proxy any individual user to the wrong 
instance (at least, not while there's pending replication transactions 
for them).  And I guess shared folders would be thorny.  But I don't 
(yet) see a reason from a replication standpoint why this wouldn't work.

So:
- a single cyrus instance may* be the primary server for some users 
but a replica server for other users
[* with caveats and requiring custom tooling, and specifically not in 
a murder]


Yikes, well I guess we can do pretty much anything*. :-0  But, I think, 
in the context of Nicola's original post, it's safer to say that this is 
not a standard or supported configuration.  Nicola is writing 
documentation, so an understanding of typical usage trumps speculative 
possibilities. :-)


I do think, however, that a more thorough description of the roles of 
sync_client(s) and sync_server are in order, and if I have a chance will 
write something up soon.


Cheers,
-nic

*PS - Imagine the sync storm resulting from such an arrangement run amok!


ellie
On Fri, Jul 24, 2015, at 10:01 AM, ellie timoney wrote:


Okay, I'll bite.  Here's what a bit of a sync_log looks like:

Thanks!  So anything processing a sync_log (sync_client, squatter, 
etc) needs to look at an actual copy of the user/mailbox in order to 
determine its current state, and needs to look at both copies to work 
out what to replicate between them.



- a single cyrus instance may be the primary server for some
users but a replica server for other users

Are you sure about that?

I'm not sure about any of this.  But you make a good point: I thought 
I could see a way that this was possible, but now I don't think I can.

Cheers,
ellie
On Thu, Jul 23, 2015, at 11:42 PM, Nic Bernstein wrote:

On 07/23/2015 01:14 AM, ellie timoney wrote:

Is the file format of the sync log defined anywhere? I assume it
correlates with a set of commands. (Not that this is important to a
user: it may as well be opaque, but it made me wonder!)

I'm a bit confused about this myself.  Each time I go digging into the
code my understanding flips back the opposite way.

I think, either:

* the sync log contains all the information needed to reproduce what's
happened (e.g. if a message has arrived, the sync log will contain the
message itself); OR
* the sync log contains just enough to identify things that have changed
(e.g. if a message has arrived, the sync log contains a message id of
some sort), and the sync_client processing the log just uses the log to
discover which things to sync, but then uses the actual mailbox to
construct the changes to send to the replica.

Either way I haven't seen any documentation on the sync log format.  I
suspect it's either the raw sync protocol or some subset thereof?

Okay, I'll bite.  Here's what a bit of a sync_log looks like:

MAILBOX user.newjersey
MAILBOX user.support
USER onlight
USER nic
USER admin
USER randy
MAILBOX user.randy.Trash
USER lynn
MAILBOX user.lynn.Trash

It's basically a list of either users or mailboxes which have been 
altered.  When sync_log is enabled, all of the daemons which might 
alter a mailbox or user will write a line to this log each time they 
do so.  That means the obvious suspects -- imapd, pop3d, timsieved, 
lmtpd, etc. -- but also cyr_expire and friends (as in the 
USER...MAILBOX couplets at the end of the sample).

- a single cyrus instance may be the primary server for some users but a
replica server for other users
Are you sure about that?  How does one specify the users for which 
such an instance would play each role?  A single HOST may run 
separate instances, which may perform these different roles, but I 
cannot fathom how to configure a single instance to do both at once 
for different user cohorts.
This raises potential problems when one deploys replication within a 
murder (Cyrus aggregation).  Only one server may claim ownership of 
any given mailbox, via a mupdate call, so an instance which is a 
replica MAY NOT push updates

Re: Harbormaster notes from today's conference call - 29 June 2015.

2015-07-01 Thread Nic Bernstein

Nicola,
[back at computer now, so can send proper reply]
This was fixed in D58, committed and closed.  Take a look at build 2119:
https://git.cyrus.foundation/B2119

Harbormaster shows all clean builds since 2118:
https://git.cyrus.foundation/harbormaster/

Cheers,
-nic

On 07/01/2015 07:32 PM, Nicola Nye wrote:

Nic, I think the build is in your camp.

Log shows:  *** No rule to make target `tools/config2rst', needed by
`doc/rst/imapd.conf.rst'.  Stop.

Thanks Jeroen for updating the build environment for us!

On Wed, Jul 1, 2015, at 07:39 PM, Jeroen van Meeuwen (Kolab Systems)
wrote:

On 2015-06-30 01:11, Bron Gondwana wrote:

This is Jeroen.  Jeroen, we need you to look at this - it's holding
people up.


clamav-devel has been installed, but the builds are still failing:

https://git.cyrus.foundation/harbormaster/build/1049/

Sphinx and docutils have been upgraded as well;

[root@phab10 ~]# pip show sphinx
---
Name: Sphinx
Version: 1.3.1
Location: /usr/lib64/python2.7/site-packages
Requires: sphinx-rtd-theme, Jinja2, alabaster, babel, six, Pygments,
snowballstemmer, docutils
[root@phab10 ~]# pip show docutils
---
Name: docutils
Version: 0.12
Location: /usr/lib/python2.7/site-packages
Requires:

Kind regards,

Jeroen van Meeuwen

--
Systems Architect, Kolab Systems AG

e: vanmeeuwen at kolabsys.com
m: +41 79 951 9003
w: https://kolabsystems.com

pgp: 9342 BF08


--
Nic Bernstein n...@onlight.com
Onlight llc.  www.onlight.com
219 N. Milwaukee St., Ste. 2A v. 414.272.4477
Milwaukee, Wisconsin  53202   f. 414.290.0335



Harbormaster notes from today's conference call - 29 June 2015.

2015-06-29 Thread Nic Bernstein

Friends,
As discussed at today's meeting, there are two things we need for 
harbormaster to properly do its job:


 * Install ClamAV development package (needed by cyrus-imapd build)
 o sudo apt-get install libclamav-dev
 * Install newer Docutils and Sphinx packages (needed by cyrus-docs build)
 o sudo apt-get install python-pip
 o sudo pip install --upgrade docutils sphinx

Could whomever has keys to the castle get this sorted?

Thanks in advance!
-nic

--
Nic Bernstein n...@onlight.com
Onlight, Inc. www.onlight.com
1442 N Farwell Ave., Suite 600v. 414.272.4477
Milwaukee, Wisconsin  53202

attachment: nic.vcf

Documentation notes from conference call 6/29/2015

2015-06-29 Thread Nic Bernstein

Friends,
Here's my notes from today's discussion about documentation.

The man pages have all been converted (ported, what have you) from their 
original troff format to the new ReStructuredText (rst) format.


This work was done in the new cyrus-docs (rD) repo, which is separate 
from the cyrus-imapd (rI) repo.  The singular exception to this is 
imapd.conf.5, which is generated by software from 
cyrus-imapd/lib/imapoptions.


I produced a now tool, cyrus-imapd/tools/config2rst, cribbed from 
config2man, which achieves this goal (with small complaints from 
Sphinx).  Following the conference call Bron landed my commits for this, 
and it passed harbormaster review (after dancing clamav jig).


The need to include suitably troff formatted manpages in 
cyrus-imapd/man, but the presence of most of them in 
cyrus-docs/source/imap/admin/{configs|commands} or 
cyrus-docs/source/imap/developer/libraries (and ultimately in troff 
format in cyrus-docs/build/man), seems awkward.  Especially when the 
case of imapd.conf.5 is added to the mix.


We decided that there is probably no really compelling reason to have 
the manpages be in a separate repo from the sources.  For now, however, 
the only nod to such a change was to have cyrus-imapd/Makefile put 
imapd.conf.rst into a newly created cyrus-imapd/doc/rst directory.


Ultimately, either all of the docs should be moved back into the 
cyrus-imapd repo, or at least the manpages should.  This was left as a 
matter for further discussion, as, quite likely, the ultimate 
disposition of cyrus-imapd/doc will be.


Cheers,
-nic

--
Nic Bernstein n...@onlight.com
Onlight, Inc. www.onlight.com
1442 N Farwell Ave., Suite 600v. 414.272.4477
Milwaukee, Wisconsin  53202

attachment: nic.vcf

Re: Doc build broken

2015-06-27 Thread Nic Bernstein
We documentation folk don't have access to the underlying machine on 
which the build tests run, so we can't do anything like that, to the 
best of my knowledge.


The solution I came up with works, for now, and Nicola has requested an 
update of the python stuff on the build host.

-nic

On 06/27/2015 06:36 AM, John wrote:

Hi,

I use virtualenv to avoid this kind of pain. It allows the use of 
python package versions independent of the underlying distribution. Is 
there a reason that virtualenv could not be used in this case?


John


On 26/06/15 22:50, Nic Bernstein wrote:

Nicola,
No rush.  I put on my big-boy pants and got this sorted.  In effect I 
took every change between docutils v0.8.1  v0.11.3, and between 
sphinx v1.1.2  v1.2.3 and incorporated them verbatim in the bottom 
of our cyrus-docs/source/exts/sphinxlocal/writes/manpage.py 
https://git.cyrus.foundation/diffusion/D/browse/master/source/exts/sphinxlocal/writers/manpage.py.


This is a total, absolute and unrepentant hack, but it does work, it 
builds on Wheezy, and even harbormaster is happy (see B2110 
https://git.cyrus.foundation/B2110). https://docs.cyrus.foundation/ 
is now up to date and has all of your changes as well as mine.


I commented the start of the ugly hack quite clearly, so we can lop 
it off if and when we ever do get modern versions of the toolset 
installed.


Cheers,
-nic

On 06/26/2015 04:40 PM, Nicola Nye wrote:

Hi Nic,

Yes! Spot on. I remember looking into the Sphinx versions when I first
started and then promptly forgot about it.

I totally agree about your proposed versions. I'll chase down Jeroen who
I think has the keys to that box and see if we can't get it brought up
to date. Or at least out of the dark ages.

Cheers,

Nicola

On Sat, Jun 27, 2015, at 05:28 AM, Nic Bernstein wrote:

On 06/25/2015 11:01 PM, Nicola Nye wrote:

Hi Nic,

After some false starts using arc, I finally got a bunch of my changes
committed through onto the cyrus docs tree. And then I noticed the
website wasn't updating.

After some help from ellie, it turns out our doc build broke a while ago
and we hadn't noticed!

I think it has to do with the new man page builder you wrote.
Developer's lament: it works for me (and for you!) but for some reason
it looks like it's falling over on the server.

https://git.cyrus.foundation/harbormaster/build/964/

School holidays are here for the next couple of weeks so I'm on reduced
hours but I'll be checking in to see if I can also work out what's going
on.

Cheers,

 Nicola

Nicola,
Note sure what to do about this.  I've spent the day bringing up a
Wheezy VM to play with this stuff, and made a version of
writer/manpage.py which works, but there's lots of other problems with
the old python-docutils which I could spend the next month trying to
work around.

Wheezy uses Sphinx v1.1.3 (2012-03-10) and docutils v0.8.1, which dates
from 2011-08-31.  There's been a lot of changes since then, some of
which had to do with basic functionality.  For example, in
docutils-0.8.1, in writer/manpage.py, is this definition:

  def visit_Text(self, node):
  text = node.astext()
  text = text.replace('\\','\\e')
  replace_pairs = [
  (u'-', ur'\-'),
  (u'\'', ur'\(aq'),
  (u'´', ur'\''),
  (u'`', ur'\(ga'),
  ]
  for (in_char, out_markup) in replace_pairs:
  text = text.replace(in_char, out_markup)
  # unicode
  text = self.deunicode(text)
  if self._in_literal:
  # prevent interpretation of . at line start
  if text[0] == '.':
 #  BUG
  text = '\\' + text
  text = text.replace('\n.', '\n\\.')
  self.body.append(text)

The line if text[0] == '.': is a flat out bug, since if 'text' is ever
empty, it fails.  This bug was fixed in release 0.11 (2013-07-22),  with
this line:

  if text.startswith('.'):

So in order to get manpages to build _at all_, I need to redefine
visit_Text in our custom writer/manpage.py.  I've done so, but that's
just the start of the problems.

I would like to propose that we get a newer version of python-docutils
and python-sphinx installed on harbormaster and declare that certain
minimum versions of both packages are required to build documentation
from source.  For the record, I further propose that these be:

   * python-docutils-0.11.3
   * python-sphinx-1.2.2

By the way, those are the versions which are supported by Ubuntu Trusty
(14.04.2) and Utopic (14.10); Debian Jessie and Sid; Fedora 20  21;
etc.  This is not bleeding edge stuff, but at least it doesn't suffer
from long-ago fixed bugs.

Building Cyrus documentation from source is a different proposition from
building the server from source.  It's my understanding that the
manpages, in particular, are to be built

Re: Doc build broken

2015-06-26 Thread Nic Bernstein

On 06/25/2015 11:01 PM, Nicola Nye wrote:

Hi Nic,

After some false starts using arc, I finally got a bunch of my changes
committed through onto the cyrus docs tree. And then I noticed the
website wasn't updating.

After some help from ellie, it turns out our doc build broke a while ago
and we hadn't noticed!

I think it has to do with the new man page builder you wrote.
Developer's lament: it works for me (and for you!) but for some reason
it looks like it's falling over on the server.

https://git.cyrus.foundation/harbormaster/build/964/

School holidays are here for the next couple of weeks so I'm on reduced
hours but I'll be checking in to see if I can also work out what's going
on.

Cheers,

Nicola

Nicola,
Note sure what to do about this.  I've spent the day bringing up a 
Wheezy VM to play with this stuff, and made a version of 
writer/manpage.py which works, but there's lots of other problems with 
the old python-docutils which I could spend the next month trying to 
work around.


Wheezy uses Sphinx v1.1.3 (2012-03-10) and docutils v0.8.1, which dates 
from 2011-08-31.  There's been a lot of changes since then, some of 
which had to do with basic functionality.  For example, in 
docutils-0.8.1, in writer/manpage.py, is this definition:


def visit_Text(self, node):
text = node.astext()
text = text.replace('\\','\\e')
replace_pairs = [
(u'-', ur'\-'),
(u'\'', ur'\(aq'),
(u'´', ur'\''),
(u'`', ur'\(ga'),
]
for (in_char, out_markup) in replace_pairs:
text = text.replace(in_char, out_markup)
# unicode
text = self.deunicode(text)
if self._in_literal:
# prevent interpretation of . at line start
if text[0] == '.':  # 
 BUG
text = '\\' + text
text = text.replace('\n.', '\n\\.')
self.body.append(text)

The line if text[0] == '.': is a flat out bug, since if 'text' is ever 
empty, it fails.  This bug was fixed in release 0.11 (2013-07-22),  with 
this line:


if text.startswith('.'):

So in order to get manpages to build _at all_, I need to redefine 
visit_Text in our custom writer/manpage.py.  I've done so, but that's 
just the start of the problems.


I would like to propose that we get a newer version of python-docutils 
and python-sphinx installed on harbormaster and declare that certain 
minimum versions of both packages are required to build documentation 
from source.  For the record, I further propose that these be:


 * python-docutils-0.11.3
 * python-sphinx-1.2.2

By the way, those are the versions which are supported by Ubuntu Trusty 
(14.04.2) and Utopic (14.10); Debian Jessie and Sid; Fedora 20  21; 
etc.  This is not bleeding edge stuff, but at least it doesn't suffer 
from long-ago fixed bugs.


Building Cyrus documentation from source is a different proposition from 
building the server from source.  It's my understanding that the 
manpages, in particular, are to be built and included, pre-built, in the 
cyrus-imapd distribution package.  So as long as _we_ can build the 
manpages, we're golden (as they say).


That's why I feel comfortable recommending that we ask that a newer 
version of these tools be installed on harbormaster.


Your thoughts?
-nic

--
Nic Bernstein n...@onlight.com
Onlight, Inc. www.onlight.com
1442 N Farwell Ave., Suite 600v. 414.272.4477
Milwaukee, Wisconsin  53202

attachment: nic.vcf

Re: Doc build broken

2015-06-26 Thread Nic Bernstein

Nicola,
No rush.  I put on my big-boy pants and got this sorted.  In effect I 
took every change between docutils v0.8.1  v0.11.3, and between sphinx 
v1.1.2  v1.2.3 and incorporated them verbatim in the bottom of our 
cyrus-docs/source/exts/sphinxlocal/writes/manpage.py 
https://git.cyrus.foundation/diffusion/D/browse/master/source/exts/sphinxlocal/writers/manpage.py.


This is a total, absolute and unrepentant hack, but it does work, it 
builds on Wheezy, and even harbormaster is happy (see B2110 
https://git.cyrus.foundation/B2110). https://docs.cyrus.foundation/ is 
now up to date and has all of your changes as well as mine.


I commented the start of the ugly hack quite clearly, so we can lop it 
off if and when we ever do get modern versions of the toolset installed.


Cheers,
-nic

On 06/26/2015 04:40 PM, Nicola Nye wrote:

Hi Nic,

Yes! Spot on. I remember looking into the Sphinx versions when I first
started and then promptly forgot about it.

I totally agree about your proposed versions. I'll chase down Jeroen who
I think has the keys to that box and see if we can't get it brought up
to date. Or at least out of the dark ages.

Cheers,

Nicola

On Sat, Jun 27, 2015, at 05:28 AM, Nic Bernstein wrote:

On 06/25/2015 11:01 PM, Nicola Nye wrote:

Hi Nic,

After some false starts using arc, I finally got a bunch of my changes
committed through onto the cyrus docs tree. And then I noticed the
website wasn't updating.

After some help from ellie, it turns out our doc build broke a while ago
and we hadn't noticed!

I think it has to do with the new man page builder you wrote.
Developer's lament: it works for me (and for you!) but for some reason
it looks like it's falling over on the server.

https://git.cyrus.foundation/harbormaster/build/964/

School holidays are here for the next couple of weeks so I'm on reduced
hours but I'll be checking in to see if I can also work out what's going
on.

Cheers,

 Nicola

Nicola,
Note sure what to do about this.  I've spent the day bringing up a
Wheezy VM to play with this stuff, and made a version of
writer/manpage.py which works, but there's lots of other problems with
the old python-docutils which I could spend the next month trying to
work around.

Wheezy uses Sphinx v1.1.3 (2012-03-10) and docutils v0.8.1, which dates
from 2011-08-31.  There's been a lot of changes since then, some of
which had to do with basic functionality.  For example, in
docutils-0.8.1, in writer/manpage.py, is this definition:

  def visit_Text(self, node):
  text = node.astext()
  text = text.replace('\\','\\e')
  replace_pairs = [
  (u'-', ur'\-'),
  (u'\'', ur'\(aq'),
  (u'´', ur'\''),
  (u'`', ur'\(ga'),
  ]
  for (in_char, out_markup) in replace_pairs:
  text = text.replace(in_char, out_markup)
  # unicode
  text = self.deunicode(text)
  if self._in_literal:
  # prevent interpretation of . at line start
  if text[0] == '.':
 #  BUG
  text = '\\' + text
  text = text.replace('\n.', '\n\\.')
  self.body.append(text)

The line if text[0] == '.': is a flat out bug, since if 'text' is ever
empty, it fails.  This bug was fixed in release 0.11 (2013-07-22),  with
this line:

  if text.startswith('.'):

So in order to get manpages to build _at all_, I need to redefine
visit_Text in our custom writer/manpage.py.  I've done so, but that's
just the start of the problems.

I would like to propose that we get a newer version of python-docutils
and python-sphinx installed on harbormaster and declare that certain
minimum versions of both packages are required to build documentation
from source.  For the record, I further propose that these be:

   * python-docutils-0.11.3
   * python-sphinx-1.2.2

By the way, those are the versions which are supported by Ubuntu Trusty
(14.04.2) and Utopic (14.10); Debian Jessie and Sid; Fedora 20  21;
etc.  This is not bleeding edge stuff, but at least it doesn't suffer
from long-ago fixed bugs.

Building Cyrus documentation from source is a different proposition from
building the server from source.  It's my understanding that the
manpages, in particular, are to be built and included, pre-built, in the
cyrus-imapd distribution package.  So as long as _we_ can build the
manpages, we're golden (as they say).

That's why I feel comfortable recommending that we ask that a newer
version of these tools be installed on harbormaster.

Your thoughts?
  -nic

--
Nic Bernstein n...@onlight.com
Onlight, Inc. www.onlight.com
1442 N Farwell Ave., Suite 600v. 414.272.4477
Milwaukee, Wisconsin  53202

Email had 1 attachment:
+ nic.vcf
   1k (text/x-vcard)


--
Nic Bernstein

Re: Stripping ALL tabs from the code

2015-06-15 Thread Nic Bernstein

On 06/14/2015 07:48 PM, Bron Gondwana wrote:

On Tue, Jun 9, 2015, at 08:42 PM, Bron Gondwana wrote:

The big news from yesterday's meeting is that we are going to check in a single 
massive commit which strips all leading tabs from the code, everywhere.  The 
new coding standard is 4 spaces for each level of indent, and spaces for all 
alignment within code as well.

I've pushed a small perl script to master which performs the necessary surgery. 
 it has the smarts to know when a tab isn't on a multiple-of-8 boundary and 
substitute fewer spaces.

The code still builds and passes tests afterwards, so I'm pretty sure it's good.

I will be running the on master on June 14th (Sunday) night Melbourne time.  
That's weekend for everyone, everywhere in the world.  I will immediately push 
the result back to master (after running the tests again of course).

If you have a patch series lying around that you want to apply, it might be a 
good idea to do it before then!  Alternatively, you can patch with -l or 
--ignore-whitespace to apply your patches to the tree, and then run 
tools/remove-tabs.pl on the resulting tree to remove the tabs again.

Enjoy your new, simpler coding style with no trailing whitespace left!

This has been done - I didn't quite finish the instructions last night, so I 
did the work this morning.


Bron,
Maybe I'm doing something wrong here, but this morning I figured I'd 
start over clean, so deleted my existing cyrus-docs checkout and grabbed 
a new one:

$ git clone ssh://git@git.cyrus.foundation/diffusion/I/cyrus-docs.git

What I ended up with looked suspiciously like the cyrus-imapd tree. So I 
checked that by doing a diff of the two:


   $ diff -Nuwb cyrus-docs cyrus-imapd
   Common subdirectories: cyrus-docs/cmulocal and cyrus-imapd/cmulocal
   Common subdirectories: cyrus-docs/com_err and cyrus-imapd/com_err
   Common subdirectories: cyrus-docs/contrib and cyrus-imapd/contrib
   Common subdirectories: cyrus-docs/cunit and cyrus-imapd/cunit
   Common subdirectories: cyrus-docs/depot and cyrus-imapd/depot
   Common subdirectories: cyrus-docs/doc and cyrus-imapd/doc
   Common subdirectories: cyrus-docs/.git and cyrus-imapd/.git
   Common subdirectories: cyrus-docs/imap and cyrus-imapd/imap
   Common subdirectories: cyrus-docs/imtest and cyrus-imapd/imtest
   Common subdirectories: cyrus-docs/lib and cyrus-imapd/lib
   Common subdirectories: cyrus-docs/man and cyrus-imapd/man
   Common subdirectories: cyrus-docs/master and cyrus-imapd/master
   Common subdirectories: cyrus-docs/netnews and cyrus-imapd/netnews
   Common subdirectories: cyrus-docs/notifyd and cyrus-imapd/notifyd
   Common subdirectories: cyrus-docs/perl and cyrus-imapd/perl
   Common subdirectories: cyrus-docs/ptclient and cyrus-imapd/ptclient
   Common subdirectories: cyrus-docs/sieve and cyrus-imapd/sieve
   Common subdirectories: cyrus-docs/snmp and cyrus-imapd/snmp
   Common subdirectories: cyrus-docs/timsieved and cyrus-imapd/timsieved
   Common subdirectories: cyrus-docs/tools and cyrus-imapd/tools

Could something have gone awry with this whitespace cleanup?

Concerned,
-nic

--
Nic Bernstein n...@onlight.com
Onlight, Inc. www.onlight.com
1442 N Farwell Ave., Suite 600v. 414.272.4477
Milwaukee, Wisconsin  53202

attachment: nic.vcf

Re: LinkChecker

2015-06-15 Thread Nic Bernstein

On 06/14/2015 10:59 PM, Chris Davies wrote:
I've just installed LinkChecker 
http://wummel.github.io/linkchecker/on the Jenkins server.
It's currently running once an hour against http://www.cyrusimap.org/ 
and will report any broken links to 
https://ci.cyrus.foundation/job/LinkChecker%20-%20CyrusImap.org/
If you click the most recent job (under build history), then click 
'Console Output' you can see the most recent report.
Over time it would be good if we could fix the broken links or I can 
add ignore rules for anything we don't plan on fixing.

Cheers,
Chris


Chris,
Just to clarify, is this installed on http://www.cyrusimap.org/ only, or 
also on https://*.cyrus.foundation/ as well?  I ask because Bron's 
meeting notes say the latter.


Cheers,
-nic

--
Nic Bernstein n...@onlight.com
Onlight llc.  www.onlight.com
219 N. Milwaukee St., Ste. 2A v. 414.272.4477
Milwaukee, Wisconsin  53202   f. 414.290.0335



Re: [Differential] [Updated, 2,615 lines] D44: Update reStrusctured Text versions of man pages

2015-06-11 Thread Nic Bernstein

On 06/11/2015 05:03 AM, Nicola Nye wrote:

For what it's worth, Bron and I were discussing whether we should look
at
migrating the website from Sphinx to some wiki variant in order to make
it
easier for contributors to add to the documentation.

Obviously this then allows greater flexibility in building the man
pages:
we can leave them off the online docs and just leave them to ship with
the cyrus package, or we find another way to include them online
(which might just mean we end up with a different, but still slightly
annoying process, such as wikihtml2man!).

Something to discuss at today's meeting...
https://plus.google.com/hangouts/_/g4xnqjjb5zvomzeb4kqvja3fz4a

Or shoot through your ideas on the list!


Nicola,
For my part, I'd just as soon we don't go changing horses in midstream.  
I've got a lot of hours invested in the current suite of solutions, and 
to change to some new, different, set of annoyances at this point would 
just mean more work.


As for whether other parts of the website are in Wiki or Sphinx, that's 
a different matter.  I don't see any reason why we can't use a mix of 
the two.  Using something like Sphinx for material which needs 
flexibility in presentation makes sense.  Using a Wiki for community 
contributed material makes sense.  Let's do both.


Being in US Central time, while you all are nearing the end of your day, 
I've only just stared mine -- no caffine yet -- so the meetup is out of 
reach.


Ta!
-nic

--
Nic Bernstein n...@onlight.com
Onlight llc.  www.onlight.com
219 N. Milwaukee St., Ste. 2A v. 414.272.4477
Milwaukee, Wisconsin  53202   f. 414.290.0335



Re: Documentation Unification and Awesomeification

2015-06-10 Thread Nic Bernstein

On 06/08/2015 07:43 PM, Nicola Nye wrote:

Nice sleuthing work!


Thanks! :-)

The only alternative I have to offer is that much as Sphinx allows you 
to write custom themes to change the look and feel of the html, you 
can also write your own builder (or extend an existing one).

http://sphinx-doc.org/extdev/index.html#dev-extensions
That would let us override sphinx's builders/manpage.py and therefore 
sphinx's writers/manpage.py.
If we had more than one manpage issue, this is probably a better way 
forwards, but for just tweaking this bold issue, I'm totally on board 
with updating the Makefile. Go ye forth and fix!

   Nicola


I've gone ahead and created an extension, a customized version of 
builders/manpage.py and writers/manpage.py, and am now re-writing the 
already updated manpage .rst files to work as expected with this new 
version, rather than using workarounds.


In addition to the problems with fonts, there was gratuitous indentation 
on all literal_block entries, which made writing examples quite vexing.


I will try to get at least an interim commit up sometime soon so others 
can start to poke at this with great big sticks.


Cheers,
-nic

--
Nic Bernstein n...@onlight.com
Onlight, Inc. www.onlight.com
1442 N Farwell Ave., Suite 600v. 414.272.4477
Milwaukee, Wisconsin  53202

attachment: nic.vcf

Re: [Differential] [Updated, 2,615 lines] D44: Update reStrusctured Text versions of man pages

2015-06-10 Thread Nic Bernstein

Nicola,
I've just made a big commit in D44, and would appreciate another set of 
eyes on it prior to accepting it.


In this commit are the new Sphinx extension for manpage building, as 
well as a load of said man pages.


My specific concerns are to verify that the Sphinx extension works for 
others as well as for me.  Also, as I am not a Python person, I think 
we'd really benefit from someone who is looking at the extent of my 
subclassing in the new extension.  I am not really sure if I've managed 
to do as little as possible there (which is what I think we'd prefer).


Please take a look and let me know.

Cheers,
-nic

On 06/10/2015 05:45 PM, onlight (Nic Bernstein) wrote:

onlight updated this revision to Diff 96.
onlight added a comment.

More man page updates and cleanup.  New Sphinx extension.

- Fix building of man pages and port more over
- More updates to man pages from cyrus-imapd/man


REPOSITORY
   rD cyrus-docs

CHANGES SINCE LAST UPDATE
   https://git.cyrus.foundation/D44?vs=90id=96

BRANCH
   dev/update-command-man-pages

REVISION DETAIL
   https://git.cyrus.foundation/D44


--
Nic Bernstein n...@onlight.com
Onlight, Inc. www.onlight.com
1442 N Farwell Ave., Suite 600v. 414.272.4477
Milwaukee, Wisconsin  53202

attachment: nic.vcf

Re: Documentation Unification and Awesomeification

2015-06-09 Thread Nic Bernstein

On 06/09/2015 04:59 AM, Sebastian Hagedorn wrote:

--On 8. Juni 2015 17:14:21 -0500 Nic Bernstein n...@onlight.com wrote:


So here's my quandary:

• I've found it completely impossible to produce standards-compliant
man pages using ReStructuredText with the Sphinx/Docutils tool suite,
without running into this problem.
• There's just no way I can find to work around this other than to
either:
• Alter the docutils/writers/manpage.py code, as shown above, or
• Grep or sed out the gratuitous .ft  commands from the resultant
output.

I think the best way forward with this is to opt for the latter and
modify cyrus-docs/Makefile to strip the resulting manpages from
cyrus-docs/build/man, like so:



...
BUILDDIR = build
SED = /bin/sed
snip
man:
$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
$(SED) -i -e 's/^\.ft.*//' $(BUILDDIR)/man/*.[0-9]*
@echo
@echo Build finished. The manual pages are in $(BUILDDIR)/man.
...



Thoughts?


How about reporting this as a bug upstream?


I fully intend to. My quandary, perhaps incompletely summarized, had to 
do with the exigencies of producing usable manpages, in a repeatable 
manner, given the time frame of releases.


I think I'll opt for Nicola's suggestion of an extension for Sphinx, if 
that will do the job. For the record, however, the problem here is with 
a component of docutils, not Sphinx, so it's unclear to me if a Sphinx 
extension can fix it. I'll look into that. I'm not a Python expert, so...


Cheers,
-nic

--
Nic Bernstein n...@onlight.com
Onlight llc.  www.onlight.com
219 N. Milwaukee St., Ste. 2A v. 414.272.4477
Milwaukee, Wisconsin  53202   f. 414.290.0335



Re: Documentation Unification and Awesomeification

2015-06-08 Thread Nic Bernstein

On 05/19/2015 07:22 AM, Nic Bernstein wrote:

# The Sphinx man page output can be unpredictable

  * Man output can sometimes shift to *bold* and never come back to
normal.
  o See cyrus-docs/source/imap/admin/commands/unexpunge.rst for an
example



Nicola, et al.,
I've tracked down the problem with Sphinx formatting of manpage output.  
When using the parsed-literal role, like so:


   .. parsed-literal::

**arbitron -d** *14*


   Normal short list format for the past 14 days.

The docutils manpage writer will produce this output (note my red 
highlights):


   .INDENT 3.5
   .sp
   .nf
   .ft C
   \fBarbitron \-d\fP \fI14\fP
   .ft P
   .fi
   .UNINDENT
   .UNINDENT
   .sp
   Normal short list format for the past 14 days.
   .INDENT 0.0

But this is bogus output.  It's popping fonts which have never been 
installed in the font stack, so renders unreliably:


  *arbitron -d*  _14_

   _Normal_  _short_  _list_  _format_  _for_  _the_  _past_  _14_  _days._

It should look like this:

  *arbitron -d*  _14_

   Normal short list format for the past_14_  days.

Also, it relies on the availability of the font C (being Courier) 
which is a bad assumption on many systems.  Furthermore, since almost 
all manpage output we're concerned with is processed with nroff, not 
groff, and Fonts have limited meaning in nroff. The font used is a 
constant-width font. If you specify bold, characters are overstruck in 
printing. Italic is interpreted as an underline. Other fonts have no 
meaning.


I've modified my local copy of (on Ubuntu Trusty) 
/usr/lib/python2.7/dist-packages/docutils/writers/manpage.py to remove 
these gratuitous .ft Cft P couplets, and now it works perfectly, 
producing this:


   .INDENT 3.5
   .sp
   .nf
   \fBarbitron \-d\fP \fI14\fP
   .fi
   .UNINDENT
   .UNINDENT
   .sp
   Normal short list format for the past 14 days.
   .INDENT 0.0

Here's a diff fragment of my changes:

   --- /usr/lib/python2.7/dist-packages/docutils/writers/manpage.py 
2015-06-08 16:34:27.602186607 -0500
   +++ /usr/local/lib/python2.7/dist-packages/docutils/writers/manpage.py   
2015-05-26 12:14:01.0 -0500
   @@ -213,7 +213,7 @@
 'definition_list_item' : ('.TP', ''),
 'field_name' : ('.TP\n.B ', '\n'),
 'literal' : ('\\fB', '\\fP'),
   -'literal_block' : ('.sp\n.nf\n', '\n.fi\n'),
   +'literal_block' : ('.sp\n.nf\n.ft C\n', '\n.ft P\n.fi\n'),
 
 'option_list_item' : ('.TP\n', ''),


So here's my quandary:

 * I've found it completely impossible to produce standards-compliant
   man pages using ReStructuredText with the Sphinx/Docutils tool
   suite, without running into this problem.
 * There's just no way I can find to work around this other than to either:
 o Alter the docutils/writers/manpage.py code, as shown above, or
 o Grep or sed out the gratuitous .ft  commands from the
   resultant output.

I think the best way forward with this is to opt for the latter and 
modify cyrus-docs/Makefile to strip the resulting manpages from 
cyrus-docs/build/man, like so:


   ...
   BUILDDIR  = build
   SED   = /bin/sed
   snip
   man:
$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
$(SED) -i -e 's/^\.ft.*//' $(BUILDDIR)/man/*.[0-9]*
@echo
@echo Build finished. The manual pages are in $(BUILDDIR)/man.
   ...

Thoughts?

Cheers,
-nic

--
Nic Bernstein n...@onlight.com
Onlight, Inc. www.onlight.com
1442 N Farwell Ave., Suite 600v. 414.272.4477
Milwaukee, Wisconsin  53202

attachment: nic.vcf

tls_prune dying on startup

2015-05-21 Thread Nic Bernstein

Folks,
I'm seeing a problem on 2.5.2 with creation of the tls_sessions.db file: 
cyrus/tls_prune[31096]: DBERROR: opening /run/cyrus/tls_sessions.db: 
cyrusdb error


It appears that tls_prune(8) can't create the file if it doesn't exist, 
and by exiting with an error, can cause master to die.  Since this file 
is supposed to be able to live (and die) on non-permanent storage, 
shouldn't tls_prune be able to cope with its absence?


To be clear, I have a tls_prune in START in cyrus.conf.

   START {
recovercmd=/usr/sbin/cyrus ctl_cyrusdb -r
delprunecmd=/usr/sbin/cyrus expire -E 3
tlsprunecmd=/usr/sbin/cyrus tls_prune
   }

Thanks!
-nic

--
Nic Bernstein n...@onlight.com
Onlight, Inc. www.onlight.com
1442 N Farwell Ave., Suite 600v. 414.272.4477
Milwaukee, Wisconsin  53202

attachment: nic.vcf

Re: Documentation Unification and Awesomeification

2015-05-21 Thread Nic Bernstein

Nicola,
Thanks for the follow up.  I've not had any time for documentation 
lately, but have found some issues which need repair on the work I have 
done.  I'll get that committed once it's clean.


Given what you've said, below, I will stop changing the man pages in the 
cyrus-imapd repo.  So far I've already been replicating all changes made 
there into cyrus-docs anyway.


Once I've got the commands pages doing what I want, I'll get a 
documentation best practices or style guide put together.  Something 
where I can note how the manpages are being done, and you can add 
whatever else.  Okay?


Cheers,
-nic

On 05/20/2015 10:34 PM, Nicola Nye wrote:

Hi Nic,
I am not (yet!) aware of much of the internals of imapd or sasl, so I 
think we have a good breakdown between us of input to add to the Cyrus 
docs. If you're able to unify and get the commands/config docs up to 
date, that is awesome.
Bron added you as a committer to the cyrus-docs repo, so you're free 
to update in there.
My plan is to ignore cyrus-imapd repository. Just concentrate on 
getting cyrus-docs current so we can declare the old cyrus-imapd docs 
area obsolete. Trying to update both is just resulting in double the 
work for little gain.
To that end, I suggest you continue declaring your conventions on 
handling things in cyrus-docs (such as handling the revision data, 
along with the stylistic conventions) and throw up a note in the 
Phabricator wiki about how it's now all done, much as you did with the 
Documentation Desktop Tools.
For providing fancier web based documentation vs man page 
documentation, a quick rummage around the Sphinx docs shows that you 
can specify to only include content which contains certain tags. 
Perhaps we can set up some tags for html only output. 
http://sphinx-doc.org/markup/misc.html#directive-only
I also wonder if this might be used to give us simple versioning, if 
we want to generate a separate doctree for each imap release. (Instead 
of having a single doctree with inline notes). Probably a bridge to 
cross later!

Cheers,
   Nicola
On Tue, May 19, 2015, at 10:22 PM, Nic Bernstein wrote:

Nicola, et alia,
[Apologies for top-posting, but it seemed appropriate here]
Glad to see you jumping on board, and welcome!
This all sounds good, and much needed.  Something brought home to me 
by my recent push to harmonize man pages (between the two branches 
you've mentioned) is that the current bifurcation between cyrus-imapd 
and cyrus-docs repositories presents some problems.
Since there /is/ still documentation, in the form of man pages, at 
least, in the cyrus-imapd repository, any proper document review and 
update ends up touching both repos, and thus requires separate 
commits (or diffs, in arcanist lingo) and separate review and 
landing tasks.

whinge

I submitted D31 over a month ago and it sat unattended until
about a week ago, when it was reviewed and cleared for landing. 
But, as I have insufficient rights, I cannot land it.  That's in

the cyrus-imapd repo so thus requires someone with rights in that
branch to land them.

Similarly, I've more recently submitted D43, D44  D45, which
still await review, etc.

/whinge
I'm not asking for such rights, but I am hoping that someone can make 
some proper sense out of this split repo.  In an IRC exchange, Jeroen 
wrote:


[2015-05-06 15:37:44] kanarip_ *fwiw, i also plan to generate
very much larger man-pages by using the rst*
[2015-05-06 15:42:36] kanarip_ *so, this for example:
https://docs.cyrus.foundation/imap/admin/commands/chk_cyrus.html*
[2015-05-06 15:42:44] kanarip_ *can also become chk_cyrus.8*
[2015-05-06 15:43:04] kanarip_ *but there's just much more
real-estate in the web page than there is in the man page, right?*
[2015-05-06 15:43:14] kanarip_ *and much more markup to be used
and abused*
[2015-05-06 15:43:43] kanarip_ *so i would prefer that when we
aim to make the documentation more complete if you will*
[2015-05-06 15:44:26] kanarip_ *barring that the actual man
page when used as a man page does not become completely
illegible, it only needs to state the text even if in a slightly
less legible format IMHO*
[2015-05-06 15:44:34] onlight /Ok, but how shall we harmonize
the two different versions?  Shall we deprecate the old-style
stuff in cyrus-imap/man in preference/
[2015-05-06 15:45:17] onlight /for the newer RST-based stuff?.../
[2015-05-06 15:45:43] kanarip_*i would like to, and then be
able to create a git submodule for the docs repo, and then
generate the docs, and then pull those docs back in as man-pages*
[2015-05-06 15:45:56] kanarip_ *with the exception of
man/imapd.conf.5 of course*

I am by no means a git expert, so have no idea what's involved with 
realizing this goal, but I do think it would help tremendously to be 
able to abandon the old stuff in cyrus-imapd/man for converted pages 
from cyrus-docs

Re: Documentation Unification and Awesomeification

2015-05-19 Thread Nic Bernstein
 * There are stylistic differences which should/must get sorted
 o Traditional man pages, such as those in cyrus-imapd/man,
   alternate *bold* and /italic/ like so:
 + # *command --option* /value/ *-D -b -C*
   //etc/imapd-new.conf/ *-X* ...
 o Man page output produced by Sphinx, however, does not follow
   this convention.
 o In the existing collection of reStructured Text files, there is
   a mix of ``literal`` and **bold** for the same thing, such as
   command name.
 + The convention is **bold**, but whatever is used, we should
   unify this
 + For the record, this does not appear to make a significant
   difference in HTML output, but does affect man page
   rendering (at least in my experience).

Okay, I'll get off of my soapbox for now.  I just wanted to take this 
opportunity to get some of these issues out there.


Cheers,
-nic

On 05/18/2015 10:57 PM, Nicola Nye wrote:

Hi folks,
I'm a tech writer with FastMail and I'm here to help.
Here's my plan to organise the (many and flavourful) varieties of 
documentation surrounding the Cyrus imap universe. Please speak up if 
you have thoughts/ideas/objections!

*The Goal*
Make the content on docs.cyrus.foundation the authoritative source for 
all things Cyrus Imap/Sasl.
(The server/websitename will be changing at some point, but we still 
need the content in one spot)

*The Plan*
Migrate content from cyrusimap mediawiki, where appropriate. Update as 
necessary.
Absorb relevant content lurking on git.cyrus.foundation's wiki 
(specifically the developer setup/install guide)
Update cyrusimap.org/cyrussasl.org 
http://cyrusimap.org/cyrussasl.org to just point people at 
docs.cyrus.foundation

*Doc structure*
So what should the new docs.cyrus.foundation look like? Much as it 
does now, just with more!

Home

 *
   What is Cyrus
 *
   About the Cyrus Foundation (what, who, history, bylaws)
 *
   Latest news
 *
   Features (roadmap)

Download

 *
   Beta, Stable, Old
 *
   Pointers to Docs/Install guides

Documentation

 *
   Contributor (Set up your dev env, prerequisites, obtaining
source and libraries, building, verifying, gotchas, faq)
 *
   Administrator (installation, verification, customisation,
operation, faq, man pages)

Support

 *
  Contact (irc, mailing list)
 *
  Bug reports

And generally making it more pretty - cyrusimap has an icon and colour 
scheme which presumably could be brought over to docs.cyrus.foundation 
which currently looks stylistically sparse.
Nic (onlight) seems to have a good handle on bringing the man pages up 
to date and ensuring they're current at docs.cyrus.foundation, which 
is great. (cyrus-docs/source/imap/admin/commands and in cyrus-imap/man 
both contain man pages)

*Questions*
Is someone able to upgrade my privileges so I can commit changes to 
the cyrus-docs tree? (/Jeroen?/)
Does the new site need copyright content across it (a la cyrusimap 
which refers to CMU). If so, what do we need? Currently it just says 
copyright The Cyrus Team.
What's the process for pushing a new batch of docs onto 
docs.cyrus.foundation once they're written?

What else am I missing?
Cheers,
Nicoloa


--
Nic Bernstein n...@onlight.com
Onlight llc.  www.onlight.com
219 N. Milwaukee St., Ste. 2A v. 414.272.4477
Milwaukee, Wisconsin  53202   f. 414.290.0335



Re: Minutes 11 May

2015-05-14 Thread Nic Bernstein

On 05/11/2015 08:52 AM, Bron Gondwana wrote:

Speaking of naming - cyrusfoundation ==http://www.cyrusfoundation.org/
== not us.  We need a new name.  Cyrus IMAP Foundation - two imappy.
Cyrus Mail Foundation - not enough cal/carddav.  Cyrus Connect -
doesn't someone already own * Connect?  But maybe.  reCyrus /
librecyrus / recycle.  Hmm...  Great names greatly appreciated.  Make
your mark here, but don't make it a trademark that somebody else has
already... yeah, that.*sigh*.  All the good ones are taken or insane
(or both).


How about something which recognizes the impending JMAP aspect, like 
cyrusjmap.{com|org|foundation}?

-nic

--
Nic Bernstein n...@onlight.com
Onlight llc.  www.onlight.com
219 N. Milwaukee St., Ste. 2A v. 414.272.4477
Milwaukee, Wisconsin  53202   f. 414.290.0335



Re: #documentation_reviewers

2015-05-14 Thread Nic Bernstein

On 05/14/2015 08:42 PM, Chris Davies wrote:
Does anyone know how I join #documentation_reviewers on phabricator?  
I tried to give myself permission but got:


You do not have permission to edit this object.
Users with the Can Edit capability:

  * Administrators can take this action.

I assume it sends people in the #documentation_reviewers group an 
email whenever the documentation changes? If so I would like to join 
this group. If you have admin permission, could you please add 
'davies' to the group?




Chris,
I think the best way to achieve the goal of being notified of all 
changes to documentation is to become a watcher on the Documentation 
project in Phabricator.  To do so, go to the project's page, 
https://git.cyrus.foundation/project/profile/8/, and click Watch Project 
on the right side of the screen:


   Watching a project will let you monitor it closely. You will receive
   email and notifications about changes to every object associated
   with projects you watch.

I think that will give you what you want.

Cheers,
-nic

--
Nic Bernstein n...@onlight.com
Onlight llc.  www.onlight.com
219 N. Milwaukee St., Ste. 2A v. 414.272.4477
Milwaukee, Wisconsin  53202   f. 414.290.0335



Re: Cyrus Documentation tools

2015-05-13 Thread Nic Bernstein

On 05/13/2015 04:33 AM, Bron Gondwana wrote:

Doxygen would be fine.
On Wed, May 13, 2015, at 09:24 AM, Chris Davies wrote:
Adding the Cyrus mailing list as I can't remember who the other 
documentation person is.
Do you think something like Doxygen 
http://www.stack.nl/%7Edimitri/doxygen/index.html would be of use 
for the Cyrus project? it can generate HTML docs and man pages.

I haven't downloaded it yet but it claims to do what we need.


Chris,
The current documentation, in the cyrus-docs branch, is in reStructured 
Text http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html.


There's a page up on the wiki which describes what I have used to get up 
and working with this existing collection of files:

https://git.cyrus.foundation/w/documentation_desktop_tools/


On Wed, 13 May 2015, at 05:08 PM, Chris Davies wrote:

Just trying to figure out how Cyrus works and exploring the admin tools:

https://docs.cyrus.foundation/imap/admin.html
The ctl_deliver program outputs a list of files and/or
directories that it expects to exist, but that in fact do not.
The ctl_mboxlist program outputs a list of files and/or
directories that it expects to exist, but that in fact do not.
The cvt_cyrusdb program outputs a list of files and/or
directories that it expects to exist, but that in fact do not.
The cyr_dbtool program outputs a list of files and/or
directories that it expects to exist, but that in fact do not.


Yeah, maybe not.


To be fair, these are all in the Work-in-progress section of the page, 
which includes this disclaimer:


   *For the following parts of the documentation, while they are a
   work-in- progress, you may already have better documentation on your
   system, in the form of actual man-pages.*

We are in the process of fixing all of this.  For example, a recent 
commit, D31 https://git.cyrus.foundation/D31, is ready to land, and 
contains updates to the ctl_cyrusdb(8), chk_cyrus(8) and unexpunge(8) 
man pages (these being in cyrus-imap branch, in the /man/ directory).


Another issue with which we're contending, and which was discussed 
recently on IRC, is that there's two versions (at least) of some of this 
stuff, in cyrus-docs/source/imap/admin/commands and in cyrus-imap/man.  
I'm currently working to harmonize these two versions so we can dump one 
or the other.


One of the reasons to get access control working again on the old site, 
www.cyrusimap.org, is to at least allow that to serve as an intermediary 
resource until the new site gets up to snuff.  All of the commands you 
list, above, are fully documented here:

http://www.cyrusimap.org/docs/cyrus-imapd/2.4.17/man.php

But, we know that the branches for newer releases (2.5*) there are 
broken, so for now stick with the 2.4.17 until we can get the rest fixed.


Cheers,
-nic (on IRC as 'onlight')


Bron, Who was the other person working on documentation?

Simon Amor.  Who is on this list I'm pretty sure.  He's ^Simon^ in IRC.

Bron.
--
Bron Gondwana
br...@fastmail.fm


--
Nic Bernstein n...@onlight.com
Onlight, Inc. www.onlight.com
1442 N Farwell Ave., Suite 600v. 414.272.4477
Milwaukee, Wisconsin  53202

attachment: nic.vcf

Re: Cyrus-devel Digest, Vol 115, Issue 7

2015-05-12 Thread Nic Bernstein

On 05/12/2015 08:36 PM, Chris Davies wrote:

[quoting me wihout reference...]

I've already spoken up about trying to do something about this, but to
no avail.  I'll volunteer to at the very least uncrap things a bit.
However, the current site has some problems with the authentication
system.  I have credentials on the site, but had lost/forgotten the
password.  I used the password reset facility, but now when I log in I
am asked to change my password, and that process always results in this
message:

 There seems to be a problem with your login session; this action has
 been canceled as a precaution against session hijacking. Go back to
 the previous page, reload that page and then try again.

So I'm stuck.  If someone can fix this, fine; please do so.  If not, I
can register again, but then need someone with authority to authorize my
new account, and I'll probably be asked to update my password, and...
(wash, rinse, repeat).

Have you tried a different web browser?


Yes, Firefox, Epiphany and Chromium on three different Linux hosts. This 
is not a browser issue, or if it is, it's a pervasive one.


Cheers,
-nic

--
Nic Bernstein n...@onlight.com
Onlight llc.  www.onlight.com
219 N. Milwaukee St., Ste. 2A v. 414.272.4477
Milwaukee, Wisconsin  53202   f. 414.290.0335



Re: Minutes 11 May

2015-05-11 Thread Nic Bernstein

On 05/11/2015 03:53 PM, Nic Bernstein wrote:

lirecyrus.{io|com|org} are all available


Opps, typo.  I meant to write that librecyrus.{io|com|org} are all 
available.

-nic

--
Nic Bernstein n...@onlight.com
Onlight, Inc. www.onlight.com
1442 N Farwell Ave., Suite 600v. 414.272.4477
Milwaukee, Wisconsin  53202

attachment: nic.vcf

Re: Minutes 11 May

2015-05-11 Thread Nic Bernstein

On 05/11/2015 08:52 AM, Bron Gondwana wrote:

Website - the situation with cyrusimap.org and cyrus.foundation is
awfully confusing. Somebody needs to take ownership for uncrapping this.
Nobody put their hand up yet, so we'll see if it happens by Thursday or
I might start appointing people;)


I've already spoken up about trying to do something about this, but to 
no avail.  I'll volunteer to at the very least uncrap things a bit.  
However, the current site has some problems with the authentication 
system.  I have credentials on the site, but had lost/forgotten the 
password.  I used the password reset facility, but now when I log in I 
am asked to change my password, and that process always results in this 
message:


   There seems to be a problem with your login session; this action has
   been canceled as a precaution against session hijacking. Go back to
   the previous page, reload that page and then try again.

So I'm stuck.  If someone can fix this, fine; please do so.  If not, I 
can register again, but then need someone with authority to authorize my 
new account, and I'll probably be asked to update my password, and... 
(wash, rinse, repeat).



Speaking of naming - cyrusfoundation ==http://www.cyrusfoundation.org/
== not us.  We need a new name.  Cyrus IMAP Foundation - two imappy.
Cyrus Mail Foundation - not enough cal/carddav.  Cyrus Connect -
doesn't someone already own * Connect?


FWIW, both cyrus-connect.com and cyrus-connect.org are available, as are 
the unhyphenated versions, cyrusconnect.{com|org}.



   But maybe.  reCyrus /


recyrus.{io|com|org} are all available


librecyrus


lirecyrus.{io|com|org} are all available

Okay, putting aside simple whois searches and getting back to work now.
-nic

PS - Great to meet folks at OpenSuSE and Kolab conferences last week. :-)


  / recycle.  Hmm...  Great names greatly appreciated.  Make
your mark here, but don't make it a trademark that somebody else has
already... yeah, that.*sigh*.  All the good ones are taken or insane
(or both).



--
Nic Bernstein n...@onlight.com
Onlight, Inc. www.onlight.com
1442 N Farwell Ave., Suite 600v. 414.272.4477
Milwaukee, Wisconsin  53202

attachment: nic.vcf

Re: Meeting 2015-04-23T12:00:00Z

2015-04-23 Thread Nic Bernstein

On 04/23/2015 04:50 AM, Bron Gondwana wrote:

This time NEXT week, I'll be in the air still, on my way to Amsterdam for Kolab 
Summit, where I'm
talking about Cyrus:

https://conference.kolab.org/kolab-summit/sessions/cyrus-imapd-past-current-and-future

I'll send slides around soon and stuff.


I'll be arriving in The Hague on 30/4 for the Summit.  Anyone else 
getting there before 2/5 who might be interested in some sort of meet-up 
before or during the summit?  If so, please respond and I'll see if I 
can put something together.


That's in addition to Bron's highly anticipated session, of course. :-)

Cheers,
-nic

--
Nic Bernstein n...@onlight.com
Onlight llc.  www.onlight.com
219 N. Milwaukee St., Ste. 2A v. 414.272.4477
Milwaukee, Wisconsin  53202   f. 414.290.0335



Re: uniqueid based paths

2015-03-23 Thread Nic Bernstein

On 03/23/2015 06:09 AM, Thomas Jarosch wrote:

With uniqueid based paths, it won't be easy to use unix tools to grep
the message base of a single user only. You first need to filter
the list of folders and then limit your view to that folder list.

A tool that lists the user folder - uniqueid based path
in a machine parsable way (=scriptable) might help here.


This sounds like an updated (uniqueid aware) version of mbpath(8) to me.
-nic

--
Nic Bernstein n...@onlight.com
Onlight llc.  www.onlight.com
219 N. Milwaukee St., Ste. 2A v. 414.272.4477
Milwaukee, Wisconsin  53202   f. 414.290.0335