Enviar e-mails a partir de linha de comando
O comando mail é essencial que deve estar disponível em qualquer servidor linux de modo que vários serviços e outros aplicativos da web pode gerar e transmitir e-mails.
num post anterior no comando mail vimos como o comando mail pode ser usado para enviar e-mails da linha de comandos no seu servidor linux.,
neste tutorial estaremos usando uma versão melhorada do comando mail. Seu chamado mailx( ou apenas mail quando instalado), e ele pode fazer muitas mais coisas do que o comando mail mais antigo do pacote GNU mailutils pode fazer.
como funciona
o comando mail/mailx precisa de um servidor de smtp local (MTA) em execução para entregar os e-mails. A rota tomada pelo email é um pouco como este –
mail -> sendmail -> local MTA -> recipient MTA
o MTA destinatário seria o servidor smtp do gmail Se o seu destinatário é alguém em gmail.com por exemplo., Para o MTA local, você precisa instalar um servidor de smtp como o Postfix. Uma instalação básica do Postfix com configuração mínima funcionaria na maioria dos casos.
Instale o comando mailx
nos sistemas baseados em Ubuntu / Debian o comando mailx está disponível a partir de 2 pacotes diferentes –
1. heirloom-mailx
2. BSD-mailx
estaremos usando o pacote heirloom-mailx porque ele tem mais recursos e opções.em sistemas baseados em CentOS / Fedora, há apenas um pacote chamado “mailx” que é o pacote de herança.,
para saber qual o pacote mailx instalado no seu sistema, Verifique a saída “man mailx” e desloque-se até ao fim e deverá ver algumas informações úteis.
# ubuntu/debian$ sudo apt-get install heirloom-mailx# fedora/centos$ sudo yum install mailx
usando o comando mailx
uma vez instalado, o comando mailx pode ser directamente referenciado com o nome mail, por isso basta escrever isso na linha de comandos.
1. E-mail simples
execute o seguinte comando, e então mailx esperaria para que você digite a mensagem do E-mail. Você pode carregar em enter para novas linhas. Quando terminar de escrever a mensagem, carregue em Ctrl+D e mailx irá mostrar o EOT.,
Depois do que mailx entrega automaticamente o e-mail para o destino.
$ mail -s "This is the subject" Hi someoneHow are youI am fineByeEOT
2. Pegue a mensagem de um arquivo
o corpo da mensagem do E-mail pode ser retirado de um arquivo também.
$ mail -s "This is Subject" < /path/to/file
A mensagem também pode ser canalizada usando o comando echo –
$ echo "This is message body" | mail -s "This is Subject"
3. Múltiplos destinatários
para enviar o correio para vários destinatários, indique todos os e-mails separados por uma vírgula
$ echo "This is message body" | mail-s "This is Subject" ,
4., CC e BCC
as opções”- c “e”- b ” podem ser usadas para adicionar endereços CC e BCC respectivamente.
$ echo "This is message body " | mail - s" This is Subject " - c
5. Indique a partir do nome e endereço
para indicar um” de ” nome e endereço, use a opção “-r”. O nome deve ser seguido pelo endereço embrulhado em “”.
$ echo "Este é o corpo da mensagem" | mail-s "Este Sujeito" -r "Harry<>"
6., Indique o endereço” resposta-para ”
a resposta para o endereço é definida com a variável de opção interna “replyto” usando a opção “-S”.
7. Os anexos
podem ser adicionados com a opção”- a”.
$ echo "This is message body" | mail - s "This is Subject" - R "Harry <>" -a/path/to/file
8. Use o servidor SMTP externo
esta é uma funcionalidade exclusiva, que você obtém apenas com o Heirloom mailx e não com o BSD mailx, ou o comando mail do gnu mailutils ou o comando mutt.,
o comando mailx pode usar um servidor smtp externo para transmitir a mensagem para a frente. A sintaxe é um pouco longa, mas faz sentido.
aqui está uma discriminação
Você pode usar os servidores smtp gmail e enviar e-mails através da sua conta gmail. Isso é tão fixe!
para o gmail especificamente, você precisa ativar configurações de aplicativos menos seguras antes de poder enviar e-mail dessa forma.9. Ver Verbose-watch smtp communication
When using external smtp servers, you can choose to watch the entire smtp communication that is done in the background., Isto é útil especialmente ao testar ou depurar servidores de smtp.
solução de problemas
No caso de as mensagens não estarem a ser entregues adequadamente, é necessário verificar algumas coisas. A primeira coisa a verificar é que um servidor smtp (mta) está a correr localmente. O comando netstat pode dizer que
Se um servidor stmp como o Postfix está em execução e os e-mails ainda não estão indo, então tente configurar novamente o Postfix, por exemplo. Nos sistemas Ubuntu / Debian, isso pode ser feito com o comando dpkg-reconfigure
$ sudo dpkg-reconfigure postfix
então tente, o comando mail e ele deve funcionar., Se ainda não funcionar, tente contactar o seu fornecedor de servidores.
Sem e-mails de sistemas locais
Se tentar enviar e-mails do seu computador local para um endereço de gmail, o seu correio provavelmente seria rejeitado, por isso não tente fazê-lo.
isto é porque computadores comuns conectados ao endereço de internet têm um endereço ip que não está associado com qualquer domínio válido como tal, e gmail estritamente verifica tais credenciais antes de aprovar qualquer e-mail para passar.,
notas e recursos
para além do mailx, existem outras ferramentas como Swaks e smtp-cli que podem ser usadas para enviar mensagens da linha de comandos e suportar várias funcionalidades como a especificação de servidores de smtp e a adição de anexos, etc.
no entanto, o comando mailx está disponível nos repositórios predefinidos das distros mais comuns, por isso pode ser instalado facilmente. Além disso, mantém uma sintaxe muito semelhante à do comando mail, o que faz com que seja uma gota em substituição ao comando mail mais antigo.,
o comando mailx é mesmo capaz de ler e-mails de servidores remotos de IMAP, mas isso é algo que mantivemos fora deste post e falaríamos mais tarde. Para saber mais, verifique a página de man para o comando mailx com “man mailx”.