Postfix Divisão de Domínio em Armazenamentos de Correio Separados usando LDAP

1

Estou investigando uma nova configuração de email para substituir o Exchange em nossa organização usando o servidor proxy Cyrus-IMAP, Postfix e Perdition IMAP. Eu estou correndo em problemas lidando com o envio de e-mails para diferentes lojas de correio com base em um atributo LDAP (extensionAttribute15) que contém o departamento de três letras do usuário (ex. FIN, PAY, etc). Atualmente, executamos o Active Directory e estou tentando decidir qual seria a melhor maneira de mapear um departamento para um armazenamento de mensagens específico, já que eles não desejam definir um atributo de host de correio para cada usuário. Atualmente, estou usando o arquivo hosts para mapear o departamento de três letras para um armazenamento de e-mail, já que eles não querem consultar o DNS mais do que o necessário, embora eu não ache que essa seja uma solução viável a longo prazo. / p>

Existem dois servidores back-end Cyrus e um servidor Perdition / Postfix frontend. Eu tenho o proxy IMAP funcionando corretamente e puxando do armazenamento de email correto com base no departamento do usuário usando o arquivo hosts como mencionado acima, mas estou tendo problemas para obter o funcionamento correto do Postfix.

A documentação do ldap_table do Postfix menciona na opção result_format que retorna um endereço de host de e-mail como "smtp: [% s] pode servir como base para uma tabela de transporte, embora, quando tento fazer isso, recebo um erro no log de mensagens do postfix no servidor proxy:

postfix/qmgr[1593]: warning: connect to transport private/ldap: No such file or directory

Partes relevantes dos arquivos de configuração postados abaixo:

#/etc/postfix/main.cf
myhostname = perdition.test.domain.com
mydomain = test.domain.com
mydestination = $myhostname, localhost
mynetworks_style = subnet
virtual_transport = ldap:/etc/postfix/ldap-virtual-transport.cf
virtual_mailbox_domains = email.test.domain.com
virtual_mailbox_maps = ldap:/etc/postfix/ldap-aliases.cf
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases


#/etc/postfix/ldap-virtual-transport.cf
version = 3
server_host = ldap.domain.com
search_base = <email user search base>
bind_dn = <bind user dn>
bind_pw = <bind user pw>
query_filter = (sAMAccountName=%u)
result_attribute = extensionAttribute15
result_format = smtp:[%s]


#/etc/postfix/ldap-aliases.cf
version = 3
server_host = ldap.domain.com
search_base = <email user search base>
bind_dn = <bind user dn>
bind_pw = <bind user pw>
query_filter = (sAMAccountName=%u)
result_attribute = mail
result_format = %s


#/etc/postfix/master.cf
smtp      inet  n       -       n       -       -       smtpd
  -o smtp_dns_support_level=disabled
submission inet n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#628      inet  n       -       n       -       -       qmqpd
pickup    fifo  n       -       n       60      1       pickup
cleanup   unix  n       -       n       -       0       cleanup
qmgr      fifo  n       -       n       300     1       qmgr
#qmgr     fifo  n       -       n       300     1       oqmgr
tlsmgr    unix  -       -       n       1000?   1       tlsmgr
rewrite   unix  -       -       n       -       -       trivial-rewrite
bounce    unix  -       -       n       -       0       bounce
defer     unix  -       -       n       -       0       bounce
trace     unix  -       -       n       -       0       bounce
verify    unix  -       -       n       -       1       verify
flush     unix  n       -       n       1000?   0       flush
proxymap  unix  -       -       n       -       -       proxymap
proxywrite unix -       -       n       -       1       proxymap
smtp      unix  -       -       n       -       -       smtp
# When relaying mail as backup MX, disable fallback_relay to avoid MX loops
relay     unix  -       -       n       -       -       smtp
        -o smtp_fallback_relay=
#       -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq     unix  n       -       n       -       -       showq
error     unix  -       -       n       -       -       error
retry     unix  -       -       n       -       -       error
discard   unix  -       -       n       -       -       discard
local     unix  -       n       n       -       -       local
virtual   unix  -       n       n       -       -       virtual
lmtp      unix  -       -       n       -       -       lmtp
anvil     unix  -       -       n       -       1       anvil
scache    unix  -       -       n       -       1       scache


#/etc/hosts
172.29.99.43 store01 store01.test.domain.com FIN
172.29.99.41 store02 store02.test.domain.com PAY
    
por Phteven 27.08.2014 / 15:08

1 resposta

1

Estou usando com sucesso essa mesma configuração (principalmente). Parece muito com o seu, então deve funcionar com alguns ajustes. Eu mudaria o result_format ligeiramente:

result_format = smtp:%s

Você pode consultar essa tabela de pesquisa para ver se obtém os resultados esperados:

postmap -q [email protected] ldap:/etc/postfix/ldap-virtual-transport.cf

De qualquer forma, acho que o seu erro é usar o virtual_transport como uma tabela de consulta, quando não é. Em vez disso, você deve usar o transport_maps:

transport_maps = ldap:/etc/postfix/ldap-virtual-transport.cf
    
por 28.08.2014 / 00:10