Pular para o conteúdo principal
O AirysChat usa o Rails Action Mailbox para receber e-mails de entrada. O Action Mailbox suporta vários provedores de “ingresso” nativamente, e o AirysChat é construído com base nisso. Este guia o orienta através de:
  • Escolher e configurar um provedor de e-mail de entrada (ingresso)
  • Configurar as variáveis de ambiente necessárias
  • Usar Mailgun, SendGrid, Mandrill e servidores de relay locais (Exim, Postfix, Qmail, Postmark)
Provedores de ingresso suportados atualmente:
  • Amazon SES
  • SendGrid
  • Mandrill
  • Mailgun
  • Exim
  • Postfix
  • Qmail
  • Postmark

1. Configure o serviço de ingresso

Primeiro, informe ao AirysChat qual serviço de e-mail de entrada (ingresso) você está usando. Isso é feito por meio da variável de ambiente RAILS_INBOUND_EMAIL_SERVICE.
# Set this to the appropriate ingress service. Options:
# "relay"    for Exim, Postfix, Qmail, Postmark
# "mailgun"  for Mailgun
# "mandrill" for Mandrill
# "sendgrid" for SendGrid
# "ses" for Amazon SES
RAILS_INBOUND_EMAIL_SERVICE=relay
Este valor configura como o Action Mailbox fará a autenticação e roteará as mensagens de entrada para o AirysChat.

Usando um relay local (Postfix / Exim / Qmail / Postmark)

Se você estiver usando um MTA local (por exemplo, Postfix) tanto para o relay de entrada quanto para o e-mail de saída, e você não deseja usar a autenticação SMTP (SASL) — o que é comum quando o servidor lida apenas com seu próprio e-mail — você precisará ajustar sua configuração SMTP de saída. Por padrão, o Action Mailer tentará usar a autenticação SMTP se as seguintes variáveis de ambiente estiverem presentes:
  • SMTP_AUTHENTICATION
  • SMTP_USERNAME
  • SMTP_PASSWORD
Se você estiver enviando e-mails por meio de um relay local que não requer autenticação:
  1. Remova ou comente essas variáveis do seu arquivo .env.
  2. Certifique-se de que seu MTA local esteja configurado corretamente para enviar e-mails de saída.
⚠️ Importante: Executar seu próprio servidor de e-mail traz responsabilidades de entrega e segurança:
  • Muitos ISPs bloqueiam ou restringem servidores de e-mail em suas redes.
  • Configure os registros DNS corretos (SPF, DKIM, DMARC) para que seus e-mails sejam aceitos pelos destinatários e não caiam na caixa de spam.

2. Configure a autenticação de ingresso

Em seguida, defina as credenciais correspondentes ao provedor de ingresso que você está usando.
# Use one of the following based on the email ingress service

# For SendGrid, Exim, Postfix, Qmail, or Postmark
RAILS_INBOUND_EMAIL_PASSWORD=

# For Mailgun
MAILGUN_INGRESS_SIGNING_KEY=

# For Mandrill
MANDRILL_INGRESS_API_KEY=
Apenas a variável relevante para o provedor escolhido precisa ser configurada.

3. Configuração específica do provedor

Amazon SES

Se você estiver usando o Amazon SES como seu provedor de e-mail, você deve configurar o provedor de ingresso como ses e definir ACTION_MAILBOX_SES_SNS_TOPIC para o ARN do tópico SNS da sua conta SES. Veja mais detalhes aqui.

Mailgun

Se você estiver usando o Mailgun como seu provedor de e-mail:
  1. No seu DNS, configure os registros MX para o seu domínio apontarem para o Mailgun.
  2. No painel do Mailgun, configure o roteamento para que os e-mails de entrada sejam encaminhados para:
https://example.com/rails/action_mailbox/mailgun/inbound_emails/mime
Substitua example.com pelo domínio onde a sua instalação do AirysChat está hospedada.

Obtendo a chave de assinatura de ingresso do Mailgun

Você pode encontrar a chave de assinatura no painel do Mailgun e defini-la como MAILGUN_INGRESS_SIGNING_KEY. mailgun-ingress-key

SendGrid

Se você estiver usando o SendGrid:
  1. Configure os registros MX para o seu domínio (your-domain.com) apontarem para o SendGrid.
  2. No painel do SendGrid, configure o Inbound Parse para encaminhar e-mails de entrada para o endpoint do Action Mailbox.
Use o seguinte padrão como a URL de Inbound Parse:
https://actionmailbox:PASSWORD@example.com/rails/action_mailbox/sendgrid/inbound_emails
  • Substitua PASSWORD pelo valor de RAILS_INBOUND_EMAIL_PASSWORD.
  • Substitua example.com pelo seu host do AirysChat.
Obrigatório: Ao configurar o webhook do SendGrid Inbound Parse, habilite a opção: “Post the raw, full MIME message” (Postar a mensagem MIME crua e completa). O Action Mailbox deve receber a mensagem MIME bruta para analisar e processar corretamente o e-mail.
Veja um guia detalhado sobre como configurar o SendGrid Inbound Parse.

Mandrill

Se você estiver usando o Mandrill como seu serviço de e-mail:
  1. Configure os registros MX do seu domínio para apontarem para o Mandrill.
  2. No painel do Mandrill, configure uma rota de entrada que encaminhe e-mails para:
https://example.com/rails/action_mailbox/mandrill/inbound_emails
Substitua example.com pelo domínio onde a sua instalação do AirysChat está hospedada. Defina MANDRILL_INGRESS_API_KEY com a chave de API apropriada do Mandrill.

4. IMAP via getmail

Se você já possui uma caixa de correio IMAP (por exemplo, no seu próprio servidor de e-mail ou em um provedor que não suporte o Action Mailbox diretamente), você ainda pode alimentar o AirysChat com e-mails usando o getmail6 e o ingresso HTTP do Action Mailbox.

Como funciona o ingresso do Action Mailbox

O Action Mailbox expõe endpoints HTTP para cada tipo de ingresso. Eles são definidos no código-fonte do Rails e também podem ser usados diretamente. Exemplo usando a tarefa rake do Rails:
cat my_incoming_message | ./bin/rails action_mailbox:ingress:postfix \
  RAILS_ENV=production \
  URL=http://localhost:3000/rails/action_mailbox/relay/inbound_emails \
  INGRESS_PASSWORD=...
Isso importa o conteúdo de my_incoming_message (uma mensagem compatível com RFC 822) para uma instância do AirysChat sendo executada em localhost.

Chamando o endpoint HTTP diretamente

Em vez de usar a tarefa Rake, você pode chamar o endpoint HTTP de ingresso diretamente via curl.
INGRESS_PASSWORD=...
URL=http://localhost:3000/rails/action_mailbox/relay/inbound_emails

curl -sS -u "actionmailbox:$INGRESS_PASSWORD" \
 -A "Action Mailbox curl relayer" \
 -H "Content-Type: message/rfc822" \
 --data-binary @- \
 $URL
Isso envia a mensagem bruta de stdin para o endpoint de relay do Action Mailbox.

Usando getmail6 com IMAP

O getmail6 pode recuperar e-mails de uma caixa de correio IMAP e passá-los para o script curl acima. Se o script estiver armazenado em /home/airyschat/bin/import_mail_to_airyschat, uma configuração mínima do getmail poderia ser assim:
[retriever]
type = SimpleIMAPSSLRetriever
server = ...
username = ...
password = ...

[destination]
type = MDA_external
path = /home/airyschat/bin/import_mail_to_airyschat

[options]
verbose = 0
read_all = false
delete = false
delivered_to = false
received = false
message_log = /home/airyschat/logs/import_imap.log
message_log_syslog = false
message_log_verbose = true

Agendando a recuperação de e-mail

Para importar e-mails continuamente para o AirysChat, você precisará executar o getmail regularmente. Opções comuns:
  • Use cron para executar o getmail em um intervalo fixo (por exemplo, a cada minuto).
  • Para IMAP, você pode usar:
getmail --idle INBOX
Isso mantém uma conexão de longa duração aberta e reage a novos e-mails imediatamente. Você precisará de alguma supervisão (systemd, runit, etc.) para lidar com reinicializações se a conexão for interrompida.

5. Leitura adicional

Para mais detalhes sobre a configuração e personalização de ingressos, consulte a documentação oficial do Rails: