Configuração do Exim4 que me permite enviar e-mails sem se tornar um retransmissor aberto

0

Portanto, adquiri um VPS e um domínio ( my_domain.com , digamos) e agora gostaria de configurar minha própria infraestrutura de email baseada em exim4 para fins de aprendizado. Para não produzir um retransmissor aberto, preciso de algum conhecimento básico sobre as práticas recomendadas para autenticação.

Meu entendimento inicial é que o MTA (exim4) deve agir em dois papéis quando se trata de autenticação:

  • Quando meu MUA (Apple Mail em um MacBook, por exemplo) se conecta a ele por SMTP, ele deve insistir na autenticação. Se o endereço do remetente for [email protected] , o nome de usuário / senha do usuário (Debian) me no VPS deverá ser exibido. Meu ISP atribui endereços IP variáveis, então eu não pude corrigir o MAU para um determinado, nem sei o intervalo aplicável. Em qualquer caso, após essa autenticação, o MTA deve enviar (retransmitir?) A mensagem para o MTA relevante (em mail.your-domain.com , digamos) sem autenticação adicional.

  • Quando outro MTA (em mail.your-domain.com , digamos) entra em contato com meu MUA por SMTP, ele deve ser entregue apenas quando o domínio de destino for my_domain.com (ou seja, permitir isso como domínio local) e descarregar de outra forma ( ou seja, não atuar como um revezamento aberto).

Minhas perguntas são duas vezes assim: Meu entendimento básico está correto e o seguinte conjunto de respostas para dpkg-reconfigure exim4-config atingirá essa configuração / meta?

mail name: my_domain.com
IP-addresses to listen on for incoming SNMP connection: (the VPS)
local domains: mail;my_domain.com
domains to relay mail for: (none)
machines to relay mail for: (none)
keep DNS-queries minimal: no
delivery method for local mail: mbox format in /var/mail
split configuration file into small files: no
root and postmaster mail recipient: root

Atualmente, estou intrigado porque isso não menciona nenhuma autenticação (ou com base em que o MTA poderia fazer uma distinção entre conexões SMTP de um MUA ou outro MTA) e se as mensagens para domínios diferentes de domínios locais serão " despejado". Isso parece para mim como se ele permitisse que meu MTA recebesse mensagens para my-domain.com de qualquer lugar, não fosse um retransmissor aberto, mas também não permitiria que meu MUA enviasse qualquer coisa através dele.

    
por Drux 20.07.2018 / 08:17

2 respostas

2

exim é poderoso e flexível o suficiente para atuar em qualquer função que você queira. Mas, para operações normais de SMTP, o único cenário necessário para a autenticação é "alguém quer enviar ou retransmitir a mensagem por mim". A submissão e a retransmissão devem ser strongmente restritas para evitar a excomunhão por DNSBLs. Se exim serve para alguma sub-rede, s & r é normalmente restrito a essa sub-rede. Mas se os hosts do cliente estiverem vagando pela Internet com IPs alterados dinamicamente de várias sub-redes, a única possibilidade de restringir clientes é a autenticação.

Primeiro de tudo você tem que habilitar a criptografia SMTP com SSL / TLS

daemon_smtp_ports       = 25 : 465 : 587 
tls_on_connect_ports    = 465
tls_certificate         = /path/exim.crt
tls_privatekey          = /path/exim.key

O par autoassinado gerado por openssl é suficiente. A criptografia é uma opção para o SMTP simples na porta 25 ou MSA em 587 e obrigatória para SMTPS em 465.

A autenticação só será possível para clientes criptografados para evitar a aprovação da passagem de login pela conexão não criptografada:

auth_advertise_hosts    = ${if eq{$tls_cipher}{}{}{*}}

Qualquer não-emtpy $tls_cipher gerado quando o TLS é estabelecido é um bom sinal para iniciar a autenticação.

Agora podemos usar a ACL:

acl_smtp_connect        = acl_conn
acl_smtp_rcpt           = acl_rcpt
acl_smtp_data           = acl_data

begin acl
.....
acl_rcpt:
  accept authenticated = *
  accept         hosts =  : +relay_from_hosts
  require      domains = +relay_to_domains : +local_domains
  deny

Aqui aceitamos a mensagem para s & r em três casos:

  1. se o cliente for autenticado
  2. se o cliente estiver na lista de hosts / sub-redes conhecidos
  3. se a mensagem estiver sendo recebida para um de nossos domínios.
  4. o último deny não é necessário, já que a terceira regra faz deny implicitamente, mas para melhor compreensão eu gosto de colocar a aceitação / negação final explícita em todos os casos.

Os outros MTAs são geralmente passados por terceira regra, não importando se são autenticados ou não. Não podemos exigir autenticação de outros MTAs, pois isso não é obrigatório por RFCs. Mas nós restringimos strongmente todos os MTAs externos às mensagens apenas para nossos domínios. Nós não retransmitimos suas mensagens para os outros domínios sob nenhuma circunstância.

    
por 20.07.2018 / 11:05
1

A configuração que a configuração Debian oferece é para uso local normal. Configurações mais complicadas, como com a autenticação, precisarão de edição manual da configuração.

É provavelmente mais fácil reconfigurar para a configuração dividida. Então você pode habilitar a autenticação em /etc/exim4/conf.d/auth/. O arquivo 30_exim4-config_examples contém muitos exemplos comentados que devem ser suficientes para ajudá-lo em seu caminho.

O fragmento plain_server usa um arquivo passwd em / etc / exim4 / que contém nomes de usuários e senhas separados por dois pontos. Por padrão, o exim só oferecerá autenticação quando a conexão for criptografada, o que é uma coisa boa.

Eu uso o serviço de autenticação do dovecot para validar usuários no exim; Dessa forma, se um usuário pode acessar o DoVecot (por exemplo, IMAP), então eles podem usar as mesmas credenciais para enviar e-mail através do Exim.

    
por 20.07.2018 / 08:51