Nova versão do servidor POP3 e IMAP4 Dovecot 2.3.21

Foi lançada uma nova versão do servidor POP3/IMAP4 multiplataforma e de alto desempenho Dovecot 2.3.21, que suporta os protocolos POP3 e IMAP4rev1 com extensões populares, como SORT, THREAD e IDLE, além de mecanismos de autenticação e criptografia (SASL, TLS, SCRAM). O Dovecot mantém total compatibilidade com os formatos clássicos mbox e Maildir, aplicando índices externos para aumentar a performance. Para expandir as funcionalidades, podem ser utilizados plugins (por exemplo, a implementação de quotas e ACLs é feita através de plugins). O código do projeto é distribuído sob as licenças LGPL e MIT.

Principais mudanças:

  • lib-oauth2: Permite a verificação de tokens JWT sem o campo "typ". O campo "typ" não é utilizado por alguns emissores de chave para economizar espaço, especialmente o Kubernetes. Agora, a ausência do "typ" é permitida, mas se estiver presente, ainda deve ser "jwt".
  • auth: A resposta "Auth" do passdb e userdb pode conter o valor "event_=valor", que será adicionado ao evento de login e ao evento do usuário de e-mail, respectivamente.
  • lib-master: Estabelece o cabeçalho do processo em várias etapas da inicialização, para esclarecer o que se espera do processo.
  • lib-storage: O intervalo mail_temp_scan_interval agora é aumentado em 0…30% com base no hash do nome de usuário, para reduzir a probabilidade de picos de carga.
  • lib-storage: A verificação do arquivo temporário foi movida do momento da abertura da caixa de correio para o momento do seu fechamento, para reduzir a latência percebida pelos usuários.
  • stats: Se campos são especificados na métrica, todos esses campos são exportados como contadores para prometheus no formato exposition.
  • "*-login": Processos poderiam falhar ao encerrar de forma brusca a conexão SSL. — acl: Ao carregar o plugin, as flags \\HasChildren e \\HasNoChildren eram calculadas incorretamente para caixas de correio contendo em seus nomes ‘*’ e ‘%’.
  • auth: Ocorreu um erro ao tentar conectar ao banco de dados PostgreSQL durante a inicialização.
  • auth: Ao tentar fazer login com senhas incorretas (por exemplo, com um esquema desconhecido) no passdb, em vez de uma "erro interno", uma mensagem de "mismatch de senha" era exibida.
  • auth: Os mecanismos XOAUTH2 e OAUTHBEARER não emitiram mensagens de erro específicas do protocolo em caso de falha. Isso dificultou especialmente a detecção do OIDC.
  • dbox: Se o cabeçalho last_temp_file_scan não foi definido (especialmente após a migração dsync), na próxima abertura da caixa de correio, a varredura de arquivos temporários sempre era iniciada. Isso poderia causar um aumento na carga após as migrações. Corrigido usando atime do diretório da caixa de correio na ausência do cabeçalho, o que normalmente desloca o tempo de varredura para o futuro.
  • dict-redis: Ocorreu uma falha ao reverter transações.
  • dsync: Ao excluir uma caixa de correio no final remoto, quando os separadores de nível de hierarquia não coincidiam, um loop infinito ocorria, levando a um esgotamento de memória.
  • dsync: O dsync incremental não era executado para nomes de pastas que terminavam em ‘%’, a menos que o valor BROKENCHAR fosse definido. Além disso, nomes de pastas com ‘%’ em outros lugares levavam a renomeações desnecessárias da pasta para um nome temporário e vice-versa a cada dsync incremental. Regressão v2.3.19.
  • imap-hibernate: Se, ao desbloquear o cliente IMAP, ocorresse um timeout com a mensagem "(version received)", o desbloqueio poderia ser bem-sucedido mais tarde e continuar funcionando normalmente. Isso causava confusão, pois o imap-hibernate já havia registrado que o cliente desconectou. Isso pode ser evitado forçando a conexão a ser encerrada ao final do timeout de hibernação.
  • imapc: Queda ao desaparecer do armazenamento uma pasta exibida através de um plugin virtual.
  • imapc: Respostas EXPUNGE, EXISTS ou FETCH de servidor uma caixa de correio previamente selecionada podiam ser processadas como se pertencessem a uma nova caixa de correio selecionada naquele momento. Isso poderia levar ao surgimento de avisos.
  • lib-http: O servidor HTTP Dovecot (doveadm, stats/openmetrics) poderia desconectar clientes HTTP antes de enviar a resposta completa. Isso ocorria apenas em servidores sobrecarregados, onde os buffers de soquete do kernel estavam fortemente sobrecarregados.
  • lib-http: Corrigido um possível erro fatal do servidor http em caso de desconexão prematura do cliente. Regressão em 2.3.18.
  • lib-index: A corrupção do arquivo de índice poderia levar a um encerramento inesperado. Resolvido: Panic: file mail-transaction-log-view.c: line 165 (mail_transaction_log_view_set): assertion failed: (min_file_seq <= max_file_seq).
  • lib-index: A limpeza de um arquivo de cache existente com mais de 1 GB poderia causar falhas. Agora, após a limpeza, arquivos de cache que ainda excedem 1 GB são removidos. Corrigido: Panic: file mail-index-util.c: line 10 (mail_index_uint32_to_offset): assertion failed: (offset < 0x40000000).
  • lib-lua: O cliente HTTP não conseguiu resolver nomes DNS em processos de email, pois esperava que o socket 'dns-client' estivesse no diretório atual.
  • lib-oauth2: O Dovecot enviava client_id e client_secret como parâmetros POST para o servidor de introspecção. No entanto, na autenticação básica, seu uso é opcional.
  • lib-oauth2: A validação de JWT 'aud' não era realizada se 'aud' estivesse ausente no token, mas estivesse configurado no Dovecot.
  • lib-oauth2: Verificação de tipo de chave JWT muito rigorosa.
  • lib-oauth2: A audiência do token JWT não foi verificada quanto à conformidade com client_id, conforme exigido pela especificação.
  • lib-ssl-iostream: O uso do parâmetro ssl_require_crl=yes poderia causar falhas na verificação CRL para conexões SSL/TLS de saída, embora se presumisse que ele afetasse apenas a verificação CRL para clientes. de certificados SSL. v2.3.17 regressão.
  • lib-sql: O driver MySQL permitia vazamento de memória em caso de falha de conexão.
  • lib-storage: Várias correções em caso de falta de espaço em disco.
  • master: A configuração idle_kill do serviço não funcionava corretamente em servidores sobrecarregados. Era muito improvável que qualquer processo permanecesse inativo por tempo suficiente para ser eliminado. Além disso, com um grande número de processos (por exemplo, imap), o código de tratamento de idle_kill utilizava uma quantidade considerável de CPU no processo principal. Agora, cada intervalo de tempo do idle_kill acompanhará o menor número de processos inativos e, em seguida, eliminará essa quantidade.
  • mdbox: A verificação de arquivos temporários era realizada para diretórios sempre vazios.
  • mdbox: Ao gravar emails, a chamada fdatasync() era executada no diretório pai incorreto. Além disso, em caso de falha, ocorria uma queda em vez de gravar um erro no log.
  • notify_status: O plugin encerra abruptamente em caso de falha na inicialização do usuário. — pop3: O envio de comandos com o símbolo ':' resultava em uma falha 'assert-crash'. Regressão na versão 2.3.18.
  • stats: Corrigida a panica que ocorria ao acessar um exportador de eventos inexistente ao adicionar dinamicamente uma nova métrica usando o comando 'doveadm stats add'. Agora, é gerado um erro correto.
  • estatísticas: Se o processo exportou muitos eventos e depois foi encerrado, alguns dos eventos mais recentes podem ter sido perdidos.
  • estatísticas: Nomes de rótulos Prometheus incorretos foram criados em determinadas configurações de histogram group_by. O Prometheus rejeitou esses rótulos.
  • bem-vindo: O plugin não foi executado em algumas situações em que a INBOX foi criada, mas não foi aberta, por exemplo, se o GETMETADATA foi usado antes da abertura da INBOX.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster