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

VerifiedCLI 3.1.1 · Gmail, Outlook, Yahoo · last tested April 11, 2026

Como enviar e-mail pela linha de comando do Linux sem servidor SMTP?

O Nylas CLI envia e-mail pela linha de comando do Linux em um comando, sem servidor SMTP local, daemon Postfix nem fila sendmail. Ele se autentica uma vez com uma chave de API e então envia via HTTPS na porta 443 através de uma API de e-mail — sem senha SMTP no histórico do shell. O mesmo comando nylas email send roda sem alterações a partir de um script bash, um cron job, um timer systemd ou um runner de CI.

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 com um único comando e então 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, 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. Veja o guia de primeiros passos para instalar e conectar uma caixa de e-mail primeiro.

1. 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 depois que a CLI estiver configurada. 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: a mensagem sai via HTTPS em vez de SMTP, independentemente da plataforma.

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.

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 --mime

Adicionar --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"
  }
]

3. 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"

4. 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_clicked

5. 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 legal@partner.com --subject "Contract" --body "..." --sign

# Criptografar com a chave pública do destinatário (buscada automaticamente)
nylas email send --to legal@partner.com --subject "Contract" --body "..." --encrypt

# Ambos (recomendado para segurança máxima)
nylas email send --to legal@partner.com --subject "Contract" --body "..." --sign --encrypt

# Descriptografar e verificar uma mensagem recebida
nylas email read msg_xyz789 --decrypt --verify

Veja o guia completo de e-mail criptografado com GPG para gerenciamento de chaves, solução de problemas e criptografia para múltiplos destinatários.

6. 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 "Thank them for the meeting and confirm next steps"

# Gerar uma resposta para uma mensagem específica
nylas email smart-compose --message-id msg_abc123 --prompt "Accept the invitation politely"

# Análise IA da caixa de entrada
nylas email ai analyze --unread
# => Summary, categories, action items, urgency levels

7. 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.

# Morning inbox summary script
#!/bin/bash
echo "=== Inbox Summary ==="
unread=$(nylas email list --unread --json | jq length)
echo "Unread: $unread"

# Urgent check
nylas email list --unread --json \
  | jq '[.[] | select(.subject | test("urgent|asap"; "i"))]' \
  | jq 'length' \
  | xargs -I{} echo "Urgent: {}"

# Bulk send from a CSV
while IFS=, read -r email name; do
  nylas email send \
    --to "$email" \
    --subject "Hello $name" \
    --body "Your account is ready." \
    --yes
  sleep 2
done < contacts.csv

8. 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.

# Agent triages your inbox
nylas email list --unread --json | agent triage --rules ./inbox-rules.yml

# Agent drafts a reply, CLI sends it
nylas email send \
  --to sarah@team.io \
  --subject "Re: Follow-up" \
  --body "$(agent draft --context msg_a1f2)" \
  --yes

# Start the built-in MCP server for Claude, Cursor, or VS Code
nylas mcp install --assistant claude-code

Model 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.

9. 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.

# Use a here-doc for longer email bodies in shell scripts
nylas email send \
  --to ops@company.com \
  --subject "Nightly backup report" \
  --body "$(cat <<'EOF'
Backups completed successfully.

- Cluster: prod-a
- Duration: 18m
- Snapshot age: 24h
EOF
)" \
  --yes

Para 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.

# Cron-friendly check with explicit exit handling
if ! nylas email send --to alerts@company.com --subject "Disk warning" --body "Disk usage > 90%" --yes; then
  echo "email send failed" >&2
  exit 1
fi

10. 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 "subject" user@example.com, a migração é simples: substitua mailx por nylas email send --to user@example.com --subject "subject" --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?

Recursomail / mailxmuttNylas CLI
Enviar e-mailSim (precisa MTA)Sim (precisa SMTP)Sim (um comando)
Ler caixa de entradaApenas localSimSim
Gmail OAuth2NãoComplexoIntegrado
Microsoft 365NãoComplexoIntegrado
GPG assinatura/criptografiaManualIntegradoIntegrado
Acesso ao calendárioNãoNãoSim
Saída JSONNãoNãoSim (--json)
Composição IANãoNãoSim
Servidor MCPNãoNãoIntegrado

Próximos passos