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 (http://cyrusimap.web.cmu.edu/mediawiki/index.php/FAQ) o problema já é 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”, 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 esse problema, portanto existem duas soluções:
-
- 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.
- 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;:
Um comentário sobre “Cyrus Imap: “Message contains bare newlines” – Erro ao importar mensagens”