postfix relay baseado na origem

2

Eu tenho 4 servidores. prod1.example.com, prod2.example.com, dev1.example.com e dev2.example.com. Todos eles enviam seus e-mails para smtp.example.com. Este servidor faz o relé. Agora quero que dev1 e dev2 enviem todos os seus e-mails para [email protected], exceto os e-mails que são enviados para [email protected]. Os e-mails de prod1 e prod2 são retransmitidos sem qualquer restrição.

Eu li que no arquivo de acesso você pode definir que um servidor deve ser manipulado por um filtro em vez de um simples RELAY (com FILTER foo: bar). Não consigo encontrar como e onde preciso definir este foo (transporte) e bar (destino). Todos esses parâmetros diferentes me confundem. Também em que ordem os diferentes arquivos são tratados?

Alguém pode me ajudar?

    
por Marco 19.12.2014 / 16:35

2 respostas

1

Sua pergunta pode ser expressa por esse pseudocódigo

if (client == dev1 OR client == dev2)
    if recipient == admin
        pass it
    else
        redirect to devbox
else
    pass it

Infelizmente, o postfix não tem linguagem genérica (exemplo vcl para configuração de verniz) para lidar com a restrição e o encaminhamento. Então, podemos tentar resolvê-lo com o recurso de tabela de hash do postfix. Eu tenho duas ideia de como resolver esse problema.

Solução de várias portas

Eu assumo que (por padrão) seus servidores dev e prod se conectam ao smtp.example.com com a mesma porta (porta 25). Se você puder modificar o código e ajustar a restrição do firewall, então dev1 e dev2 devem se conectar a smtp.example.com com uma porta diferente de 25 (por exemplo, porta 2525), então você pode ir com uma solução simples. Se este cenário não for possível, você pode pular esta ideia e ir para a solução 2.

Para permitir que o servidor dev se conecte ao postfix via porta 2525, defina outra instância smtpd com essa linha em master.cf

2525       inet  n       -       n       -       -       smtpd -o smtpd_client_restrictions=check_recipient_access,pcre:/etc/postfix/devbox

Agora, o conteúdo de /etc/postfix/devbox

/admin@example\.com/    OK
/devbox@example\.com/   OK
/.*/                   REDIRECT [email protected]

Agora, o servidor prod não recebe o filtro acima, porque eles estão conectados ao postfix pela porta 25. Assim, ele pode passar pelo postfix como antes.

Solução de Classes de Restrição

Se um cenário como a primeira ideia não for possível, você poderá alcançá-lo com a classe de restrição. Para fazer isso, você pode usar o recurso postfix chamado de classes de restrição. Veja

No main.cf adicione esta linha

smtpd_restriction_classes = devbox
devbox = check_recipient_access pcre:/etc/postfix/devbox
smtpd_recipient_restrictions = 
    ...
    check_client_access hash:/etc/postfix/emailrouting,
    ...

Conteúdo de /etc/postfix/emailrouting

dev1.example.com    devbox
dev2.example.com    devbox

Conteúdo de /etc/postfix/devbox

/admin@example\.com/    OK
/devbox@example\.com/   OK
/.*/                   REDIRECT [email protected]
    
por 19.12.2014 / 18:06
1

Eu não sou especialista nisso, mas eu tenho me metido com o Postfix recentemente e posso pelo menos empurrá-lo na direção certa.

Com o postfix, você pode usar aliases e mapear um endereço ou um grupo de endereços para outro. O que você provavelmente desejará é o mapeamento recipient_canonical:

link

Concedido usando esse método significa que você teria que colocar todos os endereços possíveis no arquivo para garantir que os emails para qualquer endereço diferente de [email protected] sejam enviados para [email protected], mas com o mapeamento você pode usar o Regex.

link

Minhas sugestões seriam perguntar no Stackoverflow por uma regex simples para verificar se o endereço NÃO é igual a [email protected] e enviar para [email protected]. Isso significaria que todos os outros endereços passariam por essa verificação e, portanto, iriam para [email protected], enquanto [email protected] falharia e, portanto, seria simplesmente enviado para o endereço pretendido.

Espero que isso possa lhe dar um empurrãozinho na direção certa, quaisquer perguntas que você tiver, eu responderei do melhor modo possível.

    
por 19.12.2014 / 16:53

Tags