Welcome to Our Website

16 Exemplos de Comandos para Enviar e-Mail A Partir da Linha de Comando do Linux

Se você é um desenvolvedor trabalhando sem parar na linha de comando do Linux ou de um administrador de servidor querendo logs ou outros dados extraídos do administrado sistemas, saber como enviar e-mail a partir da linha de comando é muito útil.

neste post, você encontrará exemplos de como enviar e-mail do terminal. Vamos olhar para Configurações personalizadas e tocar em como configurar conexões SMTP para contas de E-mail ou prestadores de serviços de E-mail., Eu vou mostrar-lhe como instalar os pacotes necessários para o mailer do console e fornecer o fundo para as opções da linha de comando com base nos manuais do pacote.

configurar pacotes Mailer de linha de comandos

todos os pacotes mailer ao longo do tutorial estão disponíveis através do Gestor de pacotes avançado do Debian, de modo que os passos de instalação no exemplo abaixo podem ser usados para todos os pacotes showcased.,

por Favor, note que estas partes do software podem ser instalados por padrão gerenciadores de pacotes como o yum ou dnf dependendo do seu sistema Linux distribuição.

na maioria dos casos, ou sendmail ou postfix está disponível em cada distribuição Linux fora-da-caixa ou pelo menos isso é o que posts semelhantes dizem. Ou tenho azar ou os outros estavam errados, mas tive de instalar um manualmente. No entanto, você definitivamente precisa de um deles para a entrega de E-mail.,

configurar o Sendmail com o pacote SSMTP

vou continuar com sendmail e o pacote SSMTP. SSMTP contém o pacote sendmail sob o capô como você vai ver e facilita a configuração, que é muito difícil para sendmail caso contrário.Passo 1., Verifique se a Linha de Comando Mailer Pacote é Instalado

Digite o mensageiro do pacote nome do jeito que você gostaria de executar o comando, para verificar se ele está disponível:

  • Se o pacote está instalado, o comando é executado, e o prompt muda — ao tentar executar o comando, e você verá um cursor piscando seguido pela mensagem Recipient names must be specified no caso de sendmail. Conclusão: o pacote está instalado.,

  • Se o pacote NÃO está instalado, você receberá uma mensagem de aviso e uma sugestão de como instalar:

neste exemplo, eu tentei se o sendmail comando funciona. Depois de adicionar o pacote SSMTP, este comando e o ID

irá funcionar e alterar a linha de comandos no terminal. Vamos ver isso!Passo 2., Instalando o pacote Mailer da linha de comandos do Sendmail

como sugeriu a saída do terminal, precisamos executar o comando de instalação do Gestor de pacotes avançado — geralmente com permissão do root — para instalar o pacote necessário. Como mencionado anteriormente, as configurações são muito mais simples para sendmail quando você abstrata a complexidade da configuração. Isso pode ser feito com SSMTP:

 sudo apt install ssmtp

Passo 3. Verificar a instalação

Após a instalação ter sido concluída, você pode verificar se sendmail é capaz de encaminhar mensagens., Digite o código abaixo no terminal:

 echo "Subject: hello" | sendmail [email protected]

ele deve enviar o e-mail se tudo funcionar corretamente. Aqui o "hello" string encaminhado para osendmail será o assunto da mensagem enviada, enquanto o endereço de E-mail definido é naturalmente o destinatário do E-mail.

Você executa o comando… and, oops: sendmail: Cannot open mailhub:25. A razão para isso é que nós NÃO fornecemos configurações de mailhub em tudo. Para encaminhar mensagens, você precisa de um servidor de SMTP configurado., É onde o SSMTP funciona muito bem: você só precisa editar seu arquivo de configuração uma vez, e você está pronto para ir.Passo 4. Configurar o SSMTP

vamos localizar o ficheiro de configuração em /etc/ssmtp/ssmtp.conf. Aqui, você deve colocar o código abaixo para configurar um relé SMTP:

isto significa que você configurar um serviço externo que irá realmente encaminhar
seus e-mails. Quando você fornecer credenciais para o Gmail, por exemplo, você verá as mensagens enviadas do terminal no diretório de ‘mail enviado’ da sua caixa de correio. As configurações são semelhantes com outros serviços também.,

esta foi a configuração básica parasendmail e os passos de instalação para qualquer pacote de mailer de linha de comando frequentemente usado. Em seguida, vamos começar a instalar e experimentar vários outros pacotes.

Enviar E-mail usando o comando SSMTP

esta é uma pequena ferramenta que acabámos de configurar para a entrega de correio. Como o seu man page sugere, é um emulador minimalista de sendmail. Como tal, o SSMTP permite que os usuários transfiram e-mails através de um servidor SMTP a partir da linha de comandos Linux., Ele fornece os meios para se conectar a um mailhub com um arquivo de configuração adequada. Se o seu ficheiro de configuração foi configurado correctamente, todas as suas preocupações em relação ao envio de E-mail da linha de comandos podem desaparecer.

Implementação Básica do SSTMP comando:

Se você apenas usar o SSMTP, o comando deve parecer como a seguir:

 ssmtp [email protected] < mail.txt

Seguinte ssmtp comando, você deve colocar o endereço do destinatário e, em seguida, você pode incluir um arquivo que aparecerá no corpo do e-mail. Aqui você pode definir os cabeçalhos para a mensagem, listar outros destinatários e definir o tipo de conteúdo., Desta forma você pode enviar e-mails HTML. O SSMTP interpretará a sua mensagem e utilizará os valores fornecidos correctamente. Aqui está um exemplo de um HTML que você pode enviar:

Você realmente não pode dar mais opções com SSMTP como eles não são respeitados pelo seu design minimalista.

solução de problemas:

No caso de se deparar com o seguinte erro na linha de comandos:

isso é provável porque o Gmail não está a tratar o SSMTP como uma aplicação segura. Para se livrar deste erro, você precisa mudar as configurações na sua conta do Gmail – você pode procurar mais informações sobre os riscos potenciais lá também.,

Enviar E-mail usando o comando sendmail

por algum tempo agora o sendmail é o agente clássico de transferência de correio do mundo do UNIX. Foi introduzido pela primeira vez em 1979 e sua natureza altamente configurável e escalabilidade fez com que fosse o go-to padrão para administradores de servidores.,

já vimos como enviar basic e-mails por ssmtp comando, então vamos ver a diferença do uso de sendmail:

 echo "Subject: hello" | sendmail -v [email protected] < mail.txt

eu joguei o -v argumento, o que vai fazer a comunicação entre o servidor de correio e o mail transfer agent visível.

Existem muitas configurações que você pode usar se você configurar o seu próprio servidor de E-mail e implementar o sendmail sobre ele. No entanto, isso está fora do âmbito deste artigo. Voltaremos ao tema em um próximo. Fiquem atentos.,

Enviar E-mail usando o comando CURL

Esta ferramenta também é tremendamente comum para a transferência de dados de um servidor. Ele suporta muitos protocolos, como HTTP, FTP, POP3 ou SMTP. O pacote CURL é usado amplamente em todo o mundo, uma das principais razões é que ele tem implementação PHP nativo e PHP foi a linguagem padrão de scripting servidor-lado por um longo tempo.

instalação:

verifique se o pacote já está instalado., Se não executar o abaixo:

 sudo apt install curl

quando terminar, poderá aceder à folha de batota para as opções disponíveis para o CURL, executando curl -h. A versão mais detalhada é acessível por man curl ou curl --manual. Se você quiser ganhar conhecimento profundo usando o cURL, há este manual que contém tudo o que você gostaria de saber.

implementação básica para o envio de E-mail com CURL:

para enviar um e-mail com CURL, você precisa configurar a conexão SMTP., Na maioria das vezes, os servidores de E-mail do Google ou do Yahoo são usados para testar o envio de E-mail com SMTP. Por favor, note que você deve ativar o acesso para aplicativos menos seguros em configurações do Gmail e configurações de segurança adicionais semelhantes podem se aplicar para o Yahoo também.

no excerto do comando terminal acima, os parâmetros --url e --user definem a configuração da ligação SMTP. A secção de senha para --user parâmetro é a senha da sua conta para o endereço de E-mail dado. Naturalmente, Você também pode usar provedores de serviços de E-mail na nuvem., Vou mostrar isso usando o Mailgun na seção seguinte.

implementação avançada para o envio de E-mail com CURL:

trabalhando com plataformas de entrega de E-mail, você primeiro precisa obter uma chave API. Neste tutorial, eu vou mostrar o exemplo de envio de E-mail CURL usando Mailgun, então se você ficar preso durante o processo de registro siga este guia de configuração para entrar no caminho certo.

a sintaxe é bastante simples. Você pode ter notado antes, mas você precisa terminar cada linha do comando com \ caracteres., Este é um personagem de continuação de linha, o comando pode ser executado sem todos eles em uma linha também. A outra coisa a lembrar é a opção -F. Um excerto da página man:

 -F, --form <name=content> (HTTP) This lets curl emulate a filled-in form in which a user has pressed the submit button. This causes curl to POST data using the Content-Type multipart/form-data according to RFC 2388. This enables uploading of binary files etc. To force the 'content' part to be a file, prefix the file name with an @sign.

como eu encorajei antes, é uma boa prática mergulhar nos manuais ao usar esses comandos mailer de linha de comando. Como diz o manual de curvas, basicamente você está criando um formulário para enviar. Cada linha é uma entrada dada como um par . Quando você anexar arquivos da sua máquina local, você precisa de um @ na frente do nome do arquivo.,

é assim que o e-mail entregue se parecerá:

Você poderia fazer o mesmo usando a maioria das outras plataformas de E-mail, como Sendgrid, por exemplo.

A Enviar E-mail HTML da linha de comandos com CURL:

pode aplicar a mesma lógica de criar um formulário num ficheiro de texto, o que lhe permite enviar mensagens HTML facilmente:

Se executar o comando simples a partir do primeiro exemplo…

Troubleshooting:

pode precisar do botão , que permite ao CURL efectuar ligações e transferências “inseguras” DE SSL., O CURL irá devolver uma mensagem de erro se o servidor remoto estiver a usar um certificado autossignado, ou se o certificado do servidor remoto não estiver assinado por uma AC listada no ficheiro CERT da AC.

enviando e-mail usando Swaks command

Como sua documentação afirma, Swaks é uma ferramenta de teste SMTP flexível, scriptable, orientada a transação. Ele é capaz de lidar com recursos SMTP e extensões como TLS, autenticação e pipelining e várias versões dos protocolos SMTP. Ele também suporta vários métodos de transporte, incluindo sockets UNIX-domain, sockets internet-domain, e tubos para processos gerados.,

Instalação:

 sudo apt install swaks

implementação Básica para envio de e-mail com Swaks:

para se conectar a uma conta de SMTP, você precisa fornecer o servidor -s, o usuário -au a palavra-passe -ap e o endereço de -t (onde você deseja enviar o e-mail) sinalizadores. A bandeira -tls também é importante se você conectar no Porto 587.,

 swaks --to [email protected] -s smtp.gmail.com:587 -tls -au <user-account> -ap <account-password>

As credenciais também podem ser fornecidas através de linha de comando solicita que, se você especificar apenas para autenticar -a, não preenchendo o usuário e a senha através de opções de linha de comando.

implementação avançada para envio de E-mail com Swaks:

 swaks --to [email protected] -s smtp.gmail.com:587 -tls -au <user-account> -ap <account-password> --attach -d ./mail.txt

Existem outras opções que não iremos tocar agora. Vamos para o nosso próximo pacote mailer!

Enviar E-mail usando o comando Mutt

Mutt é diferente dos clientes de E-mail anteriores, uma vez que é um cliente de E-mail de linha de comando rico em funcionalidades., Você pode usá-lo para ler e-mails do terminal Linux, conectar-se a caixas de correio do usuário local ou para servidores POP/IMAP. O Mutt suporta vários formatos de caixa de correio, como mbox, MH, maildir, MMDF, controle completo dos cabeçalhos de mensagens durante a composição do E-mail, e múltiplas marcas de mensagens e cores para lidar com mensagens.

instalação:

 sudo apt install mutt

implementação básica para o envio de E-mail com mutt:

nesta altura, não ficará surpreendido com a estrutura do comando., Você pode fornecer um corpo de mensagem vazia com < /dev/null:

# mutt -s "Test Email" [email protected] < /dev/null

Avançado de implementação para envio de e-mail com mutt:

Para o envio de e-mail, incluindo anexos, você precisa -a bandeira. Desta forma, você pode enviar arquivos úteis, como registros do sistema, para um endereço especificado.

# mutt -s "System logs" -a /opt/backup.sql [email protected] < /dev/null

Pode também enviar e-mail HTML se a extensão de ficheiro que adicionar ao corpo da mensagem estiver em formato HTML., O Mutt irá reconhecer o tipo de ficheiro e resolvê-lo para que não envie o seu HTML como texto simples:

é este o texto para enviar e-mail com o mutt. Se o tiver na sua máquina, sugiro que tente descobrir como pode trabalhar com a configuração da sua caixa de correio e o tratamento das mensagens recebidas. Se o fizer, por favor partilhe os seus pensamentos na secção de comentários abaixo. Saúdo qualquer opinião sobre os pacotes mostrados no tutorial.

Enviar E-mail usando o comando Mailx

As Mailutils são um pacote composto para casos de uso múltiplo., É projetado para servir usuários regulares, administradores de sistema e desenvolvedores. Nós só tocaremos em suas funcionalidades básicas em relação ao encaminhamento de E-mail. Se você está interessado em mais recursos, confira seu man página.

Instalação:

 sudo apt install mailutils

implementação Básica para envio de e-mail com mailx:

O mailx pacote tem 2 iguais sintaxe de comando (mail e mailx ambos funcionam da mesma forma)., O comando mais simplista consiste no comando mail/mailx e o endereço para onde enviar o correio, mas você provavelmente incluiria o assunto e pelo menos algum corpo de mensagem baseado em texto. Tal comando deve ser semelhante a este:

 echo "message body" | mail -s "subject" [email protected]

usando a tag echo comando e direcionando a saída para o mail comando, você pode evitar mailx é avisos adicionais para endereços Cc e o corpo da mensagem.,

implementação avançada para o envio de E-mail com mailx:

para o exemplo avançado, vamos enviar um e-mail HTML completo novamente. Precisamos fornecer o arquivo HTML de E-mail de nossa escolha com o id

caractere e adicionar a “bandeira append” com o tipo de conteúdo. O código completo é o seguinte:

 mailx -a 'Content-Type: text/html' -s "This is advanced mailx indeed!" < email.html "[email protected], [email protected]"

Você também pode definir um endereço de retorno com --return-address=<EMAIL-ADDRESS>, que pode ser útil., Outra opção útil, que não consegui resolver para trabalhar com o e-mail HTML paralelo, é fornecer anexos na mesma mensagem: -A "mail.txt". Embora você possa listar vários destinatários, apenas um único anexo pode ser anexado. Você poderá configurar o servidor SMTP externo se gostar de si.

usando o comando openssl alternativo de Telnet

Telnet é um protocolo de comunicação interativa para comunicação com outra máquina. Ele pode ser usado para abrir uma conexão SMTP para outro servidor e transferir mensagens de E-mail., No entanto, como o protocolo não está seguro, a maioria dos servidores irá rejeitar este tipo de comunicação. É aqui que o Openssl entra na imagem como é construído com a segurança SSL/TLS incluída. Ele é invocado de forma semelhante ao telnet com um argumento host, e ele executa um comando aberto implicitamente:

I indentou as entradas que você precisa fornecer enquanto o canal de comunicação está aberto. Estas entradas são auto-explicativas, mas uma coisa que preciso de detalhar é a senha hash. Pode ser um hash codificado base64, que você pode obter com o seguinte comando: echo -en '\[email protected]\000gmailpassword' | base64., Os caracteres de escape do texto não podem ser omitidos. Se você não tem o pacote base64 instalado, ele está disponível através de gerentes de pacotes.

Como você pode ver acima, este meio de envio de E-mail só fornece uma interface para mensagens baseadas em texto, portanto, tem sua limitação em casos de uso. Por outro lado, ele mostra todas as informações trocadas com o servidor de E-mail, o que torna a depuração muito fácil.

resolução de problemas de correio

verifique os registos de correio

precisa de localizar o seu ficheiro de Registo navegando para a pasta correspondente. Eu prefiro usar o meu editor de código (eg., Texto Sublime) para isso, posso ter os logs com realce de sintaxe:

$ sudo subl /var/log

dependendo da sua distribuição Linux actual, poderá ter de olhar para uma fonte diferente.
O log pode conter informações úteis sobre problemas de entregabilidade. Neste ponto, quando você desloca para o fundo deste:

Você pode inspecionar se a entrega é bem sucedida ou entender por que o processo falhou.,
pode acontecer que seu console não mostra erros, mas no registro de E-mail você pode ver que a mensagem foi em fila de espera para a entrega, então o processo não parou em sua máquina, mas provavelmente foi negado pelo servidor de E-mail que você estava tentando alcançar.

executando todo o comando numa sequência

assim, tudo está pronto para o teste final. Todos os comandos do terminal mailer estão reunidos aqui num ficheiro de script. Logo que tenha descarregado a pasta de trabalho com o ficheiro do programa nela, navegue para a pasta que contém e torne o programa executável: chmod u+x mail.sh., Se você tiver todos os arquivos que eu forneci prontos, você pode começar a testar os comandos mailer mostrados no tutorial. Você só precisa substituir o "<RECIPIENT ADDRESS>" para seu endereço de e-mail de teste no código e executar o ./mail.sh na linha de comando.

Uma vez que o programa termine a execução, a sua caixa de entrada será preenchida com os e-mails de teste.muito bem!

resumo

neste artigo, mostrei-lhe muitas formas de enviar e-mail a partir da linha de comandos Linux. Espero que, com base no que você viu, você possa instalar e configurar esses serviços em sua máquina também.,

O post mostrou os pacotes mailer de linha de comandos mais usados e como enviar e-mails com eles, e no final, eu criei um script shell que reúne todos os comandos usados no artigo. Você pode baixar os arquivos de trabalho dos projetos aqui, e se você instalar os pacotes introduzidos no tutorial e também preencher suas credenciais e detalhes do destinatário, você pode executar o script em seu lazer.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *