Guide
Enviar e-mail do Linux sem servidor SMTP ou Postfix
A maioria das ferramentas de e-mail por linha de comando exige um servidor SMTP local ou relay como Postfix ou sendmail, ou funciona apenas com um provedor. O Nylas CLI envia e-mails de terminais Linux, Ubuntu, macOS e Windows com OAuth2 integrado, saída JSON e sem configuração de servidor SMTP.
Written by Aaron de Mello Senior Engineering Manager
Reviewed by Caleb Geene
Como enviar e-mail pela linha de comando do Linux sem servidor SMTP?
Use uma CLI que envia através de uma API de e-mail autenticada em vez de um agente de transferência de correio local. Com o Nylas CLI, o fluxo de trabalho no Linux é uma instalação, uma autenticação e um comando nylas email send. Sem daemon Postfix, sem fila sendmail e sem senha SMTP no histórico do shell.
O comando mail existe em sistemas Unix desde 1977, e o mailx desde o início dos anos 1980 — mas nenhum suporta OAuth2. Isso é um problema: o Google desativou senhas de "apps menos seguros" para o Gmail em setembro de 2024, e a Microsoft retirou a autenticação básica do Exchange Online em outubro de 2022. Se sua ferramenta CLI não gerencia a renovação de tokens OAuth2 (tokens de acesso do Gmail expiram a cada 3.600 segundos segundo a documentação OAuth 2.0 do Google), ela não consegue enviar e-mails de forma confiável por esses provedores.
O Nylas CLI contorna tudo isso. Ele se comunica diretamente com a API Nylas, que gerencia a renovação de tokens OAuth2, abstração de provedores e gerenciamento de conexões. Autentique-se uma vez e todos os 72+ comandos funcionam com Gmail, Outlook, Exchange, Yahoo, iCloud e IMAP em qualquer plataforma.
O que significa "enviar e-mail sem servidor SMTP"?
Enviar e-mail sem servidor SMTP significa que seu script não se conecta a um MTA local, host relay ou portas SMTP do provedor como 25, 465 ou 587. Em vez disso, a CLI envia via HTTPS na porta 443 através de uma API autenticada. Isso evita configuração do Postfix, portas SMTP de saída bloqueadas, senhas de app e credenciais de relay em scripts shell.
Isso é ideal para servidores Linux, cron jobs do Ubuntu, runners do GitHub Actions e sandboxes de IA onde SMTP está bloqueado ou não vale a manutenção. Se um fluxo de trabalho só precisa enviar um relatório, alerta, mensagem de teste ou e-mail de confirmação, configurar um servidor de e-mail completo é sobrecarga operacional desnecessária.
Como enviar e-mail pela linha de comando do Ubuntu?
Para enviar e-mail pela linha de comando do Ubuntu, instale a CLI, autentique a caixa de e-mail uma vez e chame nylas email send a partir do bash, cron, timers systemd ou CI. O comando não requer apt install postfix, mailutils, sendmail nem configuração de relay SMTP.
1. Instalação
A instalação do Nylas CLI leva menos de 60 segundos no macOS, Linux ou WSL. Homebrew é o caminho mais rápido — baixa um binário pré-compilado com verificação SHA-256, sem etapa de compilação. A opção Go compila a partir do código-fonte e requer Go 1.23 ou posterior. Ambos os métodos colocam o binário nylas no seu $PATH automaticamente.
# macOS / Linux (Homebrew)
brew install nylas/nylas-cli/nylas
# Ou compilar a partir do código-fonte (requer Go 1.23+)
go install github.com/nylas/cli/cmd/nylas@latest2. Autenticar sua caixa de e-mail
A autenticação leva menos de 60 segundos. Crie um aplicativo em dashboard-v3.nylas.com, conecte sua caixa de e-mail via OAuth e copie sua chave de API. A CLI armazena credenciais no chaveiro do sistema (macOS Keychain, GNOME Keyring ou Windows Credential Manager), criptografadas em repouso. Execute isso uma vez — todos os 72 comandos usam as mesmas credenciais armazenadas:
nylas auth config
# Cole sua chave de API quando solicitado
# Verifique a conexão
nylas auth whoami
# => Authenticated as you@company.com (Google Workspace)O comando nylas auth config armazena credenciais no chaveiro do sistema. Você pode verificar a conexão a qualquer momento:
Authentication Status
Current Account:
Email: dev@example.com
Provider: google
Grant ID: d3f4a5b6-c7d8-9e0f-a1b2-c3d4e5f6g7h8
Status: ✓ Valid
Configuration:
Region: us
Config Path: /home/dev/.config/nylas/config.yaml
Secret Store: system keyring3. Enviar um e-mail
O comando nylas email send entrega uma mensagem pela API Nylas em uma única chamada. Aceita --to, --subject e --body como flags obrigatórias, com --cc e --bcc opcionais para destinatários adicionais. A CLI pede confirmação antes de enviar, a menos que você passe --yes — útil em scripts sem terminal conectado. A entrega normalmente é concluída em menos de 3 segundos para mensagens de até 25 MB.
nylas email send \
--to "colega@empresa.com.br" \
--subject "Relatório trimestral em anexo" \
--body "Olá -- por favor revise os números do Q4 até sexta."
# Pular o prompt de confirmação
nylas email send --to user@example.com --subject "Nota rápida" --body "..." --yes
# CC e BCC
nylas email send \
--to alice@equipe.com \
--cc bob@equipe.com \
--bcc gerente@equipe.com \
--subject "Atualização do sprint" \
--body "Todas as tarefas no prazo."Após um envio bem-sucedido, a CLI confirma a entrega:
✓ Email sent successfully
Message ID: abc123def456
To: jamie@example.com
Subject: Deployment complete
Sent at: 2026-03-25T15:30:00-04:00É possível enviar e-mail pela linha de comando no Linux, macOS ou Windows?
Sim. A mesma sintaxe nylas email send funciona no Linux, Ubuntu, macOS, Windows PowerShell, WSL e runners CI após a CLI ser instalada e autenticada. Buscas como enviar e-mail pela linha de comando Mac e enviar e-mail pela linha de comando Windows são versões específicas de plataforma do mesmo fluxo: instalar o binário, autenticar a caixa de e-mail e enviar via HTTPS em vez de SMTP.
Se você precisar enviar e-mails pela linha de comando do Linux com anexos, use o fluxo de envio desta página e consulte a referência do comando nylas email send para os flags exatos suportados pela sua versão instalada. A diferença operacional importante: a mensagem ainda sai pela API do provedor, não por um relay Postfix ou SMTP local.
4. Ler e pesquisar sua caixa de entrada
O acesso à caixa de entrada pelo terminal abrange quatro operações: listar mensagens recentes, filtrar por status de leitura, pesquisar por palavra-chave e ler o corpo de mensagens individuais. O comando nylas email list retorna as 50 mensagens mais recentes por padrão. Adicione --unread para filtrar apenas não lidas, ou --limit para controlar quantos resultados retornam (máximo de 200 por requisição).
# Listar e-mails recentes
nylas email list --limit 10
# Apenas não lidos
nylas email list --unread
# Pesquisar por palavra-chave
nylas email search "fatura" --limit 5
# Ler uma mensagem específica
nylas email read msg_abc123
# Ver o fonte MIME bruto
nylas email read msg_abc123 --mimeAdicionar --json a qualquer comando de lista produz JSON compatível com RFC 8259, que você pode filtrar com jq ou passar diretamente para um agente IA. Cada objeto de mensagem inclui 12 campos: id, grant_id, thread_id, subject, from, to, snippet, date, unread, starred, folders e object.
nylas email list --limit 1 --json[
{
"id": "a1b2c3d4e5f6g7h8",
"grant_id": "d3f4a5b6-c7d8-9e0f-a1b2-c3d4e5f6g7h8",
"thread_id": "a1b2c3d4e5f6g7h8",
"subject": "Re: Projeto Atlas — cronograma de lançamento Q2",
"from": [{"name": "Sarah Chen", "email": "sarah@example.com"}],
"to": [{"name": "Alex Rivera", "email": "alex@example.com"}],
"snippet": "O ambiente de staging está pronto. Os resultados dos testes de sexta estão anexos...",
"date": "2026-03-25T14:22:18-04:00",
"unread": true,
"starred": false,
"folders": ["INBOX"],
"object": "message"
}
]5. Agendamento de e-mails
O agendamento de e-mails enfileira uma mensagem no lado do servidor para envio futuro sem manter o terminal aberto. O flag --schedule aceita deslocamentos relativos como 2h ou 30m, horários em linguagem natural como "tomorrow 9am" e timestamps ISO 8601. Mensagens agendadas suportam atrasos de 1 minuto a 30 dias, e você pode cancelar um envio agendado antes da janela de entrega excluindo o rascunho.
# Enviar em 2 horas
nylas email send --to team@company.com --subject "Lembrete" --body "..." --schedule 2h
# Enviar amanhã de manhã
nylas email send --to team@company.com --subject "Standup" --body "..." --schedule "tomorrow 9am"
# Enviar em uma data específica
nylas email send --to client@example.com --subject "Acompanhamento" --body "..." --schedule "2026-03-01 14:30"6. Rastreamento de aberturas e cliques
O rastreamento de aberturas e cliques incorpora um pixel de rastreamento 1x1 e reescreve links para que a API Nylas registre eventos de engajamento. O flag --track-opens ativa o rastreamento por pixel, --track-links envolve cada URL em um redirecionamento, e --track-label atribui uma tag de campanha para filtragem. Os eventos de rastreamento disparam em até 5 segundos após a ação do destinatário e chegam como payloads de webhook nos triggers message.opened e message.link_clicked.
nylas email send \
--to prospect@empresa.com.br \
--subject "Proposta anexa" \
--body "Aqui está nossa proposta para o Q2." \
--track-opens \
--track-links \
--track-label "prospecção-q2"
# Eventos de rastreamento são entregues via webhooks:
nylas webhook create \
--url https://your-server.com/hooks \
--triggers message.opened,message.link_clicked7. Assinatura e criptografia com GPG
Assinatura e criptografia GPG funcionam nativamente — sem ferramentas extras além de um chaveiro GPG. A CLI implementa RFC 3156 PGP/MIME, adicionando aproximadamente 200 milissegundos de overhead por mensagem para assinatura e 400 milissegundos para criptografia. Chaves públicas são buscadas automaticamente nos servidores de chaves ao criptografar para um destinatário pela primeira vez:
# Assinar com sua chave GPG
nylas email send --to juridico@parceiro.com.br --subject "Contrato" --body "..." --sign
# Criptografar com a chave pública do destinatário (buscada automaticamente)
nylas email send --to juridico@parceiro.com.br --subject "Contrato" --body "..." --encrypt
# Ambos (recomendado para segurança máxima)
nylas email send --to juridico@parceiro.com.br --subject "Contrato" --body "..." --sign --encrypt
# Descriptografar e verificar uma mensagem recebida
nylas email read msg_xyz789 --decrypt --verifyVeja o guia completo de e-mail criptografado com GPG para gerenciamento de chaves, solução de problemas e criptografia para múltiplos destinatários.
8. Redação assistida por IA
Smart Compose gera rascunhos de e-mail a partir de um prompt em linguagem natural sem sair do terminal. O comando nylas email smart-compose envia seu prompt para o endpoint de IA da Nylas e retorna um rascunho formatado em menos de 2 segundos. Passe --message-id para gerar uma resposta contextualizada a um thread específico. O subcomando ai analyze analisa mensagens não lidas e retorna resumos, categorias e níveis de urgência.
# Gerar um rascunho a partir de um prompt
nylas email smart-compose --prompt "Agradeça pela reunião e confirme os próximos passos"
# Gerar uma resposta para uma mensagem específica
nylas email smart-compose --message-id msg_abc123 --prompt "Aceite o convite educadamente"
# Análise IA da caixa de entrada
nylas email ai analyze --unread
# => Resumo, categorias, itens de ação, níveis de urgência9. Scripts e automação
Scripting shell com o Nylas CLI transforma operações de e-mail em blocos composíveis. Cada subcomando suporta --json, que produz dados estruturados que você pode redirecionar para jq, awk ou qualquer ferramenta de processamento. O exemplo abaixo mostra um script de resumo matinal da caixa de entrada que conta mensagens não lidas, marca urgentes por palavras-chave no assunto e envia e-mails personalizados em massa a partir de um arquivo CSV. Um sleep de 2 segundos entre envios CSV evita atingir o limite padrão de 50 requisições por minuto.
# Script de resumo matinal da caixa de entrada
#!/bin/bash
echo "=== Resumo da Caixa de Entrada ==="
unread=$(nylas email list --unread --json | jq length)
echo "Não lidos: $unread"
# Verificação de urgência
nylas email list --unread --json \
| jq '[.[] | select(.subject | test("urgente|asap"; "i"))]' \
| jq 'length' \
| xargs -I{} echo "Urgentes: {}"
# Envio em massa a partir de CSV
while IFS=, read -r email name; do
nylas email send \
--to "$email" \
--subject "Olá $name" \
--body "Sua conta está pronta." \
--yes
sleep 2
done < contatos.csv10. Envio para agentes IA
Redirecionar a saída da CLI para agentes IA transforma o terminal em uma camada de automação de e-mail. Cada subcomando nylas email suporta --json, que produz JSON compatível com RFC 8259 que agentes podem analisar sem transformação. Você pode enviar dados da caixa de entrada para um agente de triagem, gerar respostas com um LLM ou instalar o servidor MCP integrado para que ferramentas como Claude Code e Cursor chamem comandos CLI diretamente.
# Agente faz triagem da sua caixa de entrada
nylas email list --unread --json | agent triage --rules ./regras-caixa.yml
# Agente redige resposta, CLI envia
nylas email send \
--to sarah@team.io \
--subject "Re: Acompanhamento" \
--body "$(agent draft --context msg_a1f2)" \
--yes
# Iniciar o servidor MCP integrado para Claude, Cursor ou VS Code
nylas mcp install --assistant claude-codeModel Context Protocol (MCP) permite que assistentes IA chamem ferramentas CLI diretamente. Veja o guia de acesso a e-mail para agentes IA para configuração do MCP e das ferramentas.
11. Cron jobs, here-docs e automação shell nativa
Automação de e-mail baseada em cron permite enviar alertas agendados, relatórios e verificações de saúde sem daemon ou interface gráfica. Here-docs do Bash resolvem o problema do corpo multilinha — cat <<'EOF' passa texto arbitrário para --body sem escapar aspas ou quebras de linha. A CLI termina com código 0 em caso de sucesso e não-zero em caso de falha, então envolver envios em blocos if ! dá aos cron jobs um tratamento de erros confiável. Uma entrada cron típica de relatório noturno adiciona cerca de 4 linhas ao seu crontab.
# Here-doc para corpos de e-mail longos em scripts shell
nylas email send \
--to ops@empresa.com.br \
--subject "Relatório de backup noturno" \
--body "$(cat <<'EOF'
Backups concluídos com sucesso.
- Cluster: prod-a
- Duração: 18m
- Idade do snapshot: 24h
EOF
)" \
--yesPara cron jobs, envolver o envio em um bloco if ! garante que falhas sejam visíveis em vez de desaparecerem silenciosamente. A CLI retorna código de saída 1 em erros de autenticação, timeouts de rede e rejeições no nível da API.
# Verificação compatível com cron e tratamento de erros explícito
if ! nylas email send --to alertas@empresa.com.br --subject "Alerta de disco" --body "Uso de disco > 90%" --yes; then
echo "falha no envio de e-mail" >&2
exit 1
fi12. Substituição de mailx, sendmail e Postfix
Substituir mailx, sendmail ou Postfix pelo Nylas CLI elimina completamente a pilha MTA local. Um relay Postfix requer manutenção de certificados TLS, gerenciamento de fila de correio e monitoramento de um daemon permanente — cerca de 15-20 arquivos de configuração em /etc/postfix/ para um setup de produção. O comando mailx depende de um MTA funcional por baixo, e a sintaxe de configuração do sendmail (sendmail.cf) não mudou significativamente desde os anos 1990. A CLI substitui tudo isso por um único binário e uma chave de API.
Se seus scripts atualmente enviam texto via mailx -s "assunto" user@example.com, a migração é simples: substitua mailx por nylas email send --to user@example.com --subject "assunto" --body "$(cat)". Sem relay, sem fila, sem daemon para reiniciar após mudanças de configuração.
Como o Nylas CLI se compara a outras ferramentas de e-mail CLI?
| Recurso | mail / mailx | mutt | Nylas CLI |
|---|---|---|---|
| Enviar e-mail | Sim (precisa MTA) | Sim (precisa SMTP) | Sim (um comando) |
| Ler caixa de entrada | Apenas local | Sim | Sim |
| Gmail OAuth2 | Não | Complexo | Integrado |
| Microsoft 365 | Não | Complexo | Integrado |
| GPG assinatura/criptografia | Manual | Integrado | Integrado |
| Acesso ao calendário | Não | Não | Sim |
| Saída JSON | Não | Não | Sim (--json) |
| Composição IA | Não | Não | Sim |
| Servidor MCP | Não | Não | Integrado |
Próximos passos
- Enviar Gmail pela linha de comando -- fluxo de envio específico do Gmail sem código de cliente da API
- Enviar e-mail Outlook pela CLI -- padrões específicos do Microsoft 365 e Exchange
- Enviar Yahoo Mail pela CLI -- sem senhas de app e sem configuração SMTP
- Enviar iCloud Mail pela CLI -- domínios personalizados, Ocultar Meu E-mail, sem senhas de app
- Enviar e-mail pelo PowerShell -- padrões, agendamento e scripts específicos do PowerShell
- Enviar e-mail pelo Python sem SMTP -- envio por subprocess sem senhas de app ou Postfix
- Notificações de e-mail do GitHub Actions -- alertas de falha CI com secrets do workflow
- Extração de assinaturas de e-mail pela CLI -- gerenciar assinaturas e enviar com IDs de assinatura
- Pesquisar e-mails pelo terminal -- comparar sintaxe de busca do Gmail, Graph e IMAP
- Automatizar relatórios de e-mail pelo terminal -- resumos diários e digests semanais com cron
- Configurações SMTP do Gmail 2026 -- portas, TLS, senhas de app, OAuth e limites de envio
- Comparativo de ferramentas CLI de e-mail -- escolher entre mailx, mutt, msmtp, swaks e uma CLI multi-provedor
- CLI de agente IA para e-mail e calendário -- transformar comandos de e-mail e calendário em ferramentas JSON para agentes LLM
- Listar e-mails do Gmail -- ler e pesquisar sua caixa do Gmail pelo terminal
- Listar e-mails do Exchange -- Exchange Online e on-prem antes da depreciação do EWS
- Listar e-mails IMAP -- Fastmail, Zoho, auto-hospedado e ISP
- Gerenciar seu calendário pelo terminal -- eventos, agendamento, ferramentas de fuso horário
- Receber e-mails de entrada -- endereços gerenciados e webhooks
- Agendar e-mails pelo terminal -- enfileirar mensagens para envio futuro com --schedule
- Referência completa de comandos -- cada flag e subcomando documentados