Auto-hospedado
Instalação
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 certbotDOMAIN
- domínio personalizado usado para configuração de auto-hospedagemAUTH_BASIC_USERNAME
- nome de usuário usado na primeira configuração para proteger o siteAUTH_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 viadns_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ço | Porta Padrão | Descrição |
---|---|---|
Rede | 443 | Interface da Web para todas as interações do administrador |
API | 4000 | Camada de API para abstrair bancos de dados |
Brisa | Nenhum | Trabalho em segundo plano e executor de tarefas |
SMTP | 465/587 | Servidor SMTP para e-mail de saída |
SMTP Bree | Nenhum | Trabalho em segundo plano SMTP |
MX | 2525 | Troca de e-mail para e-mail de entrada e encaminhamento de e-mail |
IMAP | 993/2993 | Servidor IMAP para e-mail de entrada e gerenciamento de caixa de correio |
POP3 | 995/2995 | Servidor POP3 para e-mail de entrada e gerenciamento de caixa de correio |
SQLite | 3456 | Servidor SQLite para interações com bancos de dados sqlite |
SQLite Bree | Nenhum | Trabalho em segundo plano do SQLite |
CalDAV | 5000 | Servidor CalDAV para gerenciamento de calendário |
MongoDB | 27017 | Banco de dados MongoDB para a maioria dos gerenciamentos de dados |
Redis | 6379 | Redis para cache e gerenciamento de estado |
SQLite | Nenhum | Banco(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/
.
Componente | Caminho do host | Caminho 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.
Tipo | Nome | Contente | TTL |
---|---|---|---|
A | "@", "." ou em branco | <endereço_ip> | auto |
CNAME | APIs | <nome_do_domínio> | auto |
CNAME | Caldav | <nome_do_domínio> | auto |
CNAME | fe-rebate | <nome_do_domínio> | auto |
CNAME | imap | <nome_do_domínio> | auto |
CNAME | MX-México | <nome_do_domínio> | auto |
CNAME | pop3 | <nome_do_domínio> | auto |
CNAME | SMTP | <nome_do_domínio> | auto |
MX | "@", "." ou em branco | mx.<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
-
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.
-
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.
- 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
- Navegue até a página Aliases Abra a página de gerenciamento de alias:
https://<domain_name>/en/my-account/domains/<domain_name>/aliases
- 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.
- 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.
- 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>
Tipo | nome de anfitrião | Porta | Segurança de conexão | Autenticação |
---|---|---|---|---|
SMTP | smtp.<nome_do_domínio> | 465 | SSL / TLS | Senha normal |
IMAP | imap.<nome_do_domínio> | 993 | SSL / TLS | Senha 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.
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.