How to move mail from one user's folder to another, or to send it for external delivery: Difference between revisions

Line 8: Line 8:




* Then you need to prepare file with a lot of lines, like 1/25+1 of number of messages in his folder needed to copy. If, for example, the messages from folder /test need to be moved, then this file should have the first line: "search 'in:test'" and all other lines: "search -n" (means "give next page of the search results"), like:
* Then you need to prepare file with a lot of lines, like 1/25+1 of number of messages in his folder needed to copy. If, for example, the messages from folder /test need to be moved, then this file should have the first line: "search -t message 'in:test'" and all other lines: "search -n" (means "give next page of the search results"), like:






         search 'in:test'
         search -t message 'in:test'
         search -n
         search -n
         search -n
         search -n

Revision as of 17:13, 2 September 2008

How to move mail messages from one user's mail folder to another user

(or to send them to external delivery).

  • First you need to identify zimbra store folder of this user, like


        mysql -e "select * from zimbra.mailbox where comment like 'user@domain.com'"


  • Then you need to prepare file with a lot of lines, like 1/25+1 of number of messages in his folder needed to copy. If, for example, the messages from folder /test need to be moved, then this file should have the first line: "search -t message 'in:test'" and all other lines: "search -n" (means "give next page of the search results"), like:


        search -t message 'in:test'
        search -n
        search -n
        ....
        search -n


  • Then you feed this file to zmmailbox to get message IDs:


        zmmailbox -z -m user@impulse.net  messagelist.txt


  • And then we ready to get all the messages in the format ready to feed them to sendmail:


        for i in `grep '^[0-9]' messagelist.txt | awk '{print $2}' | sed 's/-//'`; do
          find /opt/zimbra/store/0//msg/ -name $i\* >> filelist.txt
        done
        for i in `cat filelist.txt`; do
          zmmailbox -z -m  am  $i;
        done


(if there are a lot of messages, it's better to create a file with lines "am $i" and to feed them to zmmailbox because it starts slowly.

  • If the messages should be sended to external domain, then the last step may be something like this:


     for i in `grep '^[0-9]' messagelist.txt | awk '{print $2}' | sed 's/-//'`; do
       find /opt/zimbra/store/0//msg/ -name $i\* >> filelist.txt;
     done
     for i in `cat filelist.txt`; do
       sendmail -i  <$i;  
     done
Jump to: navigation, search