O balanceamento de carga SMTP com o IP do host remoto passou para os servidores SMTP?

2

Estou tentando criar um cluster SMTP com balanceamento de carga. Os servidores de e-mail já existem e executam o Exim 4. Inicialmente, olhei para usar o Nginx para fazer o balanceamento de carga, mas no sistema de teste todos os servidores de e-mail veem as conexões de entrada como provenientes do IP do balanceador de carga IP do remetente, e depois de pesquisar no Google não parece haver nenhuma maneira de contornar isso. Como isso efetivamente transforma o cluster de e-mail em um retransmissor aberto, é claramente um não-iniciante, o que é uma pena, já que o Nginx funciona lindamente de outra forma.

Por isso, estou procurando usar o HAProxy, pois vejo que ele tem a capacidade de passar as conexões com o IP de origem original intacto para que as listas de permissão de retransmissão e as ACLs do sistema funcionem corretamente.

No entanto, tendo configurado HAProxy como por vários exemplos on-line, eu recebo "erro de sincronização SMTP" (e um erro de 500 séries para que o e-mail seja devolvido) e a conexão caia imediatamente ou apenas a conexão caia sem SMTP mensagem em tudo.

Aqui está o haproxy.conf em uso:

global

    log         127.0.0.1 local2

    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        nobody
    group       nobody
    daemon

    stats socket /var/lib/haproxy/stats

defaults
    log                     global
    option                  redispatch
    retries                 3
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout check           10s
    maxconn                 3000

listen smtp
    bind 0.0.0.0:25
    mode tcp
    no option http-server-close
    balance roundrobin
#    option smtpchk HELO smtp-in.example.com
    server smtp01 10.0.0.141:25 send-proxy check
    server smtp02 10.0.0.143:25 send-proxy check

Apesar da presença do comando send-proxy, que conheço é como você diz ao haproxy para passar pelo IP de origem, os logs do Exim são assim:

016-12-26 07:06:48 Erro de sincronização do protocolo SMTP (entrada enviada sem aguardar saudação): conexão rejeitada de H = [10.0.0.150] entrada="PROXY TCP4 10.0.0.150 10.0.0.143 40334 25 \ r \ nHELO smtp-in.example.comr \ n "

Neste caso, 150 é o balanceador de carga e o .143 é o servidor SMTP do Exim.

Perguntas:

  1. É possível obter o Nginx para apresentar as conexões SMTP aos servidores de e-mail com o IP de origem sendo o IP de origem remoto real em vez do balanceador de carga?

  2. Como alternativa, isso é possível no HAProxy e como isso é feito?

Nesse caso, o sistema de produção atual executa o LVS, mas depende das interfaces de balanceador de carga e de loopback em todos os servidores de correio que compartilham o mesmo endereço IP. O novo balanceador de carga será o OpenSUSE 42.2 e, entre outras coisas, se detectar um IP já em uso na rede, ele parece removê-lo de maneira útil para evitar um conflito. Então o LVS está na nova versão.

Outras soluções para o problema que estou considerando incluem a separação do tráfego SMTP de entrada e saída inteiramente (atualmente tudo é executado pelo mesmo balanceador de carga), instalando um retransmissor simples (qmail possivelmente) no endereço IP do balanceador de carga, configurado para permitir somente intervalos reconhecidos de acordo com a prática de retransmissão padrão e usar o round-robin de DNS simples nos registros MX para enviar SMTP de entrada diretamente para os servidores de email. Mas uma solução com balanceamento de carga seria mais elegante.

    
por Pyromancer 26.12.2016 / 09:12

1 resposta

0

Eu usei a verificação tcp personalizada

backend smtp-back
    mode tcp
    no option http-server-close
    balance roundrobin
    tcp-check expect string 220
    tcp-check send HELO\ test\r\n
    tcp-check expect string 250
    tcp-check send QUIT\r\n
    tcp-check expect string 221
    server mail01  mail01:25 check inter 60s rise 3 fall 3 backup
    server mail02  mail02:25 check inter 60s rise 3 fall 3 backup
    
por 24.10.2018 / 22:53