Usei abordagens um pouco diferentes, mas que resolveu o que precisava.

CONFIGURAÇÃO E MÓDULOS
------------------------------------------------------------------------------------------------
Módulos ativos e configuração do Postfix:
svrpostfix:/etc/postfix # postconf -m
        btree
        cidr
        environ
        hash
        internal
        ldap
        mysql
        nis
        pcre
        proxy
        regexp
        sdbm
        static
        tcp
        Unix

svrpostfix:/etc/postfix # postconf -n
        alias_database = hash:/etc/postfix/aliases
        alias_maps = hash:/etc/postfix/aliases
        allow_min_user = no
        biff = no
        bounce_queue_lifetime = 1d
        broken_sasl_auth_clients = yes
        canonical_maps =
        command_directory = /usr/sbin
        config_directory = /etc/postfix
        content_filter = smtp-amavis:[127.0.0.1]:10024
        daemon_directory = /usr/lib/postfix
        data_directory = /var/lib/postfix
        debug_peer_level = 2
        defer_transports =
        disable_dns_lookups = no
        disable_mime_output_conversion = no
        disable_vrfy_command = yes
        enable_original_recipient = no
        home_mailbox = Maildir/
        html_directory = /usr/share/doc/packages/postfix-doc/html
        inet_protocols = ipv4
        mail_spool_directory = /var/mail
        mailbox_command = /usr/lib/dovecot/deliver
        mailbox_size_limit = 0
        mailbox_transport =
        mailq_path = /usr/bin/mailq
        manpage_directory = /usr/share/man
        masquerade_classes = envelope_sender, header_sender, header_recipient
        masquerade_domains =
        masquerade_exceptions = root
        maximal_backoff_time = 4000s
        maximal_queue_lifetime = 1d
        message_size_limit = 15728640
        message_strip_characters = \0
        minimal_backoff_time = 300s
        mydestination = $myhostname, localhost, localhost.localdomain, 
localhost.$myhostname
        mydomain = dominio.com
        myhostname = svrpostfix.dominio.com.br
        mynetworks = 127.0.0.0/8, 10.1.11.0/24
        mynetworks_style = class
        myorigin = svrpostfix.dominio.com.br
        newaliases_path = /usr/bin/newaliases
        proxy_read_maps = $canonical_maps $lmtp_generic_maps 
$local_recipient_maps $mydestination $mynetworks $recipient_bcc_maps 
$recipient_canonical_maps     $relay_domains $relay_recipient_maps 
$relocated_maps $sender_bcc_maps $sender_canonical_maps $smtp_generic_maps 
$smtpd_sender_login_maps        $transport_maps $virtual_alias_domains 
$virtual_alias_maps $virtual_mailbox_domains $virtual_mailbox_maps 
$smtpd_sender_restrictions
        queue_run_delay = 300s
        readme_directory = /usr/share/doc/packages/postfix-doc/README_FILES
        recipient_bcc_maps = 
proxy:mysql:/etc/postfix/mysql/recipient_bcc_maps_domain.cf, 
proxy:mysql:/etc/postfix/mysql/recipient_bcc_maps_user.cf
        recipient_delimiter = +
        relay_domains = $mydestination, 
proxy:mysql:/etc/postfix/mysql/relay_domains.cf
        sample_directory = /usr/share/doc/packages/postfix-doc/samples
        sender_bcc_maps = 
proxy:mysql:/etc/postfix/mysql/sender_bcc_maps_domain.cf, 
proxy:mysql:/etc/postfix/mysql/sender_bcc_maps_user.cf
        sender_canonical_maps =
        sendmail_path = /usr/sbin/sendmail
        setgid_group = maildrop
        smtp_data_init_timeout = 240s
        smtp_data_xfer_timeout = 600s
        smtp_enforce_tls = no
        smtp_sasl_auth_enable = no
        smtp_use_tls = no
        smtpd_client_restrictions =
        smtpd_data_restrictions = reject_unauth_pipelining
        smtpd_enforce_tls = no
        smtpd_helo_required = yes
        smtpd_helo_restrictions = permit_mynetworks,permit_sasl_authenticated, 
check_helo_access pcre:/etc/postfix/helo_access.pcre
        smtpd_recipient_restrictions = reject_unknown_sender_domain, 
reject_unknown_recipient_domain, reject_non_fqdn_sender, 
reject_non_fqdn_recipient,        reject_unlisted_recipient, 
check_policy_service inet:127.0.0.1:7777, permit_mynetworks, 
permit_sasl_authenticated, reject_unauth_destination,   
reject_non_fqdn_helo_hostname, reject_invalid_helo_hostname, 
check_policy_service inet:127.0.0.1:10031
        smtpd_reject_unlisted_recipient = yes
        smtpd_reject_unlisted_sender = yes
        smtpd_sasl_auth_enable = yes
        smtpd_sasl_authenticated_header = no
        smtpd_sasl_local_domain =
        smtpd_sasl_path = ./dovecot-auth
        smtpd_sasl_security_options = noanonymous
        smtpd_sasl_type = dovecot
        smtpd_sender_login_maps = 
proxy:mysql:/etc/postfix/mysql/sender_login_maps.cf
        smtpd_sender_restrictions = permit_mynetworks, 
reject_sender_login_mismatch, permit_sasl_authenticated
        smtpd_tls_CAfile = /etc/ssl/certs/iRedMail_CA.pem
        smtpd_tls_cert_file = /etc/ssl/certs/iRedMail_CA.pem
        smtpd_tls_key_file = /etc/ssl/private/iRedMail.key
        smtpd_tls_loglevel = 0
        smtpd_tls_security_level = may
        smtpd_use_tls = no
        strict_8bitmime = no
        strict_rfc821_envelopes = no
        tls_random_source = dev:/dev/urandom
        transport_maps = proxy:mysql:/etc/postfix/mysql/transport_maps_user.cf, 
proxy:mysql:/etc/postfix/mysql/transport_maps_domain.cf,        
proxy:hash:/etc/postfix/transport
        unknown_local_recipient_reject_code = 550
        virtual_alias_domains =
        virtual_alias_maps = 
proxy:mysql:/etc/postfix/mysql/virtual_alias_maps.cf, 
proxy:mysql:/etc/postfix/mysql/domain_alias_maps.cf,         
proxy:mysql:/etc/postfix/mysql/catchall_maps.cf, 
proxy:mysql:/etc/postfix/mysql/domain_alias_catchall_maps.cf, 
ldap:/etc/postfix/ldap.accounts,         hash:/etc/postfix/virtual_alias_domains
        virtual_gid_maps = static:303
        virtual_mailbox_base = /vmail
        virtual_mailbox_domains = 
proxy:mysql:/etc/postfix/mysql/virtual_mailbox_domains.cf
        virtual_mailbox_maps = 
proxy:mysql:/etc/postfix/mysql/virtual_mailbox_maps.cf, 
proxy:ldap:/etc/postfix/ldap.accounts
        virtual_minimum_uid = 303
        virtual_transport = dovecot
        virtual_uid_maps = static:303


Busca de endereços de email no Active Directory, abordagem #1:
------------------------------------------------------------------------------------------------
Testei duas configurações, com a finalidade de para buscar endereços de emails 
válidos no Active Directory. Na primeira abordagem, para cada mensagem recebida 
é feita uma busca no Active Directory:
        svrpostfix:/etc/postfix # cat main.cf | grep ldap.accou
                virtual_alias_maps = 
proxy:mysql:/etc/postfix/mysql/virtual_alias_maps.cf, 
proxy:mysql:/etc/postfix/mysql/domain_alias_maps.cf,         
proxy:mysql:/etc/postfix/mysql/catchall_maps.cf, 
proxy:mysql:/etc/postfix/mysql/domain_alias_catchall_maps.cf, 
ldap:/etc/postfix/ldap.accounts,         hash:/etc/postfix/virtual_alias_domains
                virtual_mailbox_maps = 
proxy:mysql:/etc/postfix/mysql/virtual_mailbox_maps.cf, 
proxy:ldap:/etc/postfix/ldap.accounts

        svrpostfix:/etc/postfix # cat ldap.accounts
                server_host = ldap://IP.DC.Y.Z:3268
                search_base = dc=dominio,dc=com,dc=br
                version = 3
                query_filter = (&(objectClass=user)(mail=%s))
                result_attribute = sAMAccountName
                result_format = %u...@dominio.com.br
                bind = yes
                bind_dn = homol...@dominio.com.br
                bind_pw = <Senha KeePass>
                timeout = 20

Busca de endereços de email no Active Directory, abordagem #2:
------------------------------------------------------------------------------------------------
A segunda abordagem, que se mostrou mais efetiva, faz a busca agendada no AD de 
todas as contas de emails ativos (principal, aliases e grupos) e criar um mapa 
local para o transporte. A vantagem é a diminuição do tráfego junto aos 
controladores de domínio, fazendo apenas duas consultas ao dia e em horários 
não-conflitantes com usuários. É usado um script em Perl que faz a alimentação 
desse arquivo (abaixo):

        use Net::LDAP;
        use Net::LDAP::Control::Paged;
        use Net::LDAP::Constant ( "LDAP_CONTROL_PAGED" );
        $VALID = "/etc/postfix/transport";

        $dc1="controlador1.dominio.com.br";
        $dc2="controlador2.dominio.com.br";
        $hqbase="dc=dominio,dc=com,dc=br";
        $user="CN=Serviços SMTP Active 
Directory,OU=OU-Servicos,DC=dominio,DC=com,DC=br";
        $passwd="<Senha KeePass>";

        $noldapserver=0;
        $ldap = Net::LDAP->new($dc1) or
           $noldapserver=1;
        if ($noldapserver == 1)  {
           $ldap = Net::LDAP->new($dc2) or
              die "Error connecting to specified domain controllers $@ \n";
        }

        $mesg = $ldap->bind ( dn => $user,
                     password =>$passwd);
        if ( $mesg->code()) {
            die ("error:", $mesg->code(),"\n","error name: 
",$mesg->error_name(),
                "\n", "error text: ",$mesg->error_text(),"\n");
        }
        $page = Net::LDAP::Control::Paged->new( size => 990 );
        @args = ( base     => $hqbase,
                 filter => "(& (mailnickname=*) (| (&(objectCategory=person)
                            
(objectClass=user)(!(homeMDB=*))(!(msExchHomeServerName=*)))
                            
(&(objectCategory=person)(objectClass=user)(|(homeMDB=*)
                            
(msExchHomeServerName=*)))(&(objectCategory=person)(objectClass=contact))
                            
(objectCategory=group)(objectCategory=publicFolder)(objectClass=msExchDynamicDistributionList)
 ))",
                  control  => [ $page ],
                  attrs  => "proxyAddresses",
        );
        my $cookie;
        while(1) {
          my $mesg = $ldap->search( @args );

          foreach my $entry ( $mesg->entries ) {
            my $name = $entry->get_value( "cn" );
            foreach my $mail ( $entry->get_value( "proxyAddresses" ) ) {
             if ( $mail =~ s/^(smtp|SMTP)://gs ) {
               push(@valid, $mail."     smtp:exchange\n");
             }
            }
          }
          $mesg->code and last;
          my($resp)  = $mesg->control( LDAP_CONTROL_PAGED ) or last;
          $cookie    = $resp->cookie or last;

          $page->cookie($cookie);
        }
        if ($cookie) {
          $page->cookie($cookie);
          $page->size(0);
          $ldap->search( @args );
             die("LDAP query unsuccessful");
        }
        open VALID, ">$VALID" or die "CANNOT OPEN $VALID $!";
        print VALID @valid;

        close VALID;

Trecho do arquivo criado pelo script getadsmtp.pl:
------------------------------------------------------------------------------------------------
        svrpostfix:/etc/postfix # cat transport
        abelardo.nov...@dominio.com.br  smtp:exchange
        mangana...@gmail.com                    smtp:exchange
        a...@dominio.com.br                     smtp:exchange
        a...@dominio.com.br                     smtp:exchange
        (...)
        zsan...@dominio.com.br                  smtp:exchange
        zelia.san...@dominio.com.br             smtp:exchange
        zso...@dominio.com.br                   smtp:exchange
        zelia.so...@dominio.com.br              smtp:exchange

Agendamento para busca de emails e atualização do mapa
------------------------------------------------------------------------------------------------
        30 12,18 * * * /etc/postfix/getadsmtp.pl >/dev/null
        40 12,18 * * * /usr/sbin/postmap /etc/postfix/transport >/dev/null


-----Mensagem original-----
De: postfix-br-boun...@listas.softwarelivre.org 
[mailto:postfix-br-boun...@listas.softwarelivre.org] Em nome de vic
Enviada em: terça-feira, 23 de agosto de 2011 14:47
Para: Grupo de Usuarios Postfix do Brasil
Assunto: Re: [Postfix-BR] RES: RES: RES: Postfix com MySQL: como entregar parte 
localmente e o restante em outro servidor

Em ter 23 ago 2011, às 12:47:27, Adauto Soares da Silva escreveu:
> Eu tinha até testado dessa forma, mas acabo recebendo o erro abaixo depois
> de excluir a entrada e recarregar o Postfix:
>
>         5.1.1 <adauto.soa...@dominio.com.br>: Recipient address rejected:
> User unknown in virtual mailbox table;
>
> Continua nesse erro 550 e fiz vários ajustes no transporte. Fica como se o
> Postfix o ignorasse. Eu te agradeço pela ajuda e tem razão sobre VIRTUAL. O
> man dele explicita sobre o redirecionamento pra outro domínio, não para o
> mesmo servidor. Eu tinha testado com live.com.
>
>                 #        @domain address, address, ...
>                 #               Redirect mail for other users in domain to
> address.
>
> O transporte é que está pegando.
>

Para resolver o erro de usuário não existe, basta você adicionar no seu
virtual_mailbox_maps e virtual_mailbox_domains um hash ou consulta no seu
servidor exchange para que o postfix saiba os usuários que existem lá.

--
vic
http://choppnerd.com
_______________________________________________
Postfix-BR mailing list
Postfix-BR@listas.softwarelivre.org
http://listas.softwarelivre.org/mailman/listinfo/postfix-br

Essa mensagem e anexos são endereçados exclusivamente ao remetente acima 
indicado, podendo conter dados confidenciais. É proibido a pessoas não 
autorizadas, sob qualquer forma ou pretexto, utilizá-los, divulgá-los, 
alterá-los, de forma impressa ou copiada, total ou parcialmente. Caso tenha a 
recebido erroneamente, por favor, notifique o remetente e providencie imediata 
exclusão da original e de qualquer cópia. O uso impróprio será tratado conforme 
as normas da empresa e da legislação em vigor.
Esta mensagem expressa o posicionamento pessoal do remetente e não reflete 
necessariamente a opinião da Mútua.
_______________________________________________
Postfix-BR mailing list
Postfix-BR@listas.softwarelivre.org
http://listas.softwarelivre.org/mailman/listinfo/postfix-br

Responder a