Como posso enviar / var / mail / root novamente?

12

Através de alguma configuração incorreta, tenho muitos e-mails em / var / mail / root e / var / mail / www-data

Como posso "fazer loop" sobre esses arquivos e enviar cada email em outra ocasião?

    
por Max 01.12.2009 / 13:47

3 respostas

16

formail , parte do procmail (e provavelmente já disponível em seu sistema) pode pegue uma caixa de correio, divida-a em mensagens e, em seguida, execute um comando em cada uma delas. Na página do manual:

   -s   The input will be split up into separate mail messages, and  piped
        into  a  program  one  by  one (a new program is started for every
        part).  -s has to be the last option specified, the first argument
        following  it  is  expected to be the name of a program, any other
        arguments will be passed along to it.  If you  omit  the  program,
        then  formail  will  simply  concatenate the split mails on stdout
        again.  See FILENO.

Então você pode fazer o que eu acho que você quer assim:

  formail -s /usr/sbin/sendmail -oi -t < /var/mail/root
    
por 02.12.2009 / 04:13
3
mutt -f /var/mail/www-data

Então, dentro do mutt ...

T.*
;b

T coloca-o no modo de marcação e. * marca todas as mensagens. O ponto-e-vírgula aplica o próximo comando a todas as mensagens marcadas e, por fim, "envia" as mensagens para um endereço que será solicitado.

Da memória, acho que

D.*

ou

T.*
;d

Em seguida, esvaziará a caixa de correio.

    
por 02.12.2009 / 14:39
0

Os arquivos de caixa de correio / var / spool / mail / xxx unix são arquivos de texto simples em que as mensagens de correio são mantidas em seqüência. Cada mensagem de e-mail começa com uma linha "De" (que não faz parte da mensagem) com remetente e data de recepção, então você recebe cabeçalhos de e-mail e depois o corpo do e-mail.

Basicamente, você pode apenas fazer um loop no arquivo, detectando as linhas From e extrair todas as mensagens e, em seguida, enviá-las usando ferramentas como python smtp module ou perl Net :: SMTP module from cpan.

Se o destino for outra caixa de correio local, basta anexar as mensagens (incluindo a linha De) a ele. Você pode até acrescentar toda a caixa de correio raiz a outra caixa de correio se não se importar também com as mensagens realmente direcionadas ao root.

Eu deveria ter alguns scripts que fazem isso e postarão exemplos, se você quiser.

O problema pode ser pegar o alvo real da mensagem, porque se eles terminaram na caixa de correio raiz, eles provavelmente foram direcionados para o root desde o início?

    
por 01.12.2009 / 13:58