Page 2 of 2 FirstFirst 12
Results 11 to 13 of 13

Thread: postfix transport maps

  1. #11
    Join Date
    Nov 2007
    Rep Power

    Default Did this ever work for you?

    Hello ZoemDoef,

    I am trying to do a similar thing by forwarding all zimbra mail to a mailarchiva system for obvious reasons. However, I tried what you attempted, that is, adding a transport map file to the postfix in zimbra, but I could not get zimbra to see the settings in the transport map file I created, and added to the config.

    I suspect the problem has something to do with how zimbra uses the ldap file for the transport map, and not a standard hash transport file.

    Would you please let me know if you got this to work, and what you ended up doing to config your zimbra if you did.

    I would really appreciate the help.


  2. #12
    Join Date
    Jul 2008
    Rep Power

    Default zimbra per user migration and transport maps


    I'm live in Brasília, Brasil, i dont speak english fluently, but i'll try to explain my problem.

    I'm a employe of Brasilian Federal Governament on MDA (Ministério do Desenvolvimento Agrário,, today our mail solution is a combination of Postfix with OpenLDAP backend, Courier POP/IMAP, SASL, SpamAssassin+Razor+Pyzor, Clamav, Postgrey and Postix-policyd-spf-python, and our webmail is the poor SquirrelMail, now we want to migrate to zimbra, but we need to do a per user migration, leaving the old solution online, for security reasons, working togetter with zimbra.

    So, we create a MX gateway who read a specific attribute in our main openLDAP tree, the name of this attribute is mailHost from qmail-schema.

    See the transport maps of our gateway mx

    # here we do a specific check, if the account exist go/deliver, if not, discard message...

    local_recipient_maps = ldap:ldaplocal
    ldaplocal_server_host =
    ldaplocal_search_base = dc=br
    ldaplocal_bind_dn = cn=admin,dc=nodomain
    ldaplocal_bind_pw = password
    ldaplocal_query_filter = (&(mail=%s)(accountStatus=active))
    ldaplocal_result_attribute = uid

    # here we check the mailHost attribute to deliver the message to your MTA

    transport_maps = ldap:ldaptransport
    ldaptransport_server_host =
    ldaptransport_server_port = 389
    ldaptransport_bind = yes
    ldaptransport_bind_dn = cn=admin,dc=nodomain
    ldaptransport_bind_pw = password
    ldaptransport_timeout = 5
    ldaptransport_search_base = dc=br
    ldaptransport_query_filter = (&(mail=%s)(accountStatus=active))
    ldaptransport_result_attribute = mailHost
    ldaptransport_result_filter = relay:%s
    ldaptransport_lookup_wildcards = no

    mailHost could be or

    The gateway works fine, but i need to create the same transport map on zimbra, because without this zimbra will deliver the message only localy.

    I was read this post

    and i'm trying to implement that, changing

    POSTCONF transport_maps LOCAL postfix_transport_maps

    on to

    POSTCONF transport_maps ldap:/opt/zimbra/conf/,ldap:/opt/zimbra/conf/

    See the content of

    server_host =
    server_port = 389
    bind = yes
    bind_dn = cn=admin,dc=nodomain
    bind_pw = password
    timeout = 5
    search_base = dc=br
    query_filter = (&(mail=%s)(accountStatus=active)(
    result_attribute = mailHost
    result_filter = relay:%s
    lookup_wildcards = no

    But after this change, zimbra show a lot erros in mailbox.log

    2008-07-18 10:55:12,903 WARN [btpool0-32] [;mid=14; ip=;ua=ZimbraWebClient - FF3.0 (Linux)/5.0.6_GA_2313.UBUNTU6;] ParsedMessage - Unable to parse part 1 (, text/plain) of message with Message-ID <29105227.781216389312901.JavaMail.root@zimbra.mda>. Object will not be indexed.
    com.zimbra.cs.object.ObjectHandlerException: error running ZimletHandler com_zimbra_url
    at com.zimbra.cs.object.ObjectHandler.parse(ObjectHan
    at com.zimbra.cs.mime.MimeHandler.getObjects(MimeHand
    at com.zimbra.cs.mime.MimeHandler.getDocument(MimeHan
    at com.zimbra.cs.mime.ParsedMessage.analyzePart(Parse
    at com.zimbra.cs.mime.ParsedMessage.analyzeBodyParts(
    at com.zimbra.cs.mime.ParsedMessage.analyzeNonBodyPar ts(
    at com.zimbra.cs.mime.ParsedMessage.analyzeFully(Pars
    at com.zimbra.cs.mailbox.Mailbox.addMessage(Mailbox.j ava:4494)
    at com.zimbra.cs.mailbox.Mailbox.addMessage(Mailbox.j ava:4471)
    at com.zimbra.cs.mailbox.MailSender.sendMimeMessage(M
    at com.zimbra.cs.mailbox.MailSender.sendMimeMessage(M
    at com.zimbra.cs.service.mail.SendMsg.doSendMessage(S
    at com.zimbra.cs.service.mail.SendMsg.handle(SendMsg. java:150)
    at com.zimbra.soap.SoapEngine.dispatchRequest(SoapEng
    at com.zimbra.soap.SoapEngine.dispatch(SoapEngine.jav a:267)
    at com.zimbra.soap.SoapEngine.dispatch(SoapEngine.jav a:159)
    at com.zimbra.soap.SoapServlet.doPost(SoapServlet.jav a:266)
    at javax.servlet.http.HttpServlet.service(HttpServlet .java:727)
    at com.zimbra.cs.servlet.ZimbraServlet.service(Zimbra
    at javax.servlet.http.HttpServlet.service(HttpServlet .java:820)
    at org.mortbay.jetty.servlet.ServletHolder.handle(Ser
    at org.mortbay.jetty.servlet.ServletHandler$CachedCha in.doFilter(
    at org.mortbay.servlet.UserAgentFilter.doFilter(UserA
    at org.mortbay.servlet.GzipFilter.doFilter(GzipFilter .java:132)
    at org.mortbay.jetty.servlet.ServletHandler$CachedCha in.doFilter(
    at org.mortbay.jetty.servlet.ServletHandler.handle(Se
    at org.mortbay.jetty.servlet.SessionHandler.handle(Se
    at org.mortbay.jetty.handler.ContextHandler.handle(Co
    at org.mortbay.jetty.webapp.WebAppContext.handle(WebA
    at org.mortbay.jetty.handler.ContextHandlerCollection .handle(
    at org.mortbay.jetty.handler.HandlerCollection.handle (
    at org.mortbay.jetty.handler.HandlerWrapper.handle(Ha
    at org.mortbay.jetty.handler.rewrite.RewriteHandler.h andle(
    at org.mortbay.jetty.handler.HandlerWrapper.handle(Ha
    at org.mortbay.jetty.Server.handle(
    at org.mortbay.jetty.HttpConnection.handleRequest(Htt
    at org.mortbay.jetty.HttpConnection$ ntent(
    at org.mortbay.jetty.HttpParser.parseNext(HttpParser. java:644)
    at org.mortbay.jetty.HttpParser.parseAvailable(HttpPa
    at org.mortbay.jetty.HttpConnection.handle(HttpConnec
    at org.mortbay.thread.BoundedThreadPool$ n(
    Caused by: com.zimbra.cs.zimlet.ZimletException: null regex value
    at com.zimbra.cs.zimlet.ZimletException.ZIMLET_HANDLE R_ERROR(
    at com.zimbra.cs.zimlet.handler.RegexHandler.match(Re
    at com.zimbra.cs.object.ObjectHandler.parse(ObjectHan
    ... 42 more

    What is the right way to create a new transport map in zimbra, to zimbra knowns where the message need to be delivered?

  3. #13
    Join Date
    Jan 2009
    Rep Power


    Quote Originally Posted by Artturi View Post
    I modified /opt/zimbra/conf/

    Append a value to the appropriate line, like


    Then restart postfix
    zmmtactl stop
    zmmtactl start

    I did this and it worked thanx, how do I do the same for "relay_recipients".
    There is no relay_recipient_maps line in the file ?

Similar Threads

  1. Replies: 3
    Last Post: 11-03-2007, 10:55 PM
  2. Sending Mail! Still something wrong!
    By BlueHaven in forum Installation
    Replies: 11
    Last Post: 08-02-2007, 04:19 PM
  3. Error while trying to view queues
    By SpEnTBoY in forum Administrators
    Replies: 17
    Last Post: 05-08-2007, 09:43 AM
  4. Cannot send mail.
    By jeremyshoe in forum Installation
    Replies: 7
    Last Post: 10-17-2006, 09:42 PM
  5. unable to restart zimbra after reboot
    By droefs in forum Administrators
    Replies: 28
    Last Post: 04-16-2006, 02:33 PM

Posting Permissions

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