como configurar o postfix para enviar correio local para outro servidor local?

2

Eu tenho um par de servidores de email que são compostos principalmente de Postfix, Procmail e Cyrus-IMAP e ambos funcionam bem. Os servidores IMAP são configurados em um par mestre / réplica simples. Todos os e-mails 'normais' são aceitos pelo Postfix do mestre, que os processa através do Procmail para serem entregues no Cyrus-IMAP em execução no mesmo servidor. Ambos os servidores são capazes de funcionar assim, mas apenas o mestre realmente recebe e-mail externo.

Atualmente, as contas locais em qualquer caixa enviam e-mail (por exemplo, gerado por tarefas agendadas) por meio de seu Postfix local, que é entregue localmente ao Cyrus-IMAP na mesma caixa.

No entanto, a replicação de Cyrus não gosta que as mudanças aconteçam diretamente na réplica, então eu preferiria que a réplica entregasse sua correspondência local para ser entregue ao mestre.

Eu vejo duas maneiras de conseguir isso:

  • altere o transporte local da réplica para enviar e-mails para o Postfix no servidor principal

ou

  • altere o procmail da réplica para enviar e-mails para o Cyrus-IMAP no servidor mestre.

Existe uma terceira forma de o servidor de réplica retransmitir tudo para o servidor mestre (ou seja, e-mails internos e externos), mas isso parece desnecessário. Não preciso alterar o modo como o correio externo é tratado - não há problemas em enviar um e-mail externo por meio do Postfix local que o retransmite externamente.

O que eu realmente gostaria de fazer é apenas alterar como os e-mails internos são processados na réplica para que eles sejam entregues ao mestre, seja no Postfix ou no servidor IMAP.

Configuração do meu transporte local existente no master.cf:

do postfix
procmail-local  unix  -       n       n       -       -       pipe
    flags=OR user=cyrus argv=/usr/bin/procmail -t -m RECIPIENT=${mailbox}
    SENDER=${sender} EXTENSION=${extension} /etc/procmailrc

Configuração de entrega existente para o Cyrus em procmailrc:

DELIVERMAIL="/usr/lib/cyrus/bin/deliver -r $SENDER -a $RECIPIENT $RECIPIENT
    
por starfry 20.03.2013 / 16:26

3 respostas

4

Eu faria isso mais cedo ainda - removendo seu nome de domínio de mydestination , os e-mails desse domínio devem ser entregues no servidor listado como MX para o seu domínio. Se você quiser especificar um servidor, ao invés de usar o MX, você deve usar o arquivo /path/to/postfix/etc/transport para isso. Esse arquivo deve ficar assim:

# all mails to our own domain should go to our main incoming server
ourdomain.com    smtp:[mainserver.ourdomain.com]

Por favor, note que as marcas [] são importantes - sem elas, seu servidor ainda procurará o registro MX para mainserver.ourdomain.com.

Após editar o arquivo, use o comando 'postmap / path / to / postfix / etc / transport'

Você também precisa ter certeza de que o postfix sabe usar esse arquivo, editando /path/to/postfix/etc/main.cf com a seguinte linha:

transport_maps = hash:/path/to/postfix/etc/transport

se o seu sistema usa arquivos db. Se em vez disso, ele usa arquivos dbm, a linha deve ser

transport_maps = dbm:/path/to/postfix/etc/transport
    
por 20.03.2013 / 16:37
0

Você pode tentar usar o transport_maps, na réplica que você colocou no main.cf

transport_maps = hash:/etc/postfix/transport

depois, em / etc / postfix / transport você coloca

localdomain smtp:yourmasterserver

não se esqueça de:

postmap /etc/postfix/transport

e reinicie o postfix

    
por 20.03.2013 / 17:17
0

A configuração é:

$ grep domain.com /etc/postfix/*
/etc/postfix/main.cf:relay_domains = domain.com
/etc/postfix/relay_recipients:"@domain.com OK"
Binary file /etc/postfix/relay_recipients.db matches
/etc/postfix/transport:domain.com  smtp:[ip.address.of.the.mail.server]
Binary file /etc/postfix/transport.db matches

Também não esqueça:

$ postmap /etc/postfix/transport
$ postmap  /etc/postfix/relay_recipients
$ /etc/init.d/postfix restart

(CentOS, RedHat)

    
por 18.06.2013 / 10:23