Requisitos
Rust ≥ 1.75
Compilador Rust estável. Instale via rustup.rs
Postfix ≥ 3.5
Servidor SMTP Postfix configurado com suporte a milters habilitado.
OpenDKIM
Para assinatura DKIM das mensagens processadas pelo Papéli.
Linux (systemd)
Para a unidade de serviço systemd incluída. Debian, Ubuntu, RHEL, Arch.
Instalação Completa Passo a Passo
1
Instalar o Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source "$HOME/.cargo/env"
rustc --version # rust 1.75+
2
Clonar e compilar
git clone https://codeberg.org/lumenpink/papeli
cd papeli
cargo build --release
# Binário em: target/release/papeli
3
Instalar o binário e criar diretórios
sudo cp target/release/papeli /usr/local/bin/papeli
sudo chmod +x /usr/local/bin/papeli
sudo mkdir -p /run/papeli /etc/papeli/templates
sudo chown -R postfix:postfix /run/papeli /etc/papeli
sudo chmod 770 /run/papeli
4
Configurar o Papéli
sudo cp deploy/papeli.example.toml /etc/papeli/papeli.toml
sudo nano /etc/papeli/papeli.toml
# Configure seus domínios, templates e assinaturas
Veja a documentação de configuração para a referência completa do
papeli.toml.5
Criar template MJML padrão
# Crie o template em /etc/papeli/templates/default.mjml
# Exemplo mínimo disponível em: docs/TEMPLATES.md
sudo nano /etc/papeli/templates/default.mjml
6
Instalar a unidade systemd
sudo cp deploy/papeli.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now papeli
sudo systemctl status papeli
7
Configurar o Postfix
# Edite /etc/postfix/master.cf
# Adicione nas linhas de submission (587) e submissions (465):
# -o smtpd_milters=unix:/run/papeli/papeli.sock,inet:localhost:8891
sudo postfix check
sudo postfix reload
Veja a documentação do Postfix para o exemplo completo do master.cf.
✓
Verificar a instalação
swaks --to teste@destino.com \
--from voce@suaempresa.com \
--server localhost --port 587 \
--auth LOGIN \
--auth-user voce@suaempresa.com \
--auth-password 'suasenha' \
--tls \
--body "Teste do Papéli!"
Confira os logs:
O email deve chegar ao destino envelopado no papel de carta e com DKIM válido!
journalctl -u papeli -f e tail -f /var/log/mail.log.O email deve chegar ao destino envelopado no papel de carta e com DKIM válido!
🌸 🌷 💐 🌷 🌸
Unidade systemd (papeli.service)
A unidade systemd incluída em deploy/papeli.service configura o Papéli com boas práticas de segurança:
[Unit]
Description=Papeli — Postfix Milter (Rust)
After=network.target
[Service]
Type=simple
User=postfix
Group=postfix
ExecStart=/usr/local/bin/papeli --config /etc/papeli/papeli.toml
Restart=on-failure
RestartSec=5s
# Segurança
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=strict
ReadWritePaths=/run/papeli /etc/papeli
[Install]
WantedBy=multi-user.target
Comandos úteis
| Ação | Comando |
|---|---|
| Verificar status | systemctl status papeli |
| Ver logs ao vivo | journalctl -u papeli -f |
| Recarregar config | systemctl reload papeli ou kill -HUP |
| Reiniciar | systemctl restart papeli |
| Parar | systemctl stop papeli |
📦
Código Fonte
O Papéli é software livre sob licença MIT. Código completo, testes e documentação disponíveis no Codeberg.