Announcement

Collapse
No announcement yet.

Dovecot Sieve and OX

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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, 02:54 PM.

  • #2
    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, 03:45 PM.

    Comment


    • #3
      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, 06:34 PM.

      Comment


      • #4
        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

        Comment


        • #5
          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, 09:38 AM.

          Comment


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

            Comment


            • #7
              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, 12:27 PM.

              Comment

              Working...
              X