O que significa 'mta' aqui, existe um nome completo ou um link? Como iniciante, é isso que eu quero saber. Como eu tenho falta de experiência para fazer isso.
Zen
5
@Zen MTA significa agente de transporte de correio. postfix, sendmail, qmail, etc #
Francesco Laurita 24/10
@ Zen, na maioria das vezes, você pode considerar MTA como servidor SMTP ou IMAP.
user151841
1
Se você não tem certeza de como instalar / configurar e está no Ubuntu: sudo apt-get install mailutilse selecione o site da Internet: o correio é enviado e recebido diretamente usando SMTP. .
user1717828
86
Se você quer uma abordagem limpa e simples no bash, e você não quiser usar cat, echoetc., a maneira mais simples seria:
mail -s "subject here" email@address.com <<<"message"
<<<é usado para redirecionar a entrada padrão. Faz parte do bash há muito tempo.
Ei, isso funcionou muito bem para mim, obrigado! Como especificaria vários endereços para entrega?
E.Owen
1
@ E.Owen Você pode usar a opção -t para enviar para vários endereços separados por espaços
Jon
25
Se o exim e o ssmtp estiverem em execução, você poderá entrar em problemas. Portanto, se você deseja executar um MTA simples, apenas para que um cliente smtp simples envie notificações por e-mail por insistência, limpe o MTA eventualmente pré-instalado como exim ou postfix primeiro e reinstale o ssmtp.
Então é bastante simples, configurando apenas 2 arquivos (revaliases e ssmtp.conf) - consulte ssmtp doc -, e o uso em seu script bash ou bourne é como:
#!/bin/sh
SUBJECT=$1
RECEIVER=$2
TEXT=$3
SERVER_NAME=$HOSTNAME
SENDER=$(whoami)
USER="noreply"[[-z $1 ]]&& SUBJECT="Notification from $SENDER on server $SERVER_NAME"[[-z $2 ]]&& RECEIVER="another_configured_email_address"[[-z $3 ]]&& TEXT="no text content"
MAIL_TXT="Subject: $SUBJECT\nFrom: $SENDER\nTo: $RECEIVER\n\n$TEXT"
echo -e $MAIL_TXT | sendmail -t
exit $?
Obviamente, não esqueça de abrir a saída do firewall para a porta smtp (25).
Onde posso alterar o número da porta neste script? Na minha porta do servidor SMTP funciona através de 8181.
manix
Eu não faria isso neste shell, caso contrário você será preso mais cedo ou mais tarde. Você pode fazê-lo no arquivo de configuração: Veja unix.stackexchange.com/a/132731
hornetbzz
1
Por que as novas linhas estão sendo introduzidas se eu fizer eco simples $ MAIL_TXT?
kernel panic
1
@Marko: Pls ver o homem eco com a opção -e: permitir a interpretação de fugas barra invertida
recusou porque mais de um processo poderia chamar o script ao mesmo tempo. Isso pode causar arquivo tmp corrompido / incorreto. Além disso, o arquivo / tmp não é sobrescrito toda vez que é usado - ele realmente cresce a cada email contendo todos os emails anteriores. Não é bom.
Taterhead
1
A primeira gravação em / tmp / mailtest é uma substituição, para remover o que estava lá anteriormente. Ainda assim, esse método não é ideal pelos outros motivos que você descreveu.
Simon
8
Geralmente, você deseja usar o mailcomando para enviar sua mensagem usando o MTA local (que a entrega usando SMTP para o destino ou apenas a encaminha para um servidor SMTP mais poderoso, por exemplo, no seu ISP). Se você não possui um MTA local (embora seja um pouco incomum um sistema semelhante ao UNIX omitir um), você pode usar algum MTA minimalista como ssmtp .
ssmtpé bastante fácil de configurar. Basicamente, você só precisa especificar onde está o servidor SMTP do seu provedor:
# The place where the mail goes. The actual machine name is required# no MX records are consulted. Commonly mailhosts are named mail.domain.com# The example will fit if you are in domain.com and you mailhub is so named.
mailhub=mail
Outra opção é usar um dos inúmeros scripts que apenas se conectam diretamente ao servidor SMTP e tentar postar uma mensagem lá, como Smtp-Auth-Email-Script , smtp-cli , SendEmail etc.
O mailcomando faz isso (quem teria adivinhado ;-). Abra seu shell e digite man mailpara obter a página de manual do mailcomando para todas as opções disponíveis.
Eu fiz isso, mas não há nenhuma opção para especificar um servidor para uso
appshare.co
1
Isso faz parte da configuração do seu agente local de transferência de mensagens, por exemplo, Sendmail ou Postfix.
DarkDust
2
Você nem precisa de um MTA. O protocolo SMTP é simples o suficiente para gravá-lo diretamente no servidor SMTP. Você pode até se comunicar via SSL / TLS se tiver o pacote OpenSSL instalado. Verifique esta publicação: https://33hops.com/send-email-from-bash-shell.html
O exemplo acima é um exemplo de como enviar e-mails de texto / html que funcionarão imediatamente. Se você deseja adicionar anexos, a coisa pode ficar um pouco mais complicada, você precisará codificar base64 os arquivos binários e incorporá-los entre os limites. Este é um bom lugar para começar a investigar: http://forums.codeguru.com/showthread.php?418377-Send-Email-w-attachments-using-SMTP
No linux, o utilitário de correio pode ser usado para enviar anexos com a opção "-a". Acesse as páginas do manual para ler sobre a opção. Por exemplo, o seguinte código enviará um anexo:
mail -s "ISSO ESTÁ SUJEITO" - um anexo.txt nome@domínio.com <<< "Olá amigo, encontre relatórios de falha."
smtp_sasl_security_options que na configuração serão definidas como vazias , para garantir que não haja opções de segurança incompatíveis com o Gmail seja usada.
adicione o corpo do e-mail conforme desejado, pressione enter e pressione ctrl + d para finalizar corretamente
se não funcionar, verifique todas as etapas novamente e verifique se você habilita " aplicativo menos seguro" no seu gmail
reinicie o postfix se você modificar algo
para shell script, crie o arquivo .sh e inclua o comando 6 step como seu requisito
por exemplo, apenas para uma amostra
#!/bin/bash
REALVALUE=$(df /| grep /| awk '{ print $5}'| sed 's/%//g')
THRESHOLD=80if["$REALVALUE"-gt "$THRESHOLD"];then
mail -s 'Disk Space Alert' mailid@domainname.com << EOF
Your root partition remaining free space is critically low.Used: $REALVALUE%
EOF
fi
O script envia um email quando o uso do disco ultrapassa a porcentagem especificada pela varialbe THRESHOLD (80% aqui).
O nome desta resposta não deve ser "ENVIAR CORREIO DO LINUX PARA [email protected] VIA GMAIL"?
Cameron Hudson
1
você pode usar o comando 'email' ou 'emailx'.
(1) $ vim /etc/mail.rc # ou # vim /etc/nail.rc
set from = xxx@xxx.com #set smtp = smtp.exmail.gmail.com #gmail's smtp server set smtp-auth-user = xxx@xxx.com #sender's email addressset smtp-auth-password = xxxxxxx #get from gmail, not your email account passwdset smtp-auth=login
Como se não for enviado de uma conta autorizada, o email chegará à lista de lixo eletrônico.
(2) $ echo "Lembre-se de remover tópicos não utilizados!" | mail -s "tópicos de desperdício" -a a.txt [email protected] #send ao usuário do grupo '[email protected]'
Respostas:
Se o servidor estiver bem configurado, por exemplo, com um MTA instalado e em execução, você pode apenas usar o comando mail.
Por exemplo, para enviar o conteúdo de um arquivo, você pode fazer o seguinte:
man mail
para mais detalhes.fonte
sudo apt-get install mailutils
e selecione o site da Internet: o correio é enviado e recebido diretamente usando SMTP. .Se você quer uma abordagem limpa e simples no bash, e você não quiser usar
cat
,echo
etc., a maneira mais simples seria:<<<
é usado para redirecionar a entrada padrão. Faz parte do bash há muito tempo.fonte
cat << END
...END | mail -s "subject" [email protected]
Se o exim e o ssmtp estiverem em execução, você poderá entrar em problemas. Portanto, se você deseja executar um MTA simples, apenas para que um cliente smtp simples envie notificações por e-mail por insistência, limpe o MTA eventualmente pré-instalado como exim ou postfix primeiro e reinstale o ssmtp.
Então é bastante simples, configurando apenas 2 arquivos (revaliases e ssmtp.conf) - consulte ssmtp doc -, e o uso em seu script bash ou bourne é como:
Obviamente, não esqueça de abrir a saída do firewall para a porta smtp (25).
fonte
Outra opção para um script bash:
/tmp/mailtest
é substituído sempre que esse script é usado.fonte
Geralmente, você deseja usar o
mail
comando para enviar sua mensagem usando o MTA local (que a entrega usando SMTP para o destino ou apenas a encaminha para um servidor SMTP mais poderoso, por exemplo, no seu ISP). Se você não possui um MTA local (embora seja um pouco incomum um sistema semelhante ao UNIX omitir um), você pode usar algum MTA minimalista como ssmtp .ssmtp
é bastante fácil de configurar. Basicamente, você só precisa especificar onde está o servidor SMTP do seu provedor:Outra opção é usar um dos inúmeros scripts que apenas se conectam diretamente ao servidor SMTP e tentar postar uma mensagem lá, como Smtp-Auth-Email-Script , smtp-cli , SendEmail etc.
fonte
Admitindo que você deseja usar algum servidor smtp, você pode:
Mudança
somehost
,someport
esomeaccount@somedomain
para valores reais que você usaria. Nenhuma criptografia e autenticação são executadas neste exemplo.fonte
mailx
não estiver instalado?O
mail
comando faz isso (quem teria adivinhado ;-). Abra seu shell e digiteman mail
para obter a página de manual domail
comando para todas as opções disponíveis.fonte
Você nem precisa de um MTA. O protocolo SMTP é simples o suficiente para gravá-lo diretamente no servidor SMTP. Você pode até se comunicar via SSL / TLS se tiver o pacote OpenSSL instalado. Verifique esta publicação: https://33hops.com/send-email-from-bash-shell.html
O exemplo acima é um exemplo de como enviar e-mails de texto / html que funcionarão imediatamente. Se você deseja adicionar anexos, a coisa pode ficar um pouco mais complicada, você precisará codificar base64 os arquivos binários e incorporá-los entre os limites. Este é um bom lugar para começar a investigar: http://forums.codeguru.com/showthread.php?418377-Send-Email-w-attachments-using-SMTP
fonte
No linux, o utilitário de correio pode ser usado para enviar anexos com a opção "-a". Acesse as páginas do manual para ler sobre a opção. Por exemplo, o seguinte código enviará um anexo:
mail -s "ISSO ESTÁ SUJEITO" - um anexo.txt nome@domínio.com <<< "Olá amigo, encontre relatórios de falha."
fonte
ENVIAR CORREIO DE LINUX PARA GMAIL
USANDO O POSTFIX
1: instalar software
Debian e Ubuntu:
OpenSUSE:
Fedora:
CentOS:
Arch Linux:
FreeBSD:
na configuração, selecione suporte SASL
2. Configure o Gmail
/ etc / postfix. Crie ou edite o arquivo de senha:
estou usando o vim u pode usar qualquer editor de arquivos como nano, cat .....
> Ubuntu, Fedora, CentOS, Debian, OpenSUSE, Arch Linux:
Adicione isso
onde o usuário substitui pelo seu nome de email e senha é a sua senha do Gmail
Salve e feche o arquivo e torne-o acessível apenas pela raiz: por ser um conteúdo sensível que contém sua senha
> FreeBSD:
diretório / usr / local / etc / postfix.
Adicione a linha:
Salve e torne acessível apenas pela raiz:
3. Configuração do Postfix
arquivo de configuração main.cf
6 parâmetros que devemos definir no Postfix
Ubuntu, Arch Linux, Debian:
editar
modifique os seguintes valores:
smtp_sasl_security_options que na configuração serão definidas como vazias , para garantir que não haja opções de segurança incompatíveis com o Gmail seja usada.
salvar e fechar
como para
OpenSUSE:
modificar
também requer a configuração do arquivo master.cf
modificar:
descomentando esta linha (remova #)
salvar e fechar
Fedora, CentOS:
modificar
FreeBSD:
modificar:
salve e feche isso
4. Processar arquivo de senha:
Ubuntu, Fedora, CentOS, OpenSUSE, Arch Linux, Debian:
para freeBSD
4.1) Reinicie o postfix
Ubuntu, Fedora, CentOS, OpenSUSE, Arch Linux, Debian:
para o FreeBSD:
adicionar
salve e corra para começar
5. Ative "Aplicativos menos seguros" no Gmail usando a ajuda do link abaixo
https://support.google.com/accounts/answer/6010255
6. Envie um email de teste
pressione Enter
adicione o corpo do e-mail conforme desejado, pressione enter e pressione ctrl + d para finalizar corretamente
se não funcionar, verifique todas as etapas novamente e verifique se você habilita " aplicativo menos seguro" no seu gmail
reinicie o postfix se você modificar algo
para shell script, crie o arquivo .sh e inclua o comando 6 step como seu requisito
por exemplo, apenas para uma amostra
O script envia um email quando o uso do disco ultrapassa a porcentagem especificada pela varialbe THRESHOLD (80% aqui).
fonte
você pode usar o comando 'email' ou 'emailx'.
(1) $ vim /etc/mail.rc # ou # vim /etc/nail.rc
Como se não for enviado de uma conta autorizada, o email chegará à lista de lixo eletrônico.
(2) $ echo "Lembre-se de remover tópicos não utilizados!" | mail -s "tópicos de desperdício" -a a.txt [email protected] #send ao usuário do grupo '[email protected]'
fonte