Wednesday, August 20, 2008

zimbra tips

Zimbra Tips


How to move mail messages from one user's mail folder to another user
(or to send them to external delivery)


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

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

  2. 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


  3. Then you feed this file to zmmailbox to get message IDs:

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

  4. 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.

  5. 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





How to "fix" system's sendmail (/usr/sbin/sendmail) for zimbra



(supposing system has alternatives, like debian, centos, ...)

  • First check what's there now:
    [root@zimbra ~]# ls -l /usr/sbin/sendmail
    lrwxrwxrwx 1 root root 21 Jun 23 12:21 /usr/sbin/sendmail -> /etc/alternatives/mta

    [root@zimbra ~]# update-alternatives --display mta
    mta - status is auto.
    link currently points to /usr/sbin/sendmail.sendmail
    /usr/sbin/sendmail.sendmail - priority 90
    slave mta-mailq: /usr/bin/mailq.sendmail
    slave mta-newaliases: /usr/bin/newaliases.sendmail
    slave mta-rmail: /usr/bin/rmail.sendmail
    slave mta-sendmail: /usr/lib/sendmail.sendmail
    slave mta-pam: /etc/pam.d/smtp.sendmail
    slave mta-sendmailman: /usr/share/man/man8/sendmail.sendmail.8.gz
    slave mta-mailqman: /usr/share/man/man1/mailq.sendmail.1.gz
    slave mta-newaliasesman: /usr/share/man/man1/newaliases.sendmail.1.gz
    slave mta-aliasesman: /usr/share/man/man5/aliases.sendmail.5.gz
    Current `best' version is /usr/sbin/sendmail.sendmail.

  • Then install alternative and check it:
    [root@zimbra ~]# update-alternatives --install /usr/sbin/sendmail mta-sendmail /opt/zimbra/postfix/sbin/sendmail 25
    [root@zimbra ~]# update-alternatives --display mta-sendmail
    mta-sendmail - status is auto.
    link currently points to /opt/zimbra/postfix/sbin/sendmail
    /opt/zimbra/postfix/sbin/sendmail - priority 25
    Current `best' version is /opt/zimbra/postfix/sbin/sendmail.