Obter lista de emails não lidos do servidor Unix

5

Estamos tentando obter uma lista de e-mails não lidos de nosso servidor Unix usando mailx -L . No entanto, o assunto do email será truncado se o tamanho for maior que 25 caracteres.

Como isso pode ser resolvido?

    
por user54930 19.12.2013 / 08:28

2 respostas

2

mailx trunca sua saída para caber no número de colunas no stdout. Para obter o número de colunas, ele tentará ioctl(1, TIOCGWINSZ, ...) first - o tamanho da janela do seu terminal - e se isso falhar, ele usará a variável de ambiente COLUMNS . Então tente isto:

COLUMNS=999 mailx -L | cat

O |cat está lá para que o stdout de mailx não seja um terminal, forçando a falha do ioctl.

    
por 19.12.2013 / 12:31
1

Os e-mails geralmente são apenas arquivos de texto (em mbox ou Maildir , para que você possa processá-los com grep , sed , awk ou qualquer linguagem de script. Locais comuns para e-mails são /var/mail , /var/spool/mail ou algum arquivo / diretório dentro de um diretório pessoal de usuários.

Para extrair os assuntos dos e-mails, você pode usar grep da seguinte forma:

grep -E '^Subject: ' /path/to/mail

Para remover a parte "Assunto:", canalize-a em sed :

... | sed -e 's/^Subject: //'

A filtragem de mensagens não lidas é mais complicada, pois o status lido / não lido é armazenado em uma linha de cabeçalho de e-mail diferente. Eu acho que você precisaria de um script um pouco mais complexo escrito em awk, Perl, Python, etc. Eu não tenho nenhuma solução testada pronta para isso.

    
por 19.12.2013 / 11:10

Tags