No description
  • Go 54.2%
  • CSS 19.7%
  • HTML 16%
  • JavaScript 10.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-09-19 10:52:32 -04:00
cmd/server init: projeto mail-foward em golang 2026-09-19 10:52:32 -04:00
internal init: projeto mail-foward em golang 2026-09-19 10:52:32 -04:00
web init: projeto mail-foward em golang 2026-09-19 10:52:32 -04:00
.env.example init: projeto mail-foward em golang 2026-09-19 10:52:32 -04:00
.gitignore init: projeto mail-foward em golang 2026-09-19 10:52:32 -04:00
go.mod init: projeto mail-foward em golang 2026-09-19 10:52:32 -04:00
go.sum init: projeto mail-foward em golang 2026-09-19 10:52:32 -04:00
README.md init: projeto mail-foward em golang 2026-09-19 10:52:32 -04:00

Mail Forward - Gerenciador de Aliases @roraima.dev.br

Plataforma em Golang para cadastro de usuários e gerenciamento de aliases de e-mail personalizados @roraima.dev.br, com replicação direta na base do Postfix (aliases_db).


🎯 Recursos

  • Limite por Usuário: Permite a criação de até 3 aliases gratuitos por conta.
  • Replicação Direta no Postfix: Sincroniza em tempo real com a tabela aliases do MariaDB consumida pelo Postfix.
  • Painel em Tela Única: Dashboard minimalista e intuitivo com grid de aliases, cópia com um clique, pausa/reativação e exclusão.
  • Modal de Criação: Interface com prefixo @roraima.dev.br fixo e preview ao vivo.
  • Binário Único (Zero Dependências de Runtime): Templates HTML, CSS e JavaScript são embutidos diretamente no executável via embed.FS.
  • Segurança: Senhas criptografadas com bcrypt e sessões seguras via cookies HTTP-only.

🗄️ Estrutura do Banco de Dados

1. Base do Postfix (aliases_db)

O Postfix consome a tabela aliases:

CREATE TABLE aliases (
    id BIGINT(20) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    alias_address VARCHAR(255) NOT NULL UNIQUE,
    destination_address VARCHAR(255) NOT NULL,
    active TINYINT(1) DEFAULT 1,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

A aplicação atualiza o campo active (1 = ativo, 0 = pausado) quando o usuário pausa o alias no painel.

2. Base da Aplicação (mail_app_db)

Criada e migrada automaticamente pela aplicação ao inicializar:

  • users: Armazena cadastro (nome, e-mail principal, hash bcrypt).
  • user_aliases: Associa cada alias criado à conta do usuário.
  • user_sessions: Sessões ativas de login.

⚙️ Variáveis de Ambiente (.env)

Copie o .env.example para .env e configure conforme seu ambiente:

PORT=8080
DOMAIN=roraima.dev.br
MAX_ALIASES_PER_USER=3
SESSION_COOKIE_NAME=roraima_session

# Banco de dados da aplicação
APP_DB_DSN=usuario:senha@tcp(127.0.0.1:3306)/mail_app_db?parseTime=true&charset=utf8mb4

# Banco de dados do Postfix
POSTFIX_DB_DSN=usuario:senha@tcp(127.0.0.1:3306)/aliases_db?parseTime=true&charset=utf8mb4

# Tabela e colunas do Postfix
POSTFIX_TABLE=aliases
POSTFIX_SOURCE_COL=alias_address
POSTFIX_DEST_COL=destination_address
POSTFIX_ACTIVE_COL=active

APP_ENV=production

🚀 Como Executar

1. Desenvolvimento Local

go run cmd/server/main.go

Acesse em: http://localhost:8080

2. Executar os Testes

go test ./...

3. Compilar para a VPS (Linux x86_64)

Para gerar o binário estático e enviar para o seu servidor VPS onde roda o Postfix:

# No Windows (PowerShell):
$env:GOOS="linux"; $env:GOARCH="amd64"; go build -ldflags="-s -w" -o mail-forward cmd/server/main.go

# No Linux / macOS:
GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -o mail-forward cmd/server/main.go

O arquivo binário gerado mail-forward é autossuficiente e contém todo o frontend embutido.


🛠️ Exemplo de Systemd Service no VPS

/etc/systemd/system/mail-forward.service:

[Unit]
Description=Plataforma de Aliases roraima.dev.br
After=network.target mariadb.service postfix.service

[Service]
Type=simple
User=www-data
WorkingDirectory=/var/www/mail-forward
ExecStart=/var/www/mail-forward/mail-forward
Restart=always
RestartSec=5
EnvironmentFile=/var/www/mail-forward/.env

[Install]
WantedBy=multi-user.target