Cyrus IMAP: "Message contains bare newlines" (Erro ao importar mensagens)

Publicado por Fabio Soares Schmidt em 25/01/2012

[ Hits: 4.647 ]

 


Cyrus IMAP: "Message contains bare newlines" (Erro ao importar mensagens)



Ao tentar importar algumas mensagens no Cyrus IMAP, o servidor retorna a seguinte mensagem:
Message contains bare newlines

Na página do projeto Cyrus, no próprio FAQ, o problema já está relatado:

     "Message contains bare newlines

     Why does Cyrus reject messages with 'bare newlines'

     Please first read about Cyrus Interoperability.

     Bare newlines is a nono in an RFC822 message. You should first try to fix the software that is causing the problem.

     As it happens, the bare newlines-rejection has never been a problem for us."

O problema, portanto, se trata de 'quebra de linha', onde alguns caracteres que o Outlook (principalmente) utiliza para marcar o fim de uma linha de texto violam a 'RFC822', e o Cyrus IMAP é conhecido, além da sua boa performance e escalabilidade, por ser bastante rigoroso com RFCs.

Como não há qualquer documento na base de conhecimento pública da Microsoft que viabilize alterar o comportamento do Outlook/Exchange para corrigir este problema, portanto existem duas soluções:

I- Alterar o código do Cyrus para não rejeitar 'bare newlines'. Isso envolve aplicar um 'patch' já conhecido, muitas soluções que utilizam o Cyrus (SUSE e-mail server e Invoka, por exemplo) já optaram por este caminho.

II- Fazer com que o cliente que está importando a mensagem, identifique esse comportamento e corrija conforme a 'RFC822'.

Abaixo está o conteúdo do 'patch' para o Cyrus desconsiderar essa RFC. Foi feito para a versão 2.3.7, caso utilize alguma versão mais recente, provavelmente será necessário modificar:

— NEW FILE cyrus-imapd-2.3.7-nobarenewlinescheck.patch — — cyrus-imapd-2.3.7/imap/message.c 2006-10-28 22:18:08.000000000 +0200 +++ cyrus-imapd-2.3.7/imap/message.c.nobarenewlinescheck 2006-10-28 22:21:55.000000000 +0200 @@ -256,8 +256,9 @@ r = IMAP_MESSAGE_CONTAINSNULL; } else if (*p = ‘\n’) { - if (!sawcr && (inheader || !allow_null)) - r = IMAP_MESSAGE_CONTAINSNL; + /* Do *NOT* check for RFC compliant line breaks (bare newlines) */ + /* if (!sawcr && (inheader || !allow_null)) + r = IMAP_MESSAGE_CONTAINSNL; */ sawcr = 0; if (blankline) { inheader = 0;:


Para aplicar o 'patch', copie o conteúdo acima, salve o arquivo no diretório raiz dos fontes e execute o comando:

# patch -p1 < arquivo.patch

Feito isto, compile o Cyrus normalmente.

Fabio Soares Schmidt
http://respirandolinux.wordpress.com

Outras dicas deste autor

Cyrus Aggregator - Serviço Sieve não conecta no Backend [Resolvido]

Postfix: Adicionando disclaimer - Exceções de remetentes e arquivos diferentes por domínio

Expresso Livre: Corrigindo erros de atualização para versão 2.5

Postfix - Efetuando relay em hosts que exigem autenticação e nas portas SUBMISSION ou SMTPS

Expresso Livre - Anexos e mensagens exportadas com 0 KB [Resolvido]

Leitura recomendada

Qmail-LDAP em CentOS Linux 5.3

Redirecionando o conteúdo gerado pelo LogWatch para seu e-mail

Gmail permite cancelar o envio de email após 5 segundos

Postfix: Contornando comandos incorretos de conexões SMTP

Patch para Cyrus IMAP 2.4.x - erro: "Message contains bare newlines"

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts