/ usr / bin / mail não interpretando novas linhas

0

Eu tenho um problema estranho ao enviar um gato ao correio.

Eu tenho um arquivo de texto simples que foi compilado de um script, que é um relatório sobre quais pastas foram copiadas no script. Eu então quero enviar este relatório por e-mail para os administradores do sistema.

O script gera o relatório bem. Quando eu corro

cat /tmp/report.txt

Eu recebo uma saída bem formatada com todas as quebras de linha que eu esperaria.

Copy report. Started on Mon Sep 28 13:37:57 BST 2015

Run in progress?: Yes

3 directories were copied.

Copy started on 2015.09.28 at 13:37:57
Copying /mnt/smb/New folder (10) to /mnt/backup/New folder (10)
Copy completed on 2015.09.28 at 13:37:57
Copy info:
0.01user 0.47system 0:01.83elapsed 26%CPU (0avgtext+0avgdata 2668maxresident)k
0inputs+355896outputs (0major+150minor)pagefaults 0swaps


Copy started on 2015.09.28 at 13:37:59
Copying /mnt/smb/New folder (14) to /mnt/backup/New folder (14)
Copy completed on 2015.09.28 at 13:37:59
Copy info:
0.00user 0.41system 0:01.78elapsed 23%CPU (0avgtext+0avgdata 2620maxresident)k
0inputs+355896outputs (0major+152minor)pagefaults 0swaps


Copy started on 2015.09.28 at 13:38:01
Copying /mnt/smb/New folder (18) to /mnt/backup/New folder (18)
Copy completed on 2015.09.28 at 13:38:01
Copy info:
0.00user 0.28system 0:01.71elapsed 16%CPU (0avgtext+0avgdata 2768maxresident)k
0inputs+355896outputs (0major+151minor)pagefaults 0swaps

No entanto, por algum motivo, quando eu canalizo isso para o correio

cat /tmp/report.txt | mail -s "Copy Report" [email protected]

ou

mail -s "Copy Report" [email protected] < /tmp/report.txt

Este é o email que recebo.

Copy report. Started on Mon Sep 28 13:37:57 BST 2015

Run in progress?: Yes

3 directories were copied.

Copy started on 2015.09.28 at 13:37:57
Copying /mnt/smb/New folder (10) to /mnt/backup/New folder (10) Copy completed on 2015.09.28 at 13:37:57 Copy info:
0.01user 0.47system 0:01.83elapsed 26%CPU (0avgtext+0avgdata 2668maxresident)k
0inputs+355896outputs (0major+150minor)pagefaults 0swaps


Copy started on 2015.09.28 at 13:37:59
Copying /mnt/smb/New folder (14) to /mnt/backup/New folder (14) Copy completed on 2015.09.28 at 13:37:59 Copy info:
0.00user 0.41system 0:01.78elapsed 23%CPU (0avgtext+0avgdata 2620maxresident)k
0inputs+355896outputs (0major+152minor)pagefaults 0swaps


Copy started on 2015.09.28 at 13:38:01
Copying /mnt/smb/New folder (18) to /mnt/backup/New folder (18) Copy completed on 2015.09.28 at 13:38:01 Copy info:
0.00user 0.28system 0:01.71elapsed 16%CPU (0avgtext+0avgdata 2768maxresident)k
0inputs+355896outputs (0major+151minor)pagefaults 0swaps

O que dá? Algumas quebras de linha estão lá, outras não! Eu tentei editar o arquivo em vi e nano e assegurei que as quebras de linha estavam realmente lá. Também os apagou e os fez novamente e a saída de e-mail permanece a mesma.

Usando / usr / bin / mail

Mais informações:

Entreguei o seguinte em um arquivo de texto e fiz o mesmo pipe para o email. Eu coloquei a palavra "Copy" no começo de cada linha.

Copy started on 2015.09.28 at 13:37:57
Copying /mnt/smb/New folder (10) to /mnt/backup/New folder (10)
Copy completed on 2015.09.28 at 13:37:57
Copy info:
Copy 0.01user 0.47system 0:01.83elapsed 26%CPU (0avgtext+0avgdata 2668maxresident)k
Copy 0inputs+355896outputs (0major+150minor)pagefaults 0swaps

Isso é o que recebi no e-mail:

Copy started on 2015.09.28 at 13:37:57
Copying /mnt/smb/New folder (10) to /mnt/backup/New folder (10) Copy completed on 2015.09.28 at 13:37:57 Copy info:
0.01user 0.47system 0:01.83elapsed 26%CPU (0avgtext+0avgdata 2668maxresident)k
0inputs+355896outputs (0major+150minor)pagefaults 0swaps

Em seguida, removi todas as palavras "Copiar". Isso é o que recebi no email.

Started on 2015.09.29 at 09:46:49
Copying /mnt/smb/New folder (10) to /mnt/backup/New folder (10) Completed on 2015.09.29 at 09:46:49
Info:
0.00user 0.46system 0:01.98elapsed 23%CPU (0avgtext+0avgdata 2552maxresident)k
0inputs+355896outputs (0major+149minor)pagefaults 0swaps

Pensei que poderia ser algo relacionado à palavra "Copiar", mas ainda tenho uma linha sem quebra de linha!

Esta é a saída de cat -vet /tmp/report.txt

Copy report. Started on Mon Sep 28 13:37:57 BST 2015$
$
Run in progress?: Yes$
$
$
$
3 directories were copied.$
$
$
Copy started on 2015.09.28 at 13:37:57$
Copying /mnt/smb/New folder (10) to /mnt/backup/New folder (10)$
Copy completed on 2015.09.28 at 13:37:57$
Copy info:$
0.01user 0.47system 0:01.83elapsed 26%CPU (0avgtext+0avgdata 2668maxresident)k$
0inputs+355896outputs (0major+150minor)pagefaults 0swaps$
$
$
Copy started on 2015.09.28 at 13:37:59$
Copying /mnt/smb/New folder (14) to /mnt/backup/New folder (14)$
Copy completed on 2015.09.28 at 13:37:59$
Copy info:$
0.00user 0.41system 0:01.78elapsed 23%CPU (0avgtext+0avgdata 2620maxresident)k$
0inputs+355896outputs (0major+152minor)pagefaults 0swaps$
$
$
Copy started on 2015.09.28 at 13:38:01$
Copying /mnt/smb/New folder (18) to /mnt/backup/New folder (18)$
Copy completed on 2015.09.28 at 13:38:01$
Copy info:$
0.00user 0.28system 0:01.71elapsed 16%CPU (0avgtext+0avgdata 2768maxresident)k$
0inputs+355896outputs (0major+151minor)pagefaults 0swaps$
    
por Andy Foster 28.09.2015 / 15:47

1 resposta

2

Você provavelmente está sofrendo do "format = flowed" recurso introduzido há muito tempo, veja rfc2646 .

Você provavelmente encontrará algumas linhas com um caractere de espaço à direita. Isto é interpretado por alguns leitores de e-mail como significando "concatenar esta linha com a próxima e, em seguida, refazer o texto em volta das linhas para caber na tela largura ".

Normalmente, isso só deve ser feito se o seu e-mail tiver a opção Content-Type do cabeçalho format=flowed , mas hoje em dia, devido à multidão que não é do Unix, isso se tornou um padrão.

Use cat -vet em seus dados para ver se há espaços à direita. Use sed 's/ \+$//' para removê-los.

Não vi espaços à direita nem caracteres de controle nem retornos de carro em seus dados, então não há desculpa real para o seu mailer adulterá-lo.

Uma última tentativa: como Andrzej A. Filip sugeriu, em vez de mail , vá direto para sendmail . Isso permitirá que você adicione um cabeçalho de tipo de conteúdo explícito. Por exemplo:

(echo 'Subject: Copy Report'
 echo 'Content-Type: text/plain; charset=us-ascii; format=fixed'
 echo
 cat /tmp/report.txt
) |  sendmail [email protected]

O último echo é terminar os cabeçalhos antes dos dados. O sendmail pode não estar no seu PATH, procure em / sbin e / usr / sbin e assim por diante.

    
por 28.09.2015 / 16:54