Como dissociar um servidor web de um servidor de email?

2

Eu tenho um servidor que executa um servidor web e um servidor de email para vários domínios, e ambos os serviços estão configurados para usar certificados SSL do Let's Encrypt (para cada domínio, o servidor web e o servidor de email usam o mesmo certificado). / p>

Eu quero ir para uma configuração de 2 servidores e hospedar o servidor da web em uma máquina e o serviço de e-mail em outra. Para que isso aconteça, acredito que vou me deparar com esses obstáculos:

  • Gerenciamento de certificados: Preciso conseguir obter certificados duplicados para cada domínio, para que as duas possam provar quem são ou, possivelmente, que a máquina de hospedagem de e-mail obtenha somente certificados para mail.example.com em vez de example.com e configurá-lo para todos os domínios
  • Enviar e-mail do servidor da web: alguns dos sites que preciso hospedar terão formulários de contato, login e registro, e esses precisam ser capazes de acionar mensagens de e-mail. Esse parece ser o maior problema, pois não sei como configurar o Postfix no servidor da Web para, talvez, enviá-los por meio do servidor de e-mail.

Qual seria a melhor maneira de desacoplar esses serviços e como eu seria capaz de configurar um servidor para cada serviço sem entrar nos problemas que descrevi?

    
por goncalotomas 07.03.2018 / 18:18

2 respostas

1

Você já destacou as principais etapas deste processo: certificados e delegação de serviços de e-mail da Web para o servidor de e-mail.

Com relação aos certificados, eu recomendaria usar nomes de host diferentes para o servidor de e-mail e da web e também para certificados diferentes.

Como você está usando Vamos criptografar - a maioria dos casos de uso de suas ferramentas são para servidores web. O protocolo ACME precisa de uma verificação de que você está no controle do seu nome de domínio. Isso funciona bem com recursos da web. O certbot (ou qualquer outra ferramenta que suporte o ACME) colocará um arquivo simples em sua webroot e instruirá o Let's Encrypt a verificar por solicitação HTTP ou HTTPS.

Para o seu servidor de email, isso não funciona. Mas se você usar qualquer provedor de DNS compatível (como o Amazon Route 53 ou DNS Made Easy ou ...) você pode fazer o mesmo sem um servidor web.

Veja a lista a seguir sobre os plug-ins de provedor de DNS suportados no Certbot:

--dns-cloudflare      Obtain certificates using a DNS TXT record (if you are
                      using Cloudflare for DNS). (default: False)
--dns-cloudxns        Obtain certificates using a DNS TXT record (if you are
                      using CloudXNS for DNS). (default: False)
--dns-digitalocean    Obtain certificates using a DNS TXT record (if you are
                      using DigitalOcean for DNS). (default: False)
--dns-dnsimple        Obtain certificates using a DNS TXT record (if you are
                      using DNSimple for DNS). (default: False)
--dns-dnsmadeeasy     Obtain certificates using a DNS TXT record (if you
                      areusing DNS Made Easy for DNS). (default: False)
--dns-google          Obtain certificates using a DNS TXT record (if you are
                      using Google Cloud DNS). (default: False)
--dns-luadns          Obtain certificates using a DNS TXT record (if you are
                      using LuaDNS for DNS). (default: False)
--dns-nsone           Obtain certificates using a DNS TXT record (if you are
                      using NS1 for DNS). (default: False)
--dns-rfc2136         Obtain certificates using a DNS TXT record (if you are
                      using BIND for DNS). (default: False)
--dns-route53         Obtain certificates using a DNS TXT record (if you are
                      using Route53 for DNS). (default: False)

Veja o exemplo a seguir como funciona para o Route53 da Amazon:

# set AWS API credentials
export AWS_ACCESS_KEY_ID="1234567890"
export AWS_SECRET_ACCESS_KEY="ABCDEFGHIJKLMNOPQRSTUVWXYZ"

# create a certificate
certbot certonly --noninteractive --agree-tos -m [email protected] \n
  --no-eff-email --dns-route53 --rsa-key-size 4096 \n 
  -d mail.example.com -d smtp.example.com -d imap.example.com

Como você pode ver na última linha do meu exemplo, Vamos Criptografar suporta vários certificados de domínio. Se o seu servidor de e-mail atende a vários domínios, você precisa seguir esse caminho. SMTP ou IMAP não suporta SNI como o HTTPS.

O segundo passo é encaminhar seus e-mails do seu servidor da Web para o servidor de e-mail. Como prática recomendada para cada serviço, um servidor separado Linux / Unix usará o correio local em muitos casos. Então você não deve remover o Postfix inteiramente do seu servidor web. Altere a configuração do Postfix para a configuração chamada "satélite". Aqui, o seu Postfix encaminhará mensagens para um servidor de retransmissão e fornecerá o SMTP apenas para serviços locais (soquete e / ou host local: 25).

Se você está usando Debian ou Ubuntu você pode reconfigurar o Postfix via:

dpkg-reconfigure postfix

Na configuração do satélite, será solicitado um servidor de retransmissão de email. Digite aqui o nome de domínio do seu novo servidor de e-mail (por exemplo, mail.example.com).

Em sua configuração do servidor de e-mail, você deve ativar o endereço IP do seu servidor da Web como fonte confiável para retransmissão de e-mail. Uma boa abordagem é usar a diretiva de configuração Postfix permit_mynetworks .

    
por 08.03.2018 / 08:40
2

Os certificados em um servidor consistem em três partes:

Primeiro, a chave privada : é gerada pelo próprio aplicativo ou por uma ferramenta como o openssl. A chave privada é a parte mais importante aqui e precisa ser mantida em segredo, já que todos que possuem a chave podem representar seus servidores.

Geralmente é protegido por uma senha.

Usando a chave privada, você gera um chamado "CSR", que é uma solicitação de certificação. Você envia isso para uma autoridade para gerar um certificado a partir dele.

A solicitação contém dados sobre sua empresa (País, Local, Nome da empresa, cidade, alguns deles opcionais) e todos os nomes de host para os quais o certificado deve ser válido (1-n), esse recurso é chamado de "nomes alternativos de assunto"

Este certificado é a segunda parte necessária.

A terceira parte é a cadeia de certificados (ou seja, todos os certificados envolvidos na criação do certificado). Você geralmente obtém a cadeia da autoridade junto com seu certificado. Caso contrário, você pode sempre baixá-lo no site da autoridade.

Conhecendo esses fatos, é fácil concluir que:

desde que

  • como você tem as três partes (mais importante a chave privada)
  • como seu software de servidor (servidor de email, servidor da web, qualquer que seja) permite a importação de uma chave privada externa
  • porque o nome do host do servidor corresponde a pelo menos UM dos nomes alternativos de assunto no certificado (ou o certificado é um certificado curinga)

você pode usar um certificado para quantos servidores quiser.

O desacoplamento não é um problema.

    
por 07.03.2018 / 18:40