Auto-hospedado

Requisitos

Antes de executar o script de instalação, certifique-se de ter o seguinte:

  • Sistema operacional: Um servidor baseado em Linux (por exemplo, Ubuntu 22.04+).
  • Recursos: 1 vCPU e 2 GB de RAM
  • Acesso root: Privilégios administrativos para executar comandos.
  • Nome do domínio: Um domínio personalizado pronto para configuração de DNS.
  • IP limpo: Garanta que seu servidor tenha um endereço IP limpo, sem reputação de spam anterior, verificando listas negras. Mais informações aqui.

[!DICA] Veja nossa lista de provedores de servidores de e-mail incríveis

Cloud-init / Dados do usuário

A maioria dos fornecedores de nuvem oferece suporte a uma configuração cloud-init para quando o servidor virtual privado (VPS) é provisionado. Essa é uma ótima maneira de definir alguns arquivos e variáveis de ambiente com antecedência para uso pela lógica de configuração inicial dos scripts, o que evitará a necessidade de solicitar informações adicionais enquanto o script estiver em execução.

Opções

  • EMAIL - EMAIL variável de ambiente usada para lembretes de expiração do certbot
  • DOMAIN - domínio personalizado usado para configuração de auto-hospedagem
  • AUTH_BASIC_USERNAME - nome de usuário usado na primeira configuração para proteger o site
  • AUTH_BASIC_PASSWORD - senha usada na primeira configuração para proteger o site
  • /root/.cloudflare.ini - (Somente usuários do Cloudflare)arquivo de configuração do cloudflare usado pelo certbot para configuração de DNS. Ele requer que você defina seu token de API via dns_cloudflare_api_token. Leia mais aqui.

Exemplo:

#cloud-config
write_files:
  - path: /root/.cloudflare.ini
    content: |
      dns_cloudflare_api_token = "xxx"
    owner: root:root
    permissions: '0600'
  - path: /etc/profile.d/env.sh
    content: |
      export EMAIL="test@myemail.com"
      export DOMAIN="mydomain.com"

runcmd:

  • chmod +x /etc/profile.d/env.sh

Instalar

Execute o seguinte comando no seu servidor para baixar e executar o script de instalação:

bash <(curl -fsSL https://raw.githubusercontent.com/forwardemail/forwardemail.net/master/self-hosting/setup.sh)

Script de instalação de depuração

Adicione DEBUG=true antes do script de instalação para obter uma saída detalhada:

DEBUG=true bash <(curl -fsSL https://raw.githubusercontent.com/forwardemail/forwardemail.net/master/self-hosting/setup.sh)

Avisos

1. Initial setup
2. Setup Backups
3. Setup Auto Upgrades
4. Renew certificates
5. Restore from Backup
6. Help
7. Exit
  • Configuração inicial: Baixe o código de e-mail de encaminhamento mais recente, configure o ambiente, solicite seu domínio personalizado e configure todos os certificados, chaves e segredos necessários.
  • Configurar backup: Configurará um cron para fazer backup do mongoDB e do redis usando um armazenamento compatível com S3 para armazenamento remoto seguro. Separadamente, o sqlite será feito backup no login se houver alterações para backups seguros e criptografados.
  • Atualização de configuração: Configure um cron para procurar atualizações noturnas que reconstruirão e reiniciarão com segurança os componentes da infraestrutura.
  • Renovar certificados: Certbot / lets encrypt é usado para certificados SSL e as chaves expirarão a cada 3 meses. Isso renovará os certificados para seu domínio e os colocará na pasta necessária para que os componentes relacionados consumam. Veja caminhos de arquivo importantes
  • Restaurar do backup: Irá acionar o mongodb e o redis para restaurar os dados de backup.

Configuração inicial (opção 1)

Escolha a opção 1. Initial setup para começar.

Uma vez concluído, você verá uma mensagem de sucesso. Você pode até mesmo executar docker ps ver o componentes girados. Mais informações sobre componentes abaixo.

Serviços

Nome do serviçoPorta PadrãoDescrição
Rede443Interface da Web para todas as interações do administrador
API4000Camada de API para abstrair bancos de dados
BrisaNenhumTrabalho em segundo plano e executor de tarefas
SMTP465/587Servidor SMTP para e-mail de saída
SMTP BreeNenhumTrabalho em segundo plano SMTP
MX2525Troca de e-mail para e-mail de entrada e encaminhamento de e-mail
IMAP993/2993Servidor IMAP para e-mail de entrada e gerenciamento de caixa de correio
POP3995/2995Servidor POP3 para e-mail de entrada e gerenciamento de caixa de correio
SQLite3456Servidor SQLite para interações com bancos de dados sqlite
SQLite BreeNenhumTrabalho em segundo plano do SQLite
CalDAV5000Servidor CalDAV para gerenciamento de calendário
MongoDB27017Banco de dados MongoDB para a maioria dos gerenciamentos de dados
Redis6379Redis para cache e gerenciamento de estado
SQLiteNenhumBanco(s) de dados SQLite para caixas de correio criptografadas

Caminhos de arquivo importantes

Observação: Caminho do host abaixo é relativo a /root/forwardemail.net/self-hosting/.

ComponenteCaminho do hostCaminho do contêiner
MongoDB./mongo-backups/backups
Redis./redis-data/data
Sqlite./sqlite-data/mnt/{SQLITE_STORAGE_PATH}
Arquivo env./.env/app/.env
Certificados/chaves SSL./ssl/app/ssl/
Chave privada./ssl/privkey.pem/app/ssl/privkey.pem
Certificado de cadeia completa./ssl/fullchain.pem/app/ssl/fullchain.pem
CAs certificados./ssl/cert.pem/app/ssl/cert.pem
Chave privada DKIM./ssl/dkim.key/app/ssl/dkim.key

[!IMPORTANTE] Salve o .env arquivar com segurança. É crítico para recuperação em caso de falha. Você pode encontrar isso em /root/forwardemail.net/self-hosting/.env.

Configuração

Configuração inicial de DNS

No seu provedor DNS de escolha, configure os registros DNS apropriados. Anote qualquer coisa entre colchetes (<>) é dinâmico e precisa ser atualizado com seu valor.

TipoNomeContenteTTL
A"@", "." ou em branco<endereço_ip>auto
CNAMEAPIs<nome_do_domínio>auto
CNAMECaldav<nome_do_domínio>auto
CNAMEfe-rebate<nome_do_domínio>auto
CNAMEimap<nome_do_domínio>auto
CNAMEMX-México<nome_do_domínio>auto
CNAMEpop3<nome_do_domínio>auto
CNAMESMTP<nome_do_domínio>auto
MX"@", "." ou em brancomx.<nome_do_domínio> (prioridade 0)auto
TXT"@", "." ou em branco"v=spf1 a -tudo"auto
Registro DNS/PTR reverso

DNS reverso (rDNS) ou registros de ponteiro reverso (registros PTR) são essenciais para servidores de e-mail porque ajudam a verificar a legitimidade do servidor que envia o e-mail. Cada provedor de nuvem faz isso de forma diferente, então você precisará pesquisar como adicionar "DNS reverso" para mapear o host e o IP para seu nome de host correspondente. Provavelmente na seção de rede do provedor.

Porta 25 bloqueada

Alguns ISPs e provedores de nuvem bloqueiam 25 para evitar atores mal-intencionados. Talvez seja necessário registrar um tíquete de suporte para abrir a porta 25 para SMTP/e-mail de saída.

Integração

  1. Abra a Landing Page Navegue até https://<domain_name>, substituindo <domain_name> pelo domínio configurado nas suas configurações de DNS. Você deverá ver a landing page Forward Email.

  2. Faça login e integre seu domínio

  • Entre com um e-mail e senha válidos.
  • Digite o nome de domínio que você deseja configurar (ele deve corresponder à configuração de DNS).
  • Siga as instruções para adicionar o necessário MX e TXT registros para verificação.
  1. Configuração completa
  • Após a verificação, acesse a página Aliases para criar seu primeiro alias.
  • Opcionalmente, configure SMTP para e-mail de saída no Configurações de domínio. Isso requer registros DNS adicionais.

[!NOTA] Nenhuma informação é enviada para fora do seu servidor. A opção de auto-hospedagem e a conta inicial são apenas para login de administrador e visualização da web para gerenciar domínios, aliases e configurações de e-mail relacionadas.

Testando

Criando seu primeiro alias

  1. Navegue até a página Aliases Abra a página de gerenciamento de alias:
https://<domain_name>/en/my-account/domains/<domain_name>/aliases
  1. Adicionar um novo alias
  • Clique Adicionar alias (canto superior direito).
  • Insira o nome do alias e ajuste as configurações de e-mail conforme necessário.
  • (Opcional) Habilitar IMAP/POP3/CalDAV suporte marcando a caixa de seleção.
  • Clique Criar Alias.
  1. Definir uma senha
  • Clique Gerar senha para criar uma senha segura.
  • Esta senha será necessária para efetuar login no seu cliente de e-mail.
  1. Configure seu cliente de e-mail
  • Use um cliente de e-mail como o Thunderbird.
  • Digite o nome do alias e a senha gerada.
  • Configurar o IMAP e SMTP configurações de acordo.
Configurações do servidor de e-mail

Nome de usuário: <alias name>

Tiponome de anfitriãoPortaSegurança de conexãoAutenticação
SMTPsmtp.<nome_do_domínio>465SSL / TLSSenha normal
IMAPimap.<nome_do_domínio>993SSL / TLSSenha normal

Enviando / Recebendo seu primeiro e-mail

Depois de configurado, você poderá enviar e receber e-mails no seu endereço de e-mail recém-criado e auto-hospedado!

Manutenção

How do I backup my data

Siga o instalar script e escolher option 2 no prompt.

How do I renew my certificates

Siga o instalar script e escolher option 3 no prompt.

How do I upgrade to the latest forward email code

Siga o instalar script e escolher option 4 no prompt.

How do I restore from a backup

Siga o instalar script e escolher option 6 no prompt.

Solução de problemas

Why is the certbot acme challenge failing

A armadilha mais comum é que o certbot / letsencrypt às vezes solicitará 2 desafios. Você precisa ter certeza de adicionar BOTH registros txt.

Exemplo: Você pode ver dois desafios como este: _acme-challenge.example.com -> "randomstring1" _acme-challenge.example.com -> "randomstring2"

Também é possível que a propagação do DNS não tenha sido concluída. Você pode usar ferramentas como: https://toolbox.googleapps.com/apps/dig/#TXT/_acme-challenge.<your_domain>. Isso lhe dará uma ideia se as alterações do seu registro TXT devem ser refletidas. Também é possível que o cache DNS local no seu host ainda esteja usando um valor antigo e obsoleto ou não tenha captado as alterações recentes.

Outra opção é usar as alterações automatizadas de DNS do cerbot, definindo o /root/.cloudflare.ini arquivo com o token api em seu cloud-init / user-data na configuração inicial do VPS ou crie este arquivo e execute o script novamente. Isso gerenciará as alterações de DNS e as atualizações de desafio automaticamente.

What is the basic auth username and password

Para auto-hospedagem, adicionamos um pop-up de autenticação nativa do navegador pela primeira vez com um nome de usuário simples (admin) e senha (gerada aleatoriamente na configuração inicial). Nós apenas adicionamos isso como uma proteção caso a automação/raspadores de alguma forma o vençam para se inscrever pela primeira vez na experiência da web. Você pode encontrar essa senha após a configuração inicial em seu .env arquivar em AUTH_BASIC_USERNAME e AUTH_BASIC_PASSWORD.

How do I know what is running

Você pode correr docker ps para ver todos os contêineres em execução que estão sendo gerados a partir do docker-compose-self-hosting.yml arquivo. Você também pode executar docker ps -a para ver tudo (incluindo contêineres que não estão em execução).

How do I know if something isn't running that should be

Você pode correr docker ps -a para ver tudo (incluindo contêineres que não estão em execução). Você pode ver um log de saída ou nota.

How do I find logs

Você pode obter mais logs via docker logs -f <container_name>. Se algo saiu, provavelmente está relacionado ao .env arquivo está configurado incorretamente.

Na interface da web, você pode visualizar /admin/emails e /admin/logs para logs de e-mail de saída e logs de erro, respectivamente.

Why are my outgoing emails timing out

Se você vir uma mensagem como Connection timed out ao conectar ao servidor MX... então você pode precisar verificar se a porta 25 está bloqueada. É comum que ISPs ou provedores de nuvem bloqueiem isso por padrão, onde você pode precisar entrar em contato com o suporte/registrar um ticket para abrir isso.

What tool(s) should I use to test email configuration best practices and IP reputation

Dê uma olhada em nosso Perguntas frequentes aqui.

caixa de ferramentas mx

ferramentas do google postmaster

Use o endereço IP do seu servidor para verificar os seguintes sites se eles estão em uma lista negra. Infelizmente, não é incomum que provedores de nuvem comuns tenham problemas de reputação de IP devido ao uso de spam por e-mail. Se você vir seu IP em uma lista negra, é recomendável iniciar um novo servidor e verificar o novo endereço IP.

casa de spam

spam