Homepage | Products | OX Knowledge Base | Support | Try Now | Contact | Company
OX Logo
Results 1 to 7 of 7
  1. #1
    Bellerophon Guest

    Default Dovecot Sieve and OX

    Hello

    I'm currently trying to migrate from my old .procmail setup to Sieve with some difficulties .

    The Lda service is running fine and the Sieve Scripts generated by the OX are executed, but I have one problem.

    Let's take this script for example:
    Code:
    # Generated by OX Sieve Bundle on Fri Mar 13 10:59:07 UTC 2009
    require "fileinto" ;
    
    ## Flag: |UniqueId:0|Rulename: test
    if header :contains "Subject" "bla"
    {
        fileinto "INBOX.Trash" ;
        stop ;
    }
    The Problem I'm having here is that when the rule is executed the mail doesnt land in the .Trash Folder under INBOX like expected, another folder is created named .INBOX.Trash under the real INBOX, and thats not what anybody want's.

    Is there any Option to set a IMAP Path in the OX Config ? that would solve my problem, i guess

    any idea would be appreciated.

    LG

    ps: sry for my bad english
    Last edited by Bellerophon; 03-13-2009 at 02:54 PM.

  2. #2

    Default

    are you shure, that the MDA from Dovecot ist working ?
    are you working with virtuall Users or System Users ?
    where is your startup-Command from the Dovecot-MDA defined ? master.cf oder main.cf ?
    what say's your Dovecot- and /var/log/mail.info Logfile ?

    [EDIT]
    is there any Option to set a IMAP Path in the OX Config ?
    Last edited by fov; 03-13-2009 at 03:45 PM.

  3. #3
    Bellerophon Guest

    Default

    1.) yes

    2.) System Users

    3.) the mta is not postfix, it's exim, currently for the tests i only pipe my mailbox through the dovecot lda using a .forward file in my home dir with the following in it
    Code:
    | "/usr/lib/dovecot/deliver"
    4.) for example
    Code:
    deliver(p0004414): msgid=<2144555277.40.1236941982800.JavaMail.open-xchange@openexchange.uni-ak.ac.at>: saved mail to INBOX.Trash
    5.) sorry, for IMAP Path i meant something like you can do in any mail client, specify a IMAP root Path, like 'INBOX' for Courier (i'm currently useing a courier compatible namespace in dovecot cause we migrated to dovecot only a couple of month ago)

    6.) i've added a couple of screenshots, hopefully that will clear things up

    let's say we have a sieve rule that moves all messages with subject like 'Cron' to the folder 'Cron'
    Code:
    # Generated by OX Sieve Bundle on Fri Mar 13 13:36:34 UTC 2009
    require "fileinto" ;
    
    ## Flag: |UniqueId:0|Rulename: Cron
    if header :contains "Subject" "Cron"
    {
        fileinto "INBOX.Cron" ;
        stop ;
    }


    now let's take a look at the folder structure


    as you can see there are two Inbox folders, the original root inbox folder with the 'Cron' folder we want to move our mail to with sieve, and the second inbox folder with gets automaticly generated running from the sieve script with a Cron folder under it where sieve moves the mail to.

    the problem here is that the foler names in the sieve scripts automatically generated by ox are build like this 'INBOX.foldername' when in reality it should only be 'foldername' to work.

    the following is the namespace configuration of dovecot.
    Code:
    mail_location = maildir:~/Maildir
    # A courier compatible namespace declaration:
    namespace private {
            separator = .
            prefix = INBOX.
            inbox = yes
    }
    here's a short list of the folders in my maildir
    Code:
    /home/p0004414/Maildir
    .Cron
    cur
    .Drafts
    .Entw&APw-rfe
    .Gesendete Objekte
    .INBOX.Cron
    .Junk
    new
    .Papierkorb
    tmp

    any idea would be appreciated

    LG
    Last edited by Bellerophon; 03-13-2009 at 06:34 PM.

  4. #4

    Default

    deutsche Einstellungen im Screen-Shot ? Dann bleiben wir doch besser bei der Muttersprache.

    Der User hat aber schon Leserechte auf das Sieve-Verzeichnis ?
    Was sagt das Dovecot-Logfile ?
    Was Exim betrifft bin ich ein absoluter DAU. :-)

    Ich würde mal sagen, deinem /usr/lib/dovecot/deliver fehlt noch das "-d"

    http://wiki.dovecot.org/LDA/Exim

  5. #5
    Bellerophon Guest

    Default

    na dann halt deutsch ist mir eh lieber

    deliver -d, währe nur angebracht wen dovecot nicht weis für welchen user es jetzt das mail gerade ausliefern soll, das passt aber und wird ordentlich vom exim übergeben.

    der user hat die rechte,exim übergibt auch so wie es sein muss an dovecot, das sieve script wird auch ausgeführt, das passt alles, das einzige problem ist wen ich eine regel über den ox erstelle zB:

    ich will eine regel die mir alle mails mit betreff 'Cron' in den Ordner Cron verschiebt, der ox schreibt mir in die Sieve Regel dann hinein als Zielordner 'INBOX.Cron' damit es aber klappt und die mails wirklich im Ordner 'Cron' landen muss als Zielordner nur '.Cron' stehen.

    ich denke das das mit dem Courier Namepsace der im moment verwendet wird zusammenhängt, kann das vielleicht jemand bestätigen ?
    sonst setze ich den namespace am montag erstmal auf hidden und schau was passiert.
    Last edited by Bellerophon; 03-14-2009 at 09:38 AM.

  6. #6
    floeschie Guest

    Default

    Gleiches Problem hier mit Dovecot LDA, OX6 CE, System Users und Courier IMAP. Hat schon jemand ne Lösung?

  7. #7
    Bellerophon Guest

    Default

    das problem wird durch den namespace ausgelöst, ein workaround ist ein schneller hack von managesieve.py

    ersetz dabei einfach
    Code:
    def do_putscript(self, name, content):
            "2.6.  PUTSCRIPT Command"
    
            self.check_auth()
            try:
                self.storage[name] = content
            except ValueError, reason:
                return self.no(reason=reason)
            return self.ok()
    durch
    Code:
        
    def do_putscript(self, name, content):
            "2.6.  PUTSCRIPT Command"
    
            self.check_auth()
            try:
                # Change to filter the INBOX Namespace
                oxname = "null"
                self.storage[oxname] = content
                content = content.replace( 'INBOX.', '' )
                self.storage[name] = content
            except ValueError, reason:
                return self.no(reason=reason)
            return self.ok()
    das einzige wirklich wichtige dabei ist das der ox als scriptnamen beim anlegen ein verstecktes file verwendet (beginnend mit einem punkt) da diese nicht von pysieved gelistet werden und er daraufhin ein script mit den namen 'null' anfordert.

    ich hoffe das hilft dir weiter

    lg
    Last edited by Bellerophon; 04-03-2009 at 12:27 PM.

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •