Re: Allowing logins like [email protected] into cyrus

Pedro Algarvio <[email protected]> Fri, 02 Jun 2006 01:45:39 +0100
Newsgroups gmane.comp.isp.ispman.devel
Message-ID <[email protected]>
Quoting Pedro Algarvio <[email protected]>:

> Quoting Pedro Algarvio <[email protected]>:
>
>> After fidling with some cyrus options, I was able to log in into
>> cyrus
>> with [email protected] without the need for perdition (yes, I know we
>> must think of perdition as a way to separate mail for several mail
>> servers, still, I'd like the option not to use perdition).
>>
>> ISPMan already creates a [email protected], so part of the job is
>> done.
>> The next part is to instruct saslauthd to pass the realms(add -r to
>> options), this will make saslauthd pass [email protected] and not
>> just username or username_domain_tld.
>>
>> After that, add to /etc/imapd.conf:
>> virtdomains: on
>>
>> Now we get into more trouble because cyrus does not have that
>> mailbox, but, if we create the apropriate mailbox, it will work.
>>
>> cm [email protected]
>>
>> Bellow is the patch to correcly create the mailbox from the console:
>> -------------------------------------------------------------------------------
>> diff -Naur ispman.createMailbox.sav ispman.createMailbox
>> --- ispman.createMailbox.sav    2006-05-31 01:32:26.000000000 +0100
>> +++ ispman.createMailbox        2006-05-31 02:14:07.000000000 +0100
>> @@ -27,8 +27,8 @@
>>      my $str = shift;
>>      ( $uid, $domain ) = split( '@', $str );
>>      if ($domain) {
>> -        $domain =~ s/\./_/g;
>> -        $str = join '_', ( $uid, $domain );
>> +        $domain =~ s/\./\\./g;
>> +        $str = join '\@', ( $uid, $domain );
>>      }
>>      return $str;
>>  }
>> -------------------------------------------------------------------------------
>>
>> Couldn't get the rest going because I dont know where ISPMan set's
>> the
>> mailbox to username_domain_tld, which should become
>> [email protected], else, it will always fail from the web
>> interface.
>> If I know this part, maybe I can get to the bottom of the rest.
>>
>> P.S.: Thanks derjohn, we'll continue patching/debugging this subject
>> when both of us have had some sleep :)
>>
>> P.S. 2: Oh, and joerg, please, please, please.... ;)
>>
>
> Ok, it's finaly working, here are the patches I remember to have done :)
> -------------------------------------------------------------------------------
> --- lib/ISPMan/UserMan.pm.sav   2006-05-31 21:46:04.000000000 +0100
> +++ lib/ISPMan/UserMan.pm       2006-05-31 21:48:46.000000000 +0100
> @@ -586,11 +586,12 @@
>   # If you don't want this behaviour and just wasn't uid uncomment  the
> next line;
>   # return $userId;
>
> -    $domain =~ s/\./_/g;
> -    $userId =~ s/\./_/g;
> +#    $domain =~ s/\./_/g;
> +#    $userId =~ s/\./_/g;
>
>      unless ( $userId =~ /$domain$/ ) {
> -        $userId = join "_", ( $userId, $domain );
> +        $userId = join "@", ( $userId, $domain );
> +#        $userId = join "_", ( $userId, $domain );
>      }
>      return $userId;
>  }
> -------------------------------------------------------------------------------
> --- bin/ispman.createMailbox.sav        2006-05-31 01:32:26.000000000 +0100
> +++ bin/ispman.createMailbox    2006-05-31 02:14:07.000000000 +0100
> @@ -27,8 +27,8 @@
>      my $str = shift;
>      ( $uid, $domain ) = split( '@', $str );
>      if ($domain) {
> -        $domain =~ s/\./_/g;
> -        $str = join '_', ( $uid, $domain );
> +        $domain =~ s/\./\\./g;
> +        $str = join '\@', ( $uid, $domain );
>      }
>      return $str;
>  }
> -------------------------------------------------------------------------------
> --- bin/ispman.deleteUser.sav   2006-05-31 19:46:39.000000000 +0100
> +++ bin/ispman.deleteUser       2006-05-31 19:46:57.000000000 +0100
> @@ -20,8 +20,8 @@
>  ( $user, $domain ) = split( '@', $ARGV[0] );
>  $ispmanDomain = $domain;
>
> -$domain =~ s/\./_/g;
> -$uid = join '_', ( $user, $domain );
> +$domain =~ s/\./\\./g;
> +$uid = join '\@', ( $user, $domain );
>
>  my $dn = $ispman->getUserDN( $ispmanDomain, $uid );
>  if ( $ispman->entryExists($dn) ) {
> -------------------------------------------------------------------------------
> --- bin/ispman.setMailboxQuota.sav      2006-05-31 02:19:34.000000000 +0100
> +++ bin/ispman.setMailboxQuota  2006-05-31 02:41:43.000000000 +0100
> @@ -11,7 +11,18 @@
>  }
>  require "cyrusadmin.pm";
>
> -$mailbox = join "", ( $mailbox_prefix, $ARGV[0] );
> +sub email2uid {
> +       my $str = shift;
> +       ( $uid, $domain ) = split( '@', $str );
> +       if ($domain) {
> +               $domain =~ s/\./\\./g;
> +               $str = join '\@', ( $uid, $domain );
> +       }
> +       return $str;
> +}
> +
> +
> +$mailbox = join "", ( $mailbox_prefix, email2uid($ARGV[0]) );
>  $quota = $ARGV[1];
>  try( $imap->set_quota( $mailbox, $quota ) );
> -------------------------------------------------------------------------------
>
> You MUST, have one of 'virtdomains: on'/'virtdomains: userid' on
> /etc/imap.conf, and you also MUST include '-r' on the options of the
> init script of saslauthd.
>
>
> A funny thing though, after being able to login with that test user,
> and saving a draft, here are the mailboxes created:
> [email protected] (\HasNoChildren)
> [email protected] (\HasChildren)
>
> Is this the normal behaviour?
>
> Thanks!
> --
> Pedro Algarvio


Included is the finished patch, the only lacking stuff I can remember  
now that I wish to include it the optionally creation of sub-mailboxes  
like drafts, sent, etc, based on a list probably.


Pedro Algarvio
   __ ___  ___ _______        ___ __
|   Y   .'  _|   _   .-----.'  _|  |_   .-----.----.-----.
|.  |   |   _|   1___|  _  |   _|   _|__|  _  |   _|  _  |
|.  |   |__| |____   |_____|__| |____|__|_____|__| |___  |
|:  1   |    |:  1   |                             |_____|
|::.. . |    |::.. . |        [email protected]
`-------'    `-------'         [email protected]

----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.

[Attachment stripped: Original attachment type: "text/x-patch", name: "my-ispman.diff"]

_______________________________________________
Ispman-developers mailing list
Ispman-developers-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
https://lists.sourceforge.net/lists/listinfo/ispman-developers