Usando Raspbian e Ubunntu 16.04 LTS, é necessário uma solução Linux genérica.
O requisito é simples:
Preciso de uma maneira de enviar mensagens de email de uma linha a partir da linha de comando.
Configurei uma conta do Gmail apenas para este Rpi3 específico, com o endereço [email protected] - sem o 2FA
Portanto, agora preciso enviar mensagens de email de uma linha de qualquer lugar (incluindo cron) sem intervenção do usuário.
Eu também gostaria que ele pudesse enviar arquivos de texto; basicamente, qualquer coisa stdin
.
Respostas:
A resposta mais simples para o envio de mensagens de uma linha via gmail é usar ssmtp
Instale-o com os seguintes comandos:
Edite
/etc/ssmtp/ssmtp.conf
para ficar assim:Envie uma linha como esta:
ou
Então, fiel ao * nix, você recebe o prompt de volta em alguns segundos.
Verifique sua conta [email protected] e pronto, ela está lá!
Isso também funciona bem ao enviar um arquivo, da seguinte forma:
E o programa aparecerá na caixa de correio
Se o arquivo é um arquivo de texto, ele pode ter uma primeira linha que diz
Subject: xxxxxx
Isso pode ser usado com vários trabalhos cron, pode me enviar dados com linhas de assunto indicando o conteúdo.
Isso funcionará com qualquer coisa que prepare uma mensagem que seja canalizada para o ssmtp via stdin.
Para obter mais detalhes, como proteger esses arquivos contra outros usuários, visite este artigo:
Enviar email da linha de comando do Raspberry Pi
Verifique também abaixo a resposta postada
Rui
sobre o bloqueio doFROM:
endereço que pode ser alterado nos arquivos de mensagens formatadas, se necessário.Agora, se eu pudesse descobrir como enviar SMS da mesma maneira.
fonte
ssmtp
nas minhas VMs, muito leve. +1sendmail
sozinho, não há o MTA - Mail Transport Agent para se comunicar fora da máquina. Por padrão, como o Unixen é multiusuário por design,sendmail
enviará mensagens para outros usuários na mesma caixa, mas não fora.ssmtp
é o MTA que eu acho mais simples de configurar para o gmail.ssmtp
é apenas um dos muitos wrappers do Sendmail. Todos eles aceitam uma mensagem na entrada padrão e, opcionalmente, uma lista de endereços como argumentos de linha de comando, e todos oferecem um binário nomeadosendmail
que implementa (pelo menos os recursos básicos) a API de linha de comando tradicional do Sendmail. Mas, falando corretamente, essa mensagem precisa ser uma mensagem RFC822 bem formada. No mínimo, ele deve ter umSubject:
cabeçalho.(With
ssmtp
,sendmail
é apenas um link simbólico parassmtp
. Postfix, Exim, e acredito que todos os outros MTA queProvides: mail-transport-agent
tenham um arranjo semelhante, exceto, é claro,sendmail
onde osendmail
binário é "a coisa real".)Mais comumente, você pode reunir uma simples mensagem de email com um documento aqui.
(A
-t
opção Sendmail diz para retirar a lista de destinatários dos cabeçalhos da mensagem que você recebe na entrada padrão. O caminho exato para o Sendmail será diferente entre as plataformas.)Outra variação comum é combinar a saída de alguns comandos. Tome cuidado para ter uma linha vazia (um "pescoço") entre os cabeçalhos e o corpo da mensagem.
Para qualquer coisa além de mensagens ASCII muito simples, somente texto, você precisa entender como compor uma mensagem MIME adequada; nesse ponto, geralmente faz mais sentido usar uma ferramenta como essa
mutt
. Algumas plataformas possuemmail
oumailx
sabem enviar anexos e texto não ASCII, mas isso não é totalmente portátil.O desafio aqui não é encontrar um cliente que possa receber uma mensagem de e-mail e tentar enviá-la, é configurá-lo para as especificidades do Gmail, o que exige que o MTA saiba o nome de usuário e a senha a serem usados no servidor remoto para para poder usá-lo como o smarthost de saída.
Nos bastidores, a maioria dos clientes gosta
mutt
,mailx
etc. geralmente apenas rodamsendmail
nos bastidores para transmitir a mensagem ao sistema.fonte
Adicionando à própria resposta do OP:
Ao configurar
ssmtp
, você também pode proibir ou permitir que os usuários definam De e também substituir o domínio; convém fazer isso por vários motivos, incluindo a mensagem que não está na pasta Spam.Você pode adicionar a
/etc/ssmtp/ssmtp.conf
:Observe que, embora o YES possa ser usado em uma framboesa doméstica, pode não ser aconselhável em um sistema multiusuário do ponto de vista da segurança.
fonte
O que há de errado com "correio"?
"mail" sendo / etc / link alternativo para / usr / bin / bsd-mailx do pacote bsd-mailx. Eu acredito que está lá por padrão. Ótimo utilitário para enviar e-mails a partir de scripts cron, por exemplo.
Funciona também no Ubuntu e no FreeBSD.
fonte
mailx
é apenas um front end. Requer que algum MTA seja configurado para realmente tirar a mensagem do sistema local. Existem várias versões incompatíveis em uso comum, embora se sua plataforma de destino for apenas o Debian, você poderá confiar no comportamento BSD razoavelmente recente.Eu sou realmente parcial em usar
mailx
isso:fonte
-a
opção em particular seria maravilhosa se fosse universalmente suportada, mas apenas navegue pelasmailx
perguntas aqui para ver que esse certamente não é o caso.Eu uso o sendEmail para enviar e-mails automatizados simples através do servidor SMTP de um provedor externo:
Eu passo tudo em uma linha, portanto, fazer isso em uma linha de comando provavelmente mostrará todos os parâmetros (incluindo a senha smtp) para todos os usuários, se eles executarem algum
ps -ef
tempo enquanto eu estiver executando o comando. Eu o uso dentro de um script de shell.fonte
Meu servidor é o CEntOS 7 e possui o sendmail, mas não o mailx etc. Em vez de instalar um novo programa, testei usando o sendmail diretamente e descobri que isso funciona:
Para mim, esta parece ser a maneira mais simples de enviar um email curto, pois não requer a execução ou configuração de um servidor ou daemon, e pode ser feita em uma única linha de comando.
A idéia é que uma mensagem simplesmente me avise que um determinado programa gerou um erro, sem revelar nenhuma informação potencialmente confidencial, e então enviarei um SSH ao servidor para inspecionar seus logs. Dessa forma, não há necessidade de se preocupar com complicações como anexar arquivos ou criptografar o transporte.
Notas:
-e
diz ao eco para interpretar '\ n' e outras fugas.-t
informa ao sendmail para obter os endereços dos destinatários de 'Para:' no cabeçalho da mensagem.tail /var/log/maillog
para ver as mensagens de erro.fonte
sendmail
- mas não vejo esta resposta demonstrando que ele funciona com o Gmail como especificado na pergunta original ...