Como o email é realmente enviado quando uso o comando "mail" do Linux?

17

Qual conta de email é usada para enviar um email ao usar o mailcomando do terminal linux, como em:

echo "Body of email" | mail -s "Subject" [email protected]

Se os emails não estiverem sendo enviados, é necessário especificar o nome de usuário e a senha de um endereço de email de envio? Todos os mailtutoriais que li não especificam nada sobre o endereço do remetente.

Edit: Então, se eu receber uma mensagem de erro com o efeito "Enviar para domínios remotos não suportados", isso significa que meu ISP bloqueou o envio de emails? Existe alguma maneira de contornar isso? Obrigado.

user001
fonte

Respostas:

12

Qual conta de email é usada para enviar um email ao usar o comando mail do terminal linux, como em:

Nas configurações padrão, é a mesma conta que você usou para fazer login. Seu computador possui um programa de servidor de correio (um MTA) instalado; geralmente Postfix ou Exim4, às vezes Sendmail ou qmail.

O endereço de email desta conta é ou , de onde o FQDN pode ser obtido . No entanto, agora você não pode receber e-mail para esta conta, uma vez que o MTA está configurado para "somente mensagens locais" (como a mensagem de erro abaixo diz) e não aceitará mensagens de fora.your-login@hostnameyour-login@fqdnhostname -f

Edit: Então, se eu receber uma mensagem de erro com o efeito "Enviar para domínios remotos não suportados", isso significa que meu ISP bloqueou o envio de emails? Existe alguma maneira de contornar isso?

Não; essa mensagem de erro é retornada pelo seu próprio computador. O servidor de correio está configurado para transferir apenas correio local - de um usuário para outro (geralmente, do daemon cron se um cronjob falhar). Normalmente, essas mensagens ir para e são legíveis usando , , ou programas similares. (IIRC, o Thunderbird também conseguiu importar spools de correio local.)/var/mail/loginmailmuttre-alpine

Não é difícil reconfigurar o servidor de email para enviar e receber emails de / para outros sites; dependendo do MTA instalado e da distribuição Linux, até um único comando pode ser suficiente: por exemplo, dpkg-reconfigure postfixse o sistema for Debian com Postfix.

No entanto, suponho que você esteja usando isso em um computador pessoal; portanto, seria melhor usar uma conta de email externa - por exemplo, seu endereço do Gmail, se você tiver uma. Descubra qual MTA está instalado (no Ubuntu / Debian, dpkg -S /usr/sbin/sendmailvocê dirá) e, em seguida, pesquise no google " program-name relay gmail" para obter um tutorial.

Como alternativa, instale um MTA projetado especificamente para retransmissão; msmtpe esmtpsão boas escolhas e fáceis de configurar.

user1686
fonte
Obrigado por toda a ajuda. O comando pastebin que você sugeriu acabou atendendo minhas necessidades. Vou trabalhar na configuração de um smarthost para retransmissão de email.
311 de 311
4

É o nome da conta e o nome do host do usuário remetente, por exemplo root@myserver. Não é necessariamente uma caixa de correio real que pode receber emails de fora.

Daniel Beck
fonte
2
@ User001 Será que isso ajuda?
Daniel Beck
2
@ user001: Nesses casos, você pode dar uma olhada nas pastas , algumas das quais são fáceis de usar na linha de comando. Por exemplo curl -Fsprunge=\<- http://sprunge.us < myfile,.
precisa saber é o seguinte
11
@ user001: Você tem o exim4daemon em execução? Será que sudo mailqlistar a mensagem? Você verificou os logs do servidor de envio ( /var/log/exim4/mainlog) e do destinatário (se possível)?
usar o seguinte comando
11
@ user001: Pode ser que seu ISP esteja bloqueando a conexão. Isso é especialmente comum em conexões domésticas - tudo para a porta 25 simplesmente cai, para reduzir a enorme quantidade de spam enviado pelos PCs infectados. (Você ainda pode configurar a retransmissão , no entanto, que usa uma porta diferente e autenticação SMTP.)
user1686
11
@ user001: A retransmissão acontece através de outro servidor de correio (às vezes chamado de "smarthost"). Seus administradores de rede podem ajudar com isso, se a academia tiver seu próprio domínio de email. Caso contrário, você pode configurar seu servidor para enviar a partir do seu Gmail ou de uma caixa de correio semelhante; tutoriais aqui .
precisa saber é o seguinte
4

O comando mail envia emails sob a conta atual, ou seja, nome de usuário @ domínio; no entanto, geralmente os provedores de serviços da Internet impedem que os usuários executem seus próprios servidores de email (bloqueando as portas relevantes) para evitar spam e, portanto, seu email não é enviado.

Mas o problema de envio também pode estar relacionado à configuração da sua máquina.

Editar: habilitando o correio para enviar e-mails, por exemplo, do gmail. Coloque as seguintes informações no seu arquivo ~ / .mailrc, que fornece configuração básica para o correio. No entanto, verifique se esse arquivo está acessível apenas para você (usando chmod 600 ~ / .mailrc)

account gmail {
set smtp-use-starttls
set ssl-verify=ignore
set smtp=smtp.gmail.com:587
#set smtp-auth=login
set [email protected]
set smtp-auth-password=pass
set [email protected]
}

Nesse caso, o email será proveniente de "[email protected]".

Karolos
fonte
@ user001: Deseja apenas enviar e-mails (por exemplo, de scripts) ou também recebê-los?
Karolos 31/01
Apenas para poder enviar uma mensagem de um script. Obrigado.
User001
2
Observe que essa mailrcsintaxe é específica para heirloom-mailx. Alguns sistemas podem vir com GNU mailutilsou BSD mailx, ambos reclamando de erros de sintaxe. (Se isso acontecer, sugiro instalar heirloom-mailx- ou ainda melhor, muttou re-alpine.)
user1686
0

Consulte Como enviar email a partir da linha de comando do Linux para obter mais informações.

Siva Charan
fonte
11
Obrigado SivaCharan. Esse é um dos tutoriais que eu já havia lido, mas não aborda minha pergunta sobre o endereço de origem.
User001