Forçando a criptografia para o SMTP de saída com o Postfix

22

Alguém sabe como dizer ao Postfix para criptografar mensagens enviadas?

Eu o configurei para usar criptografia na recepção, mas não consigo fazer isso com o correio enviado. Este é o meu main.cfarquivo:

smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_path = smtpd
transport_maps = hash:/etc/postfix/transport

# tls config
smtp_use_tls = yes
smtpd_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_key_file = /etc/postfix/ssl/smtpd.pem
smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.pem
smtpd_tls_CAfile = /etc/postfix/ssl/smtpd.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
Simon
fonte

Respostas:

30

smtp_tls_security_level = encrypt ou smtp_enforce_tls = yes

Para destinos específicos, você pode usar smtp_tls_policy_maps

smtp_use_tls = yes e smtp_enforce_tls = yes estão obsoletos. Com o Postfix 2.3 e posterior, use smtp_tls_security_level .

Lembre-se: impor a criptografia TLS pode causar problemas na entrega de mensagens para o host SMTP, que não possui o TLS configurado. Se o servidor for usado para enviar e-mails apenas para o servidor interno com TLS configurado, não haverá problema nesse caso. Mas se o servidor for usado para entregar correio a servidores públicos, você não poderá assumir que todos os servidores têm suporte a TLS. Nesse caso, use smtp_tls_security_level = may

sumar
fonte
1
Eu acho que ele só quer aplicá-lo do cliente de email do software para o servidor de envio. Não de servidor de correio para servidor de correio (veja o comentário publicado em 7 '10 às 23:26)
Cojones
4

A idéia é forçar os usuários a configurar seus clientes de email com o servidor smtp de saída criptografado. Com a conf atual, o Thunderbird deixa a opção de se comunicar com o servidor smtp em texto simples ...

Você não pode desativar a opção no Thunderbird sem recompilar o código-fonte, mas pode configurar o daemon postfix stmpd (que recebe emails de seus clientes) para aplicar a criptografia. Para fazer isso, use smtpd_tls_security_level = encrypt , que é equivalente a opções obsoletas smtpd_use_tls = yes e smtp_enforce_tls = yes . smtpd_tls_security_level = criptografar e smtp_enforce_tls = yes implica smtpd_tls_auth_only = yes

Da documentação do postfix sobre smtpd_tls_security_level = encrypt

Criptografia TLS obrigatória: anuncie o suporte STARTTLS aos clientes SMTP e exija que os clientes usem criptografia TLS. De acordo com a RFC 2487, isso NÃO DEVE ser aplicado no caso de um servidor SMTP publicamente referenciado. Em vez disso, essa opção deve ser usada apenas em servidores dedicados.

Se você usar um servidor público, não poderá aplicar a criptografia de email na porta 25 / tcp. A melhor solução é desabilitar a entrega de correio pela porta 25 / tcp do daemon postfix smtpd de seus clientes e ativar o daemon de envio do postfix (que é o daemon smtpd do postfix especial usado apenas para receber emails dos clientes locais descritos na RFC 4409 em execução na porta 587 / tcp) . Para fazer isso, defina smtpd_tls_security_level = may e remova permit_sasl_authenticatedde smtpd_recipient_restrictions . Na master.cflinha de comentários sobre o daemon de envio:

submission inet n       -       n       -       -   submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_recipient_resrictions=permit_sasl_authenticated,reject
sumar
fonte
1

Apenas curioso, como você está dizendo que ele não está usando TLS? O valor padrão para smtp_tls_loglevel (que é diferente de smtpd_tls_loglevel) é 0; portanto, por padrão, você não verá nada sobre a negociação TLS para correio de saída nos logs do Postfix.

Se você definir smtp_tls_loglevel = 1 ou superior, deverá ver uma linha como esta no log quando uma mensagem for enviada:

7 de março 22:28:10 rack postfix / smtp [27400]: inicializando o mecanismo TLS do lado do cliente

Eu admito que estou sendo preguiçoso, mas fora isso (e as notas da senhora acima) a configuração parece boa para mim de relance.

jlupolt
fonte
1
Eu entendi que o Simon deseja fazer com que todos os emails sejam criptografados usando TLS. smtp_use_tls = yes permite o uso de TLS pós-fixado, se o servidor remoto suportar (smtp_use_tls = yes é equivalente a smtp_tls_security_level = may). A mensagem apropriada deve ser colocada no maillog, se o email de saída foi criptografado usando TLS. Você está certo de que as opções smtp_ * são para daemon postfix diferente do smtpd_ * (smtpd_ * é para recebimento de emails de servidores remotos, smtp_ * é para entrega de emails em servidores remotos).
sumar
Na verdade, acho que a pergunta pode ser um pouco ambígua. Pelo menos, não sei dizer se o Simon deseja que o Postfix exija TLS ou apenas o use se o servidor do destinatário suportar.
precisa saber é o seguinte
1
Obrigado pelas suas palavras, provavelmente não me expliquei bem. A idéia é forçar os usuários a configurar seus clientes de email com o servidor smtp de saída criptografado. Com a conf atual, o Thunderbird deixa a opção de se comunicar com o servidor smtp em texto simples ... é possível evitar isso? Agradecemos antecipadamente, Simon.
Simon
A maneira mais fácil de identificar se o TLS está ativo é ver a mensagem bruta no lado do recebimento e procurar os Resultados da Autenticação: domainkeys = neutral (sem sig); O que indica seus não usando TLS
Scott Stensland