Receber alertas de email do servidor de arquivos do Linux

4

OBJETIVO: Pegar um arquivo de texto no meu servidor de arquivos na minha caixa de entrada do Gmail.

O servidor de arquivos está executando o Ubuntu Server 8.04 atualmente com SSH nele de tempos em tempos e para verificar logs, estatísticas SMART para discos rígidos e coisas do tipo. Eu estou olhando para configurar um script agendado que executa alguns comandos e me envia a saída via e-mail.

O único problema que estou tendo é realmente receber o email enviado. Eu não tenho experiência com configuração de e-mail no linux e todos os guias apontando para o sendmail parecem assumir muitas coisas em meu nome e em minha configuração atual. Os servidores são configurados para compartilhamento de arquivos com o samba e NÃO como servidores de correio, web ou dns. Não quero executar um servidor de e-mail ou rotear qualquer coisa do servidor ou receber qualquer mensagem no (ou com) servidor, a menos que isso me ajude a atingir a meta. O servidor de arquivos está em nossa rede normal e tem acesso à Internet.

Eu possuo vários domínios de website (e tenho um pacote de hospedagem). Consegui configurar aplicativos como o thunderbird para enviar e-mails usando uma das contas do meu site preenchendo smtp.mydotcom.com para o servidor de saída usar e alterar as portas, etc. para corresponder às informações da página de configuração do cpanel do meu site . Existe uma maneira de fazer algo semelhante para que eu possa enviar um e-mail do meu servidor de arquivos para o meu e-mail externo?

EDIT: Aqui estão os passos que eu dei depois de ler a resposta de Dennis Williamson abaixo. Eu estava em funcionamento em poucos minutos!

Instale o esmtp:

sudo apt-get install esmtp

Eu criei uma nova conta de e-mail no meu site (chamada "alertas") e editei / etc / esmtprc assim:

hostname=mail.mydomain.com:26
username=alerts+mydomain.com

(Esses valores foram fornecidos pela página de administração do cpanel)

Em seguida, criei um arquivo chamado "eheader" com o topo padrão de e-mail:

To: Me <[email protected]>
From: Alerts <[email protected]>
Subject: subject

Message Body

Assim, para disparar o e-mail, o seguinte comando pode ser usado:

cat eheader <file1> <file2> ... <fileN> | /usr/bin/esmtp -t

Por isso, é fácil variar os arquivos enviados para os trabalhos diários / semanais / etc.

    
por privatehuff 30.10.2009 / 16:03

7 respostas

3

Eu uso esmtp , que é um MTA somente de envio, para esse fim. É muito simples de configurar. Ele possui opções de linha de comando compatíveis com o sendmail (algumas são ignoradas). Está nos repositórios.

Aqui está um exemplo simples:

echo -e "To: Recipient Name <[email protected]>\n\
    From: Me Myself and I <[email protected]>\n\
    Subject: Here is the example I promised\n\n\
    $(<somefile)" | /usr/bin/esmtp -t

Envia o conteúdo do arquivo chamado "somefile".

Existe um arquivo de configuração muito simples, /etc/esmtprc , que contém o nome do host, nome de usuário e senha para o seu provedor de email upstream (suponho que o seu seja o gmail).

As instruções para configurá-lo para o Gmail são aqui .

    
por 30.10.2009 / 17:12
2

Observe o ssmtp, que é um substituto do sendmail que apenas passa um email para um servidor SMTP com o qual você o configura. É provavelmente uma das maneiras mais simples de obter a capacidade de enviar e-mails programaticamente. Uma pesquisa na Web por "ssmtp" deve gerar muitos tutoriais e instruções sobre como configurá-lo.

Além disso, a maioria das linguagens de programação / script tem bibliotecas SMTP disponíveis, então se você estiver familiarizado com, digamos, Perl ou Python, você pode escrever um pequeno script que se conecta a um servidor SMTP para enviar o e-mail estar escrevendo sua própria versão mais simples do ssmtp.

    
por 30.10.2009 / 16:30
2

O que você precisa fazer é configurar um servidor SMTP na caixa do Ubuntu que está configurada para encaminhar para o servidor SMTP real (em sua rede ou no seu ISP), como ssmtp ou esmtp. Aqui está uma lista de leves (docs mutt):

link

Atualização:

Como você está executando o Ubuntu, você terá o Exim instalado.

Você pode configurá-lo com sudo dpkg-reconfigure exim4-config . É muito fácil configurar para retransmitir emails, depois de ler alguns dos documentos.

/ Atualizar

A seguir, as configurações do servidor SMTP do Gmail para enviar e-mails pelo Gmail de qualquer programa de cliente de e-mail:

  • definir o endereço do servidor SMTP do Gmail: smtp.gmail.com
  • Configurar o nome de usuário do Gmail SMTP como: seu endereço completo do Gmail (incluindo @ gmail.com) Os usuários do Google Apps podem precisar digitar username@seu_domínio.com
  • Configurar a senha SMTP do Gmail como: Sua senha do Gmail
  • Configurar a porta SMTP do Gmail como: 465 ou 587
  • Configurar o TLS / SSL do Gmail SMTP como: sim

Finalmente, você escreverá um script que chama um cliente de correio de linha de comando como mutt (não acredito em mail ou mailx do attachments). Você também pode usar APIs de e-mail do Perl ou do Python. O script cria um email e anexa os arquivos desejados.

Finalmente, você deve colocar uma entrada crontab para o script ser executado diariamente (ou qualquer intervalo que você queira):

01 * * * * root echo "This command is run at one min past every hour"
17 8 * * * root echo "This command is run daily at 8:17 am"
17 20 * * * root echo "This command is run daily at 8:17 pm"
00 4 * * 0 root echo "This command is run at 4 am every Sunday"
* 4 * * Sun root echo "So is this"
42 4 1 * * root echo "This command is run 4:42 am every 1st of the month"
01 * 19 07 * root echo "This command is run hourly on the 19th of July"

Veja man crontab e man cron

OUTRA ATUALIZAÇÃO:

Você pode enviar um email a partir da linha de comando com o SendEmail

    
por 30.10.2009 / 17:27
1

Você deseja enviar e-mails, mas não configurar um servidor de e-mail. Não é uma tarefa difícil, mas estranha. O postfix pode ser configurado para enviar e-mails em poucos segundos, e muitas vezes seria útil para obter e-mails normais enviados para o root, como avisos de componentes do MD raid em falha.

Se você não puder ou não quiser configurar o email nesse sistema, o que nos resta?

Se um dos seus servidores ou sites de hospedagem na Web tiver ssh e provavelmente tiver e-mail serviços já configurados, que tal um cron que scp é os arquivos de log do servidor e e-mails do sistema com mail? O correio é enviado frequentemente de unix com o comando mail ou mailx.

mailx -s "the subject line" [email protected] < filetomail.txt

Antes disso, você poderia colocar as coisas que você quer que fossem reportadas naquele arquivo com qualquer script ou comando cp que você precisasse fazer. Se funcionar melhor, você poderia colocar o cron no servidor Ubuntu e fazer com que ele emita comandos ssh para o segundo servidor para puxar os dados para baixo e enviá-los pelo correio.

    
por 30.10.2009 / 16:58
1

Eu uso um script perl com Mail :: Sendmail para enviar relatórios por e-mail meus servidores (e Net :: Twitter para atualizações de status). Claro, isso significa lidar com CPAN, que pode não valer a pena, pois você tem que make dos pacotes.

!#/usr/bin/perl 
use Mail::Sendmail;

%mail = ( To      => '[email protected]',
        From    => '[email protected]',
        Message => "This is a very short message"
       );

sendmail(%mail) or die $Mail::Sendmail::error;

print "OK. Log says:\n", $Mail::Sendmail::log;
    
por 30.10.2009 / 19:51
-1
cat /var/log/file.log | mail -s "File logs" [email protected]

Tente isso. Ele funcionará na maioria das distribuições Linux.

    
por 30.10.2009 / 16:08
-1

Tente vira-lata. É muito versátil. Permite uso de linha de comando, incluindo a capacidade de enviar anexos. Mutt é instalado no servidor Ubuntu por padrão. Então você deveria ter isso. A linha de comando típica se parece com:

mutt -s 'The subject' -i message.txt [email protected] &

Veja 'man mutt' para opções de uso completo. Ele também possui um modo interativo se você digitar 'mutt' em um terminal.

    
por 30.10.2009 / 16:54